diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..d91bc07 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,13 @@ +{ + "singleQuote": true, + "printWidth": 80, + "editor.formatOnSave": true, + "proseWrap": "always", + "tabWidth": 4, + "requireConfig": false, + "useTabs": false, + "trailingComma": "none", + "bracketSpacing": true, + "jsxBracketSameLine": false, + "semi": true +} \ No newline at end of file diff --git a/backend/.env.template b/backend/.env.template deleted file mode 100644 index 415dee4..0000000 --- a/backend/.env.template +++ /dev/null @@ -1,23 +0,0 @@ -############################################################### -# AWS Secrets -############################################################### -S3_REGION= #Your AWS S3 Region -S3_ACCESS_KEY_ID= #Your AWS Access Key ID -S3_SECRET_ACCESS_KEY= #Your AWS Secret Access Key - -############################################################### -# Application Settings -############################################################### -PORT= #FastAPI default port -LOG_LEVEL=info -NODE_ENV=development -DATABASE_URL= #PostgreSQL connection string -REACT_APP_GRAPHQL_ENDPOINT= #GraphQL endpoint URL (e.g., http://localhost:3000/graphql) - -############################################################### -# Security Settings -############################################################### -JWT_SECRET= #Your JWT secret key -COOKIE_SECRET= #Your cookie secret key - - diff --git a/backend/.gitignore b/backend/.gitignore new file mode 100644 index 0000000..4b56acf --- /dev/null +++ b/backend/.gitignore @@ -0,0 +1,56 @@ +# compiled output +/dist +/node_modules +/build + +# Logs +logs +*.log +npm-debug.log* +pnpm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* + +# OS +.DS_Store + +# Tests +/coverage +/.nyc_output + +# IDEs and editors +/.idea +.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace + +# IDE - VSCode +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json + +# dotenv environment variable files +.env +.env.development.local +.env.test.local +.env.production.local +.env.local + +# temp directory +.temp +.tmp + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json diff --git a/backend/.prettierrc b/backend/.prettierrc new file mode 100644 index 0000000..bb80370 --- /dev/null +++ b/backend/.prettierrc @@ -0,0 +1,13 @@ +{ + "singleQuote": true, + "printWidth": 80, + "editor.formatOnSave": true, + "proseWrap": "always", + "tabWidth": 4, + "requireConfig": false, + "useTabs": false, + "trailingComma": "all", + "bracketSpacing": true, + "jsxBracketSameLine": false, + "semi": true +} diff --git a/backend/Dockerfile b/backend/Dockerfile deleted file mode 100644 index f518b1c..0000000 --- a/backend/Dockerfile +++ /dev/null @@ -1,16 +0,0 @@ -FROM node:18-alpine - -WORKDIR /app - -COPY package*.json ./ -RUN npm ci --only=production - -COPY . . - -USER node - -ENV NODE_ENV=production -ENV PORT=3000 -EXPOSE 3000 - -CMD ["npm", "run", "dev"] \ No newline at end of file diff --git a/backend/README.md b/backend/README.md new file mode 100644 index 0000000..f61187c --- /dev/null +++ b/backend/README.md @@ -0,0 +1,195 @@ +

Nest Logo

+ +

TaskFlow API

+ +

The robust, high-performance backend powering the TaskFlow platform.
Built with NestJS, Fastify, and GraphQL.

+ +

NestJS GraphQL Prisma Coverage

+ +

ArchitectureGetting StartedTestingDocumentation

+ +### Architecture + +TaskFlow API follows a **Modular Monolith architecture** designed for scalability and maintainability. + +It leverages the "Platform Agnostic" capability of NestJS by using the **Fastify Adapter** for maximum performance (up to 2x faster than Express). + +### Request Lifecycle + +```mermaid +graph TD + Client[("Client")] + + subgraph "Backend Core - NestJS" + Gateway["Fastify Adapter"] + Guard["Auth & Workspace Guards"] + Interceptor["DTO Validation Pipe"] + + subgraph "GraphQL Layer" + Resolver["Resolvers"] + FieldResolver["Field Resolvers"] + end + + Service["Services - Business Logic"] + Prisma["Prisma Client"] + end + + DB[("PostgresQL")] + + Client --> Gateway + Gateway --> Guard + Guard --> Interceptor + Interceptor --> Resolver + + Resolver -- "Main Data" --> Service + Resolver -. "Nested Data" .-> FieldResolver + + Service --> Prisma + FieldResolver --> Prisma + Prisma --> DB +``` + +### Key Design Patterns + +- **Schema First GraphQL**: Type definitions (.graphql files) are the single source of truth. TypeScript definitions are auto-generated. + +- **Hybrid Loading Strategy**: We optimize performance by avoiding massive SQL joins. The Main Resolver fetches the core entity, while Field Resolvers (@ResolveField) lazily fetch related data (Boards, Lists, Cards) only when requested by the client. + +- **Errors as Data**: Mutations do not throw generic exceptions. They return Union Types (e.g., RegisterSuccess | RegisterError) allowing the frontend to handle business errors (like "Email taken") as strongly-typed data. + +- **Secure Authentication**: Implementation of HttpOnly Cookies preventing XSS attacks on JWT tokens. + +## 🛠️ Tech Stack + +| Component | Technology | Benefit | +| :--- | :--- | :--- | +| **Framework** | **NestJS** | Strict architecture, Dependency Injection, Decorators. | +| **Engine** | **Fastify** | High performance, low overhead (up to 2x faster than Express). | +| **API** | **GraphQL (Mercurius)** | Efficient Data Fetching, Type Safety, Playground. | +| **Database** | **PostgreSQL + Prisma** | Reliability, Type-safe queries, Migrations. | +| **Testing** | **Jest** | Unit and Integration testing with mocking. | +| **Doc** | **Compodoc** | Visual documentation of the modules graph. | + +### Getting Started + +#### Prerequisites + +- **Node.js** (v18 or later) + +- **Docker** (for the local Database) + +- **npm or pnpm** + +### Installation + +#### Clone the repository + +```bash +git clone git@github.com:EliasJHL/TaskFlow.git +cd taskflow/backend +``` + +#### Install dependencies + +```bash +npm install +``` + +#### Environment Setup +Create a .env file in the root directory: + +```properties +DATABASE_URL="postgresql://user:password@localhost:5432/taskflow_db?schema=public" +JWT_SECRET="your_super_secret_key_change_me" +COOKIE_SECRET="another_secret_for_cookies" +NODE_ENV="development" +PORT=3000 +``` + +#### Database Setup + +Start the database container and apply migrations: + +```bash +# 1. Start Docker container +docker-compose up -d db + +# 2. Push schema to DB (Dev mode) +npx prisma db push + +# 3. Generate Prisma Client (Vital for TypeScript) +npx prisma generate +``` + +#### Running the App + +```bash +npm run start:dev +``` + +Once started, the GraphQL Playground is available at: 👉 http://localhost:3000/graphiql + +### Testing +We maintain a high standard of **code quality** with 100% coverage on critical paths (Services & Resolvers). + +#### Unit Tests + +Tests are located next to the files they test (*.spec.ts). + +```bash +# Run all unit tests +npm run test + +# Run tests in watch mode (TDD) +npm run test:watch +``` + +#### Coverage Report + +To generate the coverage report and verify system integrity: + +```bash +npm run test:cov +``` + +### Documentation +#### Code Architecture (Compodoc) + +Generate a static website exploring the modules, services, and dependency graph. + +```bash +npm run doc +``` +Then open http://localhost:8080 in your browser. + +#### API Documentation + +The API is self-documented via the GraphQL Schema. You can inspect the schema and test queries directly in the **Playground at /graphiql**. + +**Example Query:** +```graphql +query GetMyDashboard { + workspaces { + name + is_pinned + boards { + title + color + } + } +} +``` + +#### Project Structure +```text +src/ +├── auth/ # Authentication (Login, Register, Guards) +├── board/ # Board management (Kanban logic) +├── list/ # List management (Ordering, Creation) +├── card/ # Card management (Content, Moving) +├── label/ # Label management +├── workspace/ # Workspace logic (The root entity) +├── common/ # Shared Guards, Decorators, and Utilities +├── prisma/ # Prisma Module & Service +└── graphql/ # Generated TypeScript definitions +``` diff --git a/backend/documentation/classes/AddWorkspaceMemberInput.html b/backend/documentation/classes/AddWorkspaceMemberInput.html new file mode 100644 index 0000000..aecf9ec --- /dev/null +++ b/backend/documentation/classes/AddWorkspaceMemberInput.html @@ -0,0 +1,693 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
+
+ + +
+
+ + + + + + + + + + + + + + + + + + + + +
+
+

+

File

+

+

+ src/graphql/graphql.ts +

+ + + + + + +
+

Index

+ + + + + + + + + + + + + + + +
+
Properties
+
+ +
+
+ + +
+ +

+ Properties +

+ + + + + + + + + + + + + + +
+ + + Optional + role + + +
+ Type : Nullable<Role> + +
+ +
+ + + + + + + + + + + + + + +
+ + + user_email + + +
+ Type : string + +
+ +
+ + + + + + + + + + + + + + +
+ + + workspace_id + + +
+ Type : string + +
+ +
+
+ + + + + + + +
+ + +
+
export enum Role {
+    Admin = "Admin",
+    Member = "Member",
+    Viewer = "Viewer"
+}
+
+export class CreateBoardInput {
+    title: string;
+    description?: Nullable<string>;
+    color: string;
+    workspace_id: string;
+}
+
+export class UpdateBoardInput {
+    board_id: string;
+    title?: Nullable<string>;
+    description?: Nullable<string>;
+    color?: Nullable<string>;
+}
+
+export class CreateListInput {
+    title: string;
+    board_id: string;
+    position: number;
+    color?: Nullable<string>;
+}
+
+export class UpdateListInput {
+    list_id: string;
+    title?: Nullable<string>;
+    position?: Nullable<number>;
+    color?: Nullable<string>;
+}
+
+export class CreateCardInput {
+    title: string;
+    list_id: string;
+    description?: Nullable<string>;
+    position: number;
+    due_date?: Nullable<DateTime>;
+}
+
+export class UpdateCardInput {
+    card_id: string;
+    title?: Nullable<string>;
+    description?: Nullable<string>;
+    position?: Nullable<number>;
+    due_date?: Nullable<DateTime>;
+}
+
+export class CreateLabelInput {
+    name: string;
+    color: string;
+    board_id: string;
+}
+
+export class UpdateLabelInput {
+    label_id: string;
+    name?: Nullable<string>;
+    color?: Nullable<string>;
+}
+
+export class LoginInput {
+    email: string;
+    password: string;
+}
+
+export class RegisterInput {
+    username: string;
+    email: string;
+    password: string;
+}
+
+export class CreateUserInput {
+    username: string;
+    email: string;
+    password: string;
+}
+
+export class UpdateUserInput {
+    user_id: string;
+    username?: Nullable<string>;
+    email?: Nullable<string>;
+    password?: Nullable<string>;
+}
+
+export class CreateWorkspaceInput {
+    name: string;
+    description?: Nullable<string>;
+    color?: Nullable<string>;
+}
+
+export class UpdateWorkspaceInput {
+    name?: Nullable<string>;
+    description?: Nullable<string>;
+    color?: Nullable<string>;
+}
+
+export class AddWorkspaceMemberInput {
+    workspace_id: string;
+    user_email: string;
+    role?: Nullable<Role>;
+}
+
+export class UpdateMemberRoleInput {
+    workspace_id: string;
+    user_id: string;
+    role: Role;
+}
+
+export class Board {
+    board_id: string;
+    title: string;
+    description?: Nullable<string>;
+    color: string;
+    lists: List[];
+    workspace_id: string;
+}
+
+export class List {
+    list_id: string;
+    title: string;
+    position: number;
+    color: string;
+    board_id: string;
+    cards?: Nullable<Nullable<Card>[]>;
+}
+
+export class Card {
+    card_id: string;
+    title: string;
+    description?: Nullable<string>;
+    position: number;
+    list_id: string;
+    labels?: Nullable<Nullable<Label>[]>;
+    due_date?: Nullable<DateTime>;
+    comments?: Nullable<Nullable<Comment>[]>;
+    attachments?: Nullable<Nullable<Attachment>[]>;
+    members?: Nullable<Nullable<CardMember>[]>;
+}
+
+export class Comment {
+    comment_id: string;
+    content: string;
+    created_at: DateTime;
+    card_id: string;
+    user_id: string;
+}
+
+export class Label {
+    label_id: string;
+    name: string;
+    color: string;
+    workspace_id: string;
+}
+
+export class Attachment {
+    attachment_id: string;
+    card_id: string;
+    url: string;
+    filename: string;
+}
+
+export class CardLabel {
+    card_id: string;
+    label_id: string;
+}
+
+export class CardMember {
+    card_id: string;
+    user_id: string;
+}
+
+export abstract class IQuery {
+    abstract boards(workspace_id: string): Nullable<Nullable<Board>[]> | Promise<Nullable<Nullable<Board>[]>>;
+
+    abstract board(board_id: string): Nullable<Board> | Promise<Nullable<Board>>;
+
+    abstract lists(board_id: string): Nullable<Nullable<List>[]> | Promise<Nullable<Nullable<List>[]>>;
+
+    abstract list(list_id: string): Nullable<List> | Promise<Nullable<List>>;
+
+    abstract cards(list_id: string): Nullable<Nullable<Card>[]> | Promise<Nullable<Nullable<Card>[]>>;
+
+    abstract card(card_id: string): Nullable<Card> | Promise<Nullable<Card>>;
+
+    abstract labels(workspace_id: string): Nullable<Nullable<Label>[]> | Promise<Nullable<Nullable<Label>[]>>;
+
+    abstract comments(card_id: string): Nullable<Nullable<Comment>[]> | Promise<Nullable<Nullable<Comment>[]>>;
+
+    abstract users(): Nullable<Nullable<User>[]> | Promise<Nullable<Nullable<User>[]>>;
+
+    abstract user(user_id: string): Nullable<User> | Promise<Nullable<User>>;
+
+    abstract me(): Nullable<User> | Promise<Nullable<User>>;
+
+    abstract workspaces(): Nullable<Nullable<Workspace>[]> | Promise<Nullable<Nullable<Workspace>[]>>;
+
+    abstract workspace(workspace_id: string): Nullable<Workspace> | Promise<Nullable<Workspace>>;
+
+    abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise<WorkspaceMembers[]>;
+}
+
+export class CreateBoardPayload {
+    board?: Nullable<Board>;
+}
+
+export abstract class IMutation {
+    abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise<CreateBoardPayload>;
+
+    abstract updateBoard(input: UpdateBoardInput): Board | Promise<Board>;
+
+    abstract deleteBoard(board_id: string): Status | Promise<Status>;
+
+    abstract createList(input: CreateListInput): List | Promise<List>;
+
+    abstract updateList(input: UpdateListInput): List | Promise<List>;
+
+    abstract deleteList(list_id: string): Status | Promise<Status>;
+
+    abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise<List[]>;
+
+    abstract createCard(input: CreateCardInput): Card | Promise<Card>;
+
+    abstract updateCard(input: UpdateCardInput): Card | Promise<Card>;
+
+    abstract deleteCard(card_id: string): Status | Promise<Status>;
+
+    abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise<Card>;
+
+    abstract createLabel(input: CreateLabelInput): Label | Promise<Label>;
+
+    abstract updateLabel(input: UpdateLabelInput): Label | Promise<Label>;
+
+    abstract deleteLabel(label_id: string): Status | Promise<Status>;
+
+    abstract uploadFile(file: Upload): FileResponse | Promise<FileResponse>;
+
+    abstract createUser(input: CreateUserInput): Nullable<User> | Promise<Nullable<User>>;
+
+    abstract updateUser(input: UpdateUserInput): Nullable<User> | Promise<Nullable<User>>;
+
+    abstract deleteUser(user_id: string): Nullable<User> | Promise<Nullable<User>>;
+
+    abstract login(input: LoginInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
+
+    abstract register(input: RegisterInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
+
+    abstract logout(): Status | Promise<Status>;
+
+    abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise<Workspace>;
+
+    abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise<Workspace>;
+
+    abstract deleteWorkspace(workspace_id: string): Status | Promise<Status>;
+
+    abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
+
+    abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
+
+    abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise<WorkspaceMembers>;
+
+    abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise<Status>;
+
+    abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise<WorkspaceMembers>;
+}
+
+export class Success {
+    successMessage?: Nullable<string>;
+}
+
+export class Error {
+    errorMessage: string;
+    code?: Nullable<string>;
+}
+
+export class FileResponse {
+    success: boolean;
+    url?: Nullable<string>;
+    message?: Nullable<string>;
+}
+
+export class User {
+    user_id: string;
+    username: string;
+    email: string;
+    picture?: Nullable<string>;
+    created_at: DateTime;
+}
+
+export class AuthSuccess {
+    token: string;
+    user: User;
+}
+
+export class AuthError {
+    message: string;
+    code?: Nullable<string>;
+    field?: Nullable<string>;
+}
+
+export class Workspace {
+    workspace_id: string;
+    name: string;
+    color: string;
+    description?: Nullable<string>;
+    owner_id: string;
+    owner: User;
+    members: WorkspaceMembers[];
+    boards?: Nullable<Nullable<Board>[]>;
+    labels?: Nullable<Nullable<Label>[]>;
+    is_pinned: boolean;
+}
+
+export class WorkspaceMembers {
+    workspace_id: string;
+    user_id: string;
+    role: string;
+    user: User;
+    workspace: Workspace;
+}
+
+export class PinWorkspacePayload {
+    workspace: Workspace;
+}
+
+export type DateTime = any;
+export type Upload = any;
+export type Status = Success | Error;
+export type AuthResult = AuthSuccess | AuthError;
+type Nullable<T> = T | null;
+
+
+
+ + + + + + + + + +
+
+

results matching ""

+
    +
    +
    +

    No results matching ""

    +
    +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/classes/Attachment.html b/backend/documentation/classes/Attachment.html new file mode 100644 index 0000000..108f2fd --- /dev/null +++ b/backend/documentation/classes/Attachment.html @@ -0,0 +1,720 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
    +
    + + +
    +
    + + + + + + + + + + + + + + + + + + + + +
    +
    +

    +

    File

    +

    +

    + src/graphql/graphql.ts +

    + + + + + + +
    +

    Index

    + + + + + + + + + + + + + + + +
    +
    Properties
    +
    + +
    +
    + + +
    + +

    + Properties +

    + + + + + + + + + + + + + + +
    + + + attachment_id + + +
    + Type : string + +
    + +
    + + + + + + + + + + + + + + +
    + + + card_id + + +
    + Type : string + +
    + +
    + + + + + + + + + + + + + + +
    + + + filename + + +
    + Type : string + +
    + +
    + + + + + + + + + + + + + + +
    + + + url + + +
    + Type : string + +
    + +
    +
    + + + + + + + +
    + + +
    +
    export enum Role {
    +    Admin = "Admin",
    +    Member = "Member",
    +    Viewer = "Viewer"
    +}
    +
    +export class CreateBoardInput {
    +    title: string;
    +    description?: Nullable<string>;
    +    color: string;
    +    workspace_id: string;
    +}
    +
    +export class UpdateBoardInput {
    +    board_id: string;
    +    title?: Nullable<string>;
    +    description?: Nullable<string>;
    +    color?: Nullable<string>;
    +}
    +
    +export class CreateListInput {
    +    title: string;
    +    board_id: string;
    +    position: number;
    +    color?: Nullable<string>;
    +}
    +
    +export class UpdateListInput {
    +    list_id: string;
    +    title?: Nullable<string>;
    +    position?: Nullable<number>;
    +    color?: Nullable<string>;
    +}
    +
    +export class CreateCardInput {
    +    title: string;
    +    list_id: string;
    +    description?: Nullable<string>;
    +    position: number;
    +    due_date?: Nullable<DateTime>;
    +}
    +
    +export class UpdateCardInput {
    +    card_id: string;
    +    title?: Nullable<string>;
    +    description?: Nullable<string>;
    +    position?: Nullable<number>;
    +    due_date?: Nullable<DateTime>;
    +}
    +
    +export class CreateLabelInput {
    +    name: string;
    +    color: string;
    +    board_id: string;
    +}
    +
    +export class UpdateLabelInput {
    +    label_id: string;
    +    name?: Nullable<string>;
    +    color?: Nullable<string>;
    +}
    +
    +export class LoginInput {
    +    email: string;
    +    password: string;
    +}
    +
    +export class RegisterInput {
    +    username: string;
    +    email: string;
    +    password: string;
    +}
    +
    +export class CreateUserInput {
    +    username: string;
    +    email: string;
    +    password: string;
    +}
    +
    +export class UpdateUserInput {
    +    user_id: string;
    +    username?: Nullable<string>;
    +    email?: Nullable<string>;
    +    password?: Nullable<string>;
    +}
    +
    +export class CreateWorkspaceInput {
    +    name: string;
    +    description?: Nullable<string>;
    +    color?: Nullable<string>;
    +}
    +
    +export class UpdateWorkspaceInput {
    +    name?: Nullable<string>;
    +    description?: Nullable<string>;
    +    color?: Nullable<string>;
    +}
    +
    +export class AddWorkspaceMemberInput {
    +    workspace_id: string;
    +    user_email: string;
    +    role?: Nullable<Role>;
    +}
    +
    +export class UpdateMemberRoleInput {
    +    workspace_id: string;
    +    user_id: string;
    +    role: Role;
    +}
    +
    +export class Board {
    +    board_id: string;
    +    title: string;
    +    description?: Nullable<string>;
    +    color: string;
    +    lists: List[];
    +    workspace_id: string;
    +}
    +
    +export class List {
    +    list_id: string;
    +    title: string;
    +    position: number;
    +    color: string;
    +    board_id: string;
    +    cards?: Nullable<Nullable<Card>[]>;
    +}
    +
    +export class Card {
    +    card_id: string;
    +    title: string;
    +    description?: Nullable<string>;
    +    position: number;
    +    list_id: string;
    +    labels?: Nullable<Nullable<Label>[]>;
    +    due_date?: Nullable<DateTime>;
    +    comments?: Nullable<Nullable<Comment>[]>;
    +    attachments?: Nullable<Nullable<Attachment>[]>;
    +    members?: Nullable<Nullable<CardMember>[]>;
    +}
    +
    +export class Comment {
    +    comment_id: string;
    +    content: string;
    +    created_at: DateTime;
    +    card_id: string;
    +    user_id: string;
    +}
    +
    +export class Label {
    +    label_id: string;
    +    name: string;
    +    color: string;
    +    workspace_id: string;
    +}
    +
    +export class Attachment {
    +    attachment_id: string;
    +    card_id: string;
    +    url: string;
    +    filename: string;
    +}
    +
    +export class CardLabel {
    +    card_id: string;
    +    label_id: string;
    +}
    +
    +export class CardMember {
    +    card_id: string;
    +    user_id: string;
    +}
    +
    +export abstract class IQuery {
    +    abstract boards(workspace_id: string): Nullable<Nullable<Board>[]> | Promise<Nullable<Nullable<Board>[]>>;
    +
    +    abstract board(board_id: string): Nullable<Board> | Promise<Nullable<Board>>;
    +
    +    abstract lists(board_id: string): Nullable<Nullable<List>[]> | Promise<Nullable<Nullable<List>[]>>;
    +
    +    abstract list(list_id: string): Nullable<List> | Promise<Nullable<List>>;
    +
    +    abstract cards(list_id: string): Nullable<Nullable<Card>[]> | Promise<Nullable<Nullable<Card>[]>>;
    +
    +    abstract card(card_id: string): Nullable<Card> | Promise<Nullable<Card>>;
    +
    +    abstract labels(workspace_id: string): Nullable<Nullable<Label>[]> | Promise<Nullable<Nullable<Label>[]>>;
    +
    +    abstract comments(card_id: string): Nullable<Nullable<Comment>[]> | Promise<Nullable<Nullable<Comment>[]>>;
    +
    +    abstract users(): Nullable<Nullable<User>[]> | Promise<Nullable<Nullable<User>[]>>;
    +
    +    abstract user(user_id: string): Nullable<User> | Promise<Nullable<User>>;
    +
    +    abstract me(): Nullable<User> | Promise<Nullable<User>>;
    +
    +    abstract workspaces(): Nullable<Nullable<Workspace>[]> | Promise<Nullable<Nullable<Workspace>[]>>;
    +
    +    abstract workspace(workspace_id: string): Nullable<Workspace> | Promise<Nullable<Workspace>>;
    +
    +    abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise<WorkspaceMembers[]>;
    +}
    +
    +export class CreateBoardPayload {
    +    board?: Nullable<Board>;
    +}
    +
    +export abstract class IMutation {
    +    abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise<CreateBoardPayload>;
    +
    +    abstract updateBoard(input: UpdateBoardInput): Board | Promise<Board>;
    +
    +    abstract deleteBoard(board_id: string): Status | Promise<Status>;
    +
    +    abstract createList(input: CreateListInput): List | Promise<List>;
    +
    +    abstract updateList(input: UpdateListInput): List | Promise<List>;
    +
    +    abstract deleteList(list_id: string): Status | Promise<Status>;
    +
    +    abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise<List[]>;
    +
    +    abstract createCard(input: CreateCardInput): Card | Promise<Card>;
    +
    +    abstract updateCard(input: UpdateCardInput): Card | Promise<Card>;
    +
    +    abstract deleteCard(card_id: string): Status | Promise<Status>;
    +
    +    abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise<Card>;
    +
    +    abstract createLabel(input: CreateLabelInput): Label | Promise<Label>;
    +
    +    abstract updateLabel(input: UpdateLabelInput): Label | Promise<Label>;
    +
    +    abstract deleteLabel(label_id: string): Status | Promise<Status>;
    +
    +    abstract uploadFile(file: Upload): FileResponse | Promise<FileResponse>;
    +
    +    abstract createUser(input: CreateUserInput): Nullable<User> | Promise<Nullable<User>>;
    +
    +    abstract updateUser(input: UpdateUserInput): Nullable<User> | Promise<Nullable<User>>;
    +
    +    abstract deleteUser(user_id: string): Nullable<User> | Promise<Nullable<User>>;
    +
    +    abstract login(input: LoginInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
    +
    +    abstract register(input: RegisterInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
    +
    +    abstract logout(): Status | Promise<Status>;
    +
    +    abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise<Workspace>;
    +
    +    abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise<Workspace>;
    +
    +    abstract deleteWorkspace(workspace_id: string): Status | Promise<Status>;
    +
    +    abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
    +
    +    abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
    +
    +    abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise<WorkspaceMembers>;
    +
    +    abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise<Status>;
    +
    +    abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise<WorkspaceMembers>;
    +}
    +
    +export class Success {
    +    successMessage?: Nullable<string>;
    +}
    +
    +export class Error {
    +    errorMessage: string;
    +    code?: Nullable<string>;
    +}
    +
    +export class FileResponse {
    +    success: boolean;
    +    url?: Nullable<string>;
    +    message?: Nullable<string>;
    +}
    +
    +export class User {
    +    user_id: string;
    +    username: string;
    +    email: string;
    +    picture?: Nullable<string>;
    +    created_at: DateTime;
    +}
    +
    +export class AuthSuccess {
    +    token: string;
    +    user: User;
    +}
    +
    +export class AuthError {
    +    message: string;
    +    code?: Nullable<string>;
    +    field?: Nullable<string>;
    +}
    +
    +export class Workspace {
    +    workspace_id: string;
    +    name: string;
    +    color: string;
    +    description?: Nullable<string>;
    +    owner_id: string;
    +    owner: User;
    +    members: WorkspaceMembers[];
    +    boards?: Nullable<Nullable<Board>[]>;
    +    labels?: Nullable<Nullable<Label>[]>;
    +    is_pinned: boolean;
    +}
    +
    +export class WorkspaceMembers {
    +    workspace_id: string;
    +    user_id: string;
    +    role: string;
    +    user: User;
    +    workspace: Workspace;
    +}
    +
    +export class PinWorkspacePayload {
    +    workspace: Workspace;
    +}
    +
    +export type DateTime = any;
    +export type Upload = any;
    +export type Status = Success | Error;
    +export type AuthResult = AuthSuccess | AuthError;
    +type Nullable<T> = T | null;
    +
    +
    +
    + + + + + + + + + +
    +
    +

    results matching ""

    +
      +
      +
      +

      No results matching ""

      +
      +
      +
      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/classes/AuthError.html b/backend/documentation/classes/AuthError.html new file mode 100644 index 0000000..e458158 --- /dev/null +++ b/backend/documentation/classes/AuthError.html @@ -0,0 +1,695 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
      +
      + + +
      +
      + + + + + + + + + + + + + + + + + + + + +
      +
      +

      +

      File

      +

      +

      + src/graphql/graphql.ts +

      + + + + + + +
      +

      Index

      + + + + + + + + + + + + + + + +
      +
      Properties
      +
      + +
      +
      + + +
      + +

      + Properties +

      + + + + + + + + + + + + + + +
      + + + Optional + code + + +
      + Type : Nullable<string> + +
      + +
      + + + + + + + + + + + + + + +
      + + + Optional + field + + +
      + Type : Nullable<string> + +
      + +
      + + + + + + + + + + + + + + +
      + + + message + + +
      + Type : string + +
      + +
      +
      + + + + + + + +
      + + +
      +
      export enum Role {
      +    Admin = "Admin",
      +    Member = "Member",
      +    Viewer = "Viewer"
      +}
      +
      +export class CreateBoardInput {
      +    title: string;
      +    description?: Nullable<string>;
      +    color: string;
      +    workspace_id: string;
      +}
      +
      +export class UpdateBoardInput {
      +    board_id: string;
      +    title?: Nullable<string>;
      +    description?: Nullable<string>;
      +    color?: Nullable<string>;
      +}
      +
      +export class CreateListInput {
      +    title: string;
      +    board_id: string;
      +    position: number;
      +    color?: Nullable<string>;
      +}
      +
      +export class UpdateListInput {
      +    list_id: string;
      +    title?: Nullable<string>;
      +    position?: Nullable<number>;
      +    color?: Nullable<string>;
      +}
      +
      +export class CreateCardInput {
      +    title: string;
      +    list_id: string;
      +    description?: Nullable<string>;
      +    position: number;
      +    due_date?: Nullable<DateTime>;
      +}
      +
      +export class UpdateCardInput {
      +    card_id: string;
      +    title?: Nullable<string>;
      +    description?: Nullable<string>;
      +    position?: Nullable<number>;
      +    due_date?: Nullable<DateTime>;
      +}
      +
      +export class CreateLabelInput {
      +    name: string;
      +    color: string;
      +    board_id: string;
      +}
      +
      +export class UpdateLabelInput {
      +    label_id: string;
      +    name?: Nullable<string>;
      +    color?: Nullable<string>;
      +}
      +
      +export class LoginInput {
      +    email: string;
      +    password: string;
      +}
      +
      +export class RegisterInput {
      +    username: string;
      +    email: string;
      +    password: string;
      +}
      +
      +export class CreateUserInput {
      +    username: string;
      +    email: string;
      +    password: string;
      +}
      +
      +export class UpdateUserInput {
      +    user_id: string;
      +    username?: Nullable<string>;
      +    email?: Nullable<string>;
      +    password?: Nullable<string>;
      +}
      +
      +export class CreateWorkspaceInput {
      +    name: string;
      +    description?: Nullable<string>;
      +    color?: Nullable<string>;
      +}
      +
      +export class UpdateWorkspaceInput {
      +    name?: Nullable<string>;
      +    description?: Nullable<string>;
      +    color?: Nullable<string>;
      +}
      +
      +export class AddWorkspaceMemberInput {
      +    workspace_id: string;
      +    user_email: string;
      +    role?: Nullable<Role>;
      +}
      +
      +export class UpdateMemberRoleInput {
      +    workspace_id: string;
      +    user_id: string;
      +    role: Role;
      +}
      +
      +export class Board {
      +    board_id: string;
      +    title: string;
      +    description?: Nullable<string>;
      +    color: string;
      +    lists: List[];
      +    workspace_id: string;
      +}
      +
      +export class List {
      +    list_id: string;
      +    title: string;
      +    position: number;
      +    color: string;
      +    board_id: string;
      +    cards?: Nullable<Nullable<Card>[]>;
      +}
      +
      +export class Card {
      +    card_id: string;
      +    title: string;
      +    description?: Nullable<string>;
      +    position: number;
      +    list_id: string;
      +    labels?: Nullable<Nullable<Label>[]>;
      +    due_date?: Nullable<DateTime>;
      +    comments?: Nullable<Nullable<Comment>[]>;
      +    attachments?: Nullable<Nullable<Attachment>[]>;
      +    members?: Nullable<Nullable<CardMember>[]>;
      +}
      +
      +export class Comment {
      +    comment_id: string;
      +    content: string;
      +    created_at: DateTime;
      +    card_id: string;
      +    user_id: string;
      +}
      +
      +export class Label {
      +    label_id: string;
      +    name: string;
      +    color: string;
      +    workspace_id: string;
      +}
      +
      +export class Attachment {
      +    attachment_id: string;
      +    card_id: string;
      +    url: string;
      +    filename: string;
      +}
      +
      +export class CardLabel {
      +    card_id: string;
      +    label_id: string;
      +}
      +
      +export class CardMember {
      +    card_id: string;
      +    user_id: string;
      +}
      +
      +export abstract class IQuery {
      +    abstract boards(workspace_id: string): Nullable<Nullable<Board>[]> | Promise<Nullable<Nullable<Board>[]>>;
      +
      +    abstract board(board_id: string): Nullable<Board> | Promise<Nullable<Board>>;
      +
      +    abstract lists(board_id: string): Nullable<Nullable<List>[]> | Promise<Nullable<Nullable<List>[]>>;
      +
      +    abstract list(list_id: string): Nullable<List> | Promise<Nullable<List>>;
      +
      +    abstract cards(list_id: string): Nullable<Nullable<Card>[]> | Promise<Nullable<Nullable<Card>[]>>;
      +
      +    abstract card(card_id: string): Nullable<Card> | Promise<Nullable<Card>>;
      +
      +    abstract labels(workspace_id: string): Nullable<Nullable<Label>[]> | Promise<Nullable<Nullable<Label>[]>>;
      +
      +    abstract comments(card_id: string): Nullable<Nullable<Comment>[]> | Promise<Nullable<Nullable<Comment>[]>>;
      +
      +    abstract users(): Nullable<Nullable<User>[]> | Promise<Nullable<Nullable<User>[]>>;
      +
      +    abstract user(user_id: string): Nullable<User> | Promise<Nullable<User>>;
      +
      +    abstract me(): Nullable<User> | Promise<Nullable<User>>;
      +
      +    abstract workspaces(): Nullable<Nullable<Workspace>[]> | Promise<Nullable<Nullable<Workspace>[]>>;
      +
      +    abstract workspace(workspace_id: string): Nullable<Workspace> | Promise<Nullable<Workspace>>;
      +
      +    abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise<WorkspaceMembers[]>;
      +}
      +
      +export class CreateBoardPayload {
      +    board?: Nullable<Board>;
      +}
      +
      +export abstract class IMutation {
      +    abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise<CreateBoardPayload>;
      +
      +    abstract updateBoard(input: UpdateBoardInput): Board | Promise<Board>;
      +
      +    abstract deleteBoard(board_id: string): Status | Promise<Status>;
      +
      +    abstract createList(input: CreateListInput): List | Promise<List>;
      +
      +    abstract updateList(input: UpdateListInput): List | Promise<List>;
      +
      +    abstract deleteList(list_id: string): Status | Promise<Status>;
      +
      +    abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise<List[]>;
      +
      +    abstract createCard(input: CreateCardInput): Card | Promise<Card>;
      +
      +    abstract updateCard(input: UpdateCardInput): Card | Promise<Card>;
      +
      +    abstract deleteCard(card_id: string): Status | Promise<Status>;
      +
      +    abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise<Card>;
      +
      +    abstract createLabel(input: CreateLabelInput): Label | Promise<Label>;
      +
      +    abstract updateLabel(input: UpdateLabelInput): Label | Promise<Label>;
      +
      +    abstract deleteLabel(label_id: string): Status | Promise<Status>;
      +
      +    abstract uploadFile(file: Upload): FileResponse | Promise<FileResponse>;
      +
      +    abstract createUser(input: CreateUserInput): Nullable<User> | Promise<Nullable<User>>;
      +
      +    abstract updateUser(input: UpdateUserInput): Nullable<User> | Promise<Nullable<User>>;
      +
      +    abstract deleteUser(user_id: string): Nullable<User> | Promise<Nullable<User>>;
      +
      +    abstract login(input: LoginInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
      +
      +    abstract register(input: RegisterInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
      +
      +    abstract logout(): Status | Promise<Status>;
      +
      +    abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise<Workspace>;
      +
      +    abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise<Workspace>;
      +
      +    abstract deleteWorkspace(workspace_id: string): Status | Promise<Status>;
      +
      +    abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
      +
      +    abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
      +
      +    abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise<WorkspaceMembers>;
      +
      +    abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise<Status>;
      +
      +    abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise<WorkspaceMembers>;
      +}
      +
      +export class Success {
      +    successMessage?: Nullable<string>;
      +}
      +
      +export class Error {
      +    errorMessage: string;
      +    code?: Nullable<string>;
      +}
      +
      +export class FileResponse {
      +    success: boolean;
      +    url?: Nullable<string>;
      +    message?: Nullable<string>;
      +}
      +
      +export class User {
      +    user_id: string;
      +    username: string;
      +    email: string;
      +    picture?: Nullable<string>;
      +    created_at: DateTime;
      +}
      +
      +export class AuthSuccess {
      +    token: string;
      +    user: User;
      +}
      +
      +export class AuthError {
      +    message: string;
      +    code?: Nullable<string>;
      +    field?: Nullable<string>;
      +}
      +
      +export class Workspace {
      +    workspace_id: string;
      +    name: string;
      +    color: string;
      +    description?: Nullable<string>;
      +    owner_id: string;
      +    owner: User;
      +    members: WorkspaceMembers[];
      +    boards?: Nullable<Nullable<Board>[]>;
      +    labels?: Nullable<Nullable<Label>[]>;
      +    is_pinned: boolean;
      +}
      +
      +export class WorkspaceMembers {
      +    workspace_id: string;
      +    user_id: string;
      +    role: string;
      +    user: User;
      +    workspace: Workspace;
      +}
      +
      +export class PinWorkspacePayload {
      +    workspace: Workspace;
      +}
      +
      +export type DateTime = any;
      +export type Upload = any;
      +export type Status = Success | Error;
      +export type AuthResult = AuthSuccess | AuthError;
      +type Nullable<T> = T | null;
      +
      +
      +
      + + + + + + + + + +
      +
      +

      results matching ""

      +
        +
        +
        +

        No results matching ""

        +
        +
        +
        + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/classes/AuthResolver.html b/backend/documentation/classes/AuthResolver.html new file mode 100644 index 0000000..2652714 --- /dev/null +++ b/backend/documentation/classes/AuthResolver.html @@ -0,0 +1,859 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
        +
        + + +
        +
        + + + + + + + + + + + + + + + + + + + + +
        +
        +

        +

        File

        +

        +

        + src/auth/auth.resolver.ts +

        + + + + + + +
        +

        Index

        + + + + + + + + + + + + + + + +
        +
        Methods
        +
        + +
        +
        + +
        +

        Constructor

        + + + + + + + + + + + + + +
        +constructor(authService: AuthService) +
        + +
        +
        + Parameters : + + + + + + + + + + + + + + + + + + +
        NameTypeOptional
        authService + AuthService + + No +
        +
        +
        +
        + + +
        + +

        + Methods +

        + + + + + + + + + + + + + + + + + + + + + + +
        + + + + Async + login + + +
        + + login(input: LoginInput, context: literal type) +
        + Decorators : +
        + @Mutation()
        +
        + +
        +

        User authentication.

        +
          +
        • Returns an AuthResult containing the token on success.
        • +
        • @param input Email and Password
        • +
        +Example :
        mutation Login($input: LoginInput!) {
        +login(input: $input) {
        +    __typename
        +   # Success case
        +    ... on AuthSuccess {
        +        token
        +        user {
        +         username
        +         email
        +        }
        +   # Error case
        +    ... on AuthError {
        +        message
        +        code
        +    }
        +}
        Example :
        {
        +  "input": {
        +```html
        +    "password": "secretPassword"
        +  }
        +}
        + +
        + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        NameTypeOptionalDescription
        input + LoginInput + + No + +

        Email and Password

        +Example :
        mutation Login($input: LoginInput!) {
        +login(input: $input) {
        +__typename
        +# Success case
        +... on AuthSuccess {
        +token
        +user {
        +username
        +email
        +}
        +# Error case
        +... on AuthError {
        +message
        +code
        +}
        +}
        Example :
        {
        +"input": {
        +"email": "john@example.com",
        +"password": "secretPassword"
        +}
        +}
        +
        context + literal type + + No + +
        +
        +
        + Returns : unknown + +
        +
        + +
        +
        + + + + + + + + + + + + + + + + + + + + + + +
        + + + + Async + logout + + +
        + + logout(context: literal type) +
        + Decorators : +
        + @Mutation()
        +
        + +
        +

        Logout mutation. +This mutation clears the session cookie.

        +
        + +
        + Parameters : + + + + + + + + + + + + + + + + + + + +
        NameTypeOptional
        context + literal type + + No +
        +
        +
        + Returns : unknown + +
        +
        + +
        +
        + + + + + + + + + + + + + + + + + + + + + + +
        + + + + Async + register + + +
        + + register(input: RegisterInput, context: literal type) +
        + Decorators : +
        + @Mutation('register')
        +
        + +
        +

        Mutation for user registration.

        +
          +
        • This mutation returns an Union (AuthResult): either a success with the token, or a detailed error.
        • +
        +Example :
        mutation Register($input: RegisterInput!) {
        +  register(input: $input) {
        +      __typename
        +      # Success case
        +      ... on AuthSuccess {
        +        token
        +        user {
        +          user_id
        +          username
        +          email
        +        }
        +      }
        +      # Error case
        +      ... on AuthError {
        +          message
        +          code
        +          field
        +      }
        +   }
        +}
        Example :
        {
        +  "input": {
        +    "username": "John",
        +    "email": "john@test.com",
        +    "password": "secretPassword"
        +  }
        +}
        + +
        + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        NameTypeOptionalDescription
        input + RegisterInput + + No + +

        The registration data (username, email, password)

        + +
        context + literal type + + No + +
        +
        +
        + Returns : unknown + +
        +
        +

        An AuthResult which can be either AuthSuccess or AuthError

        +Example :
        mutation Register($input: RegisterInput!) {
        +register(input: $input) {
        +__typename
        +# Success case
        +... on AuthSuccess {
        +token
        +user {
        + user_id
        + username
        + email
        +}
        +}
        +# Error case
        +... on AuthError {
        + message
        + code
        + field
        +}
        +}
        +}
        Example :
        {
        +"input": {
        +"username": "John",
        +"email": "john@test.com",
        +"password": "secretPassword"
        +}
        +}
        +
        +
        +
        + + + + + +
        + + +
        +
        import {
        +    Resolver,
        +    Mutation,
        +    Args,
        +    Context,
        +    ResolveField,
        +} from '@nestjs/graphql';
        +import { AuthService } from './auth.service';
        +import { FastifyReply } from 'fastify';
        +import { RegisterInput, LoginInput } from '../graphql/graphql';
        +
        +@Resolver('AuthResult')
        +export class AuthResultResolver {
        +    @ResolveField()
        +    __resolveType(value) {
        +        return value.__typename;
        +    }
        +}
        +
        +@Resolver()
        +export class AuthResolver {
        +    constructor(private authService: AuthService) {}
        +
        +    /**
        +     * User authentication.
        +     * * Returns an `AuthResult` containing the token on success.
        +     * * @param input Email and Password
        +     * ```graphql
        +     * mutation Login($input: LoginInput!) {
        +     * login(input: $input) {
        +     *     __typename
        +     *    # Success case
        +     *     ... on AuthSuccess {
        +     *         token
        +     *         user {
        +     *          username
        +     *          email
        +     *         }
        +     *    # Error case
        +     *     ... on AuthError {
        +     *         message
        +     *         code
        +     *     }
        +     * }
        +     * ```
        +     * ```json
        +     * {
        +     *   "input": {
        +     *     "email": "john@example.com",
        +     *     "password": "secretPassword"
        +     *   }
        +     * }
        +     * ```
        +     */
        +    @Mutation()
        +    async login(
        +        @Args('input')
        +        input: LoginInput,
        +        @Context() context: { reply: FastifyReply },
        +    ) {
        +        const result = await this.authService.loginUser(input);
        +
        +        if (result.__typename === 'AuthSuccess' && result.token) {
        +            context.reply.setCookie('session', result.token, {
        +                httpOnly: true,
        +                secure: process.env.NODE_ENV === 'production',
        +                path: '/',
        +            });
        +        }
        +        return result;
        +    }
        +
        +    /**
        +     * Mutation for user registration.
        +     * * This mutation returns an Union (`AuthResult`): either a success with the token, or a detailed error.
        +     *
        +     * @param input The registration data (username, email, password)
        +     * @returns An `AuthResult` which can be either `AuthSuccess` or `AuthError`
        +     *
        +     * ```graphql
        +     * mutation Register($input: RegisterInput!) {
        +     *   register(input: $input) {
        +     *       __typename
        +     *       # Success case
        +     *       ... on AuthSuccess {
        +     *         token
        +     *         user {
        +     *           user_id
        +     *           username
        +     *           email
        +     *         }
        +     *       }
        +     *       # Error case
        +     *       ... on AuthError {
        +     *           message
        +     *           code
        +     *           field
        +     *       }
        +     *    }
        +     * }
        +     * ```
        +     * ```json
        +     * {
        +     *   "input": {
        +     *     "username": "John",
        +     *     "email": "john@test.com",
        +     *     "password": "secretPassword"
        +     *   }
        +     * }
        +     * ```
        +     */
        +    @Mutation('register')
        +    async register(
        +        @Args('input')
        +        input: RegisterInput,
        +        @Context() context: { reply: FastifyReply },
        +    ) {
        +        const result = await this.authService.registerUser(input);
        +
        +        if (result.__typename === 'AuthSuccess' && result.token) {
        +            context.reply.setCookie('session', result.token, {
        +                httpOnly: true,
        +                secure: process.env.NODE_ENV === 'production',
        +                path: '/',
        +            });
        +        }
        +        return result;
        +    }
        +
        +    /**
        +     * Logout mutation.
        +     * This mutation clears the session cookie.
        +     */
        +    @Mutation()
        +    async logout(@Context() context: { reply: FastifyReply }) {
        +        try {
        +            context.reply.clearCookie('session', { path: '/' });
        +            return {
        +                __typename: 'Success',
        +                successMessage: 'Logout successful',
        +            };
        +        } catch (error) {
        +            return {
        +                __typename: 'Error',
        +                errorMessage: 'Logout failed',
        +                code: 'LOGOUT_FAILED',
        +            };
        +        }
        +    }
        +}
        +
        +
        +
        + + + + + + + + + +
        +
        +

        results matching ""

        +
          +
          +
          +

          No results matching ""

          +
          +
          +
          + +
          +
          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/classes/AuthResultResolver.html b/backend/documentation/classes/AuthResultResolver.html new file mode 100644 index 0000000..c722f3b --- /dev/null +++ b/backend/documentation/classes/AuthResultResolver.html @@ -0,0 +1,502 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
          +
          + + +
          +
          + + + + + + + + + + + + + + + + + + + + +
          +
          +

          +

          File

          +

          +

          + src/auth/auth.resolver.ts +

          + + + + + + +
          +

          Index

          + + + + + + + + + + + + + + + +
          +
          Methods
          +
          + +
          +
          + + + +
          + +

          + Methods +

          + + + + + + + + + + + + + + + + + + + + + + +
          + + + + __resolveType + + +
          + + __resolveType(value: unknown) +
          + Decorators : +
          + @ResolveField()
          +
          + +
          + +
          + Parameters : + + + + + + + + + + + + + + + + + + + +
          NameTypeOptional
          value + unknown + + No +
          +
          +
          + Returns : any + +
          +
          + +
          +
          +
          + + + + + +
          + + +
          +
          import {
          +    Resolver,
          +    Mutation,
          +    Args,
          +    Context,
          +    ResolveField,
          +} from '@nestjs/graphql';
          +import { AuthService } from './auth.service';
          +import { FastifyReply } from 'fastify';
          +import { RegisterInput, LoginInput } from '../graphql/graphql';
          +
          +@Resolver('AuthResult')
          +export class AuthResultResolver {
          +    @ResolveField()
          +    __resolveType(value) {
          +        return value.__typename;
          +    }
          +}
          +
          +@Resolver()
          +export class AuthResolver {
          +    constructor(private authService: AuthService) {}
          +
          +    /**
          +     * User authentication.
          +     * * Returns an `AuthResult` containing the token on success.
          +     * * @param input Email and Password
          +     * ```graphql
          +     * mutation Login($input: LoginInput!) {
          +     * login(input: $input) {
          +     *     __typename
          +     *    # Success case
          +     *     ... on AuthSuccess {
          +     *         token
          +     *         user {
          +     *          username
          +     *          email
          +     *         }
          +     *    # Error case
          +     *     ... on AuthError {
          +     *         message
          +     *         code
          +     *     }
          +     * }
          +     * ```
          +     * ```json
          +     * {
          +     *   "input": {
          +     *     "email": "john@example.com",
          +     *     "password": "secretPassword"
          +     *   }
          +     * }
          +     * ```
          +     */
          +    @Mutation()
          +    async login(
          +        @Args('input')
          +        input: LoginInput,
          +        @Context() context: { reply: FastifyReply },
          +    ) {
          +        const result = await this.authService.loginUser(input);
          +
          +        if (result.__typename === 'AuthSuccess' && result.token) {
          +            context.reply.setCookie('session', result.token, {
          +                httpOnly: true,
          +                secure: process.env.NODE_ENV === 'production',
          +                path: '/',
          +            });
          +        }
          +        return result;
          +    }
          +
          +    /**
          +     * Mutation for user registration.
          +     * * This mutation returns an Union (`AuthResult`): either a success with the token, or a detailed error.
          +     *
          +     * @param input The registration data (username, email, password)
          +     * @returns An `AuthResult` which can be either `AuthSuccess` or `AuthError`
          +     *
          +     * ```graphql
          +     * mutation Register($input: RegisterInput!) {
          +     *   register(input: $input) {
          +     *       __typename
          +     *       # Success case
          +     *       ... on AuthSuccess {
          +     *         token
          +     *         user {
          +     *           user_id
          +     *           username
          +     *           email
          +     *         }
          +     *       }
          +     *       # Error case
          +     *       ... on AuthError {
          +     *           message
          +     *           code
          +     *           field
          +     *       }
          +     *    }
          +     * }
          +     * ```
          +     * ```json
          +     * {
          +     *   "input": {
          +     *     "username": "John",
          +     *     "email": "john@test.com",
          +     *     "password": "secretPassword"
          +     *   }
          +     * }
          +     * ```
          +     */
          +    @Mutation('register')
          +    async register(
          +        @Args('input')
          +        input: RegisterInput,
          +        @Context() context: { reply: FastifyReply },
          +    ) {
          +        const result = await this.authService.registerUser(input);
          +
          +        if (result.__typename === 'AuthSuccess' && result.token) {
          +            context.reply.setCookie('session', result.token, {
          +                httpOnly: true,
          +                secure: process.env.NODE_ENV === 'production',
          +                path: '/',
          +            });
          +        }
          +        return result;
          +    }
          +
          +    /**
          +     * Logout mutation.
          +     * This mutation clears the session cookie.
          +     */
          +    @Mutation()
          +    async logout(@Context() context: { reply: FastifyReply }) {
          +        try {
          +            context.reply.clearCookie('session', { path: '/' });
          +            return {
          +                __typename: 'Success',
          +                successMessage: 'Logout successful',
          +            };
          +        } catch (error) {
          +            return {
          +                __typename: 'Error',
          +                errorMessage: 'Logout failed',
          +                code: 'LOGOUT_FAILED',
          +            };
          +        }
          +    }
          +}
          +
          +
          +
          + + + + + + + + + +
          +
          +

          results matching ""

          +
            +
            +
            +

            No results matching ""

            +
            +
            +
            + +
            +
            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/classes/AuthSuccess.html b/backend/documentation/classes/AuthSuccess.html new file mode 100644 index 0000000..359fffe --- /dev/null +++ b/backend/documentation/classes/AuthSuccess.html @@ -0,0 +1,662 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
            +
            + + +
            +
            + + + + + + + + + + + + + + + + + + + + +
            +
            +

            +

            File

            +

            +

            + src/graphql/graphql.ts +

            + + + + + + +
            +

            Index

            + + + + + + + + + + + + + + + +
            +
            Properties
            +
            + +
            +
            + + +
            + +

            + Properties +

            + + + + + + + + + + + + + + +
            + + + token + + +
            + Type : string + +
            + +
            + + + + + + + + + + + + + + +
            + + + user + + +
            + Type : User + +
            + +
            +
            + + + + + + + +
            + + +
            +
            export enum Role {
            +    Admin = "Admin",
            +    Member = "Member",
            +    Viewer = "Viewer"
            +}
            +
            +export class CreateBoardInput {
            +    title: string;
            +    description?: Nullable<string>;
            +    color: string;
            +    workspace_id: string;
            +}
            +
            +export class UpdateBoardInput {
            +    board_id: string;
            +    title?: Nullable<string>;
            +    description?: Nullable<string>;
            +    color?: Nullable<string>;
            +}
            +
            +export class CreateListInput {
            +    title: string;
            +    board_id: string;
            +    position: number;
            +    color?: Nullable<string>;
            +}
            +
            +export class UpdateListInput {
            +    list_id: string;
            +    title?: Nullable<string>;
            +    position?: Nullable<number>;
            +    color?: Nullable<string>;
            +}
            +
            +export class CreateCardInput {
            +    title: string;
            +    list_id: string;
            +    description?: Nullable<string>;
            +    position: number;
            +    due_date?: Nullable<DateTime>;
            +}
            +
            +export class UpdateCardInput {
            +    card_id: string;
            +    title?: Nullable<string>;
            +    description?: Nullable<string>;
            +    position?: Nullable<number>;
            +    due_date?: Nullable<DateTime>;
            +}
            +
            +export class CreateLabelInput {
            +    name: string;
            +    color: string;
            +    board_id: string;
            +}
            +
            +export class UpdateLabelInput {
            +    label_id: string;
            +    name?: Nullable<string>;
            +    color?: Nullable<string>;
            +}
            +
            +export class LoginInput {
            +    email: string;
            +    password: string;
            +}
            +
            +export class RegisterInput {
            +    username: string;
            +    email: string;
            +    password: string;
            +}
            +
            +export class CreateUserInput {
            +    username: string;
            +    email: string;
            +    password: string;
            +}
            +
            +export class UpdateUserInput {
            +    user_id: string;
            +    username?: Nullable<string>;
            +    email?: Nullable<string>;
            +    password?: Nullable<string>;
            +}
            +
            +export class CreateWorkspaceInput {
            +    name: string;
            +    description?: Nullable<string>;
            +    color?: Nullable<string>;
            +}
            +
            +export class UpdateWorkspaceInput {
            +    name?: Nullable<string>;
            +    description?: Nullable<string>;
            +    color?: Nullable<string>;
            +}
            +
            +export class AddWorkspaceMemberInput {
            +    workspace_id: string;
            +    user_email: string;
            +    role?: Nullable<Role>;
            +}
            +
            +export class UpdateMemberRoleInput {
            +    workspace_id: string;
            +    user_id: string;
            +    role: Role;
            +}
            +
            +export class Board {
            +    board_id: string;
            +    title: string;
            +    description?: Nullable<string>;
            +    color: string;
            +    lists: List[];
            +    workspace_id: string;
            +}
            +
            +export class List {
            +    list_id: string;
            +    title: string;
            +    position: number;
            +    color: string;
            +    board_id: string;
            +    cards?: Nullable<Nullable<Card>[]>;
            +}
            +
            +export class Card {
            +    card_id: string;
            +    title: string;
            +    description?: Nullable<string>;
            +    position: number;
            +    list_id: string;
            +    labels?: Nullable<Nullable<Label>[]>;
            +    due_date?: Nullable<DateTime>;
            +    comments?: Nullable<Nullable<Comment>[]>;
            +    attachments?: Nullable<Nullable<Attachment>[]>;
            +    members?: Nullable<Nullable<CardMember>[]>;
            +}
            +
            +export class Comment {
            +    comment_id: string;
            +    content: string;
            +    created_at: DateTime;
            +    card_id: string;
            +    user_id: string;
            +}
            +
            +export class Label {
            +    label_id: string;
            +    name: string;
            +    color: string;
            +    workspace_id: string;
            +}
            +
            +export class Attachment {
            +    attachment_id: string;
            +    card_id: string;
            +    url: string;
            +    filename: string;
            +}
            +
            +export class CardLabel {
            +    card_id: string;
            +    label_id: string;
            +}
            +
            +export class CardMember {
            +    card_id: string;
            +    user_id: string;
            +}
            +
            +export abstract class IQuery {
            +    abstract boards(workspace_id: string): Nullable<Nullable<Board>[]> | Promise<Nullable<Nullable<Board>[]>>;
            +
            +    abstract board(board_id: string): Nullable<Board> | Promise<Nullable<Board>>;
            +
            +    abstract lists(board_id: string): Nullable<Nullable<List>[]> | Promise<Nullable<Nullable<List>[]>>;
            +
            +    abstract list(list_id: string): Nullable<List> | Promise<Nullable<List>>;
            +
            +    abstract cards(list_id: string): Nullable<Nullable<Card>[]> | Promise<Nullable<Nullable<Card>[]>>;
            +
            +    abstract card(card_id: string): Nullable<Card> | Promise<Nullable<Card>>;
            +
            +    abstract labels(workspace_id: string): Nullable<Nullable<Label>[]> | Promise<Nullable<Nullable<Label>[]>>;
            +
            +    abstract comments(card_id: string): Nullable<Nullable<Comment>[]> | Promise<Nullable<Nullable<Comment>[]>>;
            +
            +    abstract users(): Nullable<Nullable<User>[]> | Promise<Nullable<Nullable<User>[]>>;
            +
            +    abstract user(user_id: string): Nullable<User> | Promise<Nullable<User>>;
            +
            +    abstract me(): Nullable<User> | Promise<Nullable<User>>;
            +
            +    abstract workspaces(): Nullable<Nullable<Workspace>[]> | Promise<Nullable<Nullable<Workspace>[]>>;
            +
            +    abstract workspace(workspace_id: string): Nullable<Workspace> | Promise<Nullable<Workspace>>;
            +
            +    abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise<WorkspaceMembers[]>;
            +}
            +
            +export class CreateBoardPayload {
            +    board?: Nullable<Board>;
            +}
            +
            +export abstract class IMutation {
            +    abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise<CreateBoardPayload>;
            +
            +    abstract updateBoard(input: UpdateBoardInput): Board | Promise<Board>;
            +
            +    abstract deleteBoard(board_id: string): Status | Promise<Status>;
            +
            +    abstract createList(input: CreateListInput): List | Promise<List>;
            +
            +    abstract updateList(input: UpdateListInput): List | Promise<List>;
            +
            +    abstract deleteList(list_id: string): Status | Promise<Status>;
            +
            +    abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise<List[]>;
            +
            +    abstract createCard(input: CreateCardInput): Card | Promise<Card>;
            +
            +    abstract updateCard(input: UpdateCardInput): Card | Promise<Card>;
            +
            +    abstract deleteCard(card_id: string): Status | Promise<Status>;
            +
            +    abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise<Card>;
            +
            +    abstract createLabel(input: CreateLabelInput): Label | Promise<Label>;
            +
            +    abstract updateLabel(input: UpdateLabelInput): Label | Promise<Label>;
            +
            +    abstract deleteLabel(label_id: string): Status | Promise<Status>;
            +
            +    abstract uploadFile(file: Upload): FileResponse | Promise<FileResponse>;
            +
            +    abstract createUser(input: CreateUserInput): Nullable<User> | Promise<Nullable<User>>;
            +
            +    abstract updateUser(input: UpdateUserInput): Nullable<User> | Promise<Nullable<User>>;
            +
            +    abstract deleteUser(user_id: string): Nullable<User> | Promise<Nullable<User>>;
            +
            +    abstract login(input: LoginInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
            +
            +    abstract register(input: RegisterInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
            +
            +    abstract logout(): Status | Promise<Status>;
            +
            +    abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise<Workspace>;
            +
            +    abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise<Workspace>;
            +
            +    abstract deleteWorkspace(workspace_id: string): Status | Promise<Status>;
            +
            +    abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
            +
            +    abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
            +
            +    abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise<WorkspaceMembers>;
            +
            +    abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise<Status>;
            +
            +    abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise<WorkspaceMembers>;
            +}
            +
            +export class Success {
            +    successMessage?: Nullable<string>;
            +}
            +
            +export class Error {
            +    errorMessage: string;
            +    code?: Nullable<string>;
            +}
            +
            +export class FileResponse {
            +    success: boolean;
            +    url?: Nullable<string>;
            +    message?: Nullable<string>;
            +}
            +
            +export class User {
            +    user_id: string;
            +    username: string;
            +    email: string;
            +    picture?: Nullable<string>;
            +    created_at: DateTime;
            +}
            +
            +export class AuthSuccess {
            +    token: string;
            +    user: User;
            +}
            +
            +export class AuthError {
            +    message: string;
            +    code?: Nullable<string>;
            +    field?: Nullable<string>;
            +}
            +
            +export class Workspace {
            +    workspace_id: string;
            +    name: string;
            +    color: string;
            +    description?: Nullable<string>;
            +    owner_id: string;
            +    owner: User;
            +    members: WorkspaceMembers[];
            +    boards?: Nullable<Nullable<Board>[]>;
            +    labels?: Nullable<Nullable<Label>[]>;
            +    is_pinned: boolean;
            +}
            +
            +export class WorkspaceMembers {
            +    workspace_id: string;
            +    user_id: string;
            +    role: string;
            +    user: User;
            +    workspace: Workspace;
            +}
            +
            +export class PinWorkspacePayload {
            +    workspace: Workspace;
            +}
            +
            +export type DateTime = any;
            +export type Upload = any;
            +export type Status = Success | Error;
            +export type AuthResult = AuthSuccess | AuthError;
            +type Nullable<T> = T | null;
            +
            +
            +
            + + + + + + + + + +
            +
            +

            results matching ""

            +
              +
              +
              +

              No results matching ""

              +
              +
              +
              + +
              +
              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/classes/Board.html b/backend/documentation/classes/Board.html new file mode 100644 index 0000000..3d01947 --- /dev/null +++ b/backend/documentation/classes/Board.html @@ -0,0 +1,780 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
              +
              + + +
              +
              + + + + + + + + + + + + + + + + + + + + +
              +
              +

              +

              File

              +

              +

              + src/graphql/graphql.ts +

              + + + + + + +
              +

              Index

              + + + + + + + + + + + + + + + +
              +
              Properties
              +
              + +
              +
              + + +
              + +

              + Properties +

              + + + + + + + + + + + + + + +
              + + + board_id + + +
              + Type : string + +
              + +
              + + + + + + + + + + + + + + +
              + + + color + + +
              + Type : string + +
              + +
              + + + + + + + + + + + + + + +
              + + + Optional + description + + +
              + Type : Nullable<string> + +
              + +
              + + + + + + + + + + + + + + +
              + + + lists + + +
              + Type : List[] + +
              + +
              + + + + + + + + + + + + + + +
              + + + title + + +
              + Type : string + +
              + +
              + + + + + + + + + + + + + + +
              + + + workspace_id + + +
              + Type : string + +
              + +
              +
              + + + + + + + +
              + + +
              +
              export enum Role {
              +    Admin = "Admin",
              +    Member = "Member",
              +    Viewer = "Viewer"
              +}
              +
              +export class CreateBoardInput {
              +    title: string;
              +    description?: Nullable<string>;
              +    color: string;
              +    workspace_id: string;
              +}
              +
              +export class UpdateBoardInput {
              +    board_id: string;
              +    title?: Nullable<string>;
              +    description?: Nullable<string>;
              +    color?: Nullable<string>;
              +}
              +
              +export class CreateListInput {
              +    title: string;
              +    board_id: string;
              +    position: number;
              +    color?: Nullable<string>;
              +}
              +
              +export class UpdateListInput {
              +    list_id: string;
              +    title?: Nullable<string>;
              +    position?: Nullable<number>;
              +    color?: Nullable<string>;
              +}
              +
              +export class CreateCardInput {
              +    title: string;
              +    list_id: string;
              +    description?: Nullable<string>;
              +    position: number;
              +    due_date?: Nullable<DateTime>;
              +}
              +
              +export class UpdateCardInput {
              +    card_id: string;
              +    title?: Nullable<string>;
              +    description?: Nullable<string>;
              +    position?: Nullable<number>;
              +    due_date?: Nullable<DateTime>;
              +}
              +
              +export class CreateLabelInput {
              +    name: string;
              +    color: string;
              +    board_id: string;
              +}
              +
              +export class UpdateLabelInput {
              +    label_id: string;
              +    name?: Nullable<string>;
              +    color?: Nullable<string>;
              +}
              +
              +export class LoginInput {
              +    email: string;
              +    password: string;
              +}
              +
              +export class RegisterInput {
              +    username: string;
              +    email: string;
              +    password: string;
              +}
              +
              +export class CreateUserInput {
              +    username: string;
              +    email: string;
              +    password: string;
              +}
              +
              +export class UpdateUserInput {
              +    user_id: string;
              +    username?: Nullable<string>;
              +    email?: Nullable<string>;
              +    password?: Nullable<string>;
              +}
              +
              +export class CreateWorkspaceInput {
              +    name: string;
              +    description?: Nullable<string>;
              +    color?: Nullable<string>;
              +}
              +
              +export class UpdateWorkspaceInput {
              +    name?: Nullable<string>;
              +    description?: Nullable<string>;
              +    color?: Nullable<string>;
              +}
              +
              +export class AddWorkspaceMemberInput {
              +    workspace_id: string;
              +    user_email: string;
              +    role?: Nullable<Role>;
              +}
              +
              +export class UpdateMemberRoleInput {
              +    workspace_id: string;
              +    user_id: string;
              +    role: Role;
              +}
              +
              +export class Board {
              +    board_id: string;
              +    title: string;
              +    description?: Nullable<string>;
              +    color: string;
              +    lists: List[];
              +    workspace_id: string;
              +}
              +
              +export class List {
              +    list_id: string;
              +    title: string;
              +    position: number;
              +    color: string;
              +    board_id: string;
              +    cards?: Nullable<Nullable<Card>[]>;
              +}
              +
              +export class Card {
              +    card_id: string;
              +    title: string;
              +    description?: Nullable<string>;
              +    position: number;
              +    list_id: string;
              +    labels?: Nullable<Nullable<Label>[]>;
              +    due_date?: Nullable<DateTime>;
              +    comments?: Nullable<Nullable<Comment>[]>;
              +    attachments?: Nullable<Nullable<Attachment>[]>;
              +    members?: Nullable<Nullable<CardMember>[]>;
              +}
              +
              +export class Comment {
              +    comment_id: string;
              +    content: string;
              +    created_at: DateTime;
              +    card_id: string;
              +    user_id: string;
              +}
              +
              +export class Label {
              +    label_id: string;
              +    name: string;
              +    color: string;
              +    workspace_id: string;
              +}
              +
              +export class Attachment {
              +    attachment_id: string;
              +    card_id: string;
              +    url: string;
              +    filename: string;
              +}
              +
              +export class CardLabel {
              +    card_id: string;
              +    label_id: string;
              +}
              +
              +export class CardMember {
              +    card_id: string;
              +    user_id: string;
              +}
              +
              +export abstract class IQuery {
              +    abstract boards(workspace_id: string): Nullable<Nullable<Board>[]> | Promise<Nullable<Nullable<Board>[]>>;
              +
              +    abstract board(board_id: string): Nullable<Board> | Promise<Nullable<Board>>;
              +
              +    abstract lists(board_id: string): Nullable<Nullable<List>[]> | Promise<Nullable<Nullable<List>[]>>;
              +
              +    abstract list(list_id: string): Nullable<List> | Promise<Nullable<List>>;
              +
              +    abstract cards(list_id: string): Nullable<Nullable<Card>[]> | Promise<Nullable<Nullable<Card>[]>>;
              +
              +    abstract card(card_id: string): Nullable<Card> | Promise<Nullable<Card>>;
              +
              +    abstract labels(workspace_id: string): Nullable<Nullable<Label>[]> | Promise<Nullable<Nullable<Label>[]>>;
              +
              +    abstract comments(card_id: string): Nullable<Nullable<Comment>[]> | Promise<Nullable<Nullable<Comment>[]>>;
              +
              +    abstract users(): Nullable<Nullable<User>[]> | Promise<Nullable<Nullable<User>[]>>;
              +
              +    abstract user(user_id: string): Nullable<User> | Promise<Nullable<User>>;
              +
              +    abstract me(): Nullable<User> | Promise<Nullable<User>>;
              +
              +    abstract workspaces(): Nullable<Nullable<Workspace>[]> | Promise<Nullable<Nullable<Workspace>[]>>;
              +
              +    abstract workspace(workspace_id: string): Nullable<Workspace> | Promise<Nullable<Workspace>>;
              +
              +    abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise<WorkspaceMembers[]>;
              +}
              +
              +export class CreateBoardPayload {
              +    board?: Nullable<Board>;
              +}
              +
              +export abstract class IMutation {
              +    abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise<CreateBoardPayload>;
              +
              +    abstract updateBoard(input: UpdateBoardInput): Board | Promise<Board>;
              +
              +    abstract deleteBoard(board_id: string): Status | Promise<Status>;
              +
              +    abstract createList(input: CreateListInput): List | Promise<List>;
              +
              +    abstract updateList(input: UpdateListInput): List | Promise<List>;
              +
              +    abstract deleteList(list_id: string): Status | Promise<Status>;
              +
              +    abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise<List[]>;
              +
              +    abstract createCard(input: CreateCardInput): Card | Promise<Card>;
              +
              +    abstract updateCard(input: UpdateCardInput): Card | Promise<Card>;
              +
              +    abstract deleteCard(card_id: string): Status | Promise<Status>;
              +
              +    abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise<Card>;
              +
              +    abstract createLabel(input: CreateLabelInput): Label | Promise<Label>;
              +
              +    abstract updateLabel(input: UpdateLabelInput): Label | Promise<Label>;
              +
              +    abstract deleteLabel(label_id: string): Status | Promise<Status>;
              +
              +    abstract uploadFile(file: Upload): FileResponse | Promise<FileResponse>;
              +
              +    abstract createUser(input: CreateUserInput): Nullable<User> | Promise<Nullable<User>>;
              +
              +    abstract updateUser(input: UpdateUserInput): Nullable<User> | Promise<Nullable<User>>;
              +
              +    abstract deleteUser(user_id: string): Nullable<User> | Promise<Nullable<User>>;
              +
              +    abstract login(input: LoginInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
              +
              +    abstract register(input: RegisterInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
              +
              +    abstract logout(): Status | Promise<Status>;
              +
              +    abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise<Workspace>;
              +
              +    abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise<Workspace>;
              +
              +    abstract deleteWorkspace(workspace_id: string): Status | Promise<Status>;
              +
              +    abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
              +
              +    abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
              +
              +    abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise<WorkspaceMembers>;
              +
              +    abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise<Status>;
              +
              +    abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise<WorkspaceMembers>;
              +}
              +
              +export class Success {
              +    successMessage?: Nullable<string>;
              +}
              +
              +export class Error {
              +    errorMessage: string;
              +    code?: Nullable<string>;
              +}
              +
              +export class FileResponse {
              +    success: boolean;
              +    url?: Nullable<string>;
              +    message?: Nullable<string>;
              +}
              +
              +export class User {
              +    user_id: string;
              +    username: string;
              +    email: string;
              +    picture?: Nullable<string>;
              +    created_at: DateTime;
              +}
              +
              +export class AuthSuccess {
              +    token: string;
              +    user: User;
              +}
              +
              +export class AuthError {
              +    message: string;
              +    code?: Nullable<string>;
              +    field?: Nullable<string>;
              +}
              +
              +export class Workspace {
              +    workspace_id: string;
              +    name: string;
              +    color: string;
              +    description?: Nullable<string>;
              +    owner_id: string;
              +    owner: User;
              +    members: WorkspaceMembers[];
              +    boards?: Nullable<Nullable<Board>[]>;
              +    labels?: Nullable<Nullable<Label>[]>;
              +    is_pinned: boolean;
              +}
              +
              +export class WorkspaceMembers {
              +    workspace_id: string;
              +    user_id: string;
              +    role: string;
              +    user: User;
              +    workspace: Workspace;
              +}
              +
              +export class PinWorkspacePayload {
              +    workspace: Workspace;
              +}
              +
              +export type DateTime = any;
              +export type Upload = any;
              +export type Status = Success | Error;
              +export type AuthResult = AuthSuccess | AuthError;
              +type Nullable<T> = T | null;
              +
              +
              +
              + + + + + + + + + +
              +
              +

              results matching ""

              +
                +
                +
                +

                No results matching ""

                +
                +
                +
                + +
                +
                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/classes/Card.html b/backend/documentation/classes/Card.html new file mode 100644 index 0000000..5cdc684 --- /dev/null +++ b/backend/documentation/classes/Card.html @@ -0,0 +1,906 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                +
                + + +
                +
                + + + + + + + + + + + + + + + + + + + + +
                +
                +

                +

                File

                +

                +

                + src/graphql/graphql.ts +

                + + + + + + +
                +

                Index

                + + + + + + + + + + + + + + + +
                +
                Properties
                +
                + +
                +
                + + +
                + +

                + Properties +

                + + + + + + + + + + + + + + +
                + + + Optional + attachments + + +
                + Type : Nullable<Nullable[]> + +
                + +
                + + + + + + + + + + + + + + +
                + + + card_id + + +
                + Type : string + +
                + +
                + + + + + + + + + + + + + + +
                + + + Optional + comments + + +
                + Type : Nullable<Nullable[]> + +
                + +
                + + + + + + + + + + + + + + +
                + + + Optional + description + + +
                + Type : Nullable<string> + +
                + +
                + + + + + + + + + + + + + + +
                + + + Optional + due_date + + +
                + Type : Nullable<DateTime> + +
                + +
                + + + + + + + + + + + + + + +
                + + + Optional + labels + + +
                + Type : Nullable<Nullable[]> + +
                + +
                + + + + + + + + + + + + + + +
                + + + list_id + + +
                + Type : string + +
                + +
                + + + + + + + + + + + + + + +
                + + + Optional + members + + +
                + Type : Nullable<Nullable[]> + +
                + +
                + + + + + + + + + + + + + + +
                + + + position + + +
                + Type : number + +
                + +
                + + + + + + + + + + + + + + +
                + + + title + + +
                + Type : string + +
                + +
                +
                + + + + + + + +
                + + +
                +
                export enum Role {
                +    Admin = "Admin",
                +    Member = "Member",
                +    Viewer = "Viewer"
                +}
                +
                +export class CreateBoardInput {
                +    title: string;
                +    description?: Nullable<string>;
                +    color: string;
                +    workspace_id: string;
                +}
                +
                +export class UpdateBoardInput {
                +    board_id: string;
                +    title?: Nullable<string>;
                +    description?: Nullable<string>;
                +    color?: Nullable<string>;
                +}
                +
                +export class CreateListInput {
                +    title: string;
                +    board_id: string;
                +    position: number;
                +    color?: Nullable<string>;
                +}
                +
                +export class UpdateListInput {
                +    list_id: string;
                +    title?: Nullable<string>;
                +    position?: Nullable<number>;
                +    color?: Nullable<string>;
                +}
                +
                +export class CreateCardInput {
                +    title: string;
                +    list_id: string;
                +    description?: Nullable<string>;
                +    position: number;
                +    due_date?: Nullable<DateTime>;
                +}
                +
                +export class UpdateCardInput {
                +    card_id: string;
                +    title?: Nullable<string>;
                +    description?: Nullable<string>;
                +    position?: Nullable<number>;
                +    due_date?: Nullable<DateTime>;
                +}
                +
                +export class CreateLabelInput {
                +    name: string;
                +    color: string;
                +    board_id: string;
                +}
                +
                +export class UpdateLabelInput {
                +    label_id: string;
                +    name?: Nullable<string>;
                +    color?: Nullable<string>;
                +}
                +
                +export class LoginInput {
                +    email: string;
                +    password: string;
                +}
                +
                +export class RegisterInput {
                +    username: string;
                +    email: string;
                +    password: string;
                +}
                +
                +export class CreateUserInput {
                +    username: string;
                +    email: string;
                +    password: string;
                +}
                +
                +export class UpdateUserInput {
                +    user_id: string;
                +    username?: Nullable<string>;
                +    email?: Nullable<string>;
                +    password?: Nullable<string>;
                +}
                +
                +export class CreateWorkspaceInput {
                +    name: string;
                +    description?: Nullable<string>;
                +    color?: Nullable<string>;
                +}
                +
                +export class UpdateWorkspaceInput {
                +    name?: Nullable<string>;
                +    description?: Nullable<string>;
                +    color?: Nullable<string>;
                +}
                +
                +export class AddWorkspaceMemberInput {
                +    workspace_id: string;
                +    user_email: string;
                +    role?: Nullable<Role>;
                +}
                +
                +export class UpdateMemberRoleInput {
                +    workspace_id: string;
                +    user_id: string;
                +    role: Role;
                +}
                +
                +export class Board {
                +    board_id: string;
                +    title: string;
                +    description?: Nullable<string>;
                +    color: string;
                +    lists: List[];
                +    workspace_id: string;
                +}
                +
                +export class List {
                +    list_id: string;
                +    title: string;
                +    position: number;
                +    color: string;
                +    board_id: string;
                +    cards?: Nullable<Nullable<Card>[]>;
                +}
                +
                +export class Card {
                +    card_id: string;
                +    title: string;
                +    description?: Nullable<string>;
                +    position: number;
                +    list_id: string;
                +    labels?: Nullable<Nullable<Label>[]>;
                +    due_date?: Nullable<DateTime>;
                +    comments?: Nullable<Nullable<Comment>[]>;
                +    attachments?: Nullable<Nullable<Attachment>[]>;
                +    members?: Nullable<Nullable<CardMember>[]>;
                +}
                +
                +export class Comment {
                +    comment_id: string;
                +    content: string;
                +    created_at: DateTime;
                +    card_id: string;
                +    user_id: string;
                +}
                +
                +export class Label {
                +    label_id: string;
                +    name: string;
                +    color: string;
                +    workspace_id: string;
                +}
                +
                +export class Attachment {
                +    attachment_id: string;
                +    card_id: string;
                +    url: string;
                +    filename: string;
                +}
                +
                +export class CardLabel {
                +    card_id: string;
                +    label_id: string;
                +}
                +
                +export class CardMember {
                +    card_id: string;
                +    user_id: string;
                +}
                +
                +export abstract class IQuery {
                +    abstract boards(workspace_id: string): Nullable<Nullable<Board>[]> | Promise<Nullable<Nullable<Board>[]>>;
                +
                +    abstract board(board_id: string): Nullable<Board> | Promise<Nullable<Board>>;
                +
                +    abstract lists(board_id: string): Nullable<Nullable<List>[]> | Promise<Nullable<Nullable<List>[]>>;
                +
                +    abstract list(list_id: string): Nullable<List> | Promise<Nullable<List>>;
                +
                +    abstract cards(list_id: string): Nullable<Nullable<Card>[]> | Promise<Nullable<Nullable<Card>[]>>;
                +
                +    abstract card(card_id: string): Nullable<Card> | Promise<Nullable<Card>>;
                +
                +    abstract labels(workspace_id: string): Nullable<Nullable<Label>[]> | Promise<Nullable<Nullable<Label>[]>>;
                +
                +    abstract comments(card_id: string): Nullable<Nullable<Comment>[]> | Promise<Nullable<Nullable<Comment>[]>>;
                +
                +    abstract users(): Nullable<Nullable<User>[]> | Promise<Nullable<Nullable<User>[]>>;
                +
                +    abstract user(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                +
                +    abstract me(): Nullable<User> | Promise<Nullable<User>>;
                +
                +    abstract workspaces(): Nullable<Nullable<Workspace>[]> | Promise<Nullable<Nullable<Workspace>[]>>;
                +
                +    abstract workspace(workspace_id: string): Nullable<Workspace> | Promise<Nullable<Workspace>>;
                +
                +    abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise<WorkspaceMembers[]>;
                +}
                +
                +export class CreateBoardPayload {
                +    board?: Nullable<Board>;
                +}
                +
                +export abstract class IMutation {
                +    abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise<CreateBoardPayload>;
                +
                +    abstract updateBoard(input: UpdateBoardInput): Board | Promise<Board>;
                +
                +    abstract deleteBoard(board_id: string): Status | Promise<Status>;
                +
                +    abstract createList(input: CreateListInput): List | Promise<List>;
                +
                +    abstract updateList(input: UpdateListInput): List | Promise<List>;
                +
                +    abstract deleteList(list_id: string): Status | Promise<Status>;
                +
                +    abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise<List[]>;
                +
                +    abstract createCard(input: CreateCardInput): Card | Promise<Card>;
                +
                +    abstract updateCard(input: UpdateCardInput): Card | Promise<Card>;
                +
                +    abstract deleteCard(card_id: string): Status | Promise<Status>;
                +
                +    abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise<Card>;
                +
                +    abstract createLabel(input: CreateLabelInput): Label | Promise<Label>;
                +
                +    abstract updateLabel(input: UpdateLabelInput): Label | Promise<Label>;
                +
                +    abstract deleteLabel(label_id: string): Status | Promise<Status>;
                +
                +    abstract uploadFile(file: Upload): FileResponse | Promise<FileResponse>;
                +
                +    abstract createUser(input: CreateUserInput): Nullable<User> | Promise<Nullable<User>>;
                +
                +    abstract updateUser(input: UpdateUserInput): Nullable<User> | Promise<Nullable<User>>;
                +
                +    abstract deleteUser(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                +
                +    abstract login(input: LoginInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                +
                +    abstract register(input: RegisterInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                +
                +    abstract logout(): Status | Promise<Status>;
                +
                +    abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise<Workspace>;
                +
                +    abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise<Workspace>;
                +
                +    abstract deleteWorkspace(workspace_id: string): Status | Promise<Status>;
                +
                +    abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                +
                +    abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                +
                +    abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                +
                +    abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise<Status>;
                +
                +    abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                +}
                +
                +export class Success {
                +    successMessage?: Nullable<string>;
                +}
                +
                +export class Error {
                +    errorMessage: string;
                +    code?: Nullable<string>;
                +}
                +
                +export class FileResponse {
                +    success: boolean;
                +    url?: Nullable<string>;
                +    message?: Nullable<string>;
                +}
                +
                +export class User {
                +    user_id: string;
                +    username: string;
                +    email: string;
                +    picture?: Nullable<string>;
                +    created_at: DateTime;
                +}
                +
                +export class AuthSuccess {
                +    token: string;
                +    user: User;
                +}
                +
                +export class AuthError {
                +    message: string;
                +    code?: Nullable<string>;
                +    field?: Nullable<string>;
                +}
                +
                +export class Workspace {
                +    workspace_id: string;
                +    name: string;
                +    color: string;
                +    description?: Nullable<string>;
                +    owner_id: string;
                +    owner: User;
                +    members: WorkspaceMembers[];
                +    boards?: Nullable<Nullable<Board>[]>;
                +    labels?: Nullable<Nullable<Label>[]>;
                +    is_pinned: boolean;
                +}
                +
                +export class WorkspaceMembers {
                +    workspace_id: string;
                +    user_id: string;
                +    role: string;
                +    user: User;
                +    workspace: Workspace;
                +}
                +
                +export class PinWorkspacePayload {
                +    workspace: Workspace;
                +}
                +
                +export type DateTime = any;
                +export type Upload = any;
                +export type Status = Success | Error;
                +export type AuthResult = AuthSuccess | AuthError;
                +type Nullable<T> = T | null;
                +
                +
                +
                + + + + + + + + + +
                +
                +

                results matching ""

                +
                  +
                  +
                  +

                  No results matching ""

                  +
                  +
                  +
                  + +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/classes/CardLabel.html b/backend/documentation/classes/CardLabel.html new file mode 100644 index 0000000..c2f9052 --- /dev/null +++ b/backend/documentation/classes/CardLabel.html @@ -0,0 +1,662 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                  +
                  + + +
                  +
                  + + + + + + + + + + + + + + + + + + + + +
                  +
                  +

                  +

                  File

                  +

                  +

                  + src/graphql/graphql.ts +

                  + + + + + + +
                  +

                  Index

                  + + + + + + + + + + + + + + + +
                  +
                  Properties
                  +
                  + +
                  +
                  + + +
                  + +

                  + Properties +

                  + + + + + + + + + + + + + + +
                  + + + card_id + + +
                  + Type : string + +
                  + +
                  + + + + + + + + + + + + + + +
                  + + + label_id + + +
                  + Type : string + +
                  + +
                  +
                  + + + + + + + +
                  + + +
                  +
                  export enum Role {
                  +    Admin = "Admin",
                  +    Member = "Member",
                  +    Viewer = "Viewer"
                  +}
                  +
                  +export class CreateBoardInput {
                  +    title: string;
                  +    description?: Nullable<string>;
                  +    color: string;
                  +    workspace_id: string;
                  +}
                  +
                  +export class UpdateBoardInput {
                  +    board_id: string;
                  +    title?: Nullable<string>;
                  +    description?: Nullable<string>;
                  +    color?: Nullable<string>;
                  +}
                  +
                  +export class CreateListInput {
                  +    title: string;
                  +    board_id: string;
                  +    position: number;
                  +    color?: Nullable<string>;
                  +}
                  +
                  +export class UpdateListInput {
                  +    list_id: string;
                  +    title?: Nullable<string>;
                  +    position?: Nullable<number>;
                  +    color?: Nullable<string>;
                  +}
                  +
                  +export class CreateCardInput {
                  +    title: string;
                  +    list_id: string;
                  +    description?: Nullable<string>;
                  +    position: number;
                  +    due_date?: Nullable<DateTime>;
                  +}
                  +
                  +export class UpdateCardInput {
                  +    card_id: string;
                  +    title?: Nullable<string>;
                  +    description?: Nullable<string>;
                  +    position?: Nullable<number>;
                  +    due_date?: Nullable<DateTime>;
                  +}
                  +
                  +export class CreateLabelInput {
                  +    name: string;
                  +    color: string;
                  +    board_id: string;
                  +}
                  +
                  +export class UpdateLabelInput {
                  +    label_id: string;
                  +    name?: Nullable<string>;
                  +    color?: Nullable<string>;
                  +}
                  +
                  +export class LoginInput {
                  +    email: string;
                  +    password: string;
                  +}
                  +
                  +export class RegisterInput {
                  +    username: string;
                  +    email: string;
                  +    password: string;
                  +}
                  +
                  +export class CreateUserInput {
                  +    username: string;
                  +    email: string;
                  +    password: string;
                  +}
                  +
                  +export class UpdateUserInput {
                  +    user_id: string;
                  +    username?: Nullable<string>;
                  +    email?: Nullable<string>;
                  +    password?: Nullable<string>;
                  +}
                  +
                  +export class CreateWorkspaceInput {
                  +    name: string;
                  +    description?: Nullable<string>;
                  +    color?: Nullable<string>;
                  +}
                  +
                  +export class UpdateWorkspaceInput {
                  +    name?: Nullable<string>;
                  +    description?: Nullable<string>;
                  +    color?: Nullable<string>;
                  +}
                  +
                  +export class AddWorkspaceMemberInput {
                  +    workspace_id: string;
                  +    user_email: string;
                  +    role?: Nullable<Role>;
                  +}
                  +
                  +export class UpdateMemberRoleInput {
                  +    workspace_id: string;
                  +    user_id: string;
                  +    role: Role;
                  +}
                  +
                  +export class Board {
                  +    board_id: string;
                  +    title: string;
                  +    description?: Nullable<string>;
                  +    color: string;
                  +    lists: List[];
                  +    workspace_id: string;
                  +}
                  +
                  +export class List {
                  +    list_id: string;
                  +    title: string;
                  +    position: number;
                  +    color: string;
                  +    board_id: string;
                  +    cards?: Nullable<Nullable<Card>[]>;
                  +}
                  +
                  +export class Card {
                  +    card_id: string;
                  +    title: string;
                  +    description?: Nullable<string>;
                  +    position: number;
                  +    list_id: string;
                  +    labels?: Nullable<Nullable<Label>[]>;
                  +    due_date?: Nullable<DateTime>;
                  +    comments?: Nullable<Nullable<Comment>[]>;
                  +    attachments?: Nullable<Nullable<Attachment>[]>;
                  +    members?: Nullable<Nullable<CardMember>[]>;
                  +}
                  +
                  +export class Comment {
                  +    comment_id: string;
                  +    content: string;
                  +    created_at: DateTime;
                  +    card_id: string;
                  +    user_id: string;
                  +}
                  +
                  +export class Label {
                  +    label_id: string;
                  +    name: string;
                  +    color: string;
                  +    workspace_id: string;
                  +}
                  +
                  +export class Attachment {
                  +    attachment_id: string;
                  +    card_id: string;
                  +    url: string;
                  +    filename: string;
                  +}
                  +
                  +export class CardLabel {
                  +    card_id: string;
                  +    label_id: string;
                  +}
                  +
                  +export class CardMember {
                  +    card_id: string;
                  +    user_id: string;
                  +}
                  +
                  +export abstract class IQuery {
                  +    abstract boards(workspace_id: string): Nullable<Nullable<Board>[]> | Promise<Nullable<Nullable<Board>[]>>;
                  +
                  +    abstract board(board_id: string): Nullable<Board> | Promise<Nullable<Board>>;
                  +
                  +    abstract lists(board_id: string): Nullable<Nullable<List>[]> | Promise<Nullable<Nullable<List>[]>>;
                  +
                  +    abstract list(list_id: string): Nullable<List> | Promise<Nullable<List>>;
                  +
                  +    abstract cards(list_id: string): Nullable<Nullable<Card>[]> | Promise<Nullable<Nullable<Card>[]>>;
                  +
                  +    abstract card(card_id: string): Nullable<Card> | Promise<Nullable<Card>>;
                  +
                  +    abstract labels(workspace_id: string): Nullable<Nullable<Label>[]> | Promise<Nullable<Nullable<Label>[]>>;
                  +
                  +    abstract comments(card_id: string): Nullable<Nullable<Comment>[]> | Promise<Nullable<Nullable<Comment>[]>>;
                  +
                  +    abstract users(): Nullable<Nullable<User>[]> | Promise<Nullable<Nullable<User>[]>>;
                  +
                  +    abstract user(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                  +
                  +    abstract me(): Nullable<User> | Promise<Nullable<User>>;
                  +
                  +    abstract workspaces(): Nullable<Nullable<Workspace>[]> | Promise<Nullable<Nullable<Workspace>[]>>;
                  +
                  +    abstract workspace(workspace_id: string): Nullable<Workspace> | Promise<Nullable<Workspace>>;
                  +
                  +    abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise<WorkspaceMembers[]>;
                  +}
                  +
                  +export class CreateBoardPayload {
                  +    board?: Nullable<Board>;
                  +}
                  +
                  +export abstract class IMutation {
                  +    abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise<CreateBoardPayload>;
                  +
                  +    abstract updateBoard(input: UpdateBoardInput): Board | Promise<Board>;
                  +
                  +    abstract deleteBoard(board_id: string): Status | Promise<Status>;
                  +
                  +    abstract createList(input: CreateListInput): List | Promise<List>;
                  +
                  +    abstract updateList(input: UpdateListInput): List | Promise<List>;
                  +
                  +    abstract deleteList(list_id: string): Status | Promise<Status>;
                  +
                  +    abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise<List[]>;
                  +
                  +    abstract createCard(input: CreateCardInput): Card | Promise<Card>;
                  +
                  +    abstract updateCard(input: UpdateCardInput): Card | Promise<Card>;
                  +
                  +    abstract deleteCard(card_id: string): Status | Promise<Status>;
                  +
                  +    abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise<Card>;
                  +
                  +    abstract createLabel(input: CreateLabelInput): Label | Promise<Label>;
                  +
                  +    abstract updateLabel(input: UpdateLabelInput): Label | Promise<Label>;
                  +
                  +    abstract deleteLabel(label_id: string): Status | Promise<Status>;
                  +
                  +    abstract uploadFile(file: Upload): FileResponse | Promise<FileResponse>;
                  +
                  +    abstract createUser(input: CreateUserInput): Nullable<User> | Promise<Nullable<User>>;
                  +
                  +    abstract updateUser(input: UpdateUserInput): Nullable<User> | Promise<Nullable<User>>;
                  +
                  +    abstract deleteUser(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                  +
                  +    abstract login(input: LoginInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                  +
                  +    abstract register(input: RegisterInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                  +
                  +    abstract logout(): Status | Promise<Status>;
                  +
                  +    abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise<Workspace>;
                  +
                  +    abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise<Workspace>;
                  +
                  +    abstract deleteWorkspace(workspace_id: string): Status | Promise<Status>;
                  +
                  +    abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                  +
                  +    abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                  +
                  +    abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                  +
                  +    abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise<Status>;
                  +
                  +    abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                  +}
                  +
                  +export class Success {
                  +    successMessage?: Nullable<string>;
                  +}
                  +
                  +export class Error {
                  +    errorMessage: string;
                  +    code?: Nullable<string>;
                  +}
                  +
                  +export class FileResponse {
                  +    success: boolean;
                  +    url?: Nullable<string>;
                  +    message?: Nullable<string>;
                  +}
                  +
                  +export class User {
                  +    user_id: string;
                  +    username: string;
                  +    email: string;
                  +    picture?: Nullable<string>;
                  +    created_at: DateTime;
                  +}
                  +
                  +export class AuthSuccess {
                  +    token: string;
                  +    user: User;
                  +}
                  +
                  +export class AuthError {
                  +    message: string;
                  +    code?: Nullable<string>;
                  +    field?: Nullable<string>;
                  +}
                  +
                  +export class Workspace {
                  +    workspace_id: string;
                  +    name: string;
                  +    color: string;
                  +    description?: Nullable<string>;
                  +    owner_id: string;
                  +    owner: User;
                  +    members: WorkspaceMembers[];
                  +    boards?: Nullable<Nullable<Board>[]>;
                  +    labels?: Nullable<Nullable<Label>[]>;
                  +    is_pinned: boolean;
                  +}
                  +
                  +export class WorkspaceMembers {
                  +    workspace_id: string;
                  +    user_id: string;
                  +    role: string;
                  +    user: User;
                  +    workspace: Workspace;
                  +}
                  +
                  +export class PinWorkspacePayload {
                  +    workspace: Workspace;
                  +}
                  +
                  +export type DateTime = any;
                  +export type Upload = any;
                  +export type Status = Success | Error;
                  +export type AuthResult = AuthSuccess | AuthError;
                  +type Nullable<T> = T | null;
                  +
                  +
                  +
                  + + + + + + + + + +
                  +
                  +

                  results matching ""

                  +
                    +
                    +
                    +

                    No results matching ""

                    +
                    +
                    +
                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/classes/CardMember.html b/backend/documentation/classes/CardMember.html new file mode 100644 index 0000000..6b0379f --- /dev/null +++ b/backend/documentation/classes/CardMember.html @@ -0,0 +1,662 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                    +
                    + + +
                    +
                    + + + + + + + + + + + + + + + + + + + + +
                    +
                    +

                    +

                    File

                    +

                    +

                    + src/graphql/graphql.ts +

                    + + + + + + +
                    +

                    Index

                    + + + + + + + + + + + + + + + +
                    +
                    Properties
                    +
                    + +
                    +
                    + + +
                    + +

                    + Properties +

                    + + + + + + + + + + + + + + +
                    + + + card_id + + +
                    + Type : string + +
                    + +
                    + + + + + + + + + + + + + + +
                    + + + user_id + + +
                    + Type : string + +
                    + +
                    +
                    + + + + + + + +
                    + + +
                    +
                    export enum Role {
                    +    Admin = "Admin",
                    +    Member = "Member",
                    +    Viewer = "Viewer"
                    +}
                    +
                    +export class CreateBoardInput {
                    +    title: string;
                    +    description?: Nullable<string>;
                    +    color: string;
                    +    workspace_id: string;
                    +}
                    +
                    +export class UpdateBoardInput {
                    +    board_id: string;
                    +    title?: Nullable<string>;
                    +    description?: Nullable<string>;
                    +    color?: Nullable<string>;
                    +}
                    +
                    +export class CreateListInput {
                    +    title: string;
                    +    board_id: string;
                    +    position: number;
                    +    color?: Nullable<string>;
                    +}
                    +
                    +export class UpdateListInput {
                    +    list_id: string;
                    +    title?: Nullable<string>;
                    +    position?: Nullable<number>;
                    +    color?: Nullable<string>;
                    +}
                    +
                    +export class CreateCardInput {
                    +    title: string;
                    +    list_id: string;
                    +    description?: Nullable<string>;
                    +    position: number;
                    +    due_date?: Nullable<DateTime>;
                    +}
                    +
                    +export class UpdateCardInput {
                    +    card_id: string;
                    +    title?: Nullable<string>;
                    +    description?: Nullable<string>;
                    +    position?: Nullable<number>;
                    +    due_date?: Nullable<DateTime>;
                    +}
                    +
                    +export class CreateLabelInput {
                    +    name: string;
                    +    color: string;
                    +    board_id: string;
                    +}
                    +
                    +export class UpdateLabelInput {
                    +    label_id: string;
                    +    name?: Nullable<string>;
                    +    color?: Nullable<string>;
                    +}
                    +
                    +export class LoginInput {
                    +    email: string;
                    +    password: string;
                    +}
                    +
                    +export class RegisterInput {
                    +    username: string;
                    +    email: string;
                    +    password: string;
                    +}
                    +
                    +export class CreateUserInput {
                    +    username: string;
                    +    email: string;
                    +    password: string;
                    +}
                    +
                    +export class UpdateUserInput {
                    +    user_id: string;
                    +    username?: Nullable<string>;
                    +    email?: Nullable<string>;
                    +    password?: Nullable<string>;
                    +}
                    +
                    +export class CreateWorkspaceInput {
                    +    name: string;
                    +    description?: Nullable<string>;
                    +    color?: Nullable<string>;
                    +}
                    +
                    +export class UpdateWorkspaceInput {
                    +    name?: Nullable<string>;
                    +    description?: Nullable<string>;
                    +    color?: Nullable<string>;
                    +}
                    +
                    +export class AddWorkspaceMemberInput {
                    +    workspace_id: string;
                    +    user_email: string;
                    +    role?: Nullable<Role>;
                    +}
                    +
                    +export class UpdateMemberRoleInput {
                    +    workspace_id: string;
                    +    user_id: string;
                    +    role: Role;
                    +}
                    +
                    +export class Board {
                    +    board_id: string;
                    +    title: string;
                    +    description?: Nullable<string>;
                    +    color: string;
                    +    lists: List[];
                    +    workspace_id: string;
                    +}
                    +
                    +export class List {
                    +    list_id: string;
                    +    title: string;
                    +    position: number;
                    +    color: string;
                    +    board_id: string;
                    +    cards?: Nullable<Nullable<Card>[]>;
                    +}
                    +
                    +export class Card {
                    +    card_id: string;
                    +    title: string;
                    +    description?: Nullable<string>;
                    +    position: number;
                    +    list_id: string;
                    +    labels?: Nullable<Nullable<Label>[]>;
                    +    due_date?: Nullable<DateTime>;
                    +    comments?: Nullable<Nullable<Comment>[]>;
                    +    attachments?: Nullable<Nullable<Attachment>[]>;
                    +    members?: Nullable<Nullable<CardMember>[]>;
                    +}
                    +
                    +export class Comment {
                    +    comment_id: string;
                    +    content: string;
                    +    created_at: DateTime;
                    +    card_id: string;
                    +    user_id: string;
                    +}
                    +
                    +export class Label {
                    +    label_id: string;
                    +    name: string;
                    +    color: string;
                    +    workspace_id: string;
                    +}
                    +
                    +export class Attachment {
                    +    attachment_id: string;
                    +    card_id: string;
                    +    url: string;
                    +    filename: string;
                    +}
                    +
                    +export class CardLabel {
                    +    card_id: string;
                    +    label_id: string;
                    +}
                    +
                    +export class CardMember {
                    +    card_id: string;
                    +    user_id: string;
                    +}
                    +
                    +export abstract class IQuery {
                    +    abstract boards(workspace_id: string): Nullable<Nullable<Board>[]> | Promise<Nullable<Nullable<Board>[]>>;
                    +
                    +    abstract board(board_id: string): Nullable<Board> | Promise<Nullable<Board>>;
                    +
                    +    abstract lists(board_id: string): Nullable<Nullable<List>[]> | Promise<Nullable<Nullable<List>[]>>;
                    +
                    +    abstract list(list_id: string): Nullable<List> | Promise<Nullable<List>>;
                    +
                    +    abstract cards(list_id: string): Nullable<Nullable<Card>[]> | Promise<Nullable<Nullable<Card>[]>>;
                    +
                    +    abstract card(card_id: string): Nullable<Card> | Promise<Nullable<Card>>;
                    +
                    +    abstract labels(workspace_id: string): Nullable<Nullable<Label>[]> | Promise<Nullable<Nullable<Label>[]>>;
                    +
                    +    abstract comments(card_id: string): Nullable<Nullable<Comment>[]> | Promise<Nullable<Nullable<Comment>[]>>;
                    +
                    +    abstract users(): Nullable<Nullable<User>[]> | Promise<Nullable<Nullable<User>[]>>;
                    +
                    +    abstract user(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                    +
                    +    abstract me(): Nullable<User> | Promise<Nullable<User>>;
                    +
                    +    abstract workspaces(): Nullable<Nullable<Workspace>[]> | Promise<Nullable<Nullable<Workspace>[]>>;
                    +
                    +    abstract workspace(workspace_id: string): Nullable<Workspace> | Promise<Nullable<Workspace>>;
                    +
                    +    abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise<WorkspaceMembers[]>;
                    +}
                    +
                    +export class CreateBoardPayload {
                    +    board?: Nullable<Board>;
                    +}
                    +
                    +export abstract class IMutation {
                    +    abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise<CreateBoardPayload>;
                    +
                    +    abstract updateBoard(input: UpdateBoardInput): Board | Promise<Board>;
                    +
                    +    abstract deleteBoard(board_id: string): Status | Promise<Status>;
                    +
                    +    abstract createList(input: CreateListInput): List | Promise<List>;
                    +
                    +    abstract updateList(input: UpdateListInput): List | Promise<List>;
                    +
                    +    abstract deleteList(list_id: string): Status | Promise<Status>;
                    +
                    +    abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise<List[]>;
                    +
                    +    abstract createCard(input: CreateCardInput): Card | Promise<Card>;
                    +
                    +    abstract updateCard(input: UpdateCardInput): Card | Promise<Card>;
                    +
                    +    abstract deleteCard(card_id: string): Status | Promise<Status>;
                    +
                    +    abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise<Card>;
                    +
                    +    abstract createLabel(input: CreateLabelInput): Label | Promise<Label>;
                    +
                    +    abstract updateLabel(input: UpdateLabelInput): Label | Promise<Label>;
                    +
                    +    abstract deleteLabel(label_id: string): Status | Promise<Status>;
                    +
                    +    abstract uploadFile(file: Upload): FileResponse | Promise<FileResponse>;
                    +
                    +    abstract createUser(input: CreateUserInput): Nullable<User> | Promise<Nullable<User>>;
                    +
                    +    abstract updateUser(input: UpdateUserInput): Nullable<User> | Promise<Nullable<User>>;
                    +
                    +    abstract deleteUser(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                    +
                    +    abstract login(input: LoginInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                    +
                    +    abstract register(input: RegisterInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                    +
                    +    abstract logout(): Status | Promise<Status>;
                    +
                    +    abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise<Workspace>;
                    +
                    +    abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise<Workspace>;
                    +
                    +    abstract deleteWorkspace(workspace_id: string): Status | Promise<Status>;
                    +
                    +    abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                    +
                    +    abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                    +
                    +    abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                    +
                    +    abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise<Status>;
                    +
                    +    abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                    +}
                    +
                    +export class Success {
                    +    successMessage?: Nullable<string>;
                    +}
                    +
                    +export class Error {
                    +    errorMessage: string;
                    +    code?: Nullable<string>;
                    +}
                    +
                    +export class FileResponse {
                    +    success: boolean;
                    +    url?: Nullable<string>;
                    +    message?: Nullable<string>;
                    +}
                    +
                    +export class User {
                    +    user_id: string;
                    +    username: string;
                    +    email: string;
                    +    picture?: Nullable<string>;
                    +    created_at: DateTime;
                    +}
                    +
                    +export class AuthSuccess {
                    +    token: string;
                    +    user: User;
                    +}
                    +
                    +export class AuthError {
                    +    message: string;
                    +    code?: Nullable<string>;
                    +    field?: Nullable<string>;
                    +}
                    +
                    +export class Workspace {
                    +    workspace_id: string;
                    +    name: string;
                    +    color: string;
                    +    description?: Nullable<string>;
                    +    owner_id: string;
                    +    owner: User;
                    +    members: WorkspaceMembers[];
                    +    boards?: Nullable<Nullable<Board>[]>;
                    +    labels?: Nullable<Nullable<Label>[]>;
                    +    is_pinned: boolean;
                    +}
                    +
                    +export class WorkspaceMembers {
                    +    workspace_id: string;
                    +    user_id: string;
                    +    role: string;
                    +    user: User;
                    +    workspace: Workspace;
                    +}
                    +
                    +export class PinWorkspacePayload {
                    +    workspace: Workspace;
                    +}
                    +
                    +export type DateTime = any;
                    +export type Upload = any;
                    +export type Status = Success | Error;
                    +export type AuthResult = AuthSuccess | AuthError;
                    +type Nullable<T> = T | null;
                    +
                    +
                    +
                    + + + + + + + + + +
                    +
                    +

                    results matching ""

                    +
                      +
                      +
                      +

                      No results matching ""

                      +
                      +
                      +
                      + +
                      +
                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/classes/Comment.html b/backend/documentation/classes/Comment.html new file mode 100644 index 0000000..6a485a4 --- /dev/null +++ b/backend/documentation/classes/Comment.html @@ -0,0 +1,749 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                      +
                      + + +
                      +
                      + + + + + + + + + + + + + + + + + + + + +
                      +
                      +

                      +

                      File

                      +

                      +

                      + src/graphql/graphql.ts +

                      + + + + + + +
                      +

                      Index

                      + + + + + + + + + + + + + + + +
                      +
                      Properties
                      +
                      + +
                      +
                      + + +
                      + +

                      + Properties +

                      + + + + + + + + + + + + + + +
                      + + + card_id + + +
                      + Type : string + +
                      + +
                      + + + + + + + + + + + + + + +
                      + + + comment_id + + +
                      + Type : string + +
                      + +
                      + + + + + + + + + + + + + + +
                      + + + content + + +
                      + Type : string + +
                      + +
                      + + + + + + + + + + + + + + +
                      + + + created_at + + +
                      + Type : DateTime + +
                      + +
                      + + + + + + + + + + + + + + +
                      + + + user_id + + +
                      + Type : string + +
                      + +
                      +
                      + + + + + + + +
                      + + +
                      +
                      export enum Role {
                      +    Admin = "Admin",
                      +    Member = "Member",
                      +    Viewer = "Viewer"
                      +}
                      +
                      +export class CreateBoardInput {
                      +    title: string;
                      +    description?: Nullable<string>;
                      +    color: string;
                      +    workspace_id: string;
                      +}
                      +
                      +export class UpdateBoardInput {
                      +    board_id: string;
                      +    title?: Nullable<string>;
                      +    description?: Nullable<string>;
                      +    color?: Nullable<string>;
                      +}
                      +
                      +export class CreateListInput {
                      +    title: string;
                      +    board_id: string;
                      +    position: number;
                      +    color?: Nullable<string>;
                      +}
                      +
                      +export class UpdateListInput {
                      +    list_id: string;
                      +    title?: Nullable<string>;
                      +    position?: Nullable<number>;
                      +    color?: Nullable<string>;
                      +}
                      +
                      +export class CreateCardInput {
                      +    title: string;
                      +    list_id: string;
                      +    description?: Nullable<string>;
                      +    position: number;
                      +    due_date?: Nullable<DateTime>;
                      +}
                      +
                      +export class UpdateCardInput {
                      +    card_id: string;
                      +    title?: Nullable<string>;
                      +    description?: Nullable<string>;
                      +    position?: Nullable<number>;
                      +    due_date?: Nullable<DateTime>;
                      +}
                      +
                      +export class CreateLabelInput {
                      +    name: string;
                      +    color: string;
                      +    board_id: string;
                      +}
                      +
                      +export class UpdateLabelInput {
                      +    label_id: string;
                      +    name?: Nullable<string>;
                      +    color?: Nullable<string>;
                      +}
                      +
                      +export class LoginInput {
                      +    email: string;
                      +    password: string;
                      +}
                      +
                      +export class RegisterInput {
                      +    username: string;
                      +    email: string;
                      +    password: string;
                      +}
                      +
                      +export class CreateUserInput {
                      +    username: string;
                      +    email: string;
                      +    password: string;
                      +}
                      +
                      +export class UpdateUserInput {
                      +    user_id: string;
                      +    username?: Nullable<string>;
                      +    email?: Nullable<string>;
                      +    password?: Nullable<string>;
                      +}
                      +
                      +export class CreateWorkspaceInput {
                      +    name: string;
                      +    description?: Nullable<string>;
                      +    color?: Nullable<string>;
                      +}
                      +
                      +export class UpdateWorkspaceInput {
                      +    name?: Nullable<string>;
                      +    description?: Nullable<string>;
                      +    color?: Nullable<string>;
                      +}
                      +
                      +export class AddWorkspaceMemberInput {
                      +    workspace_id: string;
                      +    user_email: string;
                      +    role?: Nullable<Role>;
                      +}
                      +
                      +export class UpdateMemberRoleInput {
                      +    workspace_id: string;
                      +    user_id: string;
                      +    role: Role;
                      +}
                      +
                      +export class Board {
                      +    board_id: string;
                      +    title: string;
                      +    description?: Nullable<string>;
                      +    color: string;
                      +    lists: List[];
                      +    workspace_id: string;
                      +}
                      +
                      +export class List {
                      +    list_id: string;
                      +    title: string;
                      +    position: number;
                      +    color: string;
                      +    board_id: string;
                      +    cards?: Nullable<Nullable<Card>[]>;
                      +}
                      +
                      +export class Card {
                      +    card_id: string;
                      +    title: string;
                      +    description?: Nullable<string>;
                      +    position: number;
                      +    list_id: string;
                      +    labels?: Nullable<Nullable<Label>[]>;
                      +    due_date?: Nullable<DateTime>;
                      +    comments?: Nullable<Nullable<Comment>[]>;
                      +    attachments?: Nullable<Nullable<Attachment>[]>;
                      +    members?: Nullable<Nullable<CardMember>[]>;
                      +}
                      +
                      +export class Comment {
                      +    comment_id: string;
                      +    content: string;
                      +    created_at: DateTime;
                      +    card_id: string;
                      +    user_id: string;
                      +}
                      +
                      +export class Label {
                      +    label_id: string;
                      +    name: string;
                      +    color: string;
                      +    workspace_id: string;
                      +}
                      +
                      +export class Attachment {
                      +    attachment_id: string;
                      +    card_id: string;
                      +    url: string;
                      +    filename: string;
                      +}
                      +
                      +export class CardLabel {
                      +    card_id: string;
                      +    label_id: string;
                      +}
                      +
                      +export class CardMember {
                      +    card_id: string;
                      +    user_id: string;
                      +}
                      +
                      +export abstract class IQuery {
                      +    abstract boards(workspace_id: string): Nullable<Nullable<Board>[]> | Promise<Nullable<Nullable<Board>[]>>;
                      +
                      +    abstract board(board_id: string): Nullable<Board> | Promise<Nullable<Board>>;
                      +
                      +    abstract lists(board_id: string): Nullable<Nullable<List>[]> | Promise<Nullable<Nullable<List>[]>>;
                      +
                      +    abstract list(list_id: string): Nullable<List> | Promise<Nullable<List>>;
                      +
                      +    abstract cards(list_id: string): Nullable<Nullable<Card>[]> | Promise<Nullable<Nullable<Card>[]>>;
                      +
                      +    abstract card(card_id: string): Nullable<Card> | Promise<Nullable<Card>>;
                      +
                      +    abstract labels(workspace_id: string): Nullable<Nullable<Label>[]> | Promise<Nullable<Nullable<Label>[]>>;
                      +
                      +    abstract comments(card_id: string): Nullable<Nullable<Comment>[]> | Promise<Nullable<Nullable<Comment>[]>>;
                      +
                      +    abstract users(): Nullable<Nullable<User>[]> | Promise<Nullable<Nullable<User>[]>>;
                      +
                      +    abstract user(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                      +
                      +    abstract me(): Nullable<User> | Promise<Nullable<User>>;
                      +
                      +    abstract workspaces(): Nullable<Nullable<Workspace>[]> | Promise<Nullable<Nullable<Workspace>[]>>;
                      +
                      +    abstract workspace(workspace_id: string): Nullable<Workspace> | Promise<Nullable<Workspace>>;
                      +
                      +    abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise<WorkspaceMembers[]>;
                      +}
                      +
                      +export class CreateBoardPayload {
                      +    board?: Nullable<Board>;
                      +}
                      +
                      +export abstract class IMutation {
                      +    abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise<CreateBoardPayload>;
                      +
                      +    abstract updateBoard(input: UpdateBoardInput): Board | Promise<Board>;
                      +
                      +    abstract deleteBoard(board_id: string): Status | Promise<Status>;
                      +
                      +    abstract createList(input: CreateListInput): List | Promise<List>;
                      +
                      +    abstract updateList(input: UpdateListInput): List | Promise<List>;
                      +
                      +    abstract deleteList(list_id: string): Status | Promise<Status>;
                      +
                      +    abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise<List[]>;
                      +
                      +    abstract createCard(input: CreateCardInput): Card | Promise<Card>;
                      +
                      +    abstract updateCard(input: UpdateCardInput): Card | Promise<Card>;
                      +
                      +    abstract deleteCard(card_id: string): Status | Promise<Status>;
                      +
                      +    abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise<Card>;
                      +
                      +    abstract createLabel(input: CreateLabelInput): Label | Promise<Label>;
                      +
                      +    abstract updateLabel(input: UpdateLabelInput): Label | Promise<Label>;
                      +
                      +    abstract deleteLabel(label_id: string): Status | Promise<Status>;
                      +
                      +    abstract uploadFile(file: Upload): FileResponse | Promise<FileResponse>;
                      +
                      +    abstract createUser(input: CreateUserInput): Nullable<User> | Promise<Nullable<User>>;
                      +
                      +    abstract updateUser(input: UpdateUserInput): Nullable<User> | Promise<Nullable<User>>;
                      +
                      +    abstract deleteUser(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                      +
                      +    abstract login(input: LoginInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                      +
                      +    abstract register(input: RegisterInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                      +
                      +    abstract logout(): Status | Promise<Status>;
                      +
                      +    abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise<Workspace>;
                      +
                      +    abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise<Workspace>;
                      +
                      +    abstract deleteWorkspace(workspace_id: string): Status | Promise<Status>;
                      +
                      +    abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                      +
                      +    abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                      +
                      +    abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                      +
                      +    abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise<Status>;
                      +
                      +    abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                      +}
                      +
                      +export class Success {
                      +    successMessage?: Nullable<string>;
                      +}
                      +
                      +export class Error {
                      +    errorMessage: string;
                      +    code?: Nullable<string>;
                      +}
                      +
                      +export class FileResponse {
                      +    success: boolean;
                      +    url?: Nullable<string>;
                      +    message?: Nullable<string>;
                      +}
                      +
                      +export class User {
                      +    user_id: string;
                      +    username: string;
                      +    email: string;
                      +    picture?: Nullable<string>;
                      +    created_at: DateTime;
                      +}
                      +
                      +export class AuthSuccess {
                      +    token: string;
                      +    user: User;
                      +}
                      +
                      +export class AuthError {
                      +    message: string;
                      +    code?: Nullable<string>;
                      +    field?: Nullable<string>;
                      +}
                      +
                      +export class Workspace {
                      +    workspace_id: string;
                      +    name: string;
                      +    color: string;
                      +    description?: Nullable<string>;
                      +    owner_id: string;
                      +    owner: User;
                      +    members: WorkspaceMembers[];
                      +    boards?: Nullable<Nullable<Board>[]>;
                      +    labels?: Nullable<Nullable<Label>[]>;
                      +    is_pinned: boolean;
                      +}
                      +
                      +export class WorkspaceMembers {
                      +    workspace_id: string;
                      +    user_id: string;
                      +    role: string;
                      +    user: User;
                      +    workspace: Workspace;
                      +}
                      +
                      +export class PinWorkspacePayload {
                      +    workspace: Workspace;
                      +}
                      +
                      +export type DateTime = any;
                      +export type Upload = any;
                      +export type Status = Success | Error;
                      +export type AuthResult = AuthSuccess | AuthError;
                      +type Nullable<T> = T | null;
                      +
                      +
                      +
                      + + + + + + + + + +
                      +
                      +

                      results matching ""

                      +
                        +
                        +
                        +

                        No results matching ""

                        +
                        +
                        +
                        + +
                        +
                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/classes/CreateBoardInput.html b/backend/documentation/classes/CreateBoardInput.html new file mode 100644 index 0000000..5a4e6e8 --- /dev/null +++ b/backend/documentation/classes/CreateBoardInput.html @@ -0,0 +1,722 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                        +
                        + + +
                        +
                        + + + + + + + + + + + + + + + + + + + + +
                        +
                        +

                        +

                        File

                        +

                        +

                        + src/graphql/graphql.ts +

                        + + + + + + +
                        +

                        Index

                        + + + + + + + + + + + + + + + +
                        +
                        Properties
                        +
                        + +
                        +
                        + + +
                        + +

                        + Properties +

                        + + + + + + + + + + + + + + +
                        + + + color + + +
                        + Type : string + +
                        + +
                        + + + + + + + + + + + + + + +
                        + + + Optional + description + + +
                        + Type : Nullable<string> + +
                        + +
                        + + + + + + + + + + + + + + +
                        + + + title + + +
                        + Type : string + +
                        + +
                        + + + + + + + + + + + + + + +
                        + + + workspace_id + + +
                        + Type : string + +
                        + +
                        +
                        + + + + + + + +
                        + + +
                        +
                        export enum Role {
                        +    Admin = "Admin",
                        +    Member = "Member",
                        +    Viewer = "Viewer"
                        +}
                        +
                        +export class CreateBoardInput {
                        +    title: string;
                        +    description?: Nullable<string>;
                        +    color: string;
                        +    workspace_id: string;
                        +}
                        +
                        +export class UpdateBoardInput {
                        +    board_id: string;
                        +    title?: Nullable<string>;
                        +    description?: Nullable<string>;
                        +    color?: Nullable<string>;
                        +}
                        +
                        +export class CreateListInput {
                        +    title: string;
                        +    board_id: string;
                        +    position: number;
                        +    color?: Nullable<string>;
                        +}
                        +
                        +export class UpdateListInput {
                        +    list_id: string;
                        +    title?: Nullable<string>;
                        +    position?: Nullable<number>;
                        +    color?: Nullable<string>;
                        +}
                        +
                        +export class CreateCardInput {
                        +    title: string;
                        +    list_id: string;
                        +    description?: Nullable<string>;
                        +    position: number;
                        +    due_date?: Nullable<DateTime>;
                        +}
                        +
                        +export class UpdateCardInput {
                        +    card_id: string;
                        +    title?: Nullable<string>;
                        +    description?: Nullable<string>;
                        +    position?: Nullable<number>;
                        +    due_date?: Nullable<DateTime>;
                        +}
                        +
                        +export class CreateLabelInput {
                        +    name: string;
                        +    color: string;
                        +    board_id: string;
                        +}
                        +
                        +export class UpdateLabelInput {
                        +    label_id: string;
                        +    name?: Nullable<string>;
                        +    color?: Nullable<string>;
                        +}
                        +
                        +export class LoginInput {
                        +    email: string;
                        +    password: string;
                        +}
                        +
                        +export class RegisterInput {
                        +    username: string;
                        +    email: string;
                        +    password: string;
                        +}
                        +
                        +export class CreateUserInput {
                        +    username: string;
                        +    email: string;
                        +    password: string;
                        +}
                        +
                        +export class UpdateUserInput {
                        +    user_id: string;
                        +    username?: Nullable<string>;
                        +    email?: Nullable<string>;
                        +    password?: Nullable<string>;
                        +}
                        +
                        +export class CreateWorkspaceInput {
                        +    name: string;
                        +    description?: Nullable<string>;
                        +    color?: Nullable<string>;
                        +}
                        +
                        +export class UpdateWorkspaceInput {
                        +    name?: Nullable<string>;
                        +    description?: Nullable<string>;
                        +    color?: Nullable<string>;
                        +}
                        +
                        +export class AddWorkspaceMemberInput {
                        +    workspace_id: string;
                        +    user_email: string;
                        +    role?: Nullable<Role>;
                        +}
                        +
                        +export class UpdateMemberRoleInput {
                        +    workspace_id: string;
                        +    user_id: string;
                        +    role: Role;
                        +}
                        +
                        +export class Board {
                        +    board_id: string;
                        +    title: string;
                        +    description?: Nullable<string>;
                        +    color: string;
                        +    lists: List[];
                        +    workspace_id: string;
                        +}
                        +
                        +export class List {
                        +    list_id: string;
                        +    title: string;
                        +    position: number;
                        +    color: string;
                        +    board_id: string;
                        +    cards?: Nullable<Nullable<Card>[]>;
                        +}
                        +
                        +export class Card {
                        +    card_id: string;
                        +    title: string;
                        +    description?: Nullable<string>;
                        +    position: number;
                        +    list_id: string;
                        +    labels?: Nullable<Nullable<Label>[]>;
                        +    due_date?: Nullable<DateTime>;
                        +    comments?: Nullable<Nullable<Comment>[]>;
                        +    attachments?: Nullable<Nullable<Attachment>[]>;
                        +    members?: Nullable<Nullable<CardMember>[]>;
                        +}
                        +
                        +export class Comment {
                        +    comment_id: string;
                        +    content: string;
                        +    created_at: DateTime;
                        +    card_id: string;
                        +    user_id: string;
                        +}
                        +
                        +export class Label {
                        +    label_id: string;
                        +    name: string;
                        +    color: string;
                        +    workspace_id: string;
                        +}
                        +
                        +export class Attachment {
                        +    attachment_id: string;
                        +    card_id: string;
                        +    url: string;
                        +    filename: string;
                        +}
                        +
                        +export class CardLabel {
                        +    card_id: string;
                        +    label_id: string;
                        +}
                        +
                        +export class CardMember {
                        +    card_id: string;
                        +    user_id: string;
                        +}
                        +
                        +export abstract class IQuery {
                        +    abstract boards(workspace_id: string): Nullable<Nullable<Board>[]> | Promise<Nullable<Nullable<Board>[]>>;
                        +
                        +    abstract board(board_id: string): Nullable<Board> | Promise<Nullable<Board>>;
                        +
                        +    abstract lists(board_id: string): Nullable<Nullable<List>[]> | Promise<Nullable<Nullable<List>[]>>;
                        +
                        +    abstract list(list_id: string): Nullable<List> | Promise<Nullable<List>>;
                        +
                        +    abstract cards(list_id: string): Nullable<Nullable<Card>[]> | Promise<Nullable<Nullable<Card>[]>>;
                        +
                        +    abstract card(card_id: string): Nullable<Card> | Promise<Nullable<Card>>;
                        +
                        +    abstract labels(workspace_id: string): Nullable<Nullable<Label>[]> | Promise<Nullable<Nullable<Label>[]>>;
                        +
                        +    abstract comments(card_id: string): Nullable<Nullable<Comment>[]> | Promise<Nullable<Nullable<Comment>[]>>;
                        +
                        +    abstract users(): Nullable<Nullable<User>[]> | Promise<Nullable<Nullable<User>[]>>;
                        +
                        +    abstract user(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                        +
                        +    abstract me(): Nullable<User> | Promise<Nullable<User>>;
                        +
                        +    abstract workspaces(): Nullable<Nullable<Workspace>[]> | Promise<Nullable<Nullable<Workspace>[]>>;
                        +
                        +    abstract workspace(workspace_id: string): Nullable<Workspace> | Promise<Nullable<Workspace>>;
                        +
                        +    abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise<WorkspaceMembers[]>;
                        +}
                        +
                        +export class CreateBoardPayload {
                        +    board?: Nullable<Board>;
                        +}
                        +
                        +export abstract class IMutation {
                        +    abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise<CreateBoardPayload>;
                        +
                        +    abstract updateBoard(input: UpdateBoardInput): Board | Promise<Board>;
                        +
                        +    abstract deleteBoard(board_id: string): Status | Promise<Status>;
                        +
                        +    abstract createList(input: CreateListInput): List | Promise<List>;
                        +
                        +    abstract updateList(input: UpdateListInput): List | Promise<List>;
                        +
                        +    abstract deleteList(list_id: string): Status | Promise<Status>;
                        +
                        +    abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise<List[]>;
                        +
                        +    abstract createCard(input: CreateCardInput): Card | Promise<Card>;
                        +
                        +    abstract updateCard(input: UpdateCardInput): Card | Promise<Card>;
                        +
                        +    abstract deleteCard(card_id: string): Status | Promise<Status>;
                        +
                        +    abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise<Card>;
                        +
                        +    abstract createLabel(input: CreateLabelInput): Label | Promise<Label>;
                        +
                        +    abstract updateLabel(input: UpdateLabelInput): Label | Promise<Label>;
                        +
                        +    abstract deleteLabel(label_id: string): Status | Promise<Status>;
                        +
                        +    abstract uploadFile(file: Upload): FileResponse | Promise<FileResponse>;
                        +
                        +    abstract createUser(input: CreateUserInput): Nullable<User> | Promise<Nullable<User>>;
                        +
                        +    abstract updateUser(input: UpdateUserInput): Nullable<User> | Promise<Nullable<User>>;
                        +
                        +    abstract deleteUser(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                        +
                        +    abstract login(input: LoginInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                        +
                        +    abstract register(input: RegisterInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                        +
                        +    abstract logout(): Status | Promise<Status>;
                        +
                        +    abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise<Workspace>;
                        +
                        +    abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise<Workspace>;
                        +
                        +    abstract deleteWorkspace(workspace_id: string): Status | Promise<Status>;
                        +
                        +    abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                        +
                        +    abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                        +
                        +    abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                        +
                        +    abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise<Status>;
                        +
                        +    abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                        +}
                        +
                        +export class Success {
                        +    successMessage?: Nullable<string>;
                        +}
                        +
                        +export class Error {
                        +    errorMessage: string;
                        +    code?: Nullable<string>;
                        +}
                        +
                        +export class FileResponse {
                        +    success: boolean;
                        +    url?: Nullable<string>;
                        +    message?: Nullable<string>;
                        +}
                        +
                        +export class User {
                        +    user_id: string;
                        +    username: string;
                        +    email: string;
                        +    picture?: Nullable<string>;
                        +    created_at: DateTime;
                        +}
                        +
                        +export class AuthSuccess {
                        +    token: string;
                        +    user: User;
                        +}
                        +
                        +export class AuthError {
                        +    message: string;
                        +    code?: Nullable<string>;
                        +    field?: Nullable<string>;
                        +}
                        +
                        +export class Workspace {
                        +    workspace_id: string;
                        +    name: string;
                        +    color: string;
                        +    description?: Nullable<string>;
                        +    owner_id: string;
                        +    owner: User;
                        +    members: WorkspaceMembers[];
                        +    boards?: Nullable<Nullable<Board>[]>;
                        +    labels?: Nullable<Nullable<Label>[]>;
                        +    is_pinned: boolean;
                        +}
                        +
                        +export class WorkspaceMembers {
                        +    workspace_id: string;
                        +    user_id: string;
                        +    role: string;
                        +    user: User;
                        +    workspace: Workspace;
                        +}
                        +
                        +export class PinWorkspacePayload {
                        +    workspace: Workspace;
                        +}
                        +
                        +export type DateTime = any;
                        +export type Upload = any;
                        +export type Status = Success | Error;
                        +export type AuthResult = AuthSuccess | AuthError;
                        +type Nullable<T> = T | null;
                        +
                        +
                        +
                        + + + + + + + + + +
                        +
                        +

                        results matching ""

                        +
                          +
                          +
                          +

                          No results matching ""

                          +
                          +
                          +
                          + +
                          +
                          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/classes/CreateBoardPayload.html b/backend/documentation/classes/CreateBoardPayload.html new file mode 100644 index 0000000..fc39a45 --- /dev/null +++ b/backend/documentation/classes/CreateBoardPayload.html @@ -0,0 +1,635 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                          +
                          + + +
                          +
                          + + + + + + + + + + + + + + + + + + + + +
                          +
                          +

                          +

                          File

                          +

                          +

                          + src/graphql/graphql.ts +

                          + + + + + + +
                          +

                          Index

                          + + + + + + + + + + + + + + + +
                          +
                          Properties
                          +
                          +
                            +
                          • + Optional + board +
                          • +
                          +
                          +
                          + + +
                          + +

                          + Properties +

                          + + + + + + + + + + + + + + +
                          + + + Optional + board + + +
                          + Type : Nullable<Board> + +
                          + +
                          +
                          + + + + + + + +
                          + + +
                          +
                          export enum Role {
                          +    Admin = "Admin",
                          +    Member = "Member",
                          +    Viewer = "Viewer"
                          +}
                          +
                          +export class CreateBoardInput {
                          +    title: string;
                          +    description?: Nullable<string>;
                          +    color: string;
                          +    workspace_id: string;
                          +}
                          +
                          +export class UpdateBoardInput {
                          +    board_id: string;
                          +    title?: Nullable<string>;
                          +    description?: Nullable<string>;
                          +    color?: Nullable<string>;
                          +}
                          +
                          +export class CreateListInput {
                          +    title: string;
                          +    board_id: string;
                          +    position: number;
                          +    color?: Nullable<string>;
                          +}
                          +
                          +export class UpdateListInput {
                          +    list_id: string;
                          +    title?: Nullable<string>;
                          +    position?: Nullable<number>;
                          +    color?: Nullable<string>;
                          +}
                          +
                          +export class CreateCardInput {
                          +    title: string;
                          +    list_id: string;
                          +    description?: Nullable<string>;
                          +    position: number;
                          +    due_date?: Nullable<DateTime>;
                          +}
                          +
                          +export class UpdateCardInput {
                          +    card_id: string;
                          +    title?: Nullable<string>;
                          +    description?: Nullable<string>;
                          +    position?: Nullable<number>;
                          +    due_date?: Nullable<DateTime>;
                          +}
                          +
                          +export class CreateLabelInput {
                          +    name: string;
                          +    color: string;
                          +    board_id: string;
                          +}
                          +
                          +export class UpdateLabelInput {
                          +    label_id: string;
                          +    name?: Nullable<string>;
                          +    color?: Nullable<string>;
                          +}
                          +
                          +export class LoginInput {
                          +    email: string;
                          +    password: string;
                          +}
                          +
                          +export class RegisterInput {
                          +    username: string;
                          +    email: string;
                          +    password: string;
                          +}
                          +
                          +export class CreateUserInput {
                          +    username: string;
                          +    email: string;
                          +    password: string;
                          +}
                          +
                          +export class UpdateUserInput {
                          +    user_id: string;
                          +    username?: Nullable<string>;
                          +    email?: Nullable<string>;
                          +    password?: Nullable<string>;
                          +}
                          +
                          +export class CreateWorkspaceInput {
                          +    name: string;
                          +    description?: Nullable<string>;
                          +    color?: Nullable<string>;
                          +}
                          +
                          +export class UpdateWorkspaceInput {
                          +    name?: Nullable<string>;
                          +    description?: Nullable<string>;
                          +    color?: Nullable<string>;
                          +}
                          +
                          +export class AddWorkspaceMemberInput {
                          +    workspace_id: string;
                          +    user_email: string;
                          +    role?: Nullable<Role>;
                          +}
                          +
                          +export class UpdateMemberRoleInput {
                          +    workspace_id: string;
                          +    user_id: string;
                          +    role: Role;
                          +}
                          +
                          +export class Board {
                          +    board_id: string;
                          +    title: string;
                          +    description?: Nullable<string>;
                          +    color: string;
                          +    lists: List[];
                          +    workspace_id: string;
                          +}
                          +
                          +export class List {
                          +    list_id: string;
                          +    title: string;
                          +    position: number;
                          +    color: string;
                          +    board_id: string;
                          +    cards?: Nullable<Nullable<Card>[]>;
                          +}
                          +
                          +export class Card {
                          +    card_id: string;
                          +    title: string;
                          +    description?: Nullable<string>;
                          +    position: number;
                          +    list_id: string;
                          +    labels?: Nullable<Nullable<Label>[]>;
                          +    due_date?: Nullable<DateTime>;
                          +    comments?: Nullable<Nullable<Comment>[]>;
                          +    attachments?: Nullable<Nullable<Attachment>[]>;
                          +    members?: Nullable<Nullable<CardMember>[]>;
                          +}
                          +
                          +export class Comment {
                          +    comment_id: string;
                          +    content: string;
                          +    created_at: DateTime;
                          +    card_id: string;
                          +    user_id: string;
                          +}
                          +
                          +export class Label {
                          +    label_id: string;
                          +    name: string;
                          +    color: string;
                          +    workspace_id: string;
                          +}
                          +
                          +export class Attachment {
                          +    attachment_id: string;
                          +    card_id: string;
                          +    url: string;
                          +    filename: string;
                          +}
                          +
                          +export class CardLabel {
                          +    card_id: string;
                          +    label_id: string;
                          +}
                          +
                          +export class CardMember {
                          +    card_id: string;
                          +    user_id: string;
                          +}
                          +
                          +export abstract class IQuery {
                          +    abstract boards(workspace_id: string): Nullable<Nullable<Board>[]> | Promise<Nullable<Nullable<Board>[]>>;
                          +
                          +    abstract board(board_id: string): Nullable<Board> | Promise<Nullable<Board>>;
                          +
                          +    abstract lists(board_id: string): Nullable<Nullable<List>[]> | Promise<Nullable<Nullable<List>[]>>;
                          +
                          +    abstract list(list_id: string): Nullable<List> | Promise<Nullable<List>>;
                          +
                          +    abstract cards(list_id: string): Nullable<Nullable<Card>[]> | Promise<Nullable<Nullable<Card>[]>>;
                          +
                          +    abstract card(card_id: string): Nullable<Card> | Promise<Nullable<Card>>;
                          +
                          +    abstract labels(workspace_id: string): Nullable<Nullable<Label>[]> | Promise<Nullable<Nullable<Label>[]>>;
                          +
                          +    abstract comments(card_id: string): Nullable<Nullable<Comment>[]> | Promise<Nullable<Nullable<Comment>[]>>;
                          +
                          +    abstract users(): Nullable<Nullable<User>[]> | Promise<Nullable<Nullable<User>[]>>;
                          +
                          +    abstract user(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                          +
                          +    abstract me(): Nullable<User> | Promise<Nullable<User>>;
                          +
                          +    abstract workspaces(): Nullable<Nullable<Workspace>[]> | Promise<Nullable<Nullable<Workspace>[]>>;
                          +
                          +    abstract workspace(workspace_id: string): Nullable<Workspace> | Promise<Nullable<Workspace>>;
                          +
                          +    abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise<WorkspaceMembers[]>;
                          +}
                          +
                          +export class CreateBoardPayload {
                          +    board?: Nullable<Board>;
                          +}
                          +
                          +export abstract class IMutation {
                          +    abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise<CreateBoardPayload>;
                          +
                          +    abstract updateBoard(input: UpdateBoardInput): Board | Promise<Board>;
                          +
                          +    abstract deleteBoard(board_id: string): Status | Promise<Status>;
                          +
                          +    abstract createList(input: CreateListInput): List | Promise<List>;
                          +
                          +    abstract updateList(input: UpdateListInput): List | Promise<List>;
                          +
                          +    abstract deleteList(list_id: string): Status | Promise<Status>;
                          +
                          +    abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise<List[]>;
                          +
                          +    abstract createCard(input: CreateCardInput): Card | Promise<Card>;
                          +
                          +    abstract updateCard(input: UpdateCardInput): Card | Promise<Card>;
                          +
                          +    abstract deleteCard(card_id: string): Status | Promise<Status>;
                          +
                          +    abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise<Card>;
                          +
                          +    abstract createLabel(input: CreateLabelInput): Label | Promise<Label>;
                          +
                          +    abstract updateLabel(input: UpdateLabelInput): Label | Promise<Label>;
                          +
                          +    abstract deleteLabel(label_id: string): Status | Promise<Status>;
                          +
                          +    abstract uploadFile(file: Upload): FileResponse | Promise<FileResponse>;
                          +
                          +    abstract createUser(input: CreateUserInput): Nullable<User> | Promise<Nullable<User>>;
                          +
                          +    abstract updateUser(input: UpdateUserInput): Nullable<User> | Promise<Nullable<User>>;
                          +
                          +    abstract deleteUser(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                          +
                          +    abstract login(input: LoginInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                          +
                          +    abstract register(input: RegisterInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                          +
                          +    abstract logout(): Status | Promise<Status>;
                          +
                          +    abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise<Workspace>;
                          +
                          +    abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise<Workspace>;
                          +
                          +    abstract deleteWorkspace(workspace_id: string): Status | Promise<Status>;
                          +
                          +    abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                          +
                          +    abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                          +
                          +    abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                          +
                          +    abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise<Status>;
                          +
                          +    abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                          +}
                          +
                          +export class Success {
                          +    successMessage?: Nullable<string>;
                          +}
                          +
                          +export class Error {
                          +    errorMessage: string;
                          +    code?: Nullable<string>;
                          +}
                          +
                          +export class FileResponse {
                          +    success: boolean;
                          +    url?: Nullable<string>;
                          +    message?: Nullable<string>;
                          +}
                          +
                          +export class User {
                          +    user_id: string;
                          +    username: string;
                          +    email: string;
                          +    picture?: Nullable<string>;
                          +    created_at: DateTime;
                          +}
                          +
                          +export class AuthSuccess {
                          +    token: string;
                          +    user: User;
                          +}
                          +
                          +export class AuthError {
                          +    message: string;
                          +    code?: Nullable<string>;
                          +    field?: Nullable<string>;
                          +}
                          +
                          +export class Workspace {
                          +    workspace_id: string;
                          +    name: string;
                          +    color: string;
                          +    description?: Nullable<string>;
                          +    owner_id: string;
                          +    owner: User;
                          +    members: WorkspaceMembers[];
                          +    boards?: Nullable<Nullable<Board>[]>;
                          +    labels?: Nullable<Nullable<Label>[]>;
                          +    is_pinned: boolean;
                          +}
                          +
                          +export class WorkspaceMembers {
                          +    workspace_id: string;
                          +    user_id: string;
                          +    role: string;
                          +    user: User;
                          +    workspace: Workspace;
                          +}
                          +
                          +export class PinWorkspacePayload {
                          +    workspace: Workspace;
                          +}
                          +
                          +export type DateTime = any;
                          +export type Upload = any;
                          +export type Status = Success | Error;
                          +export type AuthResult = AuthSuccess | AuthError;
                          +type Nullable<T> = T | null;
                          +
                          +
                          +
                          + + + + + + + + + +
                          +
                          +

                          results matching ""

                          +
                            +
                            +
                            +

                            No results matching ""

                            +
                            +
                            +
                            + +
                            +
                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/classes/CreateCardInput.html b/backend/documentation/classes/CreateCardInput.html new file mode 100644 index 0000000..44c1dfe --- /dev/null +++ b/backend/documentation/classes/CreateCardInput.html @@ -0,0 +1,753 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                            +
                            + + +
                            +
                            + + + + + + + + + + + + + + + + + + + + +
                            +
                            +

                            +

                            File

                            +

                            +

                            + src/graphql/graphql.ts +

                            + + + + + + +
                            +

                            Index

                            + + + + + + + + + + + + + + + +
                            +
                            Properties
                            +
                            + +
                            +
                            + + +
                            + +

                            + Properties +

                            + + + + + + + + + + + + + + +
                            + + + Optional + description + + +
                            + Type : Nullable<string> + +
                            + +
                            + + + + + + + + + + + + + + +
                            + + + Optional + due_date + + +
                            + Type : Nullable<DateTime> + +
                            + +
                            + + + + + + + + + + + + + + +
                            + + + list_id + + +
                            + Type : string + +
                            + +
                            + + + + + + + + + + + + + + +
                            + + + position + + +
                            + Type : number + +
                            + +
                            + + + + + + + + + + + + + + +
                            + + + title + + +
                            + Type : string + +
                            + +
                            +
                            + + + + + + + +
                            + + +
                            +
                            export enum Role {
                            +    Admin = "Admin",
                            +    Member = "Member",
                            +    Viewer = "Viewer"
                            +}
                            +
                            +export class CreateBoardInput {
                            +    title: string;
                            +    description?: Nullable<string>;
                            +    color: string;
                            +    workspace_id: string;
                            +}
                            +
                            +export class UpdateBoardInput {
                            +    board_id: string;
                            +    title?: Nullable<string>;
                            +    description?: Nullable<string>;
                            +    color?: Nullable<string>;
                            +}
                            +
                            +export class CreateListInput {
                            +    title: string;
                            +    board_id: string;
                            +    position: number;
                            +    color?: Nullable<string>;
                            +}
                            +
                            +export class UpdateListInput {
                            +    list_id: string;
                            +    title?: Nullable<string>;
                            +    position?: Nullable<number>;
                            +    color?: Nullable<string>;
                            +}
                            +
                            +export class CreateCardInput {
                            +    title: string;
                            +    list_id: string;
                            +    description?: Nullable<string>;
                            +    position: number;
                            +    due_date?: Nullable<DateTime>;
                            +}
                            +
                            +export class UpdateCardInput {
                            +    card_id: string;
                            +    title?: Nullable<string>;
                            +    description?: Nullable<string>;
                            +    position?: Nullable<number>;
                            +    due_date?: Nullable<DateTime>;
                            +}
                            +
                            +export class CreateLabelInput {
                            +    name: string;
                            +    color: string;
                            +    board_id: string;
                            +}
                            +
                            +export class UpdateLabelInput {
                            +    label_id: string;
                            +    name?: Nullable<string>;
                            +    color?: Nullable<string>;
                            +}
                            +
                            +export class LoginInput {
                            +    email: string;
                            +    password: string;
                            +}
                            +
                            +export class RegisterInput {
                            +    username: string;
                            +    email: string;
                            +    password: string;
                            +}
                            +
                            +export class CreateUserInput {
                            +    username: string;
                            +    email: string;
                            +    password: string;
                            +}
                            +
                            +export class UpdateUserInput {
                            +    user_id: string;
                            +    username?: Nullable<string>;
                            +    email?: Nullable<string>;
                            +    password?: Nullable<string>;
                            +}
                            +
                            +export class CreateWorkspaceInput {
                            +    name: string;
                            +    description?: Nullable<string>;
                            +    color?: Nullable<string>;
                            +}
                            +
                            +export class UpdateWorkspaceInput {
                            +    name?: Nullable<string>;
                            +    description?: Nullable<string>;
                            +    color?: Nullable<string>;
                            +}
                            +
                            +export class AddWorkspaceMemberInput {
                            +    workspace_id: string;
                            +    user_email: string;
                            +    role?: Nullable<Role>;
                            +}
                            +
                            +export class UpdateMemberRoleInput {
                            +    workspace_id: string;
                            +    user_id: string;
                            +    role: Role;
                            +}
                            +
                            +export class Board {
                            +    board_id: string;
                            +    title: string;
                            +    description?: Nullable<string>;
                            +    color: string;
                            +    lists: List[];
                            +    workspace_id: string;
                            +}
                            +
                            +export class List {
                            +    list_id: string;
                            +    title: string;
                            +    position: number;
                            +    color: string;
                            +    board_id: string;
                            +    cards?: Nullable<Nullable<Card>[]>;
                            +}
                            +
                            +export class Card {
                            +    card_id: string;
                            +    title: string;
                            +    description?: Nullable<string>;
                            +    position: number;
                            +    list_id: string;
                            +    labels?: Nullable<Nullable<Label>[]>;
                            +    due_date?: Nullable<DateTime>;
                            +    comments?: Nullable<Nullable<Comment>[]>;
                            +    attachments?: Nullable<Nullable<Attachment>[]>;
                            +    members?: Nullable<Nullable<CardMember>[]>;
                            +}
                            +
                            +export class Comment {
                            +    comment_id: string;
                            +    content: string;
                            +    created_at: DateTime;
                            +    card_id: string;
                            +    user_id: string;
                            +}
                            +
                            +export class Label {
                            +    label_id: string;
                            +    name: string;
                            +    color: string;
                            +    workspace_id: string;
                            +}
                            +
                            +export class Attachment {
                            +    attachment_id: string;
                            +    card_id: string;
                            +    url: string;
                            +    filename: string;
                            +}
                            +
                            +export class CardLabel {
                            +    card_id: string;
                            +    label_id: string;
                            +}
                            +
                            +export class CardMember {
                            +    card_id: string;
                            +    user_id: string;
                            +}
                            +
                            +export abstract class IQuery {
                            +    abstract boards(workspace_id: string): Nullable<Nullable<Board>[]> | Promise<Nullable<Nullable<Board>[]>>;
                            +
                            +    abstract board(board_id: string): Nullable<Board> | Promise<Nullable<Board>>;
                            +
                            +    abstract lists(board_id: string): Nullable<Nullable<List>[]> | Promise<Nullable<Nullable<List>[]>>;
                            +
                            +    abstract list(list_id: string): Nullable<List> | Promise<Nullable<List>>;
                            +
                            +    abstract cards(list_id: string): Nullable<Nullable<Card>[]> | Promise<Nullable<Nullable<Card>[]>>;
                            +
                            +    abstract card(card_id: string): Nullable<Card> | Promise<Nullable<Card>>;
                            +
                            +    abstract labels(workspace_id: string): Nullable<Nullable<Label>[]> | Promise<Nullable<Nullable<Label>[]>>;
                            +
                            +    abstract comments(card_id: string): Nullable<Nullable<Comment>[]> | Promise<Nullable<Nullable<Comment>[]>>;
                            +
                            +    abstract users(): Nullable<Nullable<User>[]> | Promise<Nullable<Nullable<User>[]>>;
                            +
                            +    abstract user(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                            +
                            +    abstract me(): Nullable<User> | Promise<Nullable<User>>;
                            +
                            +    abstract workspaces(): Nullable<Nullable<Workspace>[]> | Promise<Nullable<Nullable<Workspace>[]>>;
                            +
                            +    abstract workspace(workspace_id: string): Nullable<Workspace> | Promise<Nullable<Workspace>>;
                            +
                            +    abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise<WorkspaceMembers[]>;
                            +}
                            +
                            +export class CreateBoardPayload {
                            +    board?: Nullable<Board>;
                            +}
                            +
                            +export abstract class IMutation {
                            +    abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise<CreateBoardPayload>;
                            +
                            +    abstract updateBoard(input: UpdateBoardInput): Board | Promise<Board>;
                            +
                            +    abstract deleteBoard(board_id: string): Status | Promise<Status>;
                            +
                            +    abstract createList(input: CreateListInput): List | Promise<List>;
                            +
                            +    abstract updateList(input: UpdateListInput): List | Promise<List>;
                            +
                            +    abstract deleteList(list_id: string): Status | Promise<Status>;
                            +
                            +    abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise<List[]>;
                            +
                            +    abstract createCard(input: CreateCardInput): Card | Promise<Card>;
                            +
                            +    abstract updateCard(input: UpdateCardInput): Card | Promise<Card>;
                            +
                            +    abstract deleteCard(card_id: string): Status | Promise<Status>;
                            +
                            +    abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise<Card>;
                            +
                            +    abstract createLabel(input: CreateLabelInput): Label | Promise<Label>;
                            +
                            +    abstract updateLabel(input: UpdateLabelInput): Label | Promise<Label>;
                            +
                            +    abstract deleteLabel(label_id: string): Status | Promise<Status>;
                            +
                            +    abstract uploadFile(file: Upload): FileResponse | Promise<FileResponse>;
                            +
                            +    abstract createUser(input: CreateUserInput): Nullable<User> | Promise<Nullable<User>>;
                            +
                            +    abstract updateUser(input: UpdateUserInput): Nullable<User> | Promise<Nullable<User>>;
                            +
                            +    abstract deleteUser(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                            +
                            +    abstract login(input: LoginInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                            +
                            +    abstract register(input: RegisterInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                            +
                            +    abstract logout(): Status | Promise<Status>;
                            +
                            +    abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise<Workspace>;
                            +
                            +    abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise<Workspace>;
                            +
                            +    abstract deleteWorkspace(workspace_id: string): Status | Promise<Status>;
                            +
                            +    abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                            +
                            +    abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                            +
                            +    abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                            +
                            +    abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise<Status>;
                            +
                            +    abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                            +}
                            +
                            +export class Success {
                            +    successMessage?: Nullable<string>;
                            +}
                            +
                            +export class Error {
                            +    errorMessage: string;
                            +    code?: Nullable<string>;
                            +}
                            +
                            +export class FileResponse {
                            +    success: boolean;
                            +    url?: Nullable<string>;
                            +    message?: Nullable<string>;
                            +}
                            +
                            +export class User {
                            +    user_id: string;
                            +    username: string;
                            +    email: string;
                            +    picture?: Nullable<string>;
                            +    created_at: DateTime;
                            +}
                            +
                            +export class AuthSuccess {
                            +    token: string;
                            +    user: User;
                            +}
                            +
                            +export class AuthError {
                            +    message: string;
                            +    code?: Nullable<string>;
                            +    field?: Nullable<string>;
                            +}
                            +
                            +export class Workspace {
                            +    workspace_id: string;
                            +    name: string;
                            +    color: string;
                            +    description?: Nullable<string>;
                            +    owner_id: string;
                            +    owner: User;
                            +    members: WorkspaceMembers[];
                            +    boards?: Nullable<Nullable<Board>[]>;
                            +    labels?: Nullable<Nullable<Label>[]>;
                            +    is_pinned: boolean;
                            +}
                            +
                            +export class WorkspaceMembers {
                            +    workspace_id: string;
                            +    user_id: string;
                            +    role: string;
                            +    user: User;
                            +    workspace: Workspace;
                            +}
                            +
                            +export class PinWorkspacePayload {
                            +    workspace: Workspace;
                            +}
                            +
                            +export type DateTime = any;
                            +export type Upload = any;
                            +export type Status = Success | Error;
                            +export type AuthResult = AuthSuccess | AuthError;
                            +type Nullable<T> = T | null;
                            +
                            +
                            +
                            + + + + + + + + + +
                            +
                            +

                            results matching ""

                            +
                              +
                              +
                              +

                              No results matching ""

                              +
                              +
                              +
                              + +
                              +
                              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/classes/CreateLabelInput.html b/backend/documentation/classes/CreateLabelInput.html new file mode 100644 index 0000000..5db8233 --- /dev/null +++ b/backend/documentation/classes/CreateLabelInput.html @@ -0,0 +1,691 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                              +
                              + + +
                              +
                              + + + + + + + + + + + + + + + + + + + + +
                              +
                              +

                              +

                              File

                              +

                              +

                              + src/graphql/graphql.ts +

                              + + + + + + +
                              +

                              Index

                              + + + + + + + + + + + + + + + +
                              +
                              Properties
                              +
                              + +
                              +
                              + + +
                              + +

                              + Properties +

                              + + + + + + + + + + + + + + +
                              + + + board_id + + +
                              + Type : string + +
                              + +
                              + + + + + + + + + + + + + + +
                              + + + color + + +
                              + Type : string + +
                              + +
                              + + + + + + + + + + + + + + +
                              + + + name + + +
                              + Type : string + +
                              + +
                              +
                              + + + + + + + +
                              + + +
                              +
                              export enum Role {
                              +    Admin = "Admin",
                              +    Member = "Member",
                              +    Viewer = "Viewer"
                              +}
                              +
                              +export class CreateBoardInput {
                              +    title: string;
                              +    description?: Nullable<string>;
                              +    color: string;
                              +    workspace_id: string;
                              +}
                              +
                              +export class UpdateBoardInput {
                              +    board_id: string;
                              +    title?: Nullable<string>;
                              +    description?: Nullable<string>;
                              +    color?: Nullable<string>;
                              +}
                              +
                              +export class CreateListInput {
                              +    title: string;
                              +    board_id: string;
                              +    position: number;
                              +    color?: Nullable<string>;
                              +}
                              +
                              +export class UpdateListInput {
                              +    list_id: string;
                              +    title?: Nullable<string>;
                              +    position?: Nullable<number>;
                              +    color?: Nullable<string>;
                              +}
                              +
                              +export class CreateCardInput {
                              +    title: string;
                              +    list_id: string;
                              +    description?: Nullable<string>;
                              +    position: number;
                              +    due_date?: Nullable<DateTime>;
                              +}
                              +
                              +export class UpdateCardInput {
                              +    card_id: string;
                              +    title?: Nullable<string>;
                              +    description?: Nullable<string>;
                              +    position?: Nullable<number>;
                              +    due_date?: Nullable<DateTime>;
                              +}
                              +
                              +export class CreateLabelInput {
                              +    name: string;
                              +    color: string;
                              +    board_id: string;
                              +}
                              +
                              +export class UpdateLabelInput {
                              +    label_id: string;
                              +    name?: Nullable<string>;
                              +    color?: Nullable<string>;
                              +}
                              +
                              +export class LoginInput {
                              +    email: string;
                              +    password: string;
                              +}
                              +
                              +export class RegisterInput {
                              +    username: string;
                              +    email: string;
                              +    password: string;
                              +}
                              +
                              +export class CreateUserInput {
                              +    username: string;
                              +    email: string;
                              +    password: string;
                              +}
                              +
                              +export class UpdateUserInput {
                              +    user_id: string;
                              +    username?: Nullable<string>;
                              +    email?: Nullable<string>;
                              +    password?: Nullable<string>;
                              +}
                              +
                              +export class CreateWorkspaceInput {
                              +    name: string;
                              +    description?: Nullable<string>;
                              +    color?: Nullable<string>;
                              +}
                              +
                              +export class UpdateWorkspaceInput {
                              +    name?: Nullable<string>;
                              +    description?: Nullable<string>;
                              +    color?: Nullable<string>;
                              +}
                              +
                              +export class AddWorkspaceMemberInput {
                              +    workspace_id: string;
                              +    user_email: string;
                              +    role?: Nullable<Role>;
                              +}
                              +
                              +export class UpdateMemberRoleInput {
                              +    workspace_id: string;
                              +    user_id: string;
                              +    role: Role;
                              +}
                              +
                              +export class Board {
                              +    board_id: string;
                              +    title: string;
                              +    description?: Nullable<string>;
                              +    color: string;
                              +    lists: List[];
                              +    workspace_id: string;
                              +}
                              +
                              +export class List {
                              +    list_id: string;
                              +    title: string;
                              +    position: number;
                              +    color: string;
                              +    board_id: string;
                              +    cards?: Nullable<Nullable<Card>[]>;
                              +}
                              +
                              +export class Card {
                              +    card_id: string;
                              +    title: string;
                              +    description?: Nullable<string>;
                              +    position: number;
                              +    list_id: string;
                              +    labels?: Nullable<Nullable<Label>[]>;
                              +    due_date?: Nullable<DateTime>;
                              +    comments?: Nullable<Nullable<Comment>[]>;
                              +    attachments?: Nullable<Nullable<Attachment>[]>;
                              +    members?: Nullable<Nullable<CardMember>[]>;
                              +}
                              +
                              +export class Comment {
                              +    comment_id: string;
                              +    content: string;
                              +    created_at: DateTime;
                              +    card_id: string;
                              +    user_id: string;
                              +}
                              +
                              +export class Label {
                              +    label_id: string;
                              +    name: string;
                              +    color: string;
                              +    workspace_id: string;
                              +}
                              +
                              +export class Attachment {
                              +    attachment_id: string;
                              +    card_id: string;
                              +    url: string;
                              +    filename: string;
                              +}
                              +
                              +export class CardLabel {
                              +    card_id: string;
                              +    label_id: string;
                              +}
                              +
                              +export class CardMember {
                              +    card_id: string;
                              +    user_id: string;
                              +}
                              +
                              +export abstract class IQuery {
                              +    abstract boards(workspace_id: string): Nullable<Nullable<Board>[]> | Promise<Nullable<Nullable<Board>[]>>;
                              +
                              +    abstract board(board_id: string): Nullable<Board> | Promise<Nullable<Board>>;
                              +
                              +    abstract lists(board_id: string): Nullable<Nullable<List>[]> | Promise<Nullable<Nullable<List>[]>>;
                              +
                              +    abstract list(list_id: string): Nullable<List> | Promise<Nullable<List>>;
                              +
                              +    abstract cards(list_id: string): Nullable<Nullable<Card>[]> | Promise<Nullable<Nullable<Card>[]>>;
                              +
                              +    abstract card(card_id: string): Nullable<Card> | Promise<Nullable<Card>>;
                              +
                              +    abstract labels(workspace_id: string): Nullable<Nullable<Label>[]> | Promise<Nullable<Nullable<Label>[]>>;
                              +
                              +    abstract comments(card_id: string): Nullable<Nullable<Comment>[]> | Promise<Nullable<Nullable<Comment>[]>>;
                              +
                              +    abstract users(): Nullable<Nullable<User>[]> | Promise<Nullable<Nullable<User>[]>>;
                              +
                              +    abstract user(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                              +
                              +    abstract me(): Nullable<User> | Promise<Nullable<User>>;
                              +
                              +    abstract workspaces(): Nullable<Nullable<Workspace>[]> | Promise<Nullable<Nullable<Workspace>[]>>;
                              +
                              +    abstract workspace(workspace_id: string): Nullable<Workspace> | Promise<Nullable<Workspace>>;
                              +
                              +    abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise<WorkspaceMembers[]>;
                              +}
                              +
                              +export class CreateBoardPayload {
                              +    board?: Nullable<Board>;
                              +}
                              +
                              +export abstract class IMutation {
                              +    abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise<CreateBoardPayload>;
                              +
                              +    abstract updateBoard(input: UpdateBoardInput): Board | Promise<Board>;
                              +
                              +    abstract deleteBoard(board_id: string): Status | Promise<Status>;
                              +
                              +    abstract createList(input: CreateListInput): List | Promise<List>;
                              +
                              +    abstract updateList(input: UpdateListInput): List | Promise<List>;
                              +
                              +    abstract deleteList(list_id: string): Status | Promise<Status>;
                              +
                              +    abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise<List[]>;
                              +
                              +    abstract createCard(input: CreateCardInput): Card | Promise<Card>;
                              +
                              +    abstract updateCard(input: UpdateCardInput): Card | Promise<Card>;
                              +
                              +    abstract deleteCard(card_id: string): Status | Promise<Status>;
                              +
                              +    abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise<Card>;
                              +
                              +    abstract createLabel(input: CreateLabelInput): Label | Promise<Label>;
                              +
                              +    abstract updateLabel(input: UpdateLabelInput): Label | Promise<Label>;
                              +
                              +    abstract deleteLabel(label_id: string): Status | Promise<Status>;
                              +
                              +    abstract uploadFile(file: Upload): FileResponse | Promise<FileResponse>;
                              +
                              +    abstract createUser(input: CreateUserInput): Nullable<User> | Promise<Nullable<User>>;
                              +
                              +    abstract updateUser(input: UpdateUserInput): Nullable<User> | Promise<Nullable<User>>;
                              +
                              +    abstract deleteUser(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                              +
                              +    abstract login(input: LoginInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                              +
                              +    abstract register(input: RegisterInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                              +
                              +    abstract logout(): Status | Promise<Status>;
                              +
                              +    abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise<Workspace>;
                              +
                              +    abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise<Workspace>;
                              +
                              +    abstract deleteWorkspace(workspace_id: string): Status | Promise<Status>;
                              +
                              +    abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                              +
                              +    abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                              +
                              +    abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                              +
                              +    abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise<Status>;
                              +
                              +    abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                              +}
                              +
                              +export class Success {
                              +    successMessage?: Nullable<string>;
                              +}
                              +
                              +export class Error {
                              +    errorMessage: string;
                              +    code?: Nullable<string>;
                              +}
                              +
                              +export class FileResponse {
                              +    success: boolean;
                              +    url?: Nullable<string>;
                              +    message?: Nullable<string>;
                              +}
                              +
                              +export class User {
                              +    user_id: string;
                              +    username: string;
                              +    email: string;
                              +    picture?: Nullable<string>;
                              +    created_at: DateTime;
                              +}
                              +
                              +export class AuthSuccess {
                              +    token: string;
                              +    user: User;
                              +}
                              +
                              +export class AuthError {
                              +    message: string;
                              +    code?: Nullable<string>;
                              +    field?: Nullable<string>;
                              +}
                              +
                              +export class Workspace {
                              +    workspace_id: string;
                              +    name: string;
                              +    color: string;
                              +    description?: Nullable<string>;
                              +    owner_id: string;
                              +    owner: User;
                              +    members: WorkspaceMembers[];
                              +    boards?: Nullable<Nullable<Board>[]>;
                              +    labels?: Nullable<Nullable<Label>[]>;
                              +    is_pinned: boolean;
                              +}
                              +
                              +export class WorkspaceMembers {
                              +    workspace_id: string;
                              +    user_id: string;
                              +    role: string;
                              +    user: User;
                              +    workspace: Workspace;
                              +}
                              +
                              +export class PinWorkspacePayload {
                              +    workspace: Workspace;
                              +}
                              +
                              +export type DateTime = any;
                              +export type Upload = any;
                              +export type Status = Success | Error;
                              +export type AuthResult = AuthSuccess | AuthError;
                              +type Nullable<T> = T | null;
                              +
                              +
                              +
                              + + + + + + + + + +
                              +
                              +

                              results matching ""

                              +
                                +
                                +
                                +

                                No results matching ""

                                +
                                +
                                +
                                + +
                                +
                                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/classes/CreateListInput.html b/backend/documentation/classes/CreateListInput.html new file mode 100644 index 0000000..a021895 --- /dev/null +++ b/backend/documentation/classes/CreateListInput.html @@ -0,0 +1,722 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                                +
                                + + +
                                +
                                + + + + + + + + + + + + + + + + + + + + +
                                +
                                +

                                +

                                File

                                +

                                +

                                + src/graphql/graphql.ts +

                                + + + + + + +
                                +

                                Index

                                + + + + + + + + + + + + + + + +
                                +
                                Properties
                                +
                                + +
                                +
                                + + +
                                + +

                                + Properties +

                                + + + + + + + + + + + + + + +
                                + + + board_id + + +
                                + Type : string + +
                                + +
                                + + + + + + + + + + + + + + +
                                + + + Optional + color + + +
                                + Type : Nullable<string> + +
                                + +
                                + + + + + + + + + + + + + + +
                                + + + position + + +
                                + Type : number + +
                                + +
                                + + + + + + + + + + + + + + +
                                + + + title + + +
                                + Type : string + +
                                + +
                                +
                                + + + + + + + +
                                + + +
                                +
                                export enum Role {
                                +    Admin = "Admin",
                                +    Member = "Member",
                                +    Viewer = "Viewer"
                                +}
                                +
                                +export class CreateBoardInput {
                                +    title: string;
                                +    description?: Nullable<string>;
                                +    color: string;
                                +    workspace_id: string;
                                +}
                                +
                                +export class UpdateBoardInput {
                                +    board_id: string;
                                +    title?: Nullable<string>;
                                +    description?: Nullable<string>;
                                +    color?: Nullable<string>;
                                +}
                                +
                                +export class CreateListInput {
                                +    title: string;
                                +    board_id: string;
                                +    position: number;
                                +    color?: Nullable<string>;
                                +}
                                +
                                +export class UpdateListInput {
                                +    list_id: string;
                                +    title?: Nullable<string>;
                                +    position?: Nullable<number>;
                                +    color?: Nullable<string>;
                                +}
                                +
                                +export class CreateCardInput {
                                +    title: string;
                                +    list_id: string;
                                +    description?: Nullable<string>;
                                +    position: number;
                                +    due_date?: Nullable<DateTime>;
                                +}
                                +
                                +export class UpdateCardInput {
                                +    card_id: string;
                                +    title?: Nullable<string>;
                                +    description?: Nullable<string>;
                                +    position?: Nullable<number>;
                                +    due_date?: Nullable<DateTime>;
                                +}
                                +
                                +export class CreateLabelInput {
                                +    name: string;
                                +    color: string;
                                +    board_id: string;
                                +}
                                +
                                +export class UpdateLabelInput {
                                +    label_id: string;
                                +    name?: Nullable<string>;
                                +    color?: Nullable<string>;
                                +}
                                +
                                +export class LoginInput {
                                +    email: string;
                                +    password: string;
                                +}
                                +
                                +export class RegisterInput {
                                +    username: string;
                                +    email: string;
                                +    password: string;
                                +}
                                +
                                +export class CreateUserInput {
                                +    username: string;
                                +    email: string;
                                +    password: string;
                                +}
                                +
                                +export class UpdateUserInput {
                                +    user_id: string;
                                +    username?: Nullable<string>;
                                +    email?: Nullable<string>;
                                +    password?: Nullable<string>;
                                +}
                                +
                                +export class CreateWorkspaceInput {
                                +    name: string;
                                +    description?: Nullable<string>;
                                +    color?: Nullable<string>;
                                +}
                                +
                                +export class UpdateWorkspaceInput {
                                +    name?: Nullable<string>;
                                +    description?: Nullable<string>;
                                +    color?: Nullable<string>;
                                +}
                                +
                                +export class AddWorkspaceMemberInput {
                                +    workspace_id: string;
                                +    user_email: string;
                                +    role?: Nullable<Role>;
                                +}
                                +
                                +export class UpdateMemberRoleInput {
                                +    workspace_id: string;
                                +    user_id: string;
                                +    role: Role;
                                +}
                                +
                                +export class Board {
                                +    board_id: string;
                                +    title: string;
                                +    description?: Nullable<string>;
                                +    color: string;
                                +    lists: List[];
                                +    workspace_id: string;
                                +}
                                +
                                +export class List {
                                +    list_id: string;
                                +    title: string;
                                +    position: number;
                                +    color: string;
                                +    board_id: string;
                                +    cards?: Nullable<Nullable<Card>[]>;
                                +}
                                +
                                +export class Card {
                                +    card_id: string;
                                +    title: string;
                                +    description?: Nullable<string>;
                                +    position: number;
                                +    list_id: string;
                                +    labels?: Nullable<Nullable<Label>[]>;
                                +    due_date?: Nullable<DateTime>;
                                +    comments?: Nullable<Nullable<Comment>[]>;
                                +    attachments?: Nullable<Nullable<Attachment>[]>;
                                +    members?: Nullable<Nullable<CardMember>[]>;
                                +}
                                +
                                +export class Comment {
                                +    comment_id: string;
                                +    content: string;
                                +    created_at: DateTime;
                                +    card_id: string;
                                +    user_id: string;
                                +}
                                +
                                +export class Label {
                                +    label_id: string;
                                +    name: string;
                                +    color: string;
                                +    workspace_id: string;
                                +}
                                +
                                +export class Attachment {
                                +    attachment_id: string;
                                +    card_id: string;
                                +    url: string;
                                +    filename: string;
                                +}
                                +
                                +export class CardLabel {
                                +    card_id: string;
                                +    label_id: string;
                                +}
                                +
                                +export class CardMember {
                                +    card_id: string;
                                +    user_id: string;
                                +}
                                +
                                +export abstract class IQuery {
                                +    abstract boards(workspace_id: string): Nullable<Nullable<Board>[]> | Promise<Nullable<Nullable<Board>[]>>;
                                +
                                +    abstract board(board_id: string): Nullable<Board> | Promise<Nullable<Board>>;
                                +
                                +    abstract lists(board_id: string): Nullable<Nullable<List>[]> | Promise<Nullable<Nullable<List>[]>>;
                                +
                                +    abstract list(list_id: string): Nullable<List> | Promise<Nullable<List>>;
                                +
                                +    abstract cards(list_id: string): Nullable<Nullable<Card>[]> | Promise<Nullable<Nullable<Card>[]>>;
                                +
                                +    abstract card(card_id: string): Nullable<Card> | Promise<Nullable<Card>>;
                                +
                                +    abstract labels(workspace_id: string): Nullable<Nullable<Label>[]> | Promise<Nullable<Nullable<Label>[]>>;
                                +
                                +    abstract comments(card_id: string): Nullable<Nullable<Comment>[]> | Promise<Nullable<Nullable<Comment>[]>>;
                                +
                                +    abstract users(): Nullable<Nullable<User>[]> | Promise<Nullable<Nullable<User>[]>>;
                                +
                                +    abstract user(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                                +
                                +    abstract me(): Nullable<User> | Promise<Nullable<User>>;
                                +
                                +    abstract workspaces(): Nullable<Nullable<Workspace>[]> | Promise<Nullable<Nullable<Workspace>[]>>;
                                +
                                +    abstract workspace(workspace_id: string): Nullable<Workspace> | Promise<Nullable<Workspace>>;
                                +
                                +    abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise<WorkspaceMembers[]>;
                                +}
                                +
                                +export class CreateBoardPayload {
                                +    board?: Nullable<Board>;
                                +}
                                +
                                +export abstract class IMutation {
                                +    abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise<CreateBoardPayload>;
                                +
                                +    abstract updateBoard(input: UpdateBoardInput): Board | Promise<Board>;
                                +
                                +    abstract deleteBoard(board_id: string): Status | Promise<Status>;
                                +
                                +    abstract createList(input: CreateListInput): List | Promise<List>;
                                +
                                +    abstract updateList(input: UpdateListInput): List | Promise<List>;
                                +
                                +    abstract deleteList(list_id: string): Status | Promise<Status>;
                                +
                                +    abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise<List[]>;
                                +
                                +    abstract createCard(input: CreateCardInput): Card | Promise<Card>;
                                +
                                +    abstract updateCard(input: UpdateCardInput): Card | Promise<Card>;
                                +
                                +    abstract deleteCard(card_id: string): Status | Promise<Status>;
                                +
                                +    abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise<Card>;
                                +
                                +    abstract createLabel(input: CreateLabelInput): Label | Promise<Label>;
                                +
                                +    abstract updateLabel(input: UpdateLabelInput): Label | Promise<Label>;
                                +
                                +    abstract deleteLabel(label_id: string): Status | Promise<Status>;
                                +
                                +    abstract uploadFile(file: Upload): FileResponse | Promise<FileResponse>;
                                +
                                +    abstract createUser(input: CreateUserInput): Nullable<User> | Promise<Nullable<User>>;
                                +
                                +    abstract updateUser(input: UpdateUserInput): Nullable<User> | Promise<Nullable<User>>;
                                +
                                +    abstract deleteUser(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                                +
                                +    abstract login(input: LoginInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                                +
                                +    abstract register(input: RegisterInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                                +
                                +    abstract logout(): Status | Promise<Status>;
                                +
                                +    abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise<Workspace>;
                                +
                                +    abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise<Workspace>;
                                +
                                +    abstract deleteWorkspace(workspace_id: string): Status | Promise<Status>;
                                +
                                +    abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                                +
                                +    abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                                +
                                +    abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                                +
                                +    abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise<Status>;
                                +
                                +    abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                                +}
                                +
                                +export class Success {
                                +    successMessage?: Nullable<string>;
                                +}
                                +
                                +export class Error {
                                +    errorMessage: string;
                                +    code?: Nullable<string>;
                                +}
                                +
                                +export class FileResponse {
                                +    success: boolean;
                                +    url?: Nullable<string>;
                                +    message?: Nullable<string>;
                                +}
                                +
                                +export class User {
                                +    user_id: string;
                                +    username: string;
                                +    email: string;
                                +    picture?: Nullable<string>;
                                +    created_at: DateTime;
                                +}
                                +
                                +export class AuthSuccess {
                                +    token: string;
                                +    user: User;
                                +}
                                +
                                +export class AuthError {
                                +    message: string;
                                +    code?: Nullable<string>;
                                +    field?: Nullable<string>;
                                +}
                                +
                                +export class Workspace {
                                +    workspace_id: string;
                                +    name: string;
                                +    color: string;
                                +    description?: Nullable<string>;
                                +    owner_id: string;
                                +    owner: User;
                                +    members: WorkspaceMembers[];
                                +    boards?: Nullable<Nullable<Board>[]>;
                                +    labels?: Nullable<Nullable<Label>[]>;
                                +    is_pinned: boolean;
                                +}
                                +
                                +export class WorkspaceMembers {
                                +    workspace_id: string;
                                +    user_id: string;
                                +    role: string;
                                +    user: User;
                                +    workspace: Workspace;
                                +}
                                +
                                +export class PinWorkspacePayload {
                                +    workspace: Workspace;
                                +}
                                +
                                +export type DateTime = any;
                                +export type Upload = any;
                                +export type Status = Success | Error;
                                +export type AuthResult = AuthSuccess | AuthError;
                                +type Nullable<T> = T | null;
                                +
                                +
                                +
                                + + + + + + + + + +
                                +
                                +

                                results matching ""

                                +
                                  +
                                  +
                                  +

                                  No results matching ""

                                  +
                                  +
                                  +
                                  + +
                                  +
                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/classes/CreateUserInput.html b/backend/documentation/classes/CreateUserInput.html new file mode 100644 index 0000000..11b8d1b --- /dev/null +++ b/backend/documentation/classes/CreateUserInput.html @@ -0,0 +1,691 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                                  +
                                  + + +
                                  +
                                  + + + + + + + + + + + + + + + + + + + + +
                                  +
                                  +

                                  +

                                  File

                                  +

                                  +

                                  + src/graphql/graphql.ts +

                                  + + + + + + +
                                  +

                                  Index

                                  + + + + + + + + + + + + + + + +
                                  +
                                  Properties
                                  +
                                  + +
                                  +
                                  + + +
                                  + +

                                  + Properties +

                                  + + + + + + + + + + + + + + +
                                  + + + email + + +
                                  + Type : string + +
                                  + +
                                  + + + + + + + + + + + + + + +
                                  + + + password + + +
                                  + Type : string + +
                                  + +
                                  + + + + + + + + + + + + + + +
                                  + + + username + + +
                                  + Type : string + +
                                  + +
                                  +
                                  + + + + + + + +
                                  + + +
                                  +
                                  export enum Role {
                                  +    Admin = "Admin",
                                  +    Member = "Member",
                                  +    Viewer = "Viewer"
                                  +}
                                  +
                                  +export class CreateBoardInput {
                                  +    title: string;
                                  +    description?: Nullable<string>;
                                  +    color: string;
                                  +    workspace_id: string;
                                  +}
                                  +
                                  +export class UpdateBoardInput {
                                  +    board_id: string;
                                  +    title?: Nullable<string>;
                                  +    description?: Nullable<string>;
                                  +    color?: Nullable<string>;
                                  +}
                                  +
                                  +export class CreateListInput {
                                  +    title: string;
                                  +    board_id: string;
                                  +    position: number;
                                  +    color?: Nullable<string>;
                                  +}
                                  +
                                  +export class UpdateListInput {
                                  +    list_id: string;
                                  +    title?: Nullable<string>;
                                  +    position?: Nullable<number>;
                                  +    color?: Nullable<string>;
                                  +}
                                  +
                                  +export class CreateCardInput {
                                  +    title: string;
                                  +    list_id: string;
                                  +    description?: Nullable<string>;
                                  +    position: number;
                                  +    due_date?: Nullable<DateTime>;
                                  +}
                                  +
                                  +export class UpdateCardInput {
                                  +    card_id: string;
                                  +    title?: Nullable<string>;
                                  +    description?: Nullable<string>;
                                  +    position?: Nullable<number>;
                                  +    due_date?: Nullable<DateTime>;
                                  +}
                                  +
                                  +export class CreateLabelInput {
                                  +    name: string;
                                  +    color: string;
                                  +    board_id: string;
                                  +}
                                  +
                                  +export class UpdateLabelInput {
                                  +    label_id: string;
                                  +    name?: Nullable<string>;
                                  +    color?: Nullable<string>;
                                  +}
                                  +
                                  +export class LoginInput {
                                  +    email: string;
                                  +    password: string;
                                  +}
                                  +
                                  +export class RegisterInput {
                                  +    username: string;
                                  +    email: string;
                                  +    password: string;
                                  +}
                                  +
                                  +export class CreateUserInput {
                                  +    username: string;
                                  +    email: string;
                                  +    password: string;
                                  +}
                                  +
                                  +export class UpdateUserInput {
                                  +    user_id: string;
                                  +    username?: Nullable<string>;
                                  +    email?: Nullable<string>;
                                  +    password?: Nullable<string>;
                                  +}
                                  +
                                  +export class CreateWorkspaceInput {
                                  +    name: string;
                                  +    description?: Nullable<string>;
                                  +    color?: Nullable<string>;
                                  +}
                                  +
                                  +export class UpdateWorkspaceInput {
                                  +    name?: Nullable<string>;
                                  +    description?: Nullable<string>;
                                  +    color?: Nullable<string>;
                                  +}
                                  +
                                  +export class AddWorkspaceMemberInput {
                                  +    workspace_id: string;
                                  +    user_email: string;
                                  +    role?: Nullable<Role>;
                                  +}
                                  +
                                  +export class UpdateMemberRoleInput {
                                  +    workspace_id: string;
                                  +    user_id: string;
                                  +    role: Role;
                                  +}
                                  +
                                  +export class Board {
                                  +    board_id: string;
                                  +    title: string;
                                  +    description?: Nullable<string>;
                                  +    color: string;
                                  +    lists: List[];
                                  +    workspace_id: string;
                                  +}
                                  +
                                  +export class List {
                                  +    list_id: string;
                                  +    title: string;
                                  +    position: number;
                                  +    color: string;
                                  +    board_id: string;
                                  +    cards?: Nullable<Nullable<Card>[]>;
                                  +}
                                  +
                                  +export class Card {
                                  +    card_id: string;
                                  +    title: string;
                                  +    description?: Nullable<string>;
                                  +    position: number;
                                  +    list_id: string;
                                  +    labels?: Nullable<Nullable<Label>[]>;
                                  +    due_date?: Nullable<DateTime>;
                                  +    comments?: Nullable<Nullable<Comment>[]>;
                                  +    attachments?: Nullable<Nullable<Attachment>[]>;
                                  +    members?: Nullable<Nullable<CardMember>[]>;
                                  +}
                                  +
                                  +export class Comment {
                                  +    comment_id: string;
                                  +    content: string;
                                  +    created_at: DateTime;
                                  +    card_id: string;
                                  +    user_id: string;
                                  +}
                                  +
                                  +export class Label {
                                  +    label_id: string;
                                  +    name: string;
                                  +    color: string;
                                  +    workspace_id: string;
                                  +}
                                  +
                                  +export class Attachment {
                                  +    attachment_id: string;
                                  +    card_id: string;
                                  +    url: string;
                                  +    filename: string;
                                  +}
                                  +
                                  +export class CardLabel {
                                  +    card_id: string;
                                  +    label_id: string;
                                  +}
                                  +
                                  +export class CardMember {
                                  +    card_id: string;
                                  +    user_id: string;
                                  +}
                                  +
                                  +export abstract class IQuery {
                                  +    abstract boards(workspace_id: string): Nullable<Nullable<Board>[]> | Promise<Nullable<Nullable<Board>[]>>;
                                  +
                                  +    abstract board(board_id: string): Nullable<Board> | Promise<Nullable<Board>>;
                                  +
                                  +    abstract lists(board_id: string): Nullable<Nullable<List>[]> | Promise<Nullable<Nullable<List>[]>>;
                                  +
                                  +    abstract list(list_id: string): Nullable<List> | Promise<Nullable<List>>;
                                  +
                                  +    abstract cards(list_id: string): Nullable<Nullable<Card>[]> | Promise<Nullable<Nullable<Card>[]>>;
                                  +
                                  +    abstract card(card_id: string): Nullable<Card> | Promise<Nullable<Card>>;
                                  +
                                  +    abstract labels(workspace_id: string): Nullable<Nullable<Label>[]> | Promise<Nullable<Nullable<Label>[]>>;
                                  +
                                  +    abstract comments(card_id: string): Nullable<Nullable<Comment>[]> | Promise<Nullable<Nullable<Comment>[]>>;
                                  +
                                  +    abstract users(): Nullable<Nullable<User>[]> | Promise<Nullable<Nullable<User>[]>>;
                                  +
                                  +    abstract user(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                                  +
                                  +    abstract me(): Nullable<User> | Promise<Nullable<User>>;
                                  +
                                  +    abstract workspaces(): Nullable<Nullable<Workspace>[]> | Promise<Nullable<Nullable<Workspace>[]>>;
                                  +
                                  +    abstract workspace(workspace_id: string): Nullable<Workspace> | Promise<Nullable<Workspace>>;
                                  +
                                  +    abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise<WorkspaceMembers[]>;
                                  +}
                                  +
                                  +export class CreateBoardPayload {
                                  +    board?: Nullable<Board>;
                                  +}
                                  +
                                  +export abstract class IMutation {
                                  +    abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise<CreateBoardPayload>;
                                  +
                                  +    abstract updateBoard(input: UpdateBoardInput): Board | Promise<Board>;
                                  +
                                  +    abstract deleteBoard(board_id: string): Status | Promise<Status>;
                                  +
                                  +    abstract createList(input: CreateListInput): List | Promise<List>;
                                  +
                                  +    abstract updateList(input: UpdateListInput): List | Promise<List>;
                                  +
                                  +    abstract deleteList(list_id: string): Status | Promise<Status>;
                                  +
                                  +    abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise<List[]>;
                                  +
                                  +    abstract createCard(input: CreateCardInput): Card | Promise<Card>;
                                  +
                                  +    abstract updateCard(input: UpdateCardInput): Card | Promise<Card>;
                                  +
                                  +    abstract deleteCard(card_id: string): Status | Promise<Status>;
                                  +
                                  +    abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise<Card>;
                                  +
                                  +    abstract createLabel(input: CreateLabelInput): Label | Promise<Label>;
                                  +
                                  +    abstract updateLabel(input: UpdateLabelInput): Label | Promise<Label>;
                                  +
                                  +    abstract deleteLabel(label_id: string): Status | Promise<Status>;
                                  +
                                  +    abstract uploadFile(file: Upload): FileResponse | Promise<FileResponse>;
                                  +
                                  +    abstract createUser(input: CreateUserInput): Nullable<User> | Promise<Nullable<User>>;
                                  +
                                  +    abstract updateUser(input: UpdateUserInput): Nullable<User> | Promise<Nullable<User>>;
                                  +
                                  +    abstract deleteUser(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                                  +
                                  +    abstract login(input: LoginInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                                  +
                                  +    abstract register(input: RegisterInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                                  +
                                  +    abstract logout(): Status | Promise<Status>;
                                  +
                                  +    abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise<Workspace>;
                                  +
                                  +    abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise<Workspace>;
                                  +
                                  +    abstract deleteWorkspace(workspace_id: string): Status | Promise<Status>;
                                  +
                                  +    abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                                  +
                                  +    abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                                  +
                                  +    abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                                  +
                                  +    abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise<Status>;
                                  +
                                  +    abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                                  +}
                                  +
                                  +export class Success {
                                  +    successMessage?: Nullable<string>;
                                  +}
                                  +
                                  +export class Error {
                                  +    errorMessage: string;
                                  +    code?: Nullable<string>;
                                  +}
                                  +
                                  +export class FileResponse {
                                  +    success: boolean;
                                  +    url?: Nullable<string>;
                                  +    message?: Nullable<string>;
                                  +}
                                  +
                                  +export class User {
                                  +    user_id: string;
                                  +    username: string;
                                  +    email: string;
                                  +    picture?: Nullable<string>;
                                  +    created_at: DateTime;
                                  +}
                                  +
                                  +export class AuthSuccess {
                                  +    token: string;
                                  +    user: User;
                                  +}
                                  +
                                  +export class AuthError {
                                  +    message: string;
                                  +    code?: Nullable<string>;
                                  +    field?: Nullable<string>;
                                  +}
                                  +
                                  +export class Workspace {
                                  +    workspace_id: string;
                                  +    name: string;
                                  +    color: string;
                                  +    description?: Nullable<string>;
                                  +    owner_id: string;
                                  +    owner: User;
                                  +    members: WorkspaceMembers[];
                                  +    boards?: Nullable<Nullable<Board>[]>;
                                  +    labels?: Nullable<Nullable<Label>[]>;
                                  +    is_pinned: boolean;
                                  +}
                                  +
                                  +export class WorkspaceMembers {
                                  +    workspace_id: string;
                                  +    user_id: string;
                                  +    role: string;
                                  +    user: User;
                                  +    workspace: Workspace;
                                  +}
                                  +
                                  +export class PinWorkspacePayload {
                                  +    workspace: Workspace;
                                  +}
                                  +
                                  +export type DateTime = any;
                                  +export type Upload = any;
                                  +export type Status = Success | Error;
                                  +export type AuthResult = AuthSuccess | AuthError;
                                  +type Nullable<T> = T | null;
                                  +
                                  +
                                  +
                                  + + + + + + + + + +
                                  +
                                  +

                                  results matching ""

                                  +
                                    +
                                    +
                                    +

                                    No results matching ""

                                    +
                                    +
                                    +
                                    + +
                                    +
                                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/classes/CreateWorkspaceInput.html b/backend/documentation/classes/CreateWorkspaceInput.html new file mode 100644 index 0000000..06b3ba6 --- /dev/null +++ b/backend/documentation/classes/CreateWorkspaceInput.html @@ -0,0 +1,695 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                                    +
                                    + + +
                                    +
                                    + + + + + + + + + + + + + + + + + + + + +
                                    +
                                    +

                                    +

                                    File

                                    +

                                    +

                                    + src/graphql/graphql.ts +

                                    + + + + + + +
                                    +

                                    Index

                                    + + + + + + + + + + + + + + + +
                                    +
                                    Properties
                                    +
                                    + +
                                    +
                                    + + +
                                    + +

                                    + Properties +

                                    + + + + + + + + + + + + + + +
                                    + + + Optional + color + + +
                                    + Type : Nullable<string> + +
                                    + +
                                    + + + + + + + + + + + + + + +
                                    + + + Optional + description + + +
                                    + Type : Nullable<string> + +
                                    + +
                                    + + + + + + + + + + + + + + +
                                    + + + name + + +
                                    + Type : string + +
                                    + +
                                    +
                                    + + + + + + + +
                                    + + +
                                    +
                                    export enum Role {
                                    +    Admin = "Admin",
                                    +    Member = "Member",
                                    +    Viewer = "Viewer"
                                    +}
                                    +
                                    +export class CreateBoardInput {
                                    +    title: string;
                                    +    description?: Nullable<string>;
                                    +    color: string;
                                    +    workspace_id: string;
                                    +}
                                    +
                                    +export class UpdateBoardInput {
                                    +    board_id: string;
                                    +    title?: Nullable<string>;
                                    +    description?: Nullable<string>;
                                    +    color?: Nullable<string>;
                                    +}
                                    +
                                    +export class CreateListInput {
                                    +    title: string;
                                    +    board_id: string;
                                    +    position: number;
                                    +    color?: Nullable<string>;
                                    +}
                                    +
                                    +export class UpdateListInput {
                                    +    list_id: string;
                                    +    title?: Nullable<string>;
                                    +    position?: Nullable<number>;
                                    +    color?: Nullable<string>;
                                    +}
                                    +
                                    +export class CreateCardInput {
                                    +    title: string;
                                    +    list_id: string;
                                    +    description?: Nullable<string>;
                                    +    position: number;
                                    +    due_date?: Nullable<DateTime>;
                                    +}
                                    +
                                    +export class UpdateCardInput {
                                    +    card_id: string;
                                    +    title?: Nullable<string>;
                                    +    description?: Nullable<string>;
                                    +    position?: Nullable<number>;
                                    +    due_date?: Nullable<DateTime>;
                                    +}
                                    +
                                    +export class CreateLabelInput {
                                    +    name: string;
                                    +    color: string;
                                    +    board_id: string;
                                    +}
                                    +
                                    +export class UpdateLabelInput {
                                    +    label_id: string;
                                    +    name?: Nullable<string>;
                                    +    color?: Nullable<string>;
                                    +}
                                    +
                                    +export class LoginInput {
                                    +    email: string;
                                    +    password: string;
                                    +}
                                    +
                                    +export class RegisterInput {
                                    +    username: string;
                                    +    email: string;
                                    +    password: string;
                                    +}
                                    +
                                    +export class CreateUserInput {
                                    +    username: string;
                                    +    email: string;
                                    +    password: string;
                                    +}
                                    +
                                    +export class UpdateUserInput {
                                    +    user_id: string;
                                    +    username?: Nullable<string>;
                                    +    email?: Nullable<string>;
                                    +    password?: Nullable<string>;
                                    +}
                                    +
                                    +export class CreateWorkspaceInput {
                                    +    name: string;
                                    +    description?: Nullable<string>;
                                    +    color?: Nullable<string>;
                                    +}
                                    +
                                    +export class UpdateWorkspaceInput {
                                    +    name?: Nullable<string>;
                                    +    description?: Nullable<string>;
                                    +    color?: Nullable<string>;
                                    +}
                                    +
                                    +export class AddWorkspaceMemberInput {
                                    +    workspace_id: string;
                                    +    user_email: string;
                                    +    role?: Nullable<Role>;
                                    +}
                                    +
                                    +export class UpdateMemberRoleInput {
                                    +    workspace_id: string;
                                    +    user_id: string;
                                    +    role: Role;
                                    +}
                                    +
                                    +export class Board {
                                    +    board_id: string;
                                    +    title: string;
                                    +    description?: Nullable<string>;
                                    +    color: string;
                                    +    lists: List[];
                                    +    workspace_id: string;
                                    +}
                                    +
                                    +export class List {
                                    +    list_id: string;
                                    +    title: string;
                                    +    position: number;
                                    +    color: string;
                                    +    board_id: string;
                                    +    cards?: Nullable<Nullable<Card>[]>;
                                    +}
                                    +
                                    +export class Card {
                                    +    card_id: string;
                                    +    title: string;
                                    +    description?: Nullable<string>;
                                    +    position: number;
                                    +    list_id: string;
                                    +    labels?: Nullable<Nullable<Label>[]>;
                                    +    due_date?: Nullable<DateTime>;
                                    +    comments?: Nullable<Nullable<Comment>[]>;
                                    +    attachments?: Nullable<Nullable<Attachment>[]>;
                                    +    members?: Nullable<Nullable<CardMember>[]>;
                                    +}
                                    +
                                    +export class Comment {
                                    +    comment_id: string;
                                    +    content: string;
                                    +    created_at: DateTime;
                                    +    card_id: string;
                                    +    user_id: string;
                                    +}
                                    +
                                    +export class Label {
                                    +    label_id: string;
                                    +    name: string;
                                    +    color: string;
                                    +    workspace_id: string;
                                    +}
                                    +
                                    +export class Attachment {
                                    +    attachment_id: string;
                                    +    card_id: string;
                                    +    url: string;
                                    +    filename: string;
                                    +}
                                    +
                                    +export class CardLabel {
                                    +    card_id: string;
                                    +    label_id: string;
                                    +}
                                    +
                                    +export class CardMember {
                                    +    card_id: string;
                                    +    user_id: string;
                                    +}
                                    +
                                    +export abstract class IQuery {
                                    +    abstract boards(workspace_id: string): Nullable<Nullable<Board>[]> | Promise<Nullable<Nullable<Board>[]>>;
                                    +
                                    +    abstract board(board_id: string): Nullable<Board> | Promise<Nullable<Board>>;
                                    +
                                    +    abstract lists(board_id: string): Nullable<Nullable<List>[]> | Promise<Nullable<Nullable<List>[]>>;
                                    +
                                    +    abstract list(list_id: string): Nullable<List> | Promise<Nullable<List>>;
                                    +
                                    +    abstract cards(list_id: string): Nullable<Nullable<Card>[]> | Promise<Nullable<Nullable<Card>[]>>;
                                    +
                                    +    abstract card(card_id: string): Nullable<Card> | Promise<Nullable<Card>>;
                                    +
                                    +    abstract labels(workspace_id: string): Nullable<Nullable<Label>[]> | Promise<Nullable<Nullable<Label>[]>>;
                                    +
                                    +    abstract comments(card_id: string): Nullable<Nullable<Comment>[]> | Promise<Nullable<Nullable<Comment>[]>>;
                                    +
                                    +    abstract users(): Nullable<Nullable<User>[]> | Promise<Nullable<Nullable<User>[]>>;
                                    +
                                    +    abstract user(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                                    +
                                    +    abstract me(): Nullable<User> | Promise<Nullable<User>>;
                                    +
                                    +    abstract workspaces(): Nullable<Nullable<Workspace>[]> | Promise<Nullable<Nullable<Workspace>[]>>;
                                    +
                                    +    abstract workspace(workspace_id: string): Nullable<Workspace> | Promise<Nullable<Workspace>>;
                                    +
                                    +    abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise<WorkspaceMembers[]>;
                                    +}
                                    +
                                    +export class CreateBoardPayload {
                                    +    board?: Nullable<Board>;
                                    +}
                                    +
                                    +export abstract class IMutation {
                                    +    abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise<CreateBoardPayload>;
                                    +
                                    +    abstract updateBoard(input: UpdateBoardInput): Board | Promise<Board>;
                                    +
                                    +    abstract deleteBoard(board_id: string): Status | Promise<Status>;
                                    +
                                    +    abstract createList(input: CreateListInput): List | Promise<List>;
                                    +
                                    +    abstract updateList(input: UpdateListInput): List | Promise<List>;
                                    +
                                    +    abstract deleteList(list_id: string): Status | Promise<Status>;
                                    +
                                    +    abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise<List[]>;
                                    +
                                    +    abstract createCard(input: CreateCardInput): Card | Promise<Card>;
                                    +
                                    +    abstract updateCard(input: UpdateCardInput): Card | Promise<Card>;
                                    +
                                    +    abstract deleteCard(card_id: string): Status | Promise<Status>;
                                    +
                                    +    abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise<Card>;
                                    +
                                    +    abstract createLabel(input: CreateLabelInput): Label | Promise<Label>;
                                    +
                                    +    abstract updateLabel(input: UpdateLabelInput): Label | Promise<Label>;
                                    +
                                    +    abstract deleteLabel(label_id: string): Status | Promise<Status>;
                                    +
                                    +    abstract uploadFile(file: Upload): FileResponse | Promise<FileResponse>;
                                    +
                                    +    abstract createUser(input: CreateUserInput): Nullable<User> | Promise<Nullable<User>>;
                                    +
                                    +    abstract updateUser(input: UpdateUserInput): Nullable<User> | Promise<Nullable<User>>;
                                    +
                                    +    abstract deleteUser(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                                    +
                                    +    abstract login(input: LoginInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                                    +
                                    +    abstract register(input: RegisterInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                                    +
                                    +    abstract logout(): Status | Promise<Status>;
                                    +
                                    +    abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise<Workspace>;
                                    +
                                    +    abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise<Workspace>;
                                    +
                                    +    abstract deleteWorkspace(workspace_id: string): Status | Promise<Status>;
                                    +
                                    +    abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                                    +
                                    +    abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                                    +
                                    +    abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                                    +
                                    +    abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise<Status>;
                                    +
                                    +    abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                                    +}
                                    +
                                    +export class Success {
                                    +    successMessage?: Nullable<string>;
                                    +}
                                    +
                                    +export class Error {
                                    +    errorMessage: string;
                                    +    code?: Nullable<string>;
                                    +}
                                    +
                                    +export class FileResponse {
                                    +    success: boolean;
                                    +    url?: Nullable<string>;
                                    +    message?: Nullable<string>;
                                    +}
                                    +
                                    +export class User {
                                    +    user_id: string;
                                    +    username: string;
                                    +    email: string;
                                    +    picture?: Nullable<string>;
                                    +    created_at: DateTime;
                                    +}
                                    +
                                    +export class AuthSuccess {
                                    +    token: string;
                                    +    user: User;
                                    +}
                                    +
                                    +export class AuthError {
                                    +    message: string;
                                    +    code?: Nullable<string>;
                                    +    field?: Nullable<string>;
                                    +}
                                    +
                                    +export class Workspace {
                                    +    workspace_id: string;
                                    +    name: string;
                                    +    color: string;
                                    +    description?: Nullable<string>;
                                    +    owner_id: string;
                                    +    owner: User;
                                    +    members: WorkspaceMembers[];
                                    +    boards?: Nullable<Nullable<Board>[]>;
                                    +    labels?: Nullable<Nullable<Label>[]>;
                                    +    is_pinned: boolean;
                                    +}
                                    +
                                    +export class WorkspaceMembers {
                                    +    workspace_id: string;
                                    +    user_id: string;
                                    +    role: string;
                                    +    user: User;
                                    +    workspace: Workspace;
                                    +}
                                    +
                                    +export class PinWorkspacePayload {
                                    +    workspace: Workspace;
                                    +}
                                    +
                                    +export type DateTime = any;
                                    +export type Upload = any;
                                    +export type Status = Success | Error;
                                    +export type AuthResult = AuthSuccess | AuthError;
                                    +type Nullable<T> = T | null;
                                    +
                                    +
                                    +
                                    + + + + + + + + + +
                                    +
                                    +

                                    results matching ""

                                    +
                                      +
                                      +
                                      +

                                      No results matching ""

                                      +
                                      +
                                      +
                                      + +
                                      +
                                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/classes/Error.html b/backend/documentation/classes/Error.html new file mode 100644 index 0000000..13c1ffc --- /dev/null +++ b/backend/documentation/classes/Error.html @@ -0,0 +1,664 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                                      +
                                      + + +
                                      +
                                      + + + + + + + + + + + + + + + + + + + + +
                                      +
                                      +

                                      +

                                      File

                                      +

                                      +

                                      + src/graphql/graphql.ts +

                                      + + + + + + +
                                      +

                                      Index

                                      + + + + + + + + + + + + + + + +
                                      +
                                      Properties
                                      +
                                      + +
                                      +
                                      + + +
                                      + +

                                      + Properties +

                                      + + + + + + + + + + + + + + +
                                      + + + Optional + code + + +
                                      + Type : Nullable<string> + +
                                      + +
                                      + + + + + + + + + + + + + + +
                                      + + + errorMessage + + +
                                      + Type : string + +
                                      + +
                                      +
                                      + + + + + + + +
                                      + + +
                                      +
                                      export enum Role {
                                      +    Admin = "Admin",
                                      +    Member = "Member",
                                      +    Viewer = "Viewer"
                                      +}
                                      +
                                      +export class CreateBoardInput {
                                      +    title: string;
                                      +    description?: Nullable<string>;
                                      +    color: string;
                                      +    workspace_id: string;
                                      +}
                                      +
                                      +export class UpdateBoardInput {
                                      +    board_id: string;
                                      +    title?: Nullable<string>;
                                      +    description?: Nullable<string>;
                                      +    color?: Nullable<string>;
                                      +}
                                      +
                                      +export class CreateListInput {
                                      +    title: string;
                                      +    board_id: string;
                                      +    position: number;
                                      +    color?: Nullable<string>;
                                      +}
                                      +
                                      +export class UpdateListInput {
                                      +    list_id: string;
                                      +    title?: Nullable<string>;
                                      +    position?: Nullable<number>;
                                      +    color?: Nullable<string>;
                                      +}
                                      +
                                      +export class CreateCardInput {
                                      +    title: string;
                                      +    list_id: string;
                                      +    description?: Nullable<string>;
                                      +    position: number;
                                      +    due_date?: Nullable<DateTime>;
                                      +}
                                      +
                                      +export class UpdateCardInput {
                                      +    card_id: string;
                                      +    title?: Nullable<string>;
                                      +    description?: Nullable<string>;
                                      +    position?: Nullable<number>;
                                      +    due_date?: Nullable<DateTime>;
                                      +}
                                      +
                                      +export class CreateLabelInput {
                                      +    name: string;
                                      +    color: string;
                                      +    board_id: string;
                                      +}
                                      +
                                      +export class UpdateLabelInput {
                                      +    label_id: string;
                                      +    name?: Nullable<string>;
                                      +    color?: Nullable<string>;
                                      +}
                                      +
                                      +export class LoginInput {
                                      +    email: string;
                                      +    password: string;
                                      +}
                                      +
                                      +export class RegisterInput {
                                      +    username: string;
                                      +    email: string;
                                      +    password: string;
                                      +}
                                      +
                                      +export class CreateUserInput {
                                      +    username: string;
                                      +    email: string;
                                      +    password: string;
                                      +}
                                      +
                                      +export class UpdateUserInput {
                                      +    user_id: string;
                                      +    username?: Nullable<string>;
                                      +    email?: Nullable<string>;
                                      +    password?: Nullable<string>;
                                      +}
                                      +
                                      +export class CreateWorkspaceInput {
                                      +    name: string;
                                      +    description?: Nullable<string>;
                                      +    color?: Nullable<string>;
                                      +}
                                      +
                                      +export class UpdateWorkspaceInput {
                                      +    name?: Nullable<string>;
                                      +    description?: Nullable<string>;
                                      +    color?: Nullable<string>;
                                      +}
                                      +
                                      +export class AddWorkspaceMemberInput {
                                      +    workspace_id: string;
                                      +    user_email: string;
                                      +    role?: Nullable<Role>;
                                      +}
                                      +
                                      +export class UpdateMemberRoleInput {
                                      +    workspace_id: string;
                                      +    user_id: string;
                                      +    role: Role;
                                      +}
                                      +
                                      +export class Board {
                                      +    board_id: string;
                                      +    title: string;
                                      +    description?: Nullable<string>;
                                      +    color: string;
                                      +    lists: List[];
                                      +    workspace_id: string;
                                      +}
                                      +
                                      +export class List {
                                      +    list_id: string;
                                      +    title: string;
                                      +    position: number;
                                      +    color: string;
                                      +    board_id: string;
                                      +    cards?: Nullable<Nullable<Card>[]>;
                                      +}
                                      +
                                      +export class Card {
                                      +    card_id: string;
                                      +    title: string;
                                      +    description?: Nullable<string>;
                                      +    position: number;
                                      +    list_id: string;
                                      +    labels?: Nullable<Nullable<Label>[]>;
                                      +    due_date?: Nullable<DateTime>;
                                      +    comments?: Nullable<Nullable<Comment>[]>;
                                      +    attachments?: Nullable<Nullable<Attachment>[]>;
                                      +    members?: Nullable<Nullable<CardMember>[]>;
                                      +}
                                      +
                                      +export class Comment {
                                      +    comment_id: string;
                                      +    content: string;
                                      +    created_at: DateTime;
                                      +    card_id: string;
                                      +    user_id: string;
                                      +}
                                      +
                                      +export class Label {
                                      +    label_id: string;
                                      +    name: string;
                                      +    color: string;
                                      +    workspace_id: string;
                                      +}
                                      +
                                      +export class Attachment {
                                      +    attachment_id: string;
                                      +    card_id: string;
                                      +    url: string;
                                      +    filename: string;
                                      +}
                                      +
                                      +export class CardLabel {
                                      +    card_id: string;
                                      +    label_id: string;
                                      +}
                                      +
                                      +export class CardMember {
                                      +    card_id: string;
                                      +    user_id: string;
                                      +}
                                      +
                                      +export abstract class IQuery {
                                      +    abstract boards(workspace_id: string): Nullable<Nullable<Board>[]> | Promise<Nullable<Nullable<Board>[]>>;
                                      +
                                      +    abstract board(board_id: string): Nullable<Board> | Promise<Nullable<Board>>;
                                      +
                                      +    abstract lists(board_id: string): Nullable<Nullable<List>[]> | Promise<Nullable<Nullable<List>[]>>;
                                      +
                                      +    abstract list(list_id: string): Nullable<List> | Promise<Nullable<List>>;
                                      +
                                      +    abstract cards(list_id: string): Nullable<Nullable<Card>[]> | Promise<Nullable<Nullable<Card>[]>>;
                                      +
                                      +    abstract card(card_id: string): Nullable<Card> | Promise<Nullable<Card>>;
                                      +
                                      +    abstract labels(workspace_id: string): Nullable<Nullable<Label>[]> | Promise<Nullable<Nullable<Label>[]>>;
                                      +
                                      +    abstract comments(card_id: string): Nullable<Nullable<Comment>[]> | Promise<Nullable<Nullable<Comment>[]>>;
                                      +
                                      +    abstract users(): Nullable<Nullable<User>[]> | Promise<Nullable<Nullable<User>[]>>;
                                      +
                                      +    abstract user(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                                      +
                                      +    abstract me(): Nullable<User> | Promise<Nullable<User>>;
                                      +
                                      +    abstract workspaces(): Nullable<Nullable<Workspace>[]> | Promise<Nullable<Nullable<Workspace>[]>>;
                                      +
                                      +    abstract workspace(workspace_id: string): Nullable<Workspace> | Promise<Nullable<Workspace>>;
                                      +
                                      +    abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise<WorkspaceMembers[]>;
                                      +}
                                      +
                                      +export class CreateBoardPayload {
                                      +    board?: Nullable<Board>;
                                      +}
                                      +
                                      +export abstract class IMutation {
                                      +    abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise<CreateBoardPayload>;
                                      +
                                      +    abstract updateBoard(input: UpdateBoardInput): Board | Promise<Board>;
                                      +
                                      +    abstract deleteBoard(board_id: string): Status | Promise<Status>;
                                      +
                                      +    abstract createList(input: CreateListInput): List | Promise<List>;
                                      +
                                      +    abstract updateList(input: UpdateListInput): List | Promise<List>;
                                      +
                                      +    abstract deleteList(list_id: string): Status | Promise<Status>;
                                      +
                                      +    abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise<List[]>;
                                      +
                                      +    abstract createCard(input: CreateCardInput): Card | Promise<Card>;
                                      +
                                      +    abstract updateCard(input: UpdateCardInput): Card | Promise<Card>;
                                      +
                                      +    abstract deleteCard(card_id: string): Status | Promise<Status>;
                                      +
                                      +    abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise<Card>;
                                      +
                                      +    abstract createLabel(input: CreateLabelInput): Label | Promise<Label>;
                                      +
                                      +    abstract updateLabel(input: UpdateLabelInput): Label | Promise<Label>;
                                      +
                                      +    abstract deleteLabel(label_id: string): Status | Promise<Status>;
                                      +
                                      +    abstract uploadFile(file: Upload): FileResponse | Promise<FileResponse>;
                                      +
                                      +    abstract createUser(input: CreateUserInput): Nullable<User> | Promise<Nullable<User>>;
                                      +
                                      +    abstract updateUser(input: UpdateUserInput): Nullable<User> | Promise<Nullable<User>>;
                                      +
                                      +    abstract deleteUser(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                                      +
                                      +    abstract login(input: LoginInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                                      +
                                      +    abstract register(input: RegisterInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                                      +
                                      +    abstract logout(): Status | Promise<Status>;
                                      +
                                      +    abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise<Workspace>;
                                      +
                                      +    abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise<Workspace>;
                                      +
                                      +    abstract deleteWorkspace(workspace_id: string): Status | Promise<Status>;
                                      +
                                      +    abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                                      +
                                      +    abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                                      +
                                      +    abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                                      +
                                      +    abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise<Status>;
                                      +
                                      +    abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                                      +}
                                      +
                                      +export class Success {
                                      +    successMessage?: Nullable<string>;
                                      +}
                                      +
                                      +export class Error {
                                      +    errorMessage: string;
                                      +    code?: Nullable<string>;
                                      +}
                                      +
                                      +export class FileResponse {
                                      +    success: boolean;
                                      +    url?: Nullable<string>;
                                      +    message?: Nullable<string>;
                                      +}
                                      +
                                      +export class User {
                                      +    user_id: string;
                                      +    username: string;
                                      +    email: string;
                                      +    picture?: Nullable<string>;
                                      +    created_at: DateTime;
                                      +}
                                      +
                                      +export class AuthSuccess {
                                      +    token: string;
                                      +    user: User;
                                      +}
                                      +
                                      +export class AuthError {
                                      +    message: string;
                                      +    code?: Nullable<string>;
                                      +    field?: Nullable<string>;
                                      +}
                                      +
                                      +export class Workspace {
                                      +    workspace_id: string;
                                      +    name: string;
                                      +    color: string;
                                      +    description?: Nullable<string>;
                                      +    owner_id: string;
                                      +    owner: User;
                                      +    members: WorkspaceMembers[];
                                      +    boards?: Nullable<Nullable<Board>[]>;
                                      +    labels?: Nullable<Nullable<Label>[]>;
                                      +    is_pinned: boolean;
                                      +}
                                      +
                                      +export class WorkspaceMembers {
                                      +    workspace_id: string;
                                      +    user_id: string;
                                      +    role: string;
                                      +    user: User;
                                      +    workspace: Workspace;
                                      +}
                                      +
                                      +export class PinWorkspacePayload {
                                      +    workspace: Workspace;
                                      +}
                                      +
                                      +export type DateTime = any;
                                      +export type Upload = any;
                                      +export type Status = Success | Error;
                                      +export type AuthResult = AuthSuccess | AuthError;
                                      +type Nullable<T> = T | null;
                                      +
                                      +
                                      +
                                      + + + + + + + + + +
                                      +
                                      +

                                      results matching ""

                                      +
                                        +
                                        +
                                        +

                                        No results matching ""

                                        +
                                        +
                                        +
                                        + +
                                        +
                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/classes/FileResponse.html b/backend/documentation/classes/FileResponse.html new file mode 100644 index 0000000..293fd81 --- /dev/null +++ b/backend/documentation/classes/FileResponse.html @@ -0,0 +1,695 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                                        +
                                        + + +
                                        +
                                        + + + + + + + + + + + + + + + + + + + + +
                                        +
                                        +

                                        +

                                        File

                                        +

                                        +

                                        + src/graphql/graphql.ts +

                                        + + + + + + +
                                        +

                                        Index

                                        + + + + + + + + + + + + + + + +
                                        +
                                        Properties
                                        +
                                        + +
                                        +
                                        + + +
                                        + +

                                        + Properties +

                                        + + + + + + + + + + + + + + +
                                        + + + Optional + message + + +
                                        + Type : Nullable<string> + +
                                        + +
                                        + + + + + + + + + + + + + + +
                                        + + + success + + +
                                        + Type : boolean + +
                                        + +
                                        + + + + + + + + + + + + + + +
                                        + + + Optional + url + + +
                                        + Type : Nullable<string> + +
                                        + +
                                        +
                                        + + + + + + + +
                                        + + +
                                        +
                                        export enum Role {
                                        +    Admin = "Admin",
                                        +    Member = "Member",
                                        +    Viewer = "Viewer"
                                        +}
                                        +
                                        +export class CreateBoardInput {
                                        +    title: string;
                                        +    description?: Nullable<string>;
                                        +    color: string;
                                        +    workspace_id: string;
                                        +}
                                        +
                                        +export class UpdateBoardInput {
                                        +    board_id: string;
                                        +    title?: Nullable<string>;
                                        +    description?: Nullable<string>;
                                        +    color?: Nullable<string>;
                                        +}
                                        +
                                        +export class CreateListInput {
                                        +    title: string;
                                        +    board_id: string;
                                        +    position: number;
                                        +    color?: Nullable<string>;
                                        +}
                                        +
                                        +export class UpdateListInput {
                                        +    list_id: string;
                                        +    title?: Nullable<string>;
                                        +    position?: Nullable<number>;
                                        +    color?: Nullable<string>;
                                        +}
                                        +
                                        +export class CreateCardInput {
                                        +    title: string;
                                        +    list_id: string;
                                        +    description?: Nullable<string>;
                                        +    position: number;
                                        +    due_date?: Nullable<DateTime>;
                                        +}
                                        +
                                        +export class UpdateCardInput {
                                        +    card_id: string;
                                        +    title?: Nullable<string>;
                                        +    description?: Nullable<string>;
                                        +    position?: Nullable<number>;
                                        +    due_date?: Nullable<DateTime>;
                                        +}
                                        +
                                        +export class CreateLabelInput {
                                        +    name: string;
                                        +    color: string;
                                        +    board_id: string;
                                        +}
                                        +
                                        +export class UpdateLabelInput {
                                        +    label_id: string;
                                        +    name?: Nullable<string>;
                                        +    color?: Nullable<string>;
                                        +}
                                        +
                                        +export class LoginInput {
                                        +    email: string;
                                        +    password: string;
                                        +}
                                        +
                                        +export class RegisterInput {
                                        +    username: string;
                                        +    email: string;
                                        +    password: string;
                                        +}
                                        +
                                        +export class CreateUserInput {
                                        +    username: string;
                                        +    email: string;
                                        +    password: string;
                                        +}
                                        +
                                        +export class UpdateUserInput {
                                        +    user_id: string;
                                        +    username?: Nullable<string>;
                                        +    email?: Nullable<string>;
                                        +    password?: Nullable<string>;
                                        +}
                                        +
                                        +export class CreateWorkspaceInput {
                                        +    name: string;
                                        +    description?: Nullable<string>;
                                        +    color?: Nullable<string>;
                                        +}
                                        +
                                        +export class UpdateWorkspaceInput {
                                        +    name?: Nullable<string>;
                                        +    description?: Nullable<string>;
                                        +    color?: Nullable<string>;
                                        +}
                                        +
                                        +export class AddWorkspaceMemberInput {
                                        +    workspace_id: string;
                                        +    user_email: string;
                                        +    role?: Nullable<Role>;
                                        +}
                                        +
                                        +export class UpdateMemberRoleInput {
                                        +    workspace_id: string;
                                        +    user_id: string;
                                        +    role: Role;
                                        +}
                                        +
                                        +export class Board {
                                        +    board_id: string;
                                        +    title: string;
                                        +    description?: Nullable<string>;
                                        +    color: string;
                                        +    lists: List[];
                                        +    workspace_id: string;
                                        +}
                                        +
                                        +export class List {
                                        +    list_id: string;
                                        +    title: string;
                                        +    position: number;
                                        +    color: string;
                                        +    board_id: string;
                                        +    cards?: Nullable<Nullable<Card>[]>;
                                        +}
                                        +
                                        +export class Card {
                                        +    card_id: string;
                                        +    title: string;
                                        +    description?: Nullable<string>;
                                        +    position: number;
                                        +    list_id: string;
                                        +    labels?: Nullable<Nullable<Label>[]>;
                                        +    due_date?: Nullable<DateTime>;
                                        +    comments?: Nullable<Nullable<Comment>[]>;
                                        +    attachments?: Nullable<Nullable<Attachment>[]>;
                                        +    members?: Nullable<Nullable<CardMember>[]>;
                                        +}
                                        +
                                        +export class Comment {
                                        +    comment_id: string;
                                        +    content: string;
                                        +    created_at: DateTime;
                                        +    card_id: string;
                                        +    user_id: string;
                                        +}
                                        +
                                        +export class Label {
                                        +    label_id: string;
                                        +    name: string;
                                        +    color: string;
                                        +    workspace_id: string;
                                        +}
                                        +
                                        +export class Attachment {
                                        +    attachment_id: string;
                                        +    card_id: string;
                                        +    url: string;
                                        +    filename: string;
                                        +}
                                        +
                                        +export class CardLabel {
                                        +    card_id: string;
                                        +    label_id: string;
                                        +}
                                        +
                                        +export class CardMember {
                                        +    card_id: string;
                                        +    user_id: string;
                                        +}
                                        +
                                        +export abstract class IQuery {
                                        +    abstract boards(workspace_id: string): Nullable<Nullable<Board>[]> | Promise<Nullable<Nullable<Board>[]>>;
                                        +
                                        +    abstract board(board_id: string): Nullable<Board> | Promise<Nullable<Board>>;
                                        +
                                        +    abstract lists(board_id: string): Nullable<Nullable<List>[]> | Promise<Nullable<Nullable<List>[]>>;
                                        +
                                        +    abstract list(list_id: string): Nullable<List> | Promise<Nullable<List>>;
                                        +
                                        +    abstract cards(list_id: string): Nullable<Nullable<Card>[]> | Promise<Nullable<Nullable<Card>[]>>;
                                        +
                                        +    abstract card(card_id: string): Nullable<Card> | Promise<Nullable<Card>>;
                                        +
                                        +    abstract labels(workspace_id: string): Nullable<Nullable<Label>[]> | Promise<Nullable<Nullable<Label>[]>>;
                                        +
                                        +    abstract comments(card_id: string): Nullable<Nullable<Comment>[]> | Promise<Nullable<Nullable<Comment>[]>>;
                                        +
                                        +    abstract users(): Nullable<Nullable<User>[]> | Promise<Nullable<Nullable<User>[]>>;
                                        +
                                        +    abstract user(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                                        +
                                        +    abstract me(): Nullable<User> | Promise<Nullable<User>>;
                                        +
                                        +    abstract workspaces(): Nullable<Nullable<Workspace>[]> | Promise<Nullable<Nullable<Workspace>[]>>;
                                        +
                                        +    abstract workspace(workspace_id: string): Nullable<Workspace> | Promise<Nullable<Workspace>>;
                                        +
                                        +    abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise<WorkspaceMembers[]>;
                                        +}
                                        +
                                        +export class CreateBoardPayload {
                                        +    board?: Nullable<Board>;
                                        +}
                                        +
                                        +export abstract class IMutation {
                                        +    abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise<CreateBoardPayload>;
                                        +
                                        +    abstract updateBoard(input: UpdateBoardInput): Board | Promise<Board>;
                                        +
                                        +    abstract deleteBoard(board_id: string): Status | Promise<Status>;
                                        +
                                        +    abstract createList(input: CreateListInput): List | Promise<List>;
                                        +
                                        +    abstract updateList(input: UpdateListInput): List | Promise<List>;
                                        +
                                        +    abstract deleteList(list_id: string): Status | Promise<Status>;
                                        +
                                        +    abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise<List[]>;
                                        +
                                        +    abstract createCard(input: CreateCardInput): Card | Promise<Card>;
                                        +
                                        +    abstract updateCard(input: UpdateCardInput): Card | Promise<Card>;
                                        +
                                        +    abstract deleteCard(card_id: string): Status | Promise<Status>;
                                        +
                                        +    abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise<Card>;
                                        +
                                        +    abstract createLabel(input: CreateLabelInput): Label | Promise<Label>;
                                        +
                                        +    abstract updateLabel(input: UpdateLabelInput): Label | Promise<Label>;
                                        +
                                        +    abstract deleteLabel(label_id: string): Status | Promise<Status>;
                                        +
                                        +    abstract uploadFile(file: Upload): FileResponse | Promise<FileResponse>;
                                        +
                                        +    abstract createUser(input: CreateUserInput): Nullable<User> | Promise<Nullable<User>>;
                                        +
                                        +    abstract updateUser(input: UpdateUserInput): Nullable<User> | Promise<Nullable<User>>;
                                        +
                                        +    abstract deleteUser(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                                        +
                                        +    abstract login(input: LoginInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                                        +
                                        +    abstract register(input: RegisterInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                                        +
                                        +    abstract logout(): Status | Promise<Status>;
                                        +
                                        +    abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise<Workspace>;
                                        +
                                        +    abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise<Workspace>;
                                        +
                                        +    abstract deleteWorkspace(workspace_id: string): Status | Promise<Status>;
                                        +
                                        +    abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                                        +
                                        +    abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                                        +
                                        +    abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                                        +
                                        +    abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise<Status>;
                                        +
                                        +    abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                                        +}
                                        +
                                        +export class Success {
                                        +    successMessage?: Nullable<string>;
                                        +}
                                        +
                                        +export class Error {
                                        +    errorMessage: string;
                                        +    code?: Nullable<string>;
                                        +}
                                        +
                                        +export class FileResponse {
                                        +    success: boolean;
                                        +    url?: Nullable<string>;
                                        +    message?: Nullable<string>;
                                        +}
                                        +
                                        +export class User {
                                        +    user_id: string;
                                        +    username: string;
                                        +    email: string;
                                        +    picture?: Nullable<string>;
                                        +    created_at: DateTime;
                                        +}
                                        +
                                        +export class AuthSuccess {
                                        +    token: string;
                                        +    user: User;
                                        +}
                                        +
                                        +export class AuthError {
                                        +    message: string;
                                        +    code?: Nullable<string>;
                                        +    field?: Nullable<string>;
                                        +}
                                        +
                                        +export class Workspace {
                                        +    workspace_id: string;
                                        +    name: string;
                                        +    color: string;
                                        +    description?: Nullable<string>;
                                        +    owner_id: string;
                                        +    owner: User;
                                        +    members: WorkspaceMembers[];
                                        +    boards?: Nullable<Nullable<Board>[]>;
                                        +    labels?: Nullable<Nullable<Label>[]>;
                                        +    is_pinned: boolean;
                                        +}
                                        +
                                        +export class WorkspaceMembers {
                                        +    workspace_id: string;
                                        +    user_id: string;
                                        +    role: string;
                                        +    user: User;
                                        +    workspace: Workspace;
                                        +}
                                        +
                                        +export class PinWorkspacePayload {
                                        +    workspace: Workspace;
                                        +}
                                        +
                                        +export type DateTime = any;
                                        +export type Upload = any;
                                        +export type Status = Success | Error;
                                        +export type AuthResult = AuthSuccess | AuthError;
                                        +type Nullable<T> = T | null;
                                        +
                                        +
                                        +
                                        + + + + + + + + + +
                                        +
                                        +

                                        results matching ""

                                        +
                                          +
                                          +
                                          +

                                          No results matching ""

                                          +
                                          +
                                          +
                                          + +
                                          +
                                          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/classes/IMutation.html b/backend/documentation/classes/IMutation.html new file mode 100644 index 0000000..2f0c0ba --- /dev/null +++ b/backend/documentation/classes/IMutation.html @@ -0,0 +1,2750 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                                          +
                                          + + +
                                          +
                                          + + + + + + + + + + + + + + + + + + + + +
                                          +
                                          +

                                          +

                                          File

                                          +

                                          +

                                          + src/graphql/graphql.ts +

                                          + + + + + + +
                                          +

                                          Index

                                          + + + + + + + + + + + + + + + +
                                          +
                                          Methods
                                          +
                                          + +
                                          +
                                          + + + +
                                          + +

                                          + Methods +

                                          + + + + + + + + + + + + + + + + + + + +
                                          + + + Abstract + addWorkspaceMember + + +
                                          + + addWorkspaceMember(input: AddWorkspaceMemberInput) +
                                          + +
                                          + +
                                          + Parameters : + + + + + + + + + + + + + + + + + + + +
                                          NameTypeOptional
                                          input + AddWorkspaceMemberInput + + No +
                                          +
                                          +
                                          + Returns : WorkspaceMembers | Promise + +
                                          +
                                          + +
                                          +
                                          + + + + + + + + + + + + + + + + + + + +
                                          + + + Abstract + createBoard + + +
                                          + + createBoard(input: CreateBoardInput) +
                                          + +
                                          + +
                                          + Parameters : + + + + + + + + + + + + + + + + + + + +
                                          NameTypeOptional
                                          input + CreateBoardInput + + No +
                                          +
                                          +
                                          + Returns : CreateBoardPayload | Promise + +
                                          +
                                          + +
                                          +
                                          + + + + + + + + + + + + + + + + + + + +
                                          + + + Abstract + createCard + + +
                                          + + createCard(input: CreateCardInput) +
                                          + +
                                          + +
                                          + Parameters : + + + + + + + + + + + + + + + + + + + +
                                          NameTypeOptional
                                          input + CreateCardInput + + No +
                                          +
                                          +
                                          + Returns : Card | Promise + +
                                          +
                                          + +
                                          +
                                          + + + + + + + + + + + + + + + + + + + +
                                          + + + Abstract + createLabel + + +
                                          + + createLabel(input: CreateLabelInput) +
                                          + +
                                          + +
                                          + Parameters : + + + + + + + + + + + + + + + + + + + +
                                          NameTypeOptional
                                          input + CreateLabelInput + + No +
                                          +
                                          +
                                          + Returns : Label | Promise + +
                                          +
                                          + +
                                          +
                                          + + + + + + + + + + + + + + + + + + + +
                                          + + + Abstract + createList + + +
                                          + + createList(input: CreateListInput) +
                                          + +
                                          + +
                                          + Parameters : + + + + + + + + + + + + + + + + + + + +
                                          NameTypeOptional
                                          input + CreateListInput + + No +
                                          +
                                          +
                                          + Returns : List | Promise + +
                                          +
                                          + +
                                          +
                                          + + + + + + + + + + + + + + + + + + + +
                                          + + + Abstract + createUser + + +
                                          + + createUser(input: CreateUserInput) +
                                          + +
                                          + +
                                          + Parameters : + + + + + + + + + + + + + + + + + + + +
                                          NameTypeOptional
                                          input + CreateUserInput + + No +
                                          +
                                          +
                                          + Returns : Nullable | Promise + +
                                          +
                                          + +
                                          +
                                          + + + + + + + + + + + + + + + + + + + +
                                          + + + Abstract + createWorkspace + + +
                                          + + createWorkspace(input: CreateWorkspaceInput) +
                                          + +
                                          + +
                                          + Parameters : + + + + + + + + + + + + + + + + + + + +
                                          NameTypeOptional
                                          input + CreateWorkspaceInput + + No +
                                          +
                                          +
                                          + Returns : Workspace | Promise + +
                                          +
                                          + +
                                          +
                                          + + + + + + + + + + + + + + + + + + + +
                                          + + + Abstract + deleteBoard + + +
                                          + + deleteBoard(board_id: string) +
                                          + +
                                          + +
                                          + Parameters : + + + + + + + + + + + + + + + + + + + +
                                          NameTypeOptional
                                          board_id + string + + No +
                                          +
                                          +
                                          + Returns : Status | Promise + +
                                          +
                                          + +
                                          +
                                          + + + + + + + + + + + + + + + + + + + +
                                          + + + Abstract + deleteCard + + +
                                          + + deleteCard(card_id: string) +
                                          + +
                                          + +
                                          + Parameters : + + + + + + + + + + + + + + + + + + + +
                                          NameTypeOptional
                                          card_id + string + + No +
                                          +
                                          +
                                          + Returns : Status | Promise + +
                                          +
                                          + +
                                          +
                                          + + + + + + + + + + + + + + + + + + + +
                                          + + + Abstract + deleteLabel + + +
                                          + + deleteLabel(label_id: string) +
                                          + +
                                          + +
                                          + Parameters : + + + + + + + + + + + + + + + + + + + +
                                          NameTypeOptional
                                          label_id + string + + No +
                                          +
                                          +
                                          + Returns : Status | Promise + +
                                          +
                                          + +
                                          +
                                          + + + + + + + + + + + + + + + + + + + +
                                          + + + Abstract + deleteList + + +
                                          + + deleteList(list_id: string) +
                                          + +
                                          + +
                                          + Parameters : + + + + + + + + + + + + + + + + + + + +
                                          NameTypeOptional
                                          list_id + string + + No +
                                          +
                                          +
                                          + Returns : Status | Promise + +
                                          +
                                          + +
                                          +
                                          + + + + + + + + + + + + + + + + + + + +
                                          + + + Abstract + deleteUser + + +
                                          + + deleteUser(user_id: string) +
                                          + +
                                          + +
                                          + Parameters : + + + + + + + + + + + + + + + + + + + +
                                          NameTypeOptional
                                          user_id + string + + No +
                                          +
                                          +
                                          + Returns : Nullable | Promise + +
                                          +
                                          + +
                                          +
                                          + + + + + + + + + + + + + + + + + + + +
                                          + + + Abstract + deleteWorkspace + + +
                                          + + deleteWorkspace(workspace_id: string) +
                                          + +
                                          + +
                                          + Parameters : + + + + + + + + + + + + + + + + + + + +
                                          NameTypeOptional
                                          workspace_id + string + + No +
                                          +
                                          +
                                          + Returns : Status | Promise + +
                                          +
                                          + +
                                          +
                                          + + + + + + + + + + + + + + + + + + + +
                                          + + + Abstract + login + + +
                                          + + login(input: LoginInput) +
                                          + +
                                          + +
                                          + Parameters : + + + + + + + + + + + + + + + + + + + +
                                          NameTypeOptional
                                          input + LoginInput + + No +
                                          +
                                          +
                                          + Returns : Nullable | Promise + +
                                          +
                                          + +
                                          +
                                          + + + + + + + + + + + + + + + + + + + +
                                          + + + Abstract + logout + + +
                                          + + logout() +
                                          + +
                                          + +
                                          + Returns : Status | Promise + +
                                          +
                                          + + + + + + + + + + + + + + + + + + + +
                                          + + + Abstract + moveCard + + +
                                          + + moveCard(card_id: string, list_id: string, position: number) +
                                          + +
                                          + +
                                          + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                          NameTypeOptional
                                          card_id + string + + No +
                                          list_id + string + + No +
                                          position + number + + No +
                                          +
                                          +
                                          + Returns : Card | Promise + +
                                          +
                                          + +
                                          +
                                          + + + + + + + + + + + + + + + + + + + +
                                          + + + Abstract + pinWorkspace + + +
                                          + + pinWorkspace(workspace_id: string) +
                                          + +
                                          + +
                                          + Parameters : + + + + + + + + + + + + + + + + + + + +
                                          NameTypeOptional
                                          workspace_id + string + + No +
                                          +
                                          +
                                          + Returns : PinWorkspacePayload | Promise + +
                                          +
                                          + +
                                          +
                                          + + + + + + + + + + + + + + + + + + + +
                                          + + + Abstract + register + + +
                                          + + register(input: RegisterInput) +
                                          + +
                                          + +
                                          + Parameters : + + + + + + + + + + + + + + + + + + + +
                                          NameTypeOptional
                                          input + RegisterInput + + No +
                                          +
                                          +
                                          + Returns : Nullable | Promise + +
                                          +
                                          + +
                                          +
                                          + + + + + + + + + + + + + + + + + + + +
                                          + + + Abstract + removeWorkspaceMember + + +
                                          + + removeWorkspaceMember(workspace_id: string, user_id: string) +
                                          + +
                                          + +
                                          + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                          NameTypeOptional
                                          workspace_id + string + + No +
                                          user_id + string + + No +
                                          +
                                          +
                                          + Returns : Status | Promise + +
                                          +
                                          + +
                                          +
                                          + + + + + + + + + + + + + + + + + + + +
                                          + + + Abstract + reorderLists + + +
                                          + + reorderLists(board_id: string, list_ids: string[]) +
                                          + +
                                          + +
                                          + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                          NameTypeOptional
                                          board_id + string + + No +
                                          list_ids + string[] + + No +
                                          +
                                          +
                                          + Returns : [] | Promise + +
                                          +
                                          + +
                                          +
                                          + + + + + + + + + + + + + + + + + + + +
                                          + + + Abstract + unpinWorkspace + + +
                                          + + unpinWorkspace(workspace_id: string) +
                                          + +
                                          + +
                                          + Parameters : + + + + + + + + + + + + + + + + + + + +
                                          NameTypeOptional
                                          workspace_id + string + + No +
                                          +
                                          +
                                          + Returns : PinWorkspacePayload | Promise + +
                                          +
                                          + +
                                          +
                                          + + + + + + + + + + + + + + + + + + + +
                                          + + + Abstract + updateBoard + + +
                                          + + updateBoard(input: UpdateBoardInput) +
                                          + +
                                          + +
                                          + Parameters : + + + + + + + + + + + + + + + + + + + +
                                          NameTypeOptional
                                          input + UpdateBoardInput + + No +
                                          +
                                          +
                                          + Returns : Board | Promise + +
                                          +
                                          + +
                                          +
                                          + + + + + + + + + + + + + + + + + + + +
                                          + + + Abstract + updateCard + + +
                                          + + updateCard(input: UpdateCardInput) +
                                          + +
                                          + +
                                          + Parameters : + + + + + + + + + + + + + + + + + + + +
                                          NameTypeOptional
                                          input + UpdateCardInput + + No +
                                          +
                                          +
                                          + Returns : Card | Promise + +
                                          +
                                          + +
                                          +
                                          + + + + + + + + + + + + + + + + + + + +
                                          + + + Abstract + updateLabel + + +
                                          + + updateLabel(input: UpdateLabelInput) +
                                          + +
                                          + +
                                          + Parameters : + + + + + + + + + + + + + + + + + + + +
                                          NameTypeOptional
                                          input + UpdateLabelInput + + No +
                                          +
                                          +
                                          + Returns : Label | Promise + +
                                          +
                                          + +
                                          +
                                          + + + + + + + + + + + + + + + + + + + +
                                          + + + Abstract + updateList + + +
                                          + + updateList(input: UpdateListInput) +
                                          + +
                                          + +
                                          + Parameters : + + + + + + + + + + + + + + + + + + + +
                                          NameTypeOptional
                                          input + UpdateListInput + + No +
                                          +
                                          +
                                          + Returns : List | Promise + +
                                          +
                                          + +
                                          +
                                          + + + + + + + + + + + + + + + + + + + +
                                          + + + Abstract + updateMemberRole + + +
                                          + + updateMemberRole(input: UpdateMemberRoleInput) +
                                          + +
                                          + +
                                          + Parameters : + + + + + + + + + + + + + + + + + + + +
                                          NameTypeOptional
                                          input + UpdateMemberRoleInput + + No +
                                          +
                                          +
                                          + Returns : WorkspaceMembers | Promise + +
                                          +
                                          + +
                                          +
                                          + + + + + + + + + + + + + + + + + + + +
                                          + + + Abstract + updateUser + + +
                                          + + updateUser(input: UpdateUserInput) +
                                          + +
                                          + +
                                          + Parameters : + + + + + + + + + + + + + + + + + + + +
                                          NameTypeOptional
                                          input + UpdateUserInput + + No +
                                          +
                                          +
                                          + Returns : Nullable | Promise + +
                                          +
                                          + +
                                          +
                                          + + + + + + + + + + + + + + + + + + + +
                                          + + + Abstract + updateWorkspace + + +
                                          + + updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput) +
                                          + +
                                          + +
                                          + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                          NameTypeOptional
                                          workspace_id + string + + No +
                                          input + UpdateWorkspaceInput + + No +
                                          +
                                          +
                                          + Returns : Workspace | Promise + +
                                          +
                                          + +
                                          +
                                          + + + + + + + + + + + + + + + + + + + +
                                          + + + Abstract + uploadFile + + +
                                          + + uploadFile(file: Upload) +
                                          + +
                                          + +
                                          + Parameters : + + + + + + + + + + + + + + + + + + + +
                                          NameTypeOptional
                                          file + Upload + + No +
                                          +
                                          +
                                          + Returns : FileResponse | Promise + +
                                          +
                                          + +
                                          +
                                          +
                                          + + + + + +
                                          + + +
                                          +
                                          export enum Role {
                                          +    Admin = "Admin",
                                          +    Member = "Member",
                                          +    Viewer = "Viewer"
                                          +}
                                          +
                                          +export class CreateBoardInput {
                                          +    title: string;
                                          +    description?: Nullable<string>;
                                          +    color: string;
                                          +    workspace_id: string;
                                          +}
                                          +
                                          +export class UpdateBoardInput {
                                          +    board_id: string;
                                          +    title?: Nullable<string>;
                                          +    description?: Nullable<string>;
                                          +    color?: Nullable<string>;
                                          +}
                                          +
                                          +export class CreateListInput {
                                          +    title: string;
                                          +    board_id: string;
                                          +    position: number;
                                          +    color?: Nullable<string>;
                                          +}
                                          +
                                          +export class UpdateListInput {
                                          +    list_id: string;
                                          +    title?: Nullable<string>;
                                          +    position?: Nullable<number>;
                                          +    color?: Nullable<string>;
                                          +}
                                          +
                                          +export class CreateCardInput {
                                          +    title: string;
                                          +    list_id: string;
                                          +    description?: Nullable<string>;
                                          +    position: number;
                                          +    due_date?: Nullable<DateTime>;
                                          +}
                                          +
                                          +export class UpdateCardInput {
                                          +    card_id: string;
                                          +    title?: Nullable<string>;
                                          +    description?: Nullable<string>;
                                          +    position?: Nullable<number>;
                                          +    due_date?: Nullable<DateTime>;
                                          +}
                                          +
                                          +export class CreateLabelInput {
                                          +    name: string;
                                          +    color: string;
                                          +    board_id: string;
                                          +}
                                          +
                                          +export class UpdateLabelInput {
                                          +    label_id: string;
                                          +    name?: Nullable<string>;
                                          +    color?: Nullable<string>;
                                          +}
                                          +
                                          +export class LoginInput {
                                          +    email: string;
                                          +    password: string;
                                          +}
                                          +
                                          +export class RegisterInput {
                                          +    username: string;
                                          +    email: string;
                                          +    password: string;
                                          +}
                                          +
                                          +export class CreateUserInput {
                                          +    username: string;
                                          +    email: string;
                                          +    password: string;
                                          +}
                                          +
                                          +export class UpdateUserInput {
                                          +    user_id: string;
                                          +    username?: Nullable<string>;
                                          +    email?: Nullable<string>;
                                          +    password?: Nullable<string>;
                                          +}
                                          +
                                          +export class CreateWorkspaceInput {
                                          +    name: string;
                                          +    description?: Nullable<string>;
                                          +    color?: Nullable<string>;
                                          +}
                                          +
                                          +export class UpdateWorkspaceInput {
                                          +    name?: Nullable<string>;
                                          +    description?: Nullable<string>;
                                          +    color?: Nullable<string>;
                                          +}
                                          +
                                          +export class AddWorkspaceMemberInput {
                                          +    workspace_id: string;
                                          +    user_email: string;
                                          +    role?: Nullable<Role>;
                                          +}
                                          +
                                          +export class UpdateMemberRoleInput {
                                          +    workspace_id: string;
                                          +    user_id: string;
                                          +    role: Role;
                                          +}
                                          +
                                          +export class Board {
                                          +    board_id: string;
                                          +    title: string;
                                          +    description?: Nullable<string>;
                                          +    color: string;
                                          +    lists: List[];
                                          +    workspace_id: string;
                                          +}
                                          +
                                          +export class List {
                                          +    list_id: string;
                                          +    title: string;
                                          +    position: number;
                                          +    color: string;
                                          +    board_id: string;
                                          +    cards?: Nullable<Nullable<Card>[]>;
                                          +}
                                          +
                                          +export class Card {
                                          +    card_id: string;
                                          +    title: string;
                                          +    description?: Nullable<string>;
                                          +    position: number;
                                          +    list_id: string;
                                          +    labels?: Nullable<Nullable<Label>[]>;
                                          +    due_date?: Nullable<DateTime>;
                                          +    comments?: Nullable<Nullable<Comment>[]>;
                                          +    attachments?: Nullable<Nullable<Attachment>[]>;
                                          +    members?: Nullable<Nullable<CardMember>[]>;
                                          +}
                                          +
                                          +export class Comment {
                                          +    comment_id: string;
                                          +    content: string;
                                          +    created_at: DateTime;
                                          +    card_id: string;
                                          +    user_id: string;
                                          +}
                                          +
                                          +export class Label {
                                          +    label_id: string;
                                          +    name: string;
                                          +    color: string;
                                          +    workspace_id: string;
                                          +}
                                          +
                                          +export class Attachment {
                                          +    attachment_id: string;
                                          +    card_id: string;
                                          +    url: string;
                                          +    filename: string;
                                          +}
                                          +
                                          +export class CardLabel {
                                          +    card_id: string;
                                          +    label_id: string;
                                          +}
                                          +
                                          +export class CardMember {
                                          +    card_id: string;
                                          +    user_id: string;
                                          +}
                                          +
                                          +export abstract class IQuery {
                                          +    abstract boards(workspace_id: string): Nullable<Nullable<Board>[]> | Promise<Nullable<Nullable<Board>[]>>;
                                          +
                                          +    abstract board(board_id: string): Nullable<Board> | Promise<Nullable<Board>>;
                                          +
                                          +    abstract lists(board_id: string): Nullable<Nullable<List>[]> | Promise<Nullable<Nullable<List>[]>>;
                                          +
                                          +    abstract list(list_id: string): Nullable<List> | Promise<Nullable<List>>;
                                          +
                                          +    abstract cards(list_id: string): Nullable<Nullable<Card>[]> | Promise<Nullable<Nullable<Card>[]>>;
                                          +
                                          +    abstract card(card_id: string): Nullable<Card> | Promise<Nullable<Card>>;
                                          +
                                          +    abstract labels(workspace_id: string): Nullable<Nullable<Label>[]> | Promise<Nullable<Nullable<Label>[]>>;
                                          +
                                          +    abstract comments(card_id: string): Nullable<Nullable<Comment>[]> | Promise<Nullable<Nullable<Comment>[]>>;
                                          +
                                          +    abstract users(): Nullable<Nullable<User>[]> | Promise<Nullable<Nullable<User>[]>>;
                                          +
                                          +    abstract user(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                                          +
                                          +    abstract me(): Nullable<User> | Promise<Nullable<User>>;
                                          +
                                          +    abstract workspaces(): Nullable<Nullable<Workspace>[]> | Promise<Nullable<Nullable<Workspace>[]>>;
                                          +
                                          +    abstract workspace(workspace_id: string): Nullable<Workspace> | Promise<Nullable<Workspace>>;
                                          +
                                          +    abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise<WorkspaceMembers[]>;
                                          +}
                                          +
                                          +export class CreateBoardPayload {
                                          +    board?: Nullable<Board>;
                                          +}
                                          +
                                          +export abstract class IMutation {
                                          +    abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise<CreateBoardPayload>;
                                          +
                                          +    abstract updateBoard(input: UpdateBoardInput): Board | Promise<Board>;
                                          +
                                          +    abstract deleteBoard(board_id: string): Status | Promise<Status>;
                                          +
                                          +    abstract createList(input: CreateListInput): List | Promise<List>;
                                          +
                                          +    abstract updateList(input: UpdateListInput): List | Promise<List>;
                                          +
                                          +    abstract deleteList(list_id: string): Status | Promise<Status>;
                                          +
                                          +    abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise<List[]>;
                                          +
                                          +    abstract createCard(input: CreateCardInput): Card | Promise<Card>;
                                          +
                                          +    abstract updateCard(input: UpdateCardInput): Card | Promise<Card>;
                                          +
                                          +    abstract deleteCard(card_id: string): Status | Promise<Status>;
                                          +
                                          +    abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise<Card>;
                                          +
                                          +    abstract createLabel(input: CreateLabelInput): Label | Promise<Label>;
                                          +
                                          +    abstract updateLabel(input: UpdateLabelInput): Label | Promise<Label>;
                                          +
                                          +    abstract deleteLabel(label_id: string): Status | Promise<Status>;
                                          +
                                          +    abstract uploadFile(file: Upload): FileResponse | Promise<FileResponse>;
                                          +
                                          +    abstract createUser(input: CreateUserInput): Nullable<User> | Promise<Nullable<User>>;
                                          +
                                          +    abstract updateUser(input: UpdateUserInput): Nullable<User> | Promise<Nullable<User>>;
                                          +
                                          +    abstract deleteUser(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                                          +
                                          +    abstract login(input: LoginInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                                          +
                                          +    abstract register(input: RegisterInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                                          +
                                          +    abstract logout(): Status | Promise<Status>;
                                          +
                                          +    abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise<Workspace>;
                                          +
                                          +    abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise<Workspace>;
                                          +
                                          +    abstract deleteWorkspace(workspace_id: string): Status | Promise<Status>;
                                          +
                                          +    abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                                          +
                                          +    abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                                          +
                                          +    abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                                          +
                                          +    abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise<Status>;
                                          +
                                          +    abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                                          +}
                                          +
                                          +export class Success {
                                          +    successMessage?: Nullable<string>;
                                          +}
                                          +
                                          +export class Error {
                                          +    errorMessage: string;
                                          +    code?: Nullable<string>;
                                          +}
                                          +
                                          +export class FileResponse {
                                          +    success: boolean;
                                          +    url?: Nullable<string>;
                                          +    message?: Nullable<string>;
                                          +}
                                          +
                                          +export class User {
                                          +    user_id: string;
                                          +    username: string;
                                          +    email: string;
                                          +    picture?: Nullable<string>;
                                          +    created_at: DateTime;
                                          +}
                                          +
                                          +export class AuthSuccess {
                                          +    token: string;
                                          +    user: User;
                                          +}
                                          +
                                          +export class AuthError {
                                          +    message: string;
                                          +    code?: Nullable<string>;
                                          +    field?: Nullable<string>;
                                          +}
                                          +
                                          +export class Workspace {
                                          +    workspace_id: string;
                                          +    name: string;
                                          +    color: string;
                                          +    description?: Nullable<string>;
                                          +    owner_id: string;
                                          +    owner: User;
                                          +    members: WorkspaceMembers[];
                                          +    boards?: Nullable<Nullable<Board>[]>;
                                          +    labels?: Nullable<Nullable<Label>[]>;
                                          +    is_pinned: boolean;
                                          +}
                                          +
                                          +export class WorkspaceMembers {
                                          +    workspace_id: string;
                                          +    user_id: string;
                                          +    role: string;
                                          +    user: User;
                                          +    workspace: Workspace;
                                          +}
                                          +
                                          +export class PinWorkspacePayload {
                                          +    workspace: Workspace;
                                          +}
                                          +
                                          +export type DateTime = any;
                                          +export type Upload = any;
                                          +export type Status = Success | Error;
                                          +export type AuthResult = AuthSuccess | AuthError;
                                          +type Nullable<T> = T | null;
                                          +
                                          +
                                          +
                                          + + + + + + + + + +
                                          +
                                          +

                                          results matching ""

                                          +
                                            +
                                            +
                                            +

                                            No results matching ""

                                            +
                                            +
                                            +
                                            + +
                                            +
                                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/classes/IQuery.html b/backend/documentation/classes/IQuery.html new file mode 100644 index 0000000..d1c8ffc --- /dev/null +++ b/backend/documentation/classes/IQuery.html @@ -0,0 +1,1535 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                                            +
                                            + + +
                                            +
                                            + + + + + + + + + + + + + + + + + + + + +
                                            +
                                            +

                                            +

                                            File

                                            +

                                            +

                                            + src/graphql/graphql.ts +

                                            + + + + + + +
                                            +

                                            Index

                                            + + + + + + + + + + + + + + + +
                                            +
                                            Methods
                                            +
                                            + +
                                            +
                                            + + + +
                                            + +

                                            + Methods +

                                            + + + + + + + + + + + + + + + + + + + +
                                            + + + Abstract + board + + +
                                            + + board(board_id: string) +
                                            + +
                                            + +
                                            + Parameters : + + + + + + + + + + + + + + + + + + + +
                                            NameTypeOptional
                                            board_id + string + + No +
                                            +
                                            +
                                            + Returns : Nullable | Promise + +
                                            +
                                            + +
                                            +
                                            + + + + + + + + + + + + + + + + + + + +
                                            + + + Abstract + boards + + +
                                            + + boards(workspace_id: string) +
                                            + +
                                            + +
                                            + Parameters : + + + + + + + + + + + + + + + + + + + +
                                            NameTypeOptional
                                            workspace_id + string + + No +
                                            +
                                            +
                                            + Returns : Nullable | Promise + +
                                            +
                                            + +
                                            +
                                            + + + + + + + + + + + + + + + + + + + +
                                            + + + Abstract + card + + +
                                            + + card(card_id: string) +
                                            + +
                                            + +
                                            + Parameters : + + + + + + + + + + + + + + + + + + + +
                                            NameTypeOptional
                                            card_id + string + + No +
                                            +
                                            +
                                            + Returns : Nullable | Promise + +
                                            +
                                            + +
                                            +
                                            + + + + + + + + + + + + + + + + + + + +
                                            + + + Abstract + cards + + +
                                            + + cards(list_id: string) +
                                            + +
                                            + +
                                            + Parameters : + + + + + + + + + + + + + + + + + + + +
                                            NameTypeOptional
                                            list_id + string + + No +
                                            +
                                            +
                                            + Returns : Nullable | Promise + +
                                            +
                                            + +
                                            +
                                            + + + + + + + + + + + + + + + + + + + +
                                            + + + Abstract + comments + + +
                                            + + comments(card_id: string) +
                                            + +
                                            + +
                                            + Parameters : + + + + + + + + + + + + + + + + + + + +
                                            NameTypeOptional
                                            card_id + string + + No +
                                            +
                                            +
                                            + Returns : Nullable | Promise + +
                                            +
                                            + +
                                            +
                                            + + + + + + + + + + + + + + + + + + + +
                                            + + + Abstract + labels + + +
                                            + + labels(workspace_id: string) +
                                            + +
                                            + +
                                            + Parameters : + + + + + + + + + + + + + + + + + + + +
                                            NameTypeOptional
                                            workspace_id + string + + No +
                                            +
                                            +
                                            + Returns : Nullable | Promise + +
                                            +
                                            + +
                                            +
                                            + + + + + + + + + + + + + + + + + + + +
                                            + + + Abstract + list + + +
                                            + + list(list_id: string) +
                                            + +
                                            + +
                                            + Parameters : + + + + + + + + + + + + + + + + + + + +
                                            NameTypeOptional
                                            list_id + string + + No +
                                            +
                                            +
                                            + Returns : Nullable | Promise + +
                                            +
                                            + +
                                            +
                                            + + + + + + + + + + + + + + + + + + + +
                                            + + + Abstract + lists + + +
                                            + + lists(board_id: string) +
                                            + +
                                            + +
                                            + Parameters : + + + + + + + + + + + + + + + + + + + +
                                            NameTypeOptional
                                            board_id + string + + No +
                                            +
                                            +
                                            + Returns : Nullable | Promise + +
                                            +
                                            + +
                                            +
                                            + + + + + + + + + + + + + + + + + + + +
                                            + + + Abstract + me + + +
                                            + + me() +
                                            + +
                                            + +
                                            + Returns : Nullable | Promise + +
                                            +
                                            + + + + + + + + + + + + + + + + + + + +
                                            + + + Abstract + user + + +
                                            + + user(user_id: string) +
                                            + +
                                            + +
                                            + Parameters : + + + + + + + + + + + + + + + + + + + +
                                            NameTypeOptional
                                            user_id + string + + No +
                                            +
                                            +
                                            + Returns : Nullable | Promise + +
                                            +
                                            + +
                                            +
                                            + + + + + + + + + + + + + + + + + + + +
                                            + + + Abstract + users + + +
                                            + + users() +
                                            + +
                                            + +
                                            + Returns : Nullable | Promise + +
                                            +
                                            + + + + + + + + + + + + + + + + + + + +
                                            + + + Abstract + workspace + + +
                                            + + workspace(workspace_id: string) +
                                            + +
                                            + +
                                            + Parameters : + + + + + + + + + + + + + + + + + + + +
                                            NameTypeOptional
                                            workspace_id + string + + No +
                                            +
                                            +
                                            + Returns : Nullable | Promise + +
                                            +
                                            + +
                                            +
                                            + + + + + + + + + + + + + + + + + + + +
                                            + + + Abstract + workspaceMembers + + +
                                            + + workspaceMembers(workspace_id: string) +
                                            + +
                                            + +
                                            + Parameters : + + + + + + + + + + + + + + + + + + + +
                                            NameTypeOptional
                                            workspace_id + string + + No +
                                            +
                                            +
                                            + Returns : [] | Promise + +
                                            +
                                            + +
                                            +
                                            + + + + + + + + + + + + + + + + + + + +
                                            + + + Abstract + workspaces + + +
                                            + + workspaces() +
                                            + +
                                            + +
                                            + Returns : Nullable | Promise + +
                                            +
                                            +
                                            + + + + + +
                                            + + +
                                            +
                                            export enum Role {
                                            +    Admin = "Admin",
                                            +    Member = "Member",
                                            +    Viewer = "Viewer"
                                            +}
                                            +
                                            +export class CreateBoardInput {
                                            +    title: string;
                                            +    description?: Nullable<string>;
                                            +    color: string;
                                            +    workspace_id: string;
                                            +}
                                            +
                                            +export class UpdateBoardInput {
                                            +    board_id: string;
                                            +    title?: Nullable<string>;
                                            +    description?: Nullable<string>;
                                            +    color?: Nullable<string>;
                                            +}
                                            +
                                            +export class CreateListInput {
                                            +    title: string;
                                            +    board_id: string;
                                            +    position: number;
                                            +    color?: Nullable<string>;
                                            +}
                                            +
                                            +export class UpdateListInput {
                                            +    list_id: string;
                                            +    title?: Nullable<string>;
                                            +    position?: Nullable<number>;
                                            +    color?: Nullable<string>;
                                            +}
                                            +
                                            +export class CreateCardInput {
                                            +    title: string;
                                            +    list_id: string;
                                            +    description?: Nullable<string>;
                                            +    position: number;
                                            +    due_date?: Nullable<DateTime>;
                                            +}
                                            +
                                            +export class UpdateCardInput {
                                            +    card_id: string;
                                            +    title?: Nullable<string>;
                                            +    description?: Nullable<string>;
                                            +    position?: Nullable<number>;
                                            +    due_date?: Nullable<DateTime>;
                                            +}
                                            +
                                            +export class CreateLabelInput {
                                            +    name: string;
                                            +    color: string;
                                            +    board_id: string;
                                            +}
                                            +
                                            +export class UpdateLabelInput {
                                            +    label_id: string;
                                            +    name?: Nullable<string>;
                                            +    color?: Nullable<string>;
                                            +}
                                            +
                                            +export class LoginInput {
                                            +    email: string;
                                            +    password: string;
                                            +}
                                            +
                                            +export class RegisterInput {
                                            +    username: string;
                                            +    email: string;
                                            +    password: string;
                                            +}
                                            +
                                            +export class CreateUserInput {
                                            +    username: string;
                                            +    email: string;
                                            +    password: string;
                                            +}
                                            +
                                            +export class UpdateUserInput {
                                            +    user_id: string;
                                            +    username?: Nullable<string>;
                                            +    email?: Nullable<string>;
                                            +    password?: Nullable<string>;
                                            +}
                                            +
                                            +export class CreateWorkspaceInput {
                                            +    name: string;
                                            +    description?: Nullable<string>;
                                            +    color?: Nullable<string>;
                                            +}
                                            +
                                            +export class UpdateWorkspaceInput {
                                            +    name?: Nullable<string>;
                                            +    description?: Nullable<string>;
                                            +    color?: Nullable<string>;
                                            +}
                                            +
                                            +export class AddWorkspaceMemberInput {
                                            +    workspace_id: string;
                                            +    user_email: string;
                                            +    role?: Nullable<Role>;
                                            +}
                                            +
                                            +export class UpdateMemberRoleInput {
                                            +    workspace_id: string;
                                            +    user_id: string;
                                            +    role: Role;
                                            +}
                                            +
                                            +export class Board {
                                            +    board_id: string;
                                            +    title: string;
                                            +    description?: Nullable<string>;
                                            +    color: string;
                                            +    lists: List[];
                                            +    workspace_id: string;
                                            +}
                                            +
                                            +export class List {
                                            +    list_id: string;
                                            +    title: string;
                                            +    position: number;
                                            +    color: string;
                                            +    board_id: string;
                                            +    cards?: Nullable<Nullable<Card>[]>;
                                            +}
                                            +
                                            +export class Card {
                                            +    card_id: string;
                                            +    title: string;
                                            +    description?: Nullable<string>;
                                            +    position: number;
                                            +    list_id: string;
                                            +    labels?: Nullable<Nullable<Label>[]>;
                                            +    due_date?: Nullable<DateTime>;
                                            +    comments?: Nullable<Nullable<Comment>[]>;
                                            +    attachments?: Nullable<Nullable<Attachment>[]>;
                                            +    members?: Nullable<Nullable<CardMember>[]>;
                                            +}
                                            +
                                            +export class Comment {
                                            +    comment_id: string;
                                            +    content: string;
                                            +    created_at: DateTime;
                                            +    card_id: string;
                                            +    user_id: string;
                                            +}
                                            +
                                            +export class Label {
                                            +    label_id: string;
                                            +    name: string;
                                            +    color: string;
                                            +    workspace_id: string;
                                            +}
                                            +
                                            +export class Attachment {
                                            +    attachment_id: string;
                                            +    card_id: string;
                                            +    url: string;
                                            +    filename: string;
                                            +}
                                            +
                                            +export class CardLabel {
                                            +    card_id: string;
                                            +    label_id: string;
                                            +}
                                            +
                                            +export class CardMember {
                                            +    card_id: string;
                                            +    user_id: string;
                                            +}
                                            +
                                            +export abstract class IQuery {
                                            +    abstract boards(workspace_id: string): Nullable<Nullable<Board>[]> | Promise<Nullable<Nullable<Board>[]>>;
                                            +
                                            +    abstract board(board_id: string): Nullable<Board> | Promise<Nullable<Board>>;
                                            +
                                            +    abstract lists(board_id: string): Nullable<Nullable<List>[]> | Promise<Nullable<Nullable<List>[]>>;
                                            +
                                            +    abstract list(list_id: string): Nullable<List> | Promise<Nullable<List>>;
                                            +
                                            +    abstract cards(list_id: string): Nullable<Nullable<Card>[]> | Promise<Nullable<Nullable<Card>[]>>;
                                            +
                                            +    abstract card(card_id: string): Nullable<Card> | Promise<Nullable<Card>>;
                                            +
                                            +    abstract labels(workspace_id: string): Nullable<Nullable<Label>[]> | Promise<Nullable<Nullable<Label>[]>>;
                                            +
                                            +    abstract comments(card_id: string): Nullable<Nullable<Comment>[]> | Promise<Nullable<Nullable<Comment>[]>>;
                                            +
                                            +    abstract users(): Nullable<Nullable<User>[]> | Promise<Nullable<Nullable<User>[]>>;
                                            +
                                            +    abstract user(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                                            +
                                            +    abstract me(): Nullable<User> | Promise<Nullable<User>>;
                                            +
                                            +    abstract workspaces(): Nullable<Nullable<Workspace>[]> | Promise<Nullable<Nullable<Workspace>[]>>;
                                            +
                                            +    abstract workspace(workspace_id: string): Nullable<Workspace> | Promise<Nullable<Workspace>>;
                                            +
                                            +    abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise<WorkspaceMembers[]>;
                                            +}
                                            +
                                            +export class CreateBoardPayload {
                                            +    board?: Nullable<Board>;
                                            +}
                                            +
                                            +export abstract class IMutation {
                                            +    abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise<CreateBoardPayload>;
                                            +
                                            +    abstract updateBoard(input: UpdateBoardInput): Board | Promise<Board>;
                                            +
                                            +    abstract deleteBoard(board_id: string): Status | Promise<Status>;
                                            +
                                            +    abstract createList(input: CreateListInput): List | Promise<List>;
                                            +
                                            +    abstract updateList(input: UpdateListInput): List | Promise<List>;
                                            +
                                            +    abstract deleteList(list_id: string): Status | Promise<Status>;
                                            +
                                            +    abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise<List[]>;
                                            +
                                            +    abstract createCard(input: CreateCardInput): Card | Promise<Card>;
                                            +
                                            +    abstract updateCard(input: UpdateCardInput): Card | Promise<Card>;
                                            +
                                            +    abstract deleteCard(card_id: string): Status | Promise<Status>;
                                            +
                                            +    abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise<Card>;
                                            +
                                            +    abstract createLabel(input: CreateLabelInput): Label | Promise<Label>;
                                            +
                                            +    abstract updateLabel(input: UpdateLabelInput): Label | Promise<Label>;
                                            +
                                            +    abstract deleteLabel(label_id: string): Status | Promise<Status>;
                                            +
                                            +    abstract uploadFile(file: Upload): FileResponse | Promise<FileResponse>;
                                            +
                                            +    abstract createUser(input: CreateUserInput): Nullable<User> | Promise<Nullable<User>>;
                                            +
                                            +    abstract updateUser(input: UpdateUserInput): Nullable<User> | Promise<Nullable<User>>;
                                            +
                                            +    abstract deleteUser(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                                            +
                                            +    abstract login(input: LoginInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                                            +
                                            +    abstract register(input: RegisterInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                                            +
                                            +    abstract logout(): Status | Promise<Status>;
                                            +
                                            +    abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise<Workspace>;
                                            +
                                            +    abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise<Workspace>;
                                            +
                                            +    abstract deleteWorkspace(workspace_id: string): Status | Promise<Status>;
                                            +
                                            +    abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                                            +
                                            +    abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                                            +
                                            +    abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                                            +
                                            +    abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise<Status>;
                                            +
                                            +    abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                                            +}
                                            +
                                            +export class Success {
                                            +    successMessage?: Nullable<string>;
                                            +}
                                            +
                                            +export class Error {
                                            +    errorMessage: string;
                                            +    code?: Nullable<string>;
                                            +}
                                            +
                                            +export class FileResponse {
                                            +    success: boolean;
                                            +    url?: Nullable<string>;
                                            +    message?: Nullable<string>;
                                            +}
                                            +
                                            +export class User {
                                            +    user_id: string;
                                            +    username: string;
                                            +    email: string;
                                            +    picture?: Nullable<string>;
                                            +    created_at: DateTime;
                                            +}
                                            +
                                            +export class AuthSuccess {
                                            +    token: string;
                                            +    user: User;
                                            +}
                                            +
                                            +export class AuthError {
                                            +    message: string;
                                            +    code?: Nullable<string>;
                                            +    field?: Nullable<string>;
                                            +}
                                            +
                                            +export class Workspace {
                                            +    workspace_id: string;
                                            +    name: string;
                                            +    color: string;
                                            +    description?: Nullable<string>;
                                            +    owner_id: string;
                                            +    owner: User;
                                            +    members: WorkspaceMembers[];
                                            +    boards?: Nullable<Nullable<Board>[]>;
                                            +    labels?: Nullable<Nullable<Label>[]>;
                                            +    is_pinned: boolean;
                                            +}
                                            +
                                            +export class WorkspaceMembers {
                                            +    workspace_id: string;
                                            +    user_id: string;
                                            +    role: string;
                                            +    user: User;
                                            +    workspace: Workspace;
                                            +}
                                            +
                                            +export class PinWorkspacePayload {
                                            +    workspace: Workspace;
                                            +}
                                            +
                                            +export type DateTime = any;
                                            +export type Upload = any;
                                            +export type Status = Success | Error;
                                            +export type AuthResult = AuthSuccess | AuthError;
                                            +type Nullable<T> = T | null;
                                            +
                                            +
                                            +
                                            + + + + + + + + + +
                                            +
                                            +

                                            results matching ""

                                            +
                                              +
                                              +
                                              +

                                              No results matching ""

                                              +
                                              +
                                              +
                                              + +
                                              +
                                              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/classes/Label.html b/backend/documentation/classes/Label.html new file mode 100644 index 0000000..11c564e --- /dev/null +++ b/backend/documentation/classes/Label.html @@ -0,0 +1,720 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                                              +
                                              + + +
                                              +
                                              + + + + + + + + + + + + + + + + + + + + +
                                              +
                                              +

                                              +

                                              File

                                              +

                                              +

                                              + src/graphql/graphql.ts +

                                              + + + + + + +
                                              +

                                              Index

                                              + + + + + + + + + + + + + + + +
                                              +
                                              Properties
                                              +
                                              + +
                                              +
                                              + + +
                                              + +

                                              + Properties +

                                              + + + + + + + + + + + + + + +
                                              + + + color + + +
                                              + Type : string + +
                                              + +
                                              + + + + + + + + + + + + + + +
                                              + + + label_id + + +
                                              + Type : string + +
                                              + +
                                              + + + + + + + + + + + + + + +
                                              + + + name + + +
                                              + Type : string + +
                                              + +
                                              + + + + + + + + + + + + + + +
                                              + + + workspace_id + + +
                                              + Type : string + +
                                              + +
                                              +
                                              + + + + + + + +
                                              + + +
                                              +
                                              export enum Role {
                                              +    Admin = "Admin",
                                              +    Member = "Member",
                                              +    Viewer = "Viewer"
                                              +}
                                              +
                                              +export class CreateBoardInput {
                                              +    title: string;
                                              +    description?: Nullable<string>;
                                              +    color: string;
                                              +    workspace_id: string;
                                              +}
                                              +
                                              +export class UpdateBoardInput {
                                              +    board_id: string;
                                              +    title?: Nullable<string>;
                                              +    description?: Nullable<string>;
                                              +    color?: Nullable<string>;
                                              +}
                                              +
                                              +export class CreateListInput {
                                              +    title: string;
                                              +    board_id: string;
                                              +    position: number;
                                              +    color?: Nullable<string>;
                                              +}
                                              +
                                              +export class UpdateListInput {
                                              +    list_id: string;
                                              +    title?: Nullable<string>;
                                              +    position?: Nullable<number>;
                                              +    color?: Nullable<string>;
                                              +}
                                              +
                                              +export class CreateCardInput {
                                              +    title: string;
                                              +    list_id: string;
                                              +    description?: Nullable<string>;
                                              +    position: number;
                                              +    due_date?: Nullable<DateTime>;
                                              +}
                                              +
                                              +export class UpdateCardInput {
                                              +    card_id: string;
                                              +    title?: Nullable<string>;
                                              +    description?: Nullable<string>;
                                              +    position?: Nullable<number>;
                                              +    due_date?: Nullable<DateTime>;
                                              +}
                                              +
                                              +export class CreateLabelInput {
                                              +    name: string;
                                              +    color: string;
                                              +    board_id: string;
                                              +}
                                              +
                                              +export class UpdateLabelInput {
                                              +    label_id: string;
                                              +    name?: Nullable<string>;
                                              +    color?: Nullable<string>;
                                              +}
                                              +
                                              +export class LoginInput {
                                              +    email: string;
                                              +    password: string;
                                              +}
                                              +
                                              +export class RegisterInput {
                                              +    username: string;
                                              +    email: string;
                                              +    password: string;
                                              +}
                                              +
                                              +export class CreateUserInput {
                                              +    username: string;
                                              +    email: string;
                                              +    password: string;
                                              +}
                                              +
                                              +export class UpdateUserInput {
                                              +    user_id: string;
                                              +    username?: Nullable<string>;
                                              +    email?: Nullable<string>;
                                              +    password?: Nullable<string>;
                                              +}
                                              +
                                              +export class CreateWorkspaceInput {
                                              +    name: string;
                                              +    description?: Nullable<string>;
                                              +    color?: Nullable<string>;
                                              +}
                                              +
                                              +export class UpdateWorkspaceInput {
                                              +    name?: Nullable<string>;
                                              +    description?: Nullable<string>;
                                              +    color?: Nullable<string>;
                                              +}
                                              +
                                              +export class AddWorkspaceMemberInput {
                                              +    workspace_id: string;
                                              +    user_email: string;
                                              +    role?: Nullable<Role>;
                                              +}
                                              +
                                              +export class UpdateMemberRoleInput {
                                              +    workspace_id: string;
                                              +    user_id: string;
                                              +    role: Role;
                                              +}
                                              +
                                              +export class Board {
                                              +    board_id: string;
                                              +    title: string;
                                              +    description?: Nullable<string>;
                                              +    color: string;
                                              +    lists: List[];
                                              +    workspace_id: string;
                                              +}
                                              +
                                              +export class List {
                                              +    list_id: string;
                                              +    title: string;
                                              +    position: number;
                                              +    color: string;
                                              +    board_id: string;
                                              +    cards?: Nullable<Nullable<Card>[]>;
                                              +}
                                              +
                                              +export class Card {
                                              +    card_id: string;
                                              +    title: string;
                                              +    description?: Nullable<string>;
                                              +    position: number;
                                              +    list_id: string;
                                              +    labels?: Nullable<Nullable<Label>[]>;
                                              +    due_date?: Nullable<DateTime>;
                                              +    comments?: Nullable<Nullable<Comment>[]>;
                                              +    attachments?: Nullable<Nullable<Attachment>[]>;
                                              +    members?: Nullable<Nullable<CardMember>[]>;
                                              +}
                                              +
                                              +export class Comment {
                                              +    comment_id: string;
                                              +    content: string;
                                              +    created_at: DateTime;
                                              +    card_id: string;
                                              +    user_id: string;
                                              +}
                                              +
                                              +export class Label {
                                              +    label_id: string;
                                              +    name: string;
                                              +    color: string;
                                              +    workspace_id: string;
                                              +}
                                              +
                                              +export class Attachment {
                                              +    attachment_id: string;
                                              +    card_id: string;
                                              +    url: string;
                                              +    filename: string;
                                              +}
                                              +
                                              +export class CardLabel {
                                              +    card_id: string;
                                              +    label_id: string;
                                              +}
                                              +
                                              +export class CardMember {
                                              +    card_id: string;
                                              +    user_id: string;
                                              +}
                                              +
                                              +export abstract class IQuery {
                                              +    abstract boards(workspace_id: string): Nullable<Nullable<Board>[]> | Promise<Nullable<Nullable<Board>[]>>;
                                              +
                                              +    abstract board(board_id: string): Nullable<Board> | Promise<Nullable<Board>>;
                                              +
                                              +    abstract lists(board_id: string): Nullable<Nullable<List>[]> | Promise<Nullable<Nullable<List>[]>>;
                                              +
                                              +    abstract list(list_id: string): Nullable<List> | Promise<Nullable<List>>;
                                              +
                                              +    abstract cards(list_id: string): Nullable<Nullable<Card>[]> | Promise<Nullable<Nullable<Card>[]>>;
                                              +
                                              +    abstract card(card_id: string): Nullable<Card> | Promise<Nullable<Card>>;
                                              +
                                              +    abstract labels(workspace_id: string): Nullable<Nullable<Label>[]> | Promise<Nullable<Nullable<Label>[]>>;
                                              +
                                              +    abstract comments(card_id: string): Nullable<Nullable<Comment>[]> | Promise<Nullable<Nullable<Comment>[]>>;
                                              +
                                              +    abstract users(): Nullable<Nullable<User>[]> | Promise<Nullable<Nullable<User>[]>>;
                                              +
                                              +    abstract user(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                                              +
                                              +    abstract me(): Nullable<User> | Promise<Nullable<User>>;
                                              +
                                              +    abstract workspaces(): Nullable<Nullable<Workspace>[]> | Promise<Nullable<Nullable<Workspace>[]>>;
                                              +
                                              +    abstract workspace(workspace_id: string): Nullable<Workspace> | Promise<Nullable<Workspace>>;
                                              +
                                              +    abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise<WorkspaceMembers[]>;
                                              +}
                                              +
                                              +export class CreateBoardPayload {
                                              +    board?: Nullable<Board>;
                                              +}
                                              +
                                              +export abstract class IMutation {
                                              +    abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise<CreateBoardPayload>;
                                              +
                                              +    abstract updateBoard(input: UpdateBoardInput): Board | Promise<Board>;
                                              +
                                              +    abstract deleteBoard(board_id: string): Status | Promise<Status>;
                                              +
                                              +    abstract createList(input: CreateListInput): List | Promise<List>;
                                              +
                                              +    abstract updateList(input: UpdateListInput): List | Promise<List>;
                                              +
                                              +    abstract deleteList(list_id: string): Status | Promise<Status>;
                                              +
                                              +    abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise<List[]>;
                                              +
                                              +    abstract createCard(input: CreateCardInput): Card | Promise<Card>;
                                              +
                                              +    abstract updateCard(input: UpdateCardInput): Card | Promise<Card>;
                                              +
                                              +    abstract deleteCard(card_id: string): Status | Promise<Status>;
                                              +
                                              +    abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise<Card>;
                                              +
                                              +    abstract createLabel(input: CreateLabelInput): Label | Promise<Label>;
                                              +
                                              +    abstract updateLabel(input: UpdateLabelInput): Label | Promise<Label>;
                                              +
                                              +    abstract deleteLabel(label_id: string): Status | Promise<Status>;
                                              +
                                              +    abstract uploadFile(file: Upload): FileResponse | Promise<FileResponse>;
                                              +
                                              +    abstract createUser(input: CreateUserInput): Nullable<User> | Promise<Nullable<User>>;
                                              +
                                              +    abstract updateUser(input: UpdateUserInput): Nullable<User> | Promise<Nullable<User>>;
                                              +
                                              +    abstract deleteUser(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                                              +
                                              +    abstract login(input: LoginInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                                              +
                                              +    abstract register(input: RegisterInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                                              +
                                              +    abstract logout(): Status | Promise<Status>;
                                              +
                                              +    abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise<Workspace>;
                                              +
                                              +    abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise<Workspace>;
                                              +
                                              +    abstract deleteWorkspace(workspace_id: string): Status | Promise<Status>;
                                              +
                                              +    abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                                              +
                                              +    abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                                              +
                                              +    abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                                              +
                                              +    abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise<Status>;
                                              +
                                              +    abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                                              +}
                                              +
                                              +export class Success {
                                              +    successMessage?: Nullable<string>;
                                              +}
                                              +
                                              +export class Error {
                                              +    errorMessage: string;
                                              +    code?: Nullable<string>;
                                              +}
                                              +
                                              +export class FileResponse {
                                              +    success: boolean;
                                              +    url?: Nullable<string>;
                                              +    message?: Nullable<string>;
                                              +}
                                              +
                                              +export class User {
                                              +    user_id: string;
                                              +    username: string;
                                              +    email: string;
                                              +    picture?: Nullable<string>;
                                              +    created_at: DateTime;
                                              +}
                                              +
                                              +export class AuthSuccess {
                                              +    token: string;
                                              +    user: User;
                                              +}
                                              +
                                              +export class AuthError {
                                              +    message: string;
                                              +    code?: Nullable<string>;
                                              +    field?: Nullable<string>;
                                              +}
                                              +
                                              +export class Workspace {
                                              +    workspace_id: string;
                                              +    name: string;
                                              +    color: string;
                                              +    description?: Nullable<string>;
                                              +    owner_id: string;
                                              +    owner: User;
                                              +    members: WorkspaceMembers[];
                                              +    boards?: Nullable<Nullable<Board>[]>;
                                              +    labels?: Nullable<Nullable<Label>[]>;
                                              +    is_pinned: boolean;
                                              +}
                                              +
                                              +export class WorkspaceMembers {
                                              +    workspace_id: string;
                                              +    user_id: string;
                                              +    role: string;
                                              +    user: User;
                                              +    workspace: Workspace;
                                              +}
                                              +
                                              +export class PinWorkspacePayload {
                                              +    workspace: Workspace;
                                              +}
                                              +
                                              +export type DateTime = any;
                                              +export type Upload = any;
                                              +export type Status = Success | Error;
                                              +export type AuthResult = AuthSuccess | AuthError;
                                              +type Nullable<T> = T | null;
                                              +
                                              +
                                              +
                                              + + + + + + + + + +
                                              +
                                              +

                                              results matching ""

                                              +
                                                +
                                                +
                                                +

                                                No results matching ""

                                                +
                                                +
                                                +
                                                + +
                                                +
                                                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/classes/List.html b/backend/documentation/classes/List.html new file mode 100644 index 0000000..608697a --- /dev/null +++ b/backend/documentation/classes/List.html @@ -0,0 +1,780 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                                                +
                                                + + +
                                                +
                                                + + + + + + + + + + + + + + + + + + + + +
                                                +
                                                +

                                                +

                                                File

                                                +

                                                +

                                                + src/graphql/graphql.ts +

                                                + + + + + + +
                                                +

                                                Index

                                                + + + + + + + + + + + + + + + +
                                                +
                                                Properties
                                                +
                                                + +
                                                +
                                                + + +
                                                + +

                                                + Properties +

                                                + + + + + + + + + + + + + + +
                                                + + + board_id + + +
                                                + Type : string + +
                                                + +
                                                + + + + + + + + + + + + + + +
                                                + + + Optional + cards + + +
                                                + Type : Nullable<Nullable[]> + +
                                                + +
                                                + + + + + + + + + + + + + + +
                                                + + + color + + +
                                                + Type : string + +
                                                + +
                                                + + + + + + + + + + + + + + +
                                                + + + list_id + + +
                                                + Type : string + +
                                                + +
                                                + + + + + + + + + + + + + + +
                                                + + + position + + +
                                                + Type : number + +
                                                + +
                                                + + + + + + + + + + + + + + +
                                                + + + title + + +
                                                + Type : string + +
                                                + +
                                                +
                                                + + + + + + + +
                                                + + +
                                                +
                                                export enum Role {
                                                +    Admin = "Admin",
                                                +    Member = "Member",
                                                +    Viewer = "Viewer"
                                                +}
                                                +
                                                +export class CreateBoardInput {
                                                +    title: string;
                                                +    description?: Nullable<string>;
                                                +    color: string;
                                                +    workspace_id: string;
                                                +}
                                                +
                                                +export class UpdateBoardInput {
                                                +    board_id: string;
                                                +    title?: Nullable<string>;
                                                +    description?: Nullable<string>;
                                                +    color?: Nullable<string>;
                                                +}
                                                +
                                                +export class CreateListInput {
                                                +    title: string;
                                                +    board_id: string;
                                                +    position: number;
                                                +    color?: Nullable<string>;
                                                +}
                                                +
                                                +export class UpdateListInput {
                                                +    list_id: string;
                                                +    title?: Nullable<string>;
                                                +    position?: Nullable<number>;
                                                +    color?: Nullable<string>;
                                                +}
                                                +
                                                +export class CreateCardInput {
                                                +    title: string;
                                                +    list_id: string;
                                                +    description?: Nullable<string>;
                                                +    position: number;
                                                +    due_date?: Nullable<DateTime>;
                                                +}
                                                +
                                                +export class UpdateCardInput {
                                                +    card_id: string;
                                                +    title?: Nullable<string>;
                                                +    description?: Nullable<string>;
                                                +    position?: Nullable<number>;
                                                +    due_date?: Nullable<DateTime>;
                                                +}
                                                +
                                                +export class CreateLabelInput {
                                                +    name: string;
                                                +    color: string;
                                                +    board_id: string;
                                                +}
                                                +
                                                +export class UpdateLabelInput {
                                                +    label_id: string;
                                                +    name?: Nullable<string>;
                                                +    color?: Nullable<string>;
                                                +}
                                                +
                                                +export class LoginInput {
                                                +    email: string;
                                                +    password: string;
                                                +}
                                                +
                                                +export class RegisterInput {
                                                +    username: string;
                                                +    email: string;
                                                +    password: string;
                                                +}
                                                +
                                                +export class CreateUserInput {
                                                +    username: string;
                                                +    email: string;
                                                +    password: string;
                                                +}
                                                +
                                                +export class UpdateUserInput {
                                                +    user_id: string;
                                                +    username?: Nullable<string>;
                                                +    email?: Nullable<string>;
                                                +    password?: Nullable<string>;
                                                +}
                                                +
                                                +export class CreateWorkspaceInput {
                                                +    name: string;
                                                +    description?: Nullable<string>;
                                                +    color?: Nullable<string>;
                                                +}
                                                +
                                                +export class UpdateWorkspaceInput {
                                                +    name?: Nullable<string>;
                                                +    description?: Nullable<string>;
                                                +    color?: Nullable<string>;
                                                +}
                                                +
                                                +export class AddWorkspaceMemberInput {
                                                +    workspace_id: string;
                                                +    user_email: string;
                                                +    role?: Nullable<Role>;
                                                +}
                                                +
                                                +export class UpdateMemberRoleInput {
                                                +    workspace_id: string;
                                                +    user_id: string;
                                                +    role: Role;
                                                +}
                                                +
                                                +export class Board {
                                                +    board_id: string;
                                                +    title: string;
                                                +    description?: Nullable<string>;
                                                +    color: string;
                                                +    lists: List[];
                                                +    workspace_id: string;
                                                +}
                                                +
                                                +export class List {
                                                +    list_id: string;
                                                +    title: string;
                                                +    position: number;
                                                +    color: string;
                                                +    board_id: string;
                                                +    cards?: Nullable<Nullable<Card>[]>;
                                                +}
                                                +
                                                +export class Card {
                                                +    card_id: string;
                                                +    title: string;
                                                +    description?: Nullable<string>;
                                                +    position: number;
                                                +    list_id: string;
                                                +    labels?: Nullable<Nullable<Label>[]>;
                                                +    due_date?: Nullable<DateTime>;
                                                +    comments?: Nullable<Nullable<Comment>[]>;
                                                +    attachments?: Nullable<Nullable<Attachment>[]>;
                                                +    members?: Nullable<Nullable<CardMember>[]>;
                                                +}
                                                +
                                                +export class Comment {
                                                +    comment_id: string;
                                                +    content: string;
                                                +    created_at: DateTime;
                                                +    card_id: string;
                                                +    user_id: string;
                                                +}
                                                +
                                                +export class Label {
                                                +    label_id: string;
                                                +    name: string;
                                                +    color: string;
                                                +    workspace_id: string;
                                                +}
                                                +
                                                +export class Attachment {
                                                +    attachment_id: string;
                                                +    card_id: string;
                                                +    url: string;
                                                +    filename: string;
                                                +}
                                                +
                                                +export class CardLabel {
                                                +    card_id: string;
                                                +    label_id: string;
                                                +}
                                                +
                                                +export class CardMember {
                                                +    card_id: string;
                                                +    user_id: string;
                                                +}
                                                +
                                                +export abstract class IQuery {
                                                +    abstract boards(workspace_id: string): Nullable<Nullable<Board>[]> | Promise<Nullable<Nullable<Board>[]>>;
                                                +
                                                +    abstract board(board_id: string): Nullable<Board> | Promise<Nullable<Board>>;
                                                +
                                                +    abstract lists(board_id: string): Nullable<Nullable<List>[]> | Promise<Nullable<Nullable<List>[]>>;
                                                +
                                                +    abstract list(list_id: string): Nullable<List> | Promise<Nullable<List>>;
                                                +
                                                +    abstract cards(list_id: string): Nullable<Nullable<Card>[]> | Promise<Nullable<Nullable<Card>[]>>;
                                                +
                                                +    abstract card(card_id: string): Nullable<Card> | Promise<Nullable<Card>>;
                                                +
                                                +    abstract labels(workspace_id: string): Nullable<Nullable<Label>[]> | Promise<Nullable<Nullable<Label>[]>>;
                                                +
                                                +    abstract comments(card_id: string): Nullable<Nullable<Comment>[]> | Promise<Nullable<Nullable<Comment>[]>>;
                                                +
                                                +    abstract users(): Nullable<Nullable<User>[]> | Promise<Nullable<Nullable<User>[]>>;
                                                +
                                                +    abstract user(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                                                +
                                                +    abstract me(): Nullable<User> | Promise<Nullable<User>>;
                                                +
                                                +    abstract workspaces(): Nullable<Nullable<Workspace>[]> | Promise<Nullable<Nullable<Workspace>[]>>;
                                                +
                                                +    abstract workspace(workspace_id: string): Nullable<Workspace> | Promise<Nullable<Workspace>>;
                                                +
                                                +    abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise<WorkspaceMembers[]>;
                                                +}
                                                +
                                                +export class CreateBoardPayload {
                                                +    board?: Nullable<Board>;
                                                +}
                                                +
                                                +export abstract class IMutation {
                                                +    abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise<CreateBoardPayload>;
                                                +
                                                +    abstract updateBoard(input: UpdateBoardInput): Board | Promise<Board>;
                                                +
                                                +    abstract deleteBoard(board_id: string): Status | Promise<Status>;
                                                +
                                                +    abstract createList(input: CreateListInput): List | Promise<List>;
                                                +
                                                +    abstract updateList(input: UpdateListInput): List | Promise<List>;
                                                +
                                                +    abstract deleteList(list_id: string): Status | Promise<Status>;
                                                +
                                                +    abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise<List[]>;
                                                +
                                                +    abstract createCard(input: CreateCardInput): Card | Promise<Card>;
                                                +
                                                +    abstract updateCard(input: UpdateCardInput): Card | Promise<Card>;
                                                +
                                                +    abstract deleteCard(card_id: string): Status | Promise<Status>;
                                                +
                                                +    abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise<Card>;
                                                +
                                                +    abstract createLabel(input: CreateLabelInput): Label | Promise<Label>;
                                                +
                                                +    abstract updateLabel(input: UpdateLabelInput): Label | Promise<Label>;
                                                +
                                                +    abstract deleteLabel(label_id: string): Status | Promise<Status>;
                                                +
                                                +    abstract uploadFile(file: Upload): FileResponse | Promise<FileResponse>;
                                                +
                                                +    abstract createUser(input: CreateUserInput): Nullable<User> | Promise<Nullable<User>>;
                                                +
                                                +    abstract updateUser(input: UpdateUserInput): Nullable<User> | Promise<Nullable<User>>;
                                                +
                                                +    abstract deleteUser(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                                                +
                                                +    abstract login(input: LoginInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                                                +
                                                +    abstract register(input: RegisterInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                                                +
                                                +    abstract logout(): Status | Promise<Status>;
                                                +
                                                +    abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise<Workspace>;
                                                +
                                                +    abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise<Workspace>;
                                                +
                                                +    abstract deleteWorkspace(workspace_id: string): Status | Promise<Status>;
                                                +
                                                +    abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                                                +
                                                +    abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                                                +
                                                +    abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                                                +
                                                +    abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise<Status>;
                                                +
                                                +    abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                                                +}
                                                +
                                                +export class Success {
                                                +    successMessage?: Nullable<string>;
                                                +}
                                                +
                                                +export class Error {
                                                +    errorMessage: string;
                                                +    code?: Nullable<string>;
                                                +}
                                                +
                                                +export class FileResponse {
                                                +    success: boolean;
                                                +    url?: Nullable<string>;
                                                +    message?: Nullable<string>;
                                                +}
                                                +
                                                +export class User {
                                                +    user_id: string;
                                                +    username: string;
                                                +    email: string;
                                                +    picture?: Nullable<string>;
                                                +    created_at: DateTime;
                                                +}
                                                +
                                                +export class AuthSuccess {
                                                +    token: string;
                                                +    user: User;
                                                +}
                                                +
                                                +export class AuthError {
                                                +    message: string;
                                                +    code?: Nullable<string>;
                                                +    field?: Nullable<string>;
                                                +}
                                                +
                                                +export class Workspace {
                                                +    workspace_id: string;
                                                +    name: string;
                                                +    color: string;
                                                +    description?: Nullable<string>;
                                                +    owner_id: string;
                                                +    owner: User;
                                                +    members: WorkspaceMembers[];
                                                +    boards?: Nullable<Nullable<Board>[]>;
                                                +    labels?: Nullable<Nullable<Label>[]>;
                                                +    is_pinned: boolean;
                                                +}
                                                +
                                                +export class WorkspaceMembers {
                                                +    workspace_id: string;
                                                +    user_id: string;
                                                +    role: string;
                                                +    user: User;
                                                +    workspace: Workspace;
                                                +}
                                                +
                                                +export class PinWorkspacePayload {
                                                +    workspace: Workspace;
                                                +}
                                                +
                                                +export type DateTime = any;
                                                +export type Upload = any;
                                                +export type Status = Success | Error;
                                                +export type AuthResult = AuthSuccess | AuthError;
                                                +type Nullable<T> = T | null;
                                                +
                                                +
                                                +
                                                + + + + + + + + + +
                                                +
                                                +

                                                results matching ""

                                                +
                                                  +
                                                  +
                                                  +

                                                  No results matching ""

                                                  +
                                                  +
                                                  +
                                                  + +
                                                  +
                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/classes/LoginInput.html b/backend/documentation/classes/LoginInput.html new file mode 100644 index 0000000..cdb2ec7 --- /dev/null +++ b/backend/documentation/classes/LoginInput.html @@ -0,0 +1,662 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                                                  +
                                                  + + +
                                                  +
                                                  + + + + + + + + + + + + + + + + + + + + +
                                                  +
                                                  +

                                                  +

                                                  File

                                                  +

                                                  +

                                                  + src/graphql/graphql.ts +

                                                  + + + + + + +
                                                  +

                                                  Index

                                                  + + + + + + + + + + + + + + + +
                                                  +
                                                  Properties
                                                  +
                                                  + +
                                                  +
                                                  + + +
                                                  + +

                                                  + Properties +

                                                  + + + + + + + + + + + + + + +
                                                  + + + email + + +
                                                  + Type : string + +
                                                  + +
                                                  + + + + + + + + + + + + + + +
                                                  + + + password + + +
                                                  + Type : string + +
                                                  + +
                                                  +
                                                  + + + + + + + +
                                                  + + +
                                                  +
                                                  export enum Role {
                                                  +    Admin = "Admin",
                                                  +    Member = "Member",
                                                  +    Viewer = "Viewer"
                                                  +}
                                                  +
                                                  +export class CreateBoardInput {
                                                  +    title: string;
                                                  +    description?: Nullable<string>;
                                                  +    color: string;
                                                  +    workspace_id: string;
                                                  +}
                                                  +
                                                  +export class UpdateBoardInput {
                                                  +    board_id: string;
                                                  +    title?: Nullable<string>;
                                                  +    description?: Nullable<string>;
                                                  +    color?: Nullable<string>;
                                                  +}
                                                  +
                                                  +export class CreateListInput {
                                                  +    title: string;
                                                  +    board_id: string;
                                                  +    position: number;
                                                  +    color?: Nullable<string>;
                                                  +}
                                                  +
                                                  +export class UpdateListInput {
                                                  +    list_id: string;
                                                  +    title?: Nullable<string>;
                                                  +    position?: Nullable<number>;
                                                  +    color?: Nullable<string>;
                                                  +}
                                                  +
                                                  +export class CreateCardInput {
                                                  +    title: string;
                                                  +    list_id: string;
                                                  +    description?: Nullable<string>;
                                                  +    position: number;
                                                  +    due_date?: Nullable<DateTime>;
                                                  +}
                                                  +
                                                  +export class UpdateCardInput {
                                                  +    card_id: string;
                                                  +    title?: Nullable<string>;
                                                  +    description?: Nullable<string>;
                                                  +    position?: Nullable<number>;
                                                  +    due_date?: Nullable<DateTime>;
                                                  +}
                                                  +
                                                  +export class CreateLabelInput {
                                                  +    name: string;
                                                  +    color: string;
                                                  +    board_id: string;
                                                  +}
                                                  +
                                                  +export class UpdateLabelInput {
                                                  +    label_id: string;
                                                  +    name?: Nullable<string>;
                                                  +    color?: Nullable<string>;
                                                  +}
                                                  +
                                                  +export class LoginInput {
                                                  +    email: string;
                                                  +    password: string;
                                                  +}
                                                  +
                                                  +export class RegisterInput {
                                                  +    username: string;
                                                  +    email: string;
                                                  +    password: string;
                                                  +}
                                                  +
                                                  +export class CreateUserInput {
                                                  +    username: string;
                                                  +    email: string;
                                                  +    password: string;
                                                  +}
                                                  +
                                                  +export class UpdateUserInput {
                                                  +    user_id: string;
                                                  +    username?: Nullable<string>;
                                                  +    email?: Nullable<string>;
                                                  +    password?: Nullable<string>;
                                                  +}
                                                  +
                                                  +export class CreateWorkspaceInput {
                                                  +    name: string;
                                                  +    description?: Nullable<string>;
                                                  +    color?: Nullable<string>;
                                                  +}
                                                  +
                                                  +export class UpdateWorkspaceInput {
                                                  +    name?: Nullable<string>;
                                                  +    description?: Nullable<string>;
                                                  +    color?: Nullable<string>;
                                                  +}
                                                  +
                                                  +export class AddWorkspaceMemberInput {
                                                  +    workspace_id: string;
                                                  +    user_email: string;
                                                  +    role?: Nullable<Role>;
                                                  +}
                                                  +
                                                  +export class UpdateMemberRoleInput {
                                                  +    workspace_id: string;
                                                  +    user_id: string;
                                                  +    role: Role;
                                                  +}
                                                  +
                                                  +export class Board {
                                                  +    board_id: string;
                                                  +    title: string;
                                                  +    description?: Nullable<string>;
                                                  +    color: string;
                                                  +    lists: List[];
                                                  +    workspace_id: string;
                                                  +}
                                                  +
                                                  +export class List {
                                                  +    list_id: string;
                                                  +    title: string;
                                                  +    position: number;
                                                  +    color: string;
                                                  +    board_id: string;
                                                  +    cards?: Nullable<Nullable<Card>[]>;
                                                  +}
                                                  +
                                                  +export class Card {
                                                  +    card_id: string;
                                                  +    title: string;
                                                  +    description?: Nullable<string>;
                                                  +    position: number;
                                                  +    list_id: string;
                                                  +    labels?: Nullable<Nullable<Label>[]>;
                                                  +    due_date?: Nullable<DateTime>;
                                                  +    comments?: Nullable<Nullable<Comment>[]>;
                                                  +    attachments?: Nullable<Nullable<Attachment>[]>;
                                                  +    members?: Nullable<Nullable<CardMember>[]>;
                                                  +}
                                                  +
                                                  +export class Comment {
                                                  +    comment_id: string;
                                                  +    content: string;
                                                  +    created_at: DateTime;
                                                  +    card_id: string;
                                                  +    user_id: string;
                                                  +}
                                                  +
                                                  +export class Label {
                                                  +    label_id: string;
                                                  +    name: string;
                                                  +    color: string;
                                                  +    workspace_id: string;
                                                  +}
                                                  +
                                                  +export class Attachment {
                                                  +    attachment_id: string;
                                                  +    card_id: string;
                                                  +    url: string;
                                                  +    filename: string;
                                                  +}
                                                  +
                                                  +export class CardLabel {
                                                  +    card_id: string;
                                                  +    label_id: string;
                                                  +}
                                                  +
                                                  +export class CardMember {
                                                  +    card_id: string;
                                                  +    user_id: string;
                                                  +}
                                                  +
                                                  +export abstract class IQuery {
                                                  +    abstract boards(workspace_id: string): Nullable<Nullable<Board>[]> | Promise<Nullable<Nullable<Board>[]>>;
                                                  +
                                                  +    abstract board(board_id: string): Nullable<Board> | Promise<Nullable<Board>>;
                                                  +
                                                  +    abstract lists(board_id: string): Nullable<Nullable<List>[]> | Promise<Nullable<Nullable<List>[]>>;
                                                  +
                                                  +    abstract list(list_id: string): Nullable<List> | Promise<Nullable<List>>;
                                                  +
                                                  +    abstract cards(list_id: string): Nullable<Nullable<Card>[]> | Promise<Nullable<Nullable<Card>[]>>;
                                                  +
                                                  +    abstract card(card_id: string): Nullable<Card> | Promise<Nullable<Card>>;
                                                  +
                                                  +    abstract labels(workspace_id: string): Nullable<Nullable<Label>[]> | Promise<Nullable<Nullable<Label>[]>>;
                                                  +
                                                  +    abstract comments(card_id: string): Nullable<Nullable<Comment>[]> | Promise<Nullable<Nullable<Comment>[]>>;
                                                  +
                                                  +    abstract users(): Nullable<Nullable<User>[]> | Promise<Nullable<Nullable<User>[]>>;
                                                  +
                                                  +    abstract user(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                                                  +
                                                  +    abstract me(): Nullable<User> | Promise<Nullable<User>>;
                                                  +
                                                  +    abstract workspaces(): Nullable<Nullable<Workspace>[]> | Promise<Nullable<Nullable<Workspace>[]>>;
                                                  +
                                                  +    abstract workspace(workspace_id: string): Nullable<Workspace> | Promise<Nullable<Workspace>>;
                                                  +
                                                  +    abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise<WorkspaceMembers[]>;
                                                  +}
                                                  +
                                                  +export class CreateBoardPayload {
                                                  +    board?: Nullable<Board>;
                                                  +}
                                                  +
                                                  +export abstract class IMutation {
                                                  +    abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise<CreateBoardPayload>;
                                                  +
                                                  +    abstract updateBoard(input: UpdateBoardInput): Board | Promise<Board>;
                                                  +
                                                  +    abstract deleteBoard(board_id: string): Status | Promise<Status>;
                                                  +
                                                  +    abstract createList(input: CreateListInput): List | Promise<List>;
                                                  +
                                                  +    abstract updateList(input: UpdateListInput): List | Promise<List>;
                                                  +
                                                  +    abstract deleteList(list_id: string): Status | Promise<Status>;
                                                  +
                                                  +    abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise<List[]>;
                                                  +
                                                  +    abstract createCard(input: CreateCardInput): Card | Promise<Card>;
                                                  +
                                                  +    abstract updateCard(input: UpdateCardInput): Card | Promise<Card>;
                                                  +
                                                  +    abstract deleteCard(card_id: string): Status | Promise<Status>;
                                                  +
                                                  +    abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise<Card>;
                                                  +
                                                  +    abstract createLabel(input: CreateLabelInput): Label | Promise<Label>;
                                                  +
                                                  +    abstract updateLabel(input: UpdateLabelInput): Label | Promise<Label>;
                                                  +
                                                  +    abstract deleteLabel(label_id: string): Status | Promise<Status>;
                                                  +
                                                  +    abstract uploadFile(file: Upload): FileResponse | Promise<FileResponse>;
                                                  +
                                                  +    abstract createUser(input: CreateUserInput): Nullable<User> | Promise<Nullable<User>>;
                                                  +
                                                  +    abstract updateUser(input: UpdateUserInput): Nullable<User> | Promise<Nullable<User>>;
                                                  +
                                                  +    abstract deleteUser(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                                                  +
                                                  +    abstract login(input: LoginInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                                                  +
                                                  +    abstract register(input: RegisterInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                                                  +
                                                  +    abstract logout(): Status | Promise<Status>;
                                                  +
                                                  +    abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise<Workspace>;
                                                  +
                                                  +    abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise<Workspace>;
                                                  +
                                                  +    abstract deleteWorkspace(workspace_id: string): Status | Promise<Status>;
                                                  +
                                                  +    abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                                                  +
                                                  +    abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                                                  +
                                                  +    abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                                                  +
                                                  +    abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise<Status>;
                                                  +
                                                  +    abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                                                  +}
                                                  +
                                                  +export class Success {
                                                  +    successMessage?: Nullable<string>;
                                                  +}
                                                  +
                                                  +export class Error {
                                                  +    errorMessage: string;
                                                  +    code?: Nullable<string>;
                                                  +}
                                                  +
                                                  +export class FileResponse {
                                                  +    success: boolean;
                                                  +    url?: Nullable<string>;
                                                  +    message?: Nullable<string>;
                                                  +}
                                                  +
                                                  +export class User {
                                                  +    user_id: string;
                                                  +    username: string;
                                                  +    email: string;
                                                  +    picture?: Nullable<string>;
                                                  +    created_at: DateTime;
                                                  +}
                                                  +
                                                  +export class AuthSuccess {
                                                  +    token: string;
                                                  +    user: User;
                                                  +}
                                                  +
                                                  +export class AuthError {
                                                  +    message: string;
                                                  +    code?: Nullable<string>;
                                                  +    field?: Nullable<string>;
                                                  +}
                                                  +
                                                  +export class Workspace {
                                                  +    workspace_id: string;
                                                  +    name: string;
                                                  +    color: string;
                                                  +    description?: Nullable<string>;
                                                  +    owner_id: string;
                                                  +    owner: User;
                                                  +    members: WorkspaceMembers[];
                                                  +    boards?: Nullable<Nullable<Board>[]>;
                                                  +    labels?: Nullable<Nullable<Label>[]>;
                                                  +    is_pinned: boolean;
                                                  +}
                                                  +
                                                  +export class WorkspaceMembers {
                                                  +    workspace_id: string;
                                                  +    user_id: string;
                                                  +    role: string;
                                                  +    user: User;
                                                  +    workspace: Workspace;
                                                  +}
                                                  +
                                                  +export class PinWorkspacePayload {
                                                  +    workspace: Workspace;
                                                  +}
                                                  +
                                                  +export type DateTime = any;
                                                  +export type Upload = any;
                                                  +export type Status = Success | Error;
                                                  +export type AuthResult = AuthSuccess | AuthError;
                                                  +type Nullable<T> = T | null;
                                                  +
                                                  +
                                                  +
                                                  + + + + + + + + + +
                                                  +
                                                  +

                                                  results matching ""

                                                  +
                                                    +
                                                    +
                                                    +

                                                    No results matching ""

                                                    +
                                                    +
                                                    +
                                                    + +
                                                    +
                                                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/classes/PinWorkspacePayload.html b/backend/documentation/classes/PinWorkspacePayload.html new file mode 100644 index 0000000..98de4ba --- /dev/null +++ b/backend/documentation/classes/PinWorkspacePayload.html @@ -0,0 +1,633 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                                                    +
                                                    + + +
                                                    +
                                                    + + + + + + + + + + + + + + + + + + + + +
                                                    +
                                                    +

                                                    +

                                                    File

                                                    +

                                                    +

                                                    + src/graphql/graphql.ts +

                                                    + + + + + + +
                                                    +

                                                    Index

                                                    + + + + + + + + + + + + + + + +
                                                    +
                                                    Properties
                                                    +
                                                    + +
                                                    +
                                                    + + +
                                                    + +

                                                    + Properties +

                                                    + + + + + + + + + + + + + + +
                                                    + + + workspace + + +
                                                    + Type : Workspace + +
                                                    + +
                                                    +
                                                    + + + + + + + +
                                                    + + +
                                                    +
                                                    export enum Role {
                                                    +    Admin = "Admin",
                                                    +    Member = "Member",
                                                    +    Viewer = "Viewer"
                                                    +}
                                                    +
                                                    +export class CreateBoardInput {
                                                    +    title: string;
                                                    +    description?: Nullable<string>;
                                                    +    color: string;
                                                    +    workspace_id: string;
                                                    +}
                                                    +
                                                    +export class UpdateBoardInput {
                                                    +    board_id: string;
                                                    +    title?: Nullable<string>;
                                                    +    description?: Nullable<string>;
                                                    +    color?: Nullable<string>;
                                                    +}
                                                    +
                                                    +export class CreateListInput {
                                                    +    title: string;
                                                    +    board_id: string;
                                                    +    position: number;
                                                    +    color?: Nullable<string>;
                                                    +}
                                                    +
                                                    +export class UpdateListInput {
                                                    +    list_id: string;
                                                    +    title?: Nullable<string>;
                                                    +    position?: Nullable<number>;
                                                    +    color?: Nullable<string>;
                                                    +}
                                                    +
                                                    +export class CreateCardInput {
                                                    +    title: string;
                                                    +    list_id: string;
                                                    +    description?: Nullable<string>;
                                                    +    position: number;
                                                    +    due_date?: Nullable<DateTime>;
                                                    +}
                                                    +
                                                    +export class UpdateCardInput {
                                                    +    card_id: string;
                                                    +    title?: Nullable<string>;
                                                    +    description?: Nullable<string>;
                                                    +    position?: Nullable<number>;
                                                    +    due_date?: Nullable<DateTime>;
                                                    +}
                                                    +
                                                    +export class CreateLabelInput {
                                                    +    name: string;
                                                    +    color: string;
                                                    +    board_id: string;
                                                    +}
                                                    +
                                                    +export class UpdateLabelInput {
                                                    +    label_id: string;
                                                    +    name?: Nullable<string>;
                                                    +    color?: Nullable<string>;
                                                    +}
                                                    +
                                                    +export class LoginInput {
                                                    +    email: string;
                                                    +    password: string;
                                                    +}
                                                    +
                                                    +export class RegisterInput {
                                                    +    username: string;
                                                    +    email: string;
                                                    +    password: string;
                                                    +}
                                                    +
                                                    +export class CreateUserInput {
                                                    +    username: string;
                                                    +    email: string;
                                                    +    password: string;
                                                    +}
                                                    +
                                                    +export class UpdateUserInput {
                                                    +    user_id: string;
                                                    +    username?: Nullable<string>;
                                                    +    email?: Nullable<string>;
                                                    +    password?: Nullable<string>;
                                                    +}
                                                    +
                                                    +export class CreateWorkspaceInput {
                                                    +    name: string;
                                                    +    description?: Nullable<string>;
                                                    +    color?: Nullable<string>;
                                                    +}
                                                    +
                                                    +export class UpdateWorkspaceInput {
                                                    +    name?: Nullable<string>;
                                                    +    description?: Nullable<string>;
                                                    +    color?: Nullable<string>;
                                                    +}
                                                    +
                                                    +export class AddWorkspaceMemberInput {
                                                    +    workspace_id: string;
                                                    +    user_email: string;
                                                    +    role?: Nullable<Role>;
                                                    +}
                                                    +
                                                    +export class UpdateMemberRoleInput {
                                                    +    workspace_id: string;
                                                    +    user_id: string;
                                                    +    role: Role;
                                                    +}
                                                    +
                                                    +export class Board {
                                                    +    board_id: string;
                                                    +    title: string;
                                                    +    description?: Nullable<string>;
                                                    +    color: string;
                                                    +    lists: List[];
                                                    +    workspace_id: string;
                                                    +}
                                                    +
                                                    +export class List {
                                                    +    list_id: string;
                                                    +    title: string;
                                                    +    position: number;
                                                    +    color: string;
                                                    +    board_id: string;
                                                    +    cards?: Nullable<Nullable<Card>[]>;
                                                    +}
                                                    +
                                                    +export class Card {
                                                    +    card_id: string;
                                                    +    title: string;
                                                    +    description?: Nullable<string>;
                                                    +    position: number;
                                                    +    list_id: string;
                                                    +    labels?: Nullable<Nullable<Label>[]>;
                                                    +    due_date?: Nullable<DateTime>;
                                                    +    comments?: Nullable<Nullable<Comment>[]>;
                                                    +    attachments?: Nullable<Nullable<Attachment>[]>;
                                                    +    members?: Nullable<Nullable<CardMember>[]>;
                                                    +}
                                                    +
                                                    +export class Comment {
                                                    +    comment_id: string;
                                                    +    content: string;
                                                    +    created_at: DateTime;
                                                    +    card_id: string;
                                                    +    user_id: string;
                                                    +}
                                                    +
                                                    +export class Label {
                                                    +    label_id: string;
                                                    +    name: string;
                                                    +    color: string;
                                                    +    workspace_id: string;
                                                    +}
                                                    +
                                                    +export class Attachment {
                                                    +    attachment_id: string;
                                                    +    card_id: string;
                                                    +    url: string;
                                                    +    filename: string;
                                                    +}
                                                    +
                                                    +export class CardLabel {
                                                    +    card_id: string;
                                                    +    label_id: string;
                                                    +}
                                                    +
                                                    +export class CardMember {
                                                    +    card_id: string;
                                                    +    user_id: string;
                                                    +}
                                                    +
                                                    +export abstract class IQuery {
                                                    +    abstract boards(workspace_id: string): Nullable<Nullable<Board>[]> | Promise<Nullable<Nullable<Board>[]>>;
                                                    +
                                                    +    abstract board(board_id: string): Nullable<Board> | Promise<Nullable<Board>>;
                                                    +
                                                    +    abstract lists(board_id: string): Nullable<Nullable<List>[]> | Promise<Nullable<Nullable<List>[]>>;
                                                    +
                                                    +    abstract list(list_id: string): Nullable<List> | Promise<Nullable<List>>;
                                                    +
                                                    +    abstract cards(list_id: string): Nullable<Nullable<Card>[]> | Promise<Nullable<Nullable<Card>[]>>;
                                                    +
                                                    +    abstract card(card_id: string): Nullable<Card> | Promise<Nullable<Card>>;
                                                    +
                                                    +    abstract labels(workspace_id: string): Nullable<Nullable<Label>[]> | Promise<Nullable<Nullable<Label>[]>>;
                                                    +
                                                    +    abstract comments(card_id: string): Nullable<Nullable<Comment>[]> | Promise<Nullable<Nullable<Comment>[]>>;
                                                    +
                                                    +    abstract users(): Nullable<Nullable<User>[]> | Promise<Nullable<Nullable<User>[]>>;
                                                    +
                                                    +    abstract user(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                                                    +
                                                    +    abstract me(): Nullable<User> | Promise<Nullable<User>>;
                                                    +
                                                    +    abstract workspaces(): Nullable<Nullable<Workspace>[]> | Promise<Nullable<Nullable<Workspace>[]>>;
                                                    +
                                                    +    abstract workspace(workspace_id: string): Nullable<Workspace> | Promise<Nullable<Workspace>>;
                                                    +
                                                    +    abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise<WorkspaceMembers[]>;
                                                    +}
                                                    +
                                                    +export class CreateBoardPayload {
                                                    +    board?: Nullable<Board>;
                                                    +}
                                                    +
                                                    +export abstract class IMutation {
                                                    +    abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise<CreateBoardPayload>;
                                                    +
                                                    +    abstract updateBoard(input: UpdateBoardInput): Board | Promise<Board>;
                                                    +
                                                    +    abstract deleteBoard(board_id: string): Status | Promise<Status>;
                                                    +
                                                    +    abstract createList(input: CreateListInput): List | Promise<List>;
                                                    +
                                                    +    abstract updateList(input: UpdateListInput): List | Promise<List>;
                                                    +
                                                    +    abstract deleteList(list_id: string): Status | Promise<Status>;
                                                    +
                                                    +    abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise<List[]>;
                                                    +
                                                    +    abstract createCard(input: CreateCardInput): Card | Promise<Card>;
                                                    +
                                                    +    abstract updateCard(input: UpdateCardInput): Card | Promise<Card>;
                                                    +
                                                    +    abstract deleteCard(card_id: string): Status | Promise<Status>;
                                                    +
                                                    +    abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise<Card>;
                                                    +
                                                    +    abstract createLabel(input: CreateLabelInput): Label | Promise<Label>;
                                                    +
                                                    +    abstract updateLabel(input: UpdateLabelInput): Label | Promise<Label>;
                                                    +
                                                    +    abstract deleteLabel(label_id: string): Status | Promise<Status>;
                                                    +
                                                    +    abstract uploadFile(file: Upload): FileResponse | Promise<FileResponse>;
                                                    +
                                                    +    abstract createUser(input: CreateUserInput): Nullable<User> | Promise<Nullable<User>>;
                                                    +
                                                    +    abstract updateUser(input: UpdateUserInput): Nullable<User> | Promise<Nullable<User>>;
                                                    +
                                                    +    abstract deleteUser(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                                                    +
                                                    +    abstract login(input: LoginInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                                                    +
                                                    +    abstract register(input: RegisterInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                                                    +
                                                    +    abstract logout(): Status | Promise<Status>;
                                                    +
                                                    +    abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise<Workspace>;
                                                    +
                                                    +    abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise<Workspace>;
                                                    +
                                                    +    abstract deleteWorkspace(workspace_id: string): Status | Promise<Status>;
                                                    +
                                                    +    abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                                                    +
                                                    +    abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                                                    +
                                                    +    abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                                                    +
                                                    +    abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise<Status>;
                                                    +
                                                    +    abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                                                    +}
                                                    +
                                                    +export class Success {
                                                    +    successMessage?: Nullable<string>;
                                                    +}
                                                    +
                                                    +export class Error {
                                                    +    errorMessage: string;
                                                    +    code?: Nullable<string>;
                                                    +}
                                                    +
                                                    +export class FileResponse {
                                                    +    success: boolean;
                                                    +    url?: Nullable<string>;
                                                    +    message?: Nullable<string>;
                                                    +}
                                                    +
                                                    +export class User {
                                                    +    user_id: string;
                                                    +    username: string;
                                                    +    email: string;
                                                    +    picture?: Nullable<string>;
                                                    +    created_at: DateTime;
                                                    +}
                                                    +
                                                    +export class AuthSuccess {
                                                    +    token: string;
                                                    +    user: User;
                                                    +}
                                                    +
                                                    +export class AuthError {
                                                    +    message: string;
                                                    +    code?: Nullable<string>;
                                                    +    field?: Nullable<string>;
                                                    +}
                                                    +
                                                    +export class Workspace {
                                                    +    workspace_id: string;
                                                    +    name: string;
                                                    +    color: string;
                                                    +    description?: Nullable<string>;
                                                    +    owner_id: string;
                                                    +    owner: User;
                                                    +    members: WorkspaceMembers[];
                                                    +    boards?: Nullable<Nullable<Board>[]>;
                                                    +    labels?: Nullable<Nullable<Label>[]>;
                                                    +    is_pinned: boolean;
                                                    +}
                                                    +
                                                    +export class WorkspaceMembers {
                                                    +    workspace_id: string;
                                                    +    user_id: string;
                                                    +    role: string;
                                                    +    user: User;
                                                    +    workspace: Workspace;
                                                    +}
                                                    +
                                                    +export class PinWorkspacePayload {
                                                    +    workspace: Workspace;
                                                    +}
                                                    +
                                                    +export type DateTime = any;
                                                    +export type Upload = any;
                                                    +export type Status = Success | Error;
                                                    +export type AuthResult = AuthSuccess | AuthError;
                                                    +type Nullable<T> = T | null;
                                                    +
                                                    +
                                                    +
                                                    + + + + + + + + + +
                                                    +
                                                    +

                                                    results matching ""

                                                    +
                                                      +
                                                      +
                                                      +

                                                      No results matching ""

                                                      +
                                                      +
                                                      +
                                                      + +
                                                      +
                                                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/classes/RegisterInput.html b/backend/documentation/classes/RegisterInput.html new file mode 100644 index 0000000..cff9d05 --- /dev/null +++ b/backend/documentation/classes/RegisterInput.html @@ -0,0 +1,691 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                                                      +
                                                      + + +
                                                      +
                                                      + + + + + + + + + + + + + + + + + + + + +
                                                      +
                                                      +

                                                      +

                                                      File

                                                      +

                                                      +

                                                      + src/graphql/graphql.ts +

                                                      + + + + + + +
                                                      +

                                                      Index

                                                      + + + + + + + + + + + + + + + +
                                                      +
                                                      Properties
                                                      +
                                                      + +
                                                      +
                                                      + + +
                                                      + +

                                                      + Properties +

                                                      + + + + + + + + + + + + + + +
                                                      + + + email + + +
                                                      + Type : string + +
                                                      + +
                                                      + + + + + + + + + + + + + + +
                                                      + + + password + + +
                                                      + Type : string + +
                                                      + +
                                                      + + + + + + + + + + + + + + +
                                                      + + + username + + +
                                                      + Type : string + +
                                                      + +
                                                      +
                                                      + + + + + + + +
                                                      + + +
                                                      +
                                                      export enum Role {
                                                      +    Admin = "Admin",
                                                      +    Member = "Member",
                                                      +    Viewer = "Viewer"
                                                      +}
                                                      +
                                                      +export class CreateBoardInput {
                                                      +    title: string;
                                                      +    description?: Nullable<string>;
                                                      +    color: string;
                                                      +    workspace_id: string;
                                                      +}
                                                      +
                                                      +export class UpdateBoardInput {
                                                      +    board_id: string;
                                                      +    title?: Nullable<string>;
                                                      +    description?: Nullable<string>;
                                                      +    color?: Nullable<string>;
                                                      +}
                                                      +
                                                      +export class CreateListInput {
                                                      +    title: string;
                                                      +    board_id: string;
                                                      +    position: number;
                                                      +    color?: Nullable<string>;
                                                      +}
                                                      +
                                                      +export class UpdateListInput {
                                                      +    list_id: string;
                                                      +    title?: Nullable<string>;
                                                      +    position?: Nullable<number>;
                                                      +    color?: Nullable<string>;
                                                      +}
                                                      +
                                                      +export class CreateCardInput {
                                                      +    title: string;
                                                      +    list_id: string;
                                                      +    description?: Nullable<string>;
                                                      +    position: number;
                                                      +    due_date?: Nullable<DateTime>;
                                                      +}
                                                      +
                                                      +export class UpdateCardInput {
                                                      +    card_id: string;
                                                      +    title?: Nullable<string>;
                                                      +    description?: Nullable<string>;
                                                      +    position?: Nullable<number>;
                                                      +    due_date?: Nullable<DateTime>;
                                                      +}
                                                      +
                                                      +export class CreateLabelInput {
                                                      +    name: string;
                                                      +    color: string;
                                                      +    board_id: string;
                                                      +}
                                                      +
                                                      +export class UpdateLabelInput {
                                                      +    label_id: string;
                                                      +    name?: Nullable<string>;
                                                      +    color?: Nullable<string>;
                                                      +}
                                                      +
                                                      +export class LoginInput {
                                                      +    email: string;
                                                      +    password: string;
                                                      +}
                                                      +
                                                      +export class RegisterInput {
                                                      +    username: string;
                                                      +    email: string;
                                                      +    password: string;
                                                      +}
                                                      +
                                                      +export class CreateUserInput {
                                                      +    username: string;
                                                      +    email: string;
                                                      +    password: string;
                                                      +}
                                                      +
                                                      +export class UpdateUserInput {
                                                      +    user_id: string;
                                                      +    username?: Nullable<string>;
                                                      +    email?: Nullable<string>;
                                                      +    password?: Nullable<string>;
                                                      +}
                                                      +
                                                      +export class CreateWorkspaceInput {
                                                      +    name: string;
                                                      +    description?: Nullable<string>;
                                                      +    color?: Nullable<string>;
                                                      +}
                                                      +
                                                      +export class UpdateWorkspaceInput {
                                                      +    name?: Nullable<string>;
                                                      +    description?: Nullable<string>;
                                                      +    color?: Nullable<string>;
                                                      +}
                                                      +
                                                      +export class AddWorkspaceMemberInput {
                                                      +    workspace_id: string;
                                                      +    user_email: string;
                                                      +    role?: Nullable<Role>;
                                                      +}
                                                      +
                                                      +export class UpdateMemberRoleInput {
                                                      +    workspace_id: string;
                                                      +    user_id: string;
                                                      +    role: Role;
                                                      +}
                                                      +
                                                      +export class Board {
                                                      +    board_id: string;
                                                      +    title: string;
                                                      +    description?: Nullable<string>;
                                                      +    color: string;
                                                      +    lists: List[];
                                                      +    workspace_id: string;
                                                      +}
                                                      +
                                                      +export class List {
                                                      +    list_id: string;
                                                      +    title: string;
                                                      +    position: number;
                                                      +    color: string;
                                                      +    board_id: string;
                                                      +    cards?: Nullable<Nullable<Card>[]>;
                                                      +}
                                                      +
                                                      +export class Card {
                                                      +    card_id: string;
                                                      +    title: string;
                                                      +    description?: Nullable<string>;
                                                      +    position: number;
                                                      +    list_id: string;
                                                      +    labels?: Nullable<Nullable<Label>[]>;
                                                      +    due_date?: Nullable<DateTime>;
                                                      +    comments?: Nullable<Nullable<Comment>[]>;
                                                      +    attachments?: Nullable<Nullable<Attachment>[]>;
                                                      +    members?: Nullable<Nullable<CardMember>[]>;
                                                      +}
                                                      +
                                                      +export class Comment {
                                                      +    comment_id: string;
                                                      +    content: string;
                                                      +    created_at: DateTime;
                                                      +    card_id: string;
                                                      +    user_id: string;
                                                      +}
                                                      +
                                                      +export class Label {
                                                      +    label_id: string;
                                                      +    name: string;
                                                      +    color: string;
                                                      +    workspace_id: string;
                                                      +}
                                                      +
                                                      +export class Attachment {
                                                      +    attachment_id: string;
                                                      +    card_id: string;
                                                      +    url: string;
                                                      +    filename: string;
                                                      +}
                                                      +
                                                      +export class CardLabel {
                                                      +    card_id: string;
                                                      +    label_id: string;
                                                      +}
                                                      +
                                                      +export class CardMember {
                                                      +    card_id: string;
                                                      +    user_id: string;
                                                      +}
                                                      +
                                                      +export abstract class IQuery {
                                                      +    abstract boards(workspace_id: string): Nullable<Nullable<Board>[]> | Promise<Nullable<Nullable<Board>[]>>;
                                                      +
                                                      +    abstract board(board_id: string): Nullable<Board> | Promise<Nullable<Board>>;
                                                      +
                                                      +    abstract lists(board_id: string): Nullable<Nullable<List>[]> | Promise<Nullable<Nullable<List>[]>>;
                                                      +
                                                      +    abstract list(list_id: string): Nullable<List> | Promise<Nullable<List>>;
                                                      +
                                                      +    abstract cards(list_id: string): Nullable<Nullable<Card>[]> | Promise<Nullable<Nullable<Card>[]>>;
                                                      +
                                                      +    abstract card(card_id: string): Nullable<Card> | Promise<Nullable<Card>>;
                                                      +
                                                      +    abstract labels(workspace_id: string): Nullable<Nullable<Label>[]> | Promise<Nullable<Nullable<Label>[]>>;
                                                      +
                                                      +    abstract comments(card_id: string): Nullable<Nullable<Comment>[]> | Promise<Nullable<Nullable<Comment>[]>>;
                                                      +
                                                      +    abstract users(): Nullable<Nullable<User>[]> | Promise<Nullable<Nullable<User>[]>>;
                                                      +
                                                      +    abstract user(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                                                      +
                                                      +    abstract me(): Nullable<User> | Promise<Nullable<User>>;
                                                      +
                                                      +    abstract workspaces(): Nullable<Nullable<Workspace>[]> | Promise<Nullable<Nullable<Workspace>[]>>;
                                                      +
                                                      +    abstract workspace(workspace_id: string): Nullable<Workspace> | Promise<Nullable<Workspace>>;
                                                      +
                                                      +    abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise<WorkspaceMembers[]>;
                                                      +}
                                                      +
                                                      +export class CreateBoardPayload {
                                                      +    board?: Nullable<Board>;
                                                      +}
                                                      +
                                                      +export abstract class IMutation {
                                                      +    abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise<CreateBoardPayload>;
                                                      +
                                                      +    abstract updateBoard(input: UpdateBoardInput): Board | Promise<Board>;
                                                      +
                                                      +    abstract deleteBoard(board_id: string): Status | Promise<Status>;
                                                      +
                                                      +    abstract createList(input: CreateListInput): List | Promise<List>;
                                                      +
                                                      +    abstract updateList(input: UpdateListInput): List | Promise<List>;
                                                      +
                                                      +    abstract deleteList(list_id: string): Status | Promise<Status>;
                                                      +
                                                      +    abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise<List[]>;
                                                      +
                                                      +    abstract createCard(input: CreateCardInput): Card | Promise<Card>;
                                                      +
                                                      +    abstract updateCard(input: UpdateCardInput): Card | Promise<Card>;
                                                      +
                                                      +    abstract deleteCard(card_id: string): Status | Promise<Status>;
                                                      +
                                                      +    abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise<Card>;
                                                      +
                                                      +    abstract createLabel(input: CreateLabelInput): Label | Promise<Label>;
                                                      +
                                                      +    abstract updateLabel(input: UpdateLabelInput): Label | Promise<Label>;
                                                      +
                                                      +    abstract deleteLabel(label_id: string): Status | Promise<Status>;
                                                      +
                                                      +    abstract uploadFile(file: Upload): FileResponse | Promise<FileResponse>;
                                                      +
                                                      +    abstract createUser(input: CreateUserInput): Nullable<User> | Promise<Nullable<User>>;
                                                      +
                                                      +    abstract updateUser(input: UpdateUserInput): Nullable<User> | Promise<Nullable<User>>;
                                                      +
                                                      +    abstract deleteUser(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                                                      +
                                                      +    abstract login(input: LoginInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                                                      +
                                                      +    abstract register(input: RegisterInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                                                      +
                                                      +    abstract logout(): Status | Promise<Status>;
                                                      +
                                                      +    abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise<Workspace>;
                                                      +
                                                      +    abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise<Workspace>;
                                                      +
                                                      +    abstract deleteWorkspace(workspace_id: string): Status | Promise<Status>;
                                                      +
                                                      +    abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                                                      +
                                                      +    abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                                                      +
                                                      +    abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                                                      +
                                                      +    abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise<Status>;
                                                      +
                                                      +    abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                                                      +}
                                                      +
                                                      +export class Success {
                                                      +    successMessage?: Nullable<string>;
                                                      +}
                                                      +
                                                      +export class Error {
                                                      +    errorMessage: string;
                                                      +    code?: Nullable<string>;
                                                      +}
                                                      +
                                                      +export class FileResponse {
                                                      +    success: boolean;
                                                      +    url?: Nullable<string>;
                                                      +    message?: Nullable<string>;
                                                      +}
                                                      +
                                                      +export class User {
                                                      +    user_id: string;
                                                      +    username: string;
                                                      +    email: string;
                                                      +    picture?: Nullable<string>;
                                                      +    created_at: DateTime;
                                                      +}
                                                      +
                                                      +export class AuthSuccess {
                                                      +    token: string;
                                                      +    user: User;
                                                      +}
                                                      +
                                                      +export class AuthError {
                                                      +    message: string;
                                                      +    code?: Nullable<string>;
                                                      +    field?: Nullable<string>;
                                                      +}
                                                      +
                                                      +export class Workspace {
                                                      +    workspace_id: string;
                                                      +    name: string;
                                                      +    color: string;
                                                      +    description?: Nullable<string>;
                                                      +    owner_id: string;
                                                      +    owner: User;
                                                      +    members: WorkspaceMembers[];
                                                      +    boards?: Nullable<Nullable<Board>[]>;
                                                      +    labels?: Nullable<Nullable<Label>[]>;
                                                      +    is_pinned: boolean;
                                                      +}
                                                      +
                                                      +export class WorkspaceMembers {
                                                      +    workspace_id: string;
                                                      +    user_id: string;
                                                      +    role: string;
                                                      +    user: User;
                                                      +    workspace: Workspace;
                                                      +}
                                                      +
                                                      +export class PinWorkspacePayload {
                                                      +    workspace: Workspace;
                                                      +}
                                                      +
                                                      +export type DateTime = any;
                                                      +export type Upload = any;
                                                      +export type Status = Success | Error;
                                                      +export type AuthResult = AuthSuccess | AuthError;
                                                      +type Nullable<T> = T | null;
                                                      +
                                                      +
                                                      +
                                                      + + + + + + + + + +
                                                      +
                                                      +

                                                      results matching ""

                                                      +
                                                        +
                                                        +
                                                        +

                                                        No results matching ""

                                                        +
                                                        +
                                                        +
                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/classes/Success.html b/backend/documentation/classes/Success.html new file mode 100644 index 0000000..89cd397 --- /dev/null +++ b/backend/documentation/classes/Success.html @@ -0,0 +1,635 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                                                        +
                                                        + + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + +
                                                        +
                                                        +

                                                        +

                                                        File

                                                        +

                                                        +

                                                        + src/graphql/graphql.ts +

                                                        + + + + + + +
                                                        +

                                                        Index

                                                        + + + + + + + + + + + + + + + +
                                                        +
                                                        Properties
                                                        +
                                                        + +
                                                        +
                                                        + + +
                                                        + +

                                                        + Properties +

                                                        + + + + + + + + + + + + + + +
                                                        + + + Optional + successMessage + + +
                                                        + Type : Nullable<string> + +
                                                        + +
                                                        +
                                                        + + + + + + + +
                                                        + + +
                                                        +
                                                        export enum Role {
                                                        +    Admin = "Admin",
                                                        +    Member = "Member",
                                                        +    Viewer = "Viewer"
                                                        +}
                                                        +
                                                        +export class CreateBoardInput {
                                                        +    title: string;
                                                        +    description?: Nullable<string>;
                                                        +    color: string;
                                                        +    workspace_id: string;
                                                        +}
                                                        +
                                                        +export class UpdateBoardInput {
                                                        +    board_id: string;
                                                        +    title?: Nullable<string>;
                                                        +    description?: Nullable<string>;
                                                        +    color?: Nullable<string>;
                                                        +}
                                                        +
                                                        +export class CreateListInput {
                                                        +    title: string;
                                                        +    board_id: string;
                                                        +    position: number;
                                                        +    color?: Nullable<string>;
                                                        +}
                                                        +
                                                        +export class UpdateListInput {
                                                        +    list_id: string;
                                                        +    title?: Nullable<string>;
                                                        +    position?: Nullable<number>;
                                                        +    color?: Nullable<string>;
                                                        +}
                                                        +
                                                        +export class CreateCardInput {
                                                        +    title: string;
                                                        +    list_id: string;
                                                        +    description?: Nullable<string>;
                                                        +    position: number;
                                                        +    due_date?: Nullable<DateTime>;
                                                        +}
                                                        +
                                                        +export class UpdateCardInput {
                                                        +    card_id: string;
                                                        +    title?: Nullable<string>;
                                                        +    description?: Nullable<string>;
                                                        +    position?: Nullable<number>;
                                                        +    due_date?: Nullable<DateTime>;
                                                        +}
                                                        +
                                                        +export class CreateLabelInput {
                                                        +    name: string;
                                                        +    color: string;
                                                        +    board_id: string;
                                                        +}
                                                        +
                                                        +export class UpdateLabelInput {
                                                        +    label_id: string;
                                                        +    name?: Nullable<string>;
                                                        +    color?: Nullable<string>;
                                                        +}
                                                        +
                                                        +export class LoginInput {
                                                        +    email: string;
                                                        +    password: string;
                                                        +}
                                                        +
                                                        +export class RegisterInput {
                                                        +    username: string;
                                                        +    email: string;
                                                        +    password: string;
                                                        +}
                                                        +
                                                        +export class CreateUserInput {
                                                        +    username: string;
                                                        +    email: string;
                                                        +    password: string;
                                                        +}
                                                        +
                                                        +export class UpdateUserInput {
                                                        +    user_id: string;
                                                        +    username?: Nullable<string>;
                                                        +    email?: Nullable<string>;
                                                        +    password?: Nullable<string>;
                                                        +}
                                                        +
                                                        +export class CreateWorkspaceInput {
                                                        +    name: string;
                                                        +    description?: Nullable<string>;
                                                        +    color?: Nullable<string>;
                                                        +}
                                                        +
                                                        +export class UpdateWorkspaceInput {
                                                        +    name?: Nullable<string>;
                                                        +    description?: Nullable<string>;
                                                        +    color?: Nullable<string>;
                                                        +}
                                                        +
                                                        +export class AddWorkspaceMemberInput {
                                                        +    workspace_id: string;
                                                        +    user_email: string;
                                                        +    role?: Nullable<Role>;
                                                        +}
                                                        +
                                                        +export class UpdateMemberRoleInput {
                                                        +    workspace_id: string;
                                                        +    user_id: string;
                                                        +    role: Role;
                                                        +}
                                                        +
                                                        +export class Board {
                                                        +    board_id: string;
                                                        +    title: string;
                                                        +    description?: Nullable<string>;
                                                        +    color: string;
                                                        +    lists: List[];
                                                        +    workspace_id: string;
                                                        +}
                                                        +
                                                        +export class List {
                                                        +    list_id: string;
                                                        +    title: string;
                                                        +    position: number;
                                                        +    color: string;
                                                        +    board_id: string;
                                                        +    cards?: Nullable<Nullable<Card>[]>;
                                                        +}
                                                        +
                                                        +export class Card {
                                                        +    card_id: string;
                                                        +    title: string;
                                                        +    description?: Nullable<string>;
                                                        +    position: number;
                                                        +    list_id: string;
                                                        +    labels?: Nullable<Nullable<Label>[]>;
                                                        +    due_date?: Nullable<DateTime>;
                                                        +    comments?: Nullable<Nullable<Comment>[]>;
                                                        +    attachments?: Nullable<Nullable<Attachment>[]>;
                                                        +    members?: Nullable<Nullable<CardMember>[]>;
                                                        +}
                                                        +
                                                        +export class Comment {
                                                        +    comment_id: string;
                                                        +    content: string;
                                                        +    created_at: DateTime;
                                                        +    card_id: string;
                                                        +    user_id: string;
                                                        +}
                                                        +
                                                        +export class Label {
                                                        +    label_id: string;
                                                        +    name: string;
                                                        +    color: string;
                                                        +    workspace_id: string;
                                                        +}
                                                        +
                                                        +export class Attachment {
                                                        +    attachment_id: string;
                                                        +    card_id: string;
                                                        +    url: string;
                                                        +    filename: string;
                                                        +}
                                                        +
                                                        +export class CardLabel {
                                                        +    card_id: string;
                                                        +    label_id: string;
                                                        +}
                                                        +
                                                        +export class CardMember {
                                                        +    card_id: string;
                                                        +    user_id: string;
                                                        +}
                                                        +
                                                        +export abstract class IQuery {
                                                        +    abstract boards(workspace_id: string): Nullable<Nullable<Board>[]> | Promise<Nullable<Nullable<Board>[]>>;
                                                        +
                                                        +    abstract board(board_id: string): Nullable<Board> | Promise<Nullable<Board>>;
                                                        +
                                                        +    abstract lists(board_id: string): Nullable<Nullable<List>[]> | Promise<Nullable<Nullable<List>[]>>;
                                                        +
                                                        +    abstract list(list_id: string): Nullable<List> | Promise<Nullable<List>>;
                                                        +
                                                        +    abstract cards(list_id: string): Nullable<Nullable<Card>[]> | Promise<Nullable<Nullable<Card>[]>>;
                                                        +
                                                        +    abstract card(card_id: string): Nullable<Card> | Promise<Nullable<Card>>;
                                                        +
                                                        +    abstract labels(workspace_id: string): Nullable<Nullable<Label>[]> | Promise<Nullable<Nullable<Label>[]>>;
                                                        +
                                                        +    abstract comments(card_id: string): Nullable<Nullable<Comment>[]> | Promise<Nullable<Nullable<Comment>[]>>;
                                                        +
                                                        +    abstract users(): Nullable<Nullable<User>[]> | Promise<Nullable<Nullable<User>[]>>;
                                                        +
                                                        +    abstract user(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                                                        +
                                                        +    abstract me(): Nullable<User> | Promise<Nullable<User>>;
                                                        +
                                                        +    abstract workspaces(): Nullable<Nullable<Workspace>[]> | Promise<Nullable<Nullable<Workspace>[]>>;
                                                        +
                                                        +    abstract workspace(workspace_id: string): Nullable<Workspace> | Promise<Nullable<Workspace>>;
                                                        +
                                                        +    abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise<WorkspaceMembers[]>;
                                                        +}
                                                        +
                                                        +export class CreateBoardPayload {
                                                        +    board?: Nullable<Board>;
                                                        +}
                                                        +
                                                        +export abstract class IMutation {
                                                        +    abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise<CreateBoardPayload>;
                                                        +
                                                        +    abstract updateBoard(input: UpdateBoardInput): Board | Promise<Board>;
                                                        +
                                                        +    abstract deleteBoard(board_id: string): Status | Promise<Status>;
                                                        +
                                                        +    abstract createList(input: CreateListInput): List | Promise<List>;
                                                        +
                                                        +    abstract updateList(input: UpdateListInput): List | Promise<List>;
                                                        +
                                                        +    abstract deleteList(list_id: string): Status | Promise<Status>;
                                                        +
                                                        +    abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise<List[]>;
                                                        +
                                                        +    abstract createCard(input: CreateCardInput): Card | Promise<Card>;
                                                        +
                                                        +    abstract updateCard(input: UpdateCardInput): Card | Promise<Card>;
                                                        +
                                                        +    abstract deleteCard(card_id: string): Status | Promise<Status>;
                                                        +
                                                        +    abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise<Card>;
                                                        +
                                                        +    abstract createLabel(input: CreateLabelInput): Label | Promise<Label>;
                                                        +
                                                        +    abstract updateLabel(input: UpdateLabelInput): Label | Promise<Label>;
                                                        +
                                                        +    abstract deleteLabel(label_id: string): Status | Promise<Status>;
                                                        +
                                                        +    abstract uploadFile(file: Upload): FileResponse | Promise<FileResponse>;
                                                        +
                                                        +    abstract createUser(input: CreateUserInput): Nullable<User> | Promise<Nullable<User>>;
                                                        +
                                                        +    abstract updateUser(input: UpdateUserInput): Nullable<User> | Promise<Nullable<User>>;
                                                        +
                                                        +    abstract deleteUser(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                                                        +
                                                        +    abstract login(input: LoginInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                                                        +
                                                        +    abstract register(input: RegisterInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                                                        +
                                                        +    abstract logout(): Status | Promise<Status>;
                                                        +
                                                        +    abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise<Workspace>;
                                                        +
                                                        +    abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise<Workspace>;
                                                        +
                                                        +    abstract deleteWorkspace(workspace_id: string): Status | Promise<Status>;
                                                        +
                                                        +    abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                                                        +
                                                        +    abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                                                        +
                                                        +    abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                                                        +
                                                        +    abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise<Status>;
                                                        +
                                                        +    abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                                                        +}
                                                        +
                                                        +export class Success {
                                                        +    successMessage?: Nullable<string>;
                                                        +}
                                                        +
                                                        +export class Error {
                                                        +    errorMessage: string;
                                                        +    code?: Nullable<string>;
                                                        +}
                                                        +
                                                        +export class FileResponse {
                                                        +    success: boolean;
                                                        +    url?: Nullable<string>;
                                                        +    message?: Nullable<string>;
                                                        +}
                                                        +
                                                        +export class User {
                                                        +    user_id: string;
                                                        +    username: string;
                                                        +    email: string;
                                                        +    picture?: Nullable<string>;
                                                        +    created_at: DateTime;
                                                        +}
                                                        +
                                                        +export class AuthSuccess {
                                                        +    token: string;
                                                        +    user: User;
                                                        +}
                                                        +
                                                        +export class AuthError {
                                                        +    message: string;
                                                        +    code?: Nullable<string>;
                                                        +    field?: Nullable<string>;
                                                        +}
                                                        +
                                                        +export class Workspace {
                                                        +    workspace_id: string;
                                                        +    name: string;
                                                        +    color: string;
                                                        +    description?: Nullable<string>;
                                                        +    owner_id: string;
                                                        +    owner: User;
                                                        +    members: WorkspaceMembers[];
                                                        +    boards?: Nullable<Nullable<Board>[]>;
                                                        +    labels?: Nullable<Nullable<Label>[]>;
                                                        +    is_pinned: boolean;
                                                        +}
                                                        +
                                                        +export class WorkspaceMembers {
                                                        +    workspace_id: string;
                                                        +    user_id: string;
                                                        +    role: string;
                                                        +    user: User;
                                                        +    workspace: Workspace;
                                                        +}
                                                        +
                                                        +export class PinWorkspacePayload {
                                                        +    workspace: Workspace;
                                                        +}
                                                        +
                                                        +export type DateTime = any;
                                                        +export type Upload = any;
                                                        +export type Status = Success | Error;
                                                        +export type AuthResult = AuthSuccess | AuthError;
                                                        +type Nullable<T> = T | null;
                                                        +
                                                        +
                                                        +
                                                        + + + + + + + + + +
                                                        +
                                                        +

                                                        results matching ""

                                                        +
                                                          +
                                                          +
                                                          +

                                                          No results matching ""

                                                          +
                                                          +
                                                          +
                                                          + +
                                                          +
                                                          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/classes/UpdateBoardInput.html b/backend/documentation/classes/UpdateBoardInput.html new file mode 100644 index 0000000..d9aaf61 --- /dev/null +++ b/backend/documentation/classes/UpdateBoardInput.html @@ -0,0 +1,726 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                                                          +
                                                          + + +
                                                          +
                                                          + + + + + + + + + + + + + + + + + + + + +
                                                          +
                                                          +

                                                          +

                                                          File

                                                          +

                                                          +

                                                          + src/graphql/graphql.ts +

                                                          + + + + + + +
                                                          +

                                                          Index

                                                          + + + + + + + + + + + + + + + +
                                                          +
                                                          Properties
                                                          +
                                                          + +
                                                          +
                                                          + + +
                                                          + +

                                                          + Properties +

                                                          + + + + + + + + + + + + + + +
                                                          + + + board_id + + +
                                                          + Type : string + +
                                                          + +
                                                          + + + + + + + + + + + + + + +
                                                          + + + Optional + color + + +
                                                          + Type : Nullable<string> + +
                                                          + +
                                                          + + + + + + + + + + + + + + +
                                                          + + + Optional + description + + +
                                                          + Type : Nullable<string> + +
                                                          + +
                                                          + + + + + + + + + + + + + + +
                                                          + + + Optional + title + + +
                                                          + Type : Nullable<string> + +
                                                          + +
                                                          +
                                                          + + + + + + + +
                                                          + + +
                                                          +
                                                          export enum Role {
                                                          +    Admin = "Admin",
                                                          +    Member = "Member",
                                                          +    Viewer = "Viewer"
                                                          +}
                                                          +
                                                          +export class CreateBoardInput {
                                                          +    title: string;
                                                          +    description?: Nullable<string>;
                                                          +    color: string;
                                                          +    workspace_id: string;
                                                          +}
                                                          +
                                                          +export class UpdateBoardInput {
                                                          +    board_id: string;
                                                          +    title?: Nullable<string>;
                                                          +    description?: Nullable<string>;
                                                          +    color?: Nullable<string>;
                                                          +}
                                                          +
                                                          +export class CreateListInput {
                                                          +    title: string;
                                                          +    board_id: string;
                                                          +    position: number;
                                                          +    color?: Nullable<string>;
                                                          +}
                                                          +
                                                          +export class UpdateListInput {
                                                          +    list_id: string;
                                                          +    title?: Nullable<string>;
                                                          +    position?: Nullable<number>;
                                                          +    color?: Nullable<string>;
                                                          +}
                                                          +
                                                          +export class CreateCardInput {
                                                          +    title: string;
                                                          +    list_id: string;
                                                          +    description?: Nullable<string>;
                                                          +    position: number;
                                                          +    due_date?: Nullable<DateTime>;
                                                          +}
                                                          +
                                                          +export class UpdateCardInput {
                                                          +    card_id: string;
                                                          +    title?: Nullable<string>;
                                                          +    description?: Nullable<string>;
                                                          +    position?: Nullable<number>;
                                                          +    due_date?: Nullable<DateTime>;
                                                          +}
                                                          +
                                                          +export class CreateLabelInput {
                                                          +    name: string;
                                                          +    color: string;
                                                          +    board_id: string;
                                                          +}
                                                          +
                                                          +export class UpdateLabelInput {
                                                          +    label_id: string;
                                                          +    name?: Nullable<string>;
                                                          +    color?: Nullable<string>;
                                                          +}
                                                          +
                                                          +export class LoginInput {
                                                          +    email: string;
                                                          +    password: string;
                                                          +}
                                                          +
                                                          +export class RegisterInput {
                                                          +    username: string;
                                                          +    email: string;
                                                          +    password: string;
                                                          +}
                                                          +
                                                          +export class CreateUserInput {
                                                          +    username: string;
                                                          +    email: string;
                                                          +    password: string;
                                                          +}
                                                          +
                                                          +export class UpdateUserInput {
                                                          +    user_id: string;
                                                          +    username?: Nullable<string>;
                                                          +    email?: Nullable<string>;
                                                          +    password?: Nullable<string>;
                                                          +}
                                                          +
                                                          +export class CreateWorkspaceInput {
                                                          +    name: string;
                                                          +    description?: Nullable<string>;
                                                          +    color?: Nullable<string>;
                                                          +}
                                                          +
                                                          +export class UpdateWorkspaceInput {
                                                          +    name?: Nullable<string>;
                                                          +    description?: Nullable<string>;
                                                          +    color?: Nullable<string>;
                                                          +}
                                                          +
                                                          +export class AddWorkspaceMemberInput {
                                                          +    workspace_id: string;
                                                          +    user_email: string;
                                                          +    role?: Nullable<Role>;
                                                          +}
                                                          +
                                                          +export class UpdateMemberRoleInput {
                                                          +    workspace_id: string;
                                                          +    user_id: string;
                                                          +    role: Role;
                                                          +}
                                                          +
                                                          +export class Board {
                                                          +    board_id: string;
                                                          +    title: string;
                                                          +    description?: Nullable<string>;
                                                          +    color: string;
                                                          +    lists: List[];
                                                          +    workspace_id: string;
                                                          +}
                                                          +
                                                          +export class List {
                                                          +    list_id: string;
                                                          +    title: string;
                                                          +    position: number;
                                                          +    color: string;
                                                          +    board_id: string;
                                                          +    cards?: Nullable<Nullable<Card>[]>;
                                                          +}
                                                          +
                                                          +export class Card {
                                                          +    card_id: string;
                                                          +    title: string;
                                                          +    description?: Nullable<string>;
                                                          +    position: number;
                                                          +    list_id: string;
                                                          +    labels?: Nullable<Nullable<Label>[]>;
                                                          +    due_date?: Nullable<DateTime>;
                                                          +    comments?: Nullable<Nullable<Comment>[]>;
                                                          +    attachments?: Nullable<Nullable<Attachment>[]>;
                                                          +    members?: Nullable<Nullable<CardMember>[]>;
                                                          +}
                                                          +
                                                          +export class Comment {
                                                          +    comment_id: string;
                                                          +    content: string;
                                                          +    created_at: DateTime;
                                                          +    card_id: string;
                                                          +    user_id: string;
                                                          +}
                                                          +
                                                          +export class Label {
                                                          +    label_id: string;
                                                          +    name: string;
                                                          +    color: string;
                                                          +    workspace_id: string;
                                                          +}
                                                          +
                                                          +export class Attachment {
                                                          +    attachment_id: string;
                                                          +    card_id: string;
                                                          +    url: string;
                                                          +    filename: string;
                                                          +}
                                                          +
                                                          +export class CardLabel {
                                                          +    card_id: string;
                                                          +    label_id: string;
                                                          +}
                                                          +
                                                          +export class CardMember {
                                                          +    card_id: string;
                                                          +    user_id: string;
                                                          +}
                                                          +
                                                          +export abstract class IQuery {
                                                          +    abstract boards(workspace_id: string): Nullable<Nullable<Board>[]> | Promise<Nullable<Nullable<Board>[]>>;
                                                          +
                                                          +    abstract board(board_id: string): Nullable<Board> | Promise<Nullable<Board>>;
                                                          +
                                                          +    abstract lists(board_id: string): Nullable<Nullable<List>[]> | Promise<Nullable<Nullable<List>[]>>;
                                                          +
                                                          +    abstract list(list_id: string): Nullable<List> | Promise<Nullable<List>>;
                                                          +
                                                          +    abstract cards(list_id: string): Nullable<Nullable<Card>[]> | Promise<Nullable<Nullable<Card>[]>>;
                                                          +
                                                          +    abstract card(card_id: string): Nullable<Card> | Promise<Nullable<Card>>;
                                                          +
                                                          +    abstract labels(workspace_id: string): Nullable<Nullable<Label>[]> | Promise<Nullable<Nullable<Label>[]>>;
                                                          +
                                                          +    abstract comments(card_id: string): Nullable<Nullable<Comment>[]> | Promise<Nullable<Nullable<Comment>[]>>;
                                                          +
                                                          +    abstract users(): Nullable<Nullable<User>[]> | Promise<Nullable<Nullable<User>[]>>;
                                                          +
                                                          +    abstract user(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                                                          +
                                                          +    abstract me(): Nullable<User> | Promise<Nullable<User>>;
                                                          +
                                                          +    abstract workspaces(): Nullable<Nullable<Workspace>[]> | Promise<Nullable<Nullable<Workspace>[]>>;
                                                          +
                                                          +    abstract workspace(workspace_id: string): Nullable<Workspace> | Promise<Nullable<Workspace>>;
                                                          +
                                                          +    abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise<WorkspaceMembers[]>;
                                                          +}
                                                          +
                                                          +export class CreateBoardPayload {
                                                          +    board?: Nullable<Board>;
                                                          +}
                                                          +
                                                          +export abstract class IMutation {
                                                          +    abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise<CreateBoardPayload>;
                                                          +
                                                          +    abstract updateBoard(input: UpdateBoardInput): Board | Promise<Board>;
                                                          +
                                                          +    abstract deleteBoard(board_id: string): Status | Promise<Status>;
                                                          +
                                                          +    abstract createList(input: CreateListInput): List | Promise<List>;
                                                          +
                                                          +    abstract updateList(input: UpdateListInput): List | Promise<List>;
                                                          +
                                                          +    abstract deleteList(list_id: string): Status | Promise<Status>;
                                                          +
                                                          +    abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise<List[]>;
                                                          +
                                                          +    abstract createCard(input: CreateCardInput): Card | Promise<Card>;
                                                          +
                                                          +    abstract updateCard(input: UpdateCardInput): Card | Promise<Card>;
                                                          +
                                                          +    abstract deleteCard(card_id: string): Status | Promise<Status>;
                                                          +
                                                          +    abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise<Card>;
                                                          +
                                                          +    abstract createLabel(input: CreateLabelInput): Label | Promise<Label>;
                                                          +
                                                          +    abstract updateLabel(input: UpdateLabelInput): Label | Promise<Label>;
                                                          +
                                                          +    abstract deleteLabel(label_id: string): Status | Promise<Status>;
                                                          +
                                                          +    abstract uploadFile(file: Upload): FileResponse | Promise<FileResponse>;
                                                          +
                                                          +    abstract createUser(input: CreateUserInput): Nullable<User> | Promise<Nullable<User>>;
                                                          +
                                                          +    abstract updateUser(input: UpdateUserInput): Nullable<User> | Promise<Nullable<User>>;
                                                          +
                                                          +    abstract deleteUser(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                                                          +
                                                          +    abstract login(input: LoginInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                                                          +
                                                          +    abstract register(input: RegisterInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                                                          +
                                                          +    abstract logout(): Status | Promise<Status>;
                                                          +
                                                          +    abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise<Workspace>;
                                                          +
                                                          +    abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise<Workspace>;
                                                          +
                                                          +    abstract deleteWorkspace(workspace_id: string): Status | Promise<Status>;
                                                          +
                                                          +    abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                                                          +
                                                          +    abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                                                          +
                                                          +    abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                                                          +
                                                          +    abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise<Status>;
                                                          +
                                                          +    abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                                                          +}
                                                          +
                                                          +export class Success {
                                                          +    successMessage?: Nullable<string>;
                                                          +}
                                                          +
                                                          +export class Error {
                                                          +    errorMessage: string;
                                                          +    code?: Nullable<string>;
                                                          +}
                                                          +
                                                          +export class FileResponse {
                                                          +    success: boolean;
                                                          +    url?: Nullable<string>;
                                                          +    message?: Nullable<string>;
                                                          +}
                                                          +
                                                          +export class User {
                                                          +    user_id: string;
                                                          +    username: string;
                                                          +    email: string;
                                                          +    picture?: Nullable<string>;
                                                          +    created_at: DateTime;
                                                          +}
                                                          +
                                                          +export class AuthSuccess {
                                                          +    token: string;
                                                          +    user: User;
                                                          +}
                                                          +
                                                          +export class AuthError {
                                                          +    message: string;
                                                          +    code?: Nullable<string>;
                                                          +    field?: Nullable<string>;
                                                          +}
                                                          +
                                                          +export class Workspace {
                                                          +    workspace_id: string;
                                                          +    name: string;
                                                          +    color: string;
                                                          +    description?: Nullable<string>;
                                                          +    owner_id: string;
                                                          +    owner: User;
                                                          +    members: WorkspaceMembers[];
                                                          +    boards?: Nullable<Nullable<Board>[]>;
                                                          +    labels?: Nullable<Nullable<Label>[]>;
                                                          +    is_pinned: boolean;
                                                          +}
                                                          +
                                                          +export class WorkspaceMembers {
                                                          +    workspace_id: string;
                                                          +    user_id: string;
                                                          +    role: string;
                                                          +    user: User;
                                                          +    workspace: Workspace;
                                                          +}
                                                          +
                                                          +export class PinWorkspacePayload {
                                                          +    workspace: Workspace;
                                                          +}
                                                          +
                                                          +export type DateTime = any;
                                                          +export type Upload = any;
                                                          +export type Status = Success | Error;
                                                          +export type AuthResult = AuthSuccess | AuthError;
                                                          +type Nullable<T> = T | null;
                                                          +
                                                          +
                                                          +
                                                          + + + + + + + + + +
                                                          +
                                                          +

                                                          results matching ""

                                                          +
                                                            +
                                                            +
                                                            +

                                                            No results matching ""

                                                            +
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/classes/UpdateCardInput.html b/backend/documentation/classes/UpdateCardInput.html new file mode 100644 index 0000000..5b9d9db --- /dev/null +++ b/backend/documentation/classes/UpdateCardInput.html @@ -0,0 +1,757 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                                                            +
                                                            + + +
                                                            +
                                                            + + + + + + + + + + + + + + + + + + + + +
                                                            +
                                                            +

                                                            +

                                                            File

                                                            +

                                                            +

                                                            + src/graphql/graphql.ts +

                                                            + + + + + + +
                                                            +

                                                            Index

                                                            + + + + + + + + + + + + + + + +
                                                            +
                                                            Properties
                                                            +
                                                            + +
                                                            +
                                                            + + +
                                                            + +

                                                            + Properties +

                                                            + + + + + + + + + + + + + + +
                                                            + + + card_id + + +
                                                            + Type : string + +
                                                            + +
                                                            + + + + + + + + + + + + + + +
                                                            + + + Optional + description + + +
                                                            + Type : Nullable<string> + +
                                                            + +
                                                            + + + + + + + + + + + + + + +
                                                            + + + Optional + due_date + + +
                                                            + Type : Nullable<DateTime> + +
                                                            + +
                                                            + + + + + + + + + + + + + + +
                                                            + + + Optional + position + + +
                                                            + Type : Nullable<number> + +
                                                            + +
                                                            + + + + + + + + + + + + + + +
                                                            + + + Optional + title + + +
                                                            + Type : Nullable<string> + +
                                                            + +
                                                            +
                                                            + + + + + + + +
                                                            + + +
                                                            +
                                                            export enum Role {
                                                            +    Admin = "Admin",
                                                            +    Member = "Member",
                                                            +    Viewer = "Viewer"
                                                            +}
                                                            +
                                                            +export class CreateBoardInput {
                                                            +    title: string;
                                                            +    description?: Nullable<string>;
                                                            +    color: string;
                                                            +    workspace_id: string;
                                                            +}
                                                            +
                                                            +export class UpdateBoardInput {
                                                            +    board_id: string;
                                                            +    title?: Nullable<string>;
                                                            +    description?: Nullable<string>;
                                                            +    color?: Nullable<string>;
                                                            +}
                                                            +
                                                            +export class CreateListInput {
                                                            +    title: string;
                                                            +    board_id: string;
                                                            +    position: number;
                                                            +    color?: Nullable<string>;
                                                            +}
                                                            +
                                                            +export class UpdateListInput {
                                                            +    list_id: string;
                                                            +    title?: Nullable<string>;
                                                            +    position?: Nullable<number>;
                                                            +    color?: Nullable<string>;
                                                            +}
                                                            +
                                                            +export class CreateCardInput {
                                                            +    title: string;
                                                            +    list_id: string;
                                                            +    description?: Nullable<string>;
                                                            +    position: number;
                                                            +    due_date?: Nullable<DateTime>;
                                                            +}
                                                            +
                                                            +export class UpdateCardInput {
                                                            +    card_id: string;
                                                            +    title?: Nullable<string>;
                                                            +    description?: Nullable<string>;
                                                            +    position?: Nullable<number>;
                                                            +    due_date?: Nullable<DateTime>;
                                                            +}
                                                            +
                                                            +export class CreateLabelInput {
                                                            +    name: string;
                                                            +    color: string;
                                                            +    board_id: string;
                                                            +}
                                                            +
                                                            +export class UpdateLabelInput {
                                                            +    label_id: string;
                                                            +    name?: Nullable<string>;
                                                            +    color?: Nullable<string>;
                                                            +}
                                                            +
                                                            +export class LoginInput {
                                                            +    email: string;
                                                            +    password: string;
                                                            +}
                                                            +
                                                            +export class RegisterInput {
                                                            +    username: string;
                                                            +    email: string;
                                                            +    password: string;
                                                            +}
                                                            +
                                                            +export class CreateUserInput {
                                                            +    username: string;
                                                            +    email: string;
                                                            +    password: string;
                                                            +}
                                                            +
                                                            +export class UpdateUserInput {
                                                            +    user_id: string;
                                                            +    username?: Nullable<string>;
                                                            +    email?: Nullable<string>;
                                                            +    password?: Nullable<string>;
                                                            +}
                                                            +
                                                            +export class CreateWorkspaceInput {
                                                            +    name: string;
                                                            +    description?: Nullable<string>;
                                                            +    color?: Nullable<string>;
                                                            +}
                                                            +
                                                            +export class UpdateWorkspaceInput {
                                                            +    name?: Nullable<string>;
                                                            +    description?: Nullable<string>;
                                                            +    color?: Nullable<string>;
                                                            +}
                                                            +
                                                            +export class AddWorkspaceMemberInput {
                                                            +    workspace_id: string;
                                                            +    user_email: string;
                                                            +    role?: Nullable<Role>;
                                                            +}
                                                            +
                                                            +export class UpdateMemberRoleInput {
                                                            +    workspace_id: string;
                                                            +    user_id: string;
                                                            +    role: Role;
                                                            +}
                                                            +
                                                            +export class Board {
                                                            +    board_id: string;
                                                            +    title: string;
                                                            +    description?: Nullable<string>;
                                                            +    color: string;
                                                            +    lists: List[];
                                                            +    workspace_id: string;
                                                            +}
                                                            +
                                                            +export class List {
                                                            +    list_id: string;
                                                            +    title: string;
                                                            +    position: number;
                                                            +    color: string;
                                                            +    board_id: string;
                                                            +    cards?: Nullable<Nullable<Card>[]>;
                                                            +}
                                                            +
                                                            +export class Card {
                                                            +    card_id: string;
                                                            +    title: string;
                                                            +    description?: Nullable<string>;
                                                            +    position: number;
                                                            +    list_id: string;
                                                            +    labels?: Nullable<Nullable<Label>[]>;
                                                            +    due_date?: Nullable<DateTime>;
                                                            +    comments?: Nullable<Nullable<Comment>[]>;
                                                            +    attachments?: Nullable<Nullable<Attachment>[]>;
                                                            +    members?: Nullable<Nullable<CardMember>[]>;
                                                            +}
                                                            +
                                                            +export class Comment {
                                                            +    comment_id: string;
                                                            +    content: string;
                                                            +    created_at: DateTime;
                                                            +    card_id: string;
                                                            +    user_id: string;
                                                            +}
                                                            +
                                                            +export class Label {
                                                            +    label_id: string;
                                                            +    name: string;
                                                            +    color: string;
                                                            +    workspace_id: string;
                                                            +}
                                                            +
                                                            +export class Attachment {
                                                            +    attachment_id: string;
                                                            +    card_id: string;
                                                            +    url: string;
                                                            +    filename: string;
                                                            +}
                                                            +
                                                            +export class CardLabel {
                                                            +    card_id: string;
                                                            +    label_id: string;
                                                            +}
                                                            +
                                                            +export class CardMember {
                                                            +    card_id: string;
                                                            +    user_id: string;
                                                            +}
                                                            +
                                                            +export abstract class IQuery {
                                                            +    abstract boards(workspace_id: string): Nullable<Nullable<Board>[]> | Promise<Nullable<Nullable<Board>[]>>;
                                                            +
                                                            +    abstract board(board_id: string): Nullable<Board> | Promise<Nullable<Board>>;
                                                            +
                                                            +    abstract lists(board_id: string): Nullable<Nullable<List>[]> | Promise<Nullable<Nullable<List>[]>>;
                                                            +
                                                            +    abstract list(list_id: string): Nullable<List> | Promise<Nullable<List>>;
                                                            +
                                                            +    abstract cards(list_id: string): Nullable<Nullable<Card>[]> | Promise<Nullable<Nullable<Card>[]>>;
                                                            +
                                                            +    abstract card(card_id: string): Nullable<Card> | Promise<Nullable<Card>>;
                                                            +
                                                            +    abstract labels(workspace_id: string): Nullable<Nullable<Label>[]> | Promise<Nullable<Nullable<Label>[]>>;
                                                            +
                                                            +    abstract comments(card_id: string): Nullable<Nullable<Comment>[]> | Promise<Nullable<Nullable<Comment>[]>>;
                                                            +
                                                            +    abstract users(): Nullable<Nullable<User>[]> | Promise<Nullable<Nullable<User>[]>>;
                                                            +
                                                            +    abstract user(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                                                            +
                                                            +    abstract me(): Nullable<User> | Promise<Nullable<User>>;
                                                            +
                                                            +    abstract workspaces(): Nullable<Nullable<Workspace>[]> | Promise<Nullable<Nullable<Workspace>[]>>;
                                                            +
                                                            +    abstract workspace(workspace_id: string): Nullable<Workspace> | Promise<Nullable<Workspace>>;
                                                            +
                                                            +    abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise<WorkspaceMembers[]>;
                                                            +}
                                                            +
                                                            +export class CreateBoardPayload {
                                                            +    board?: Nullable<Board>;
                                                            +}
                                                            +
                                                            +export abstract class IMutation {
                                                            +    abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise<CreateBoardPayload>;
                                                            +
                                                            +    abstract updateBoard(input: UpdateBoardInput): Board | Promise<Board>;
                                                            +
                                                            +    abstract deleteBoard(board_id: string): Status | Promise<Status>;
                                                            +
                                                            +    abstract createList(input: CreateListInput): List | Promise<List>;
                                                            +
                                                            +    abstract updateList(input: UpdateListInput): List | Promise<List>;
                                                            +
                                                            +    abstract deleteList(list_id: string): Status | Promise<Status>;
                                                            +
                                                            +    abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise<List[]>;
                                                            +
                                                            +    abstract createCard(input: CreateCardInput): Card | Promise<Card>;
                                                            +
                                                            +    abstract updateCard(input: UpdateCardInput): Card | Promise<Card>;
                                                            +
                                                            +    abstract deleteCard(card_id: string): Status | Promise<Status>;
                                                            +
                                                            +    abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise<Card>;
                                                            +
                                                            +    abstract createLabel(input: CreateLabelInput): Label | Promise<Label>;
                                                            +
                                                            +    abstract updateLabel(input: UpdateLabelInput): Label | Promise<Label>;
                                                            +
                                                            +    abstract deleteLabel(label_id: string): Status | Promise<Status>;
                                                            +
                                                            +    abstract uploadFile(file: Upload): FileResponse | Promise<FileResponse>;
                                                            +
                                                            +    abstract createUser(input: CreateUserInput): Nullable<User> | Promise<Nullable<User>>;
                                                            +
                                                            +    abstract updateUser(input: UpdateUserInput): Nullable<User> | Promise<Nullable<User>>;
                                                            +
                                                            +    abstract deleteUser(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                                                            +
                                                            +    abstract login(input: LoginInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                                                            +
                                                            +    abstract register(input: RegisterInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                                                            +
                                                            +    abstract logout(): Status | Promise<Status>;
                                                            +
                                                            +    abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise<Workspace>;
                                                            +
                                                            +    abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise<Workspace>;
                                                            +
                                                            +    abstract deleteWorkspace(workspace_id: string): Status | Promise<Status>;
                                                            +
                                                            +    abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                                                            +
                                                            +    abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                                                            +
                                                            +    abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                                                            +
                                                            +    abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise<Status>;
                                                            +
                                                            +    abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                                                            +}
                                                            +
                                                            +export class Success {
                                                            +    successMessage?: Nullable<string>;
                                                            +}
                                                            +
                                                            +export class Error {
                                                            +    errorMessage: string;
                                                            +    code?: Nullable<string>;
                                                            +}
                                                            +
                                                            +export class FileResponse {
                                                            +    success: boolean;
                                                            +    url?: Nullable<string>;
                                                            +    message?: Nullable<string>;
                                                            +}
                                                            +
                                                            +export class User {
                                                            +    user_id: string;
                                                            +    username: string;
                                                            +    email: string;
                                                            +    picture?: Nullable<string>;
                                                            +    created_at: DateTime;
                                                            +}
                                                            +
                                                            +export class AuthSuccess {
                                                            +    token: string;
                                                            +    user: User;
                                                            +}
                                                            +
                                                            +export class AuthError {
                                                            +    message: string;
                                                            +    code?: Nullable<string>;
                                                            +    field?: Nullable<string>;
                                                            +}
                                                            +
                                                            +export class Workspace {
                                                            +    workspace_id: string;
                                                            +    name: string;
                                                            +    color: string;
                                                            +    description?: Nullable<string>;
                                                            +    owner_id: string;
                                                            +    owner: User;
                                                            +    members: WorkspaceMembers[];
                                                            +    boards?: Nullable<Nullable<Board>[]>;
                                                            +    labels?: Nullable<Nullable<Label>[]>;
                                                            +    is_pinned: boolean;
                                                            +}
                                                            +
                                                            +export class WorkspaceMembers {
                                                            +    workspace_id: string;
                                                            +    user_id: string;
                                                            +    role: string;
                                                            +    user: User;
                                                            +    workspace: Workspace;
                                                            +}
                                                            +
                                                            +export class PinWorkspacePayload {
                                                            +    workspace: Workspace;
                                                            +}
                                                            +
                                                            +export type DateTime = any;
                                                            +export type Upload = any;
                                                            +export type Status = Success | Error;
                                                            +export type AuthResult = AuthSuccess | AuthError;
                                                            +type Nullable<T> = T | null;
                                                            +
                                                            +
                                                            +
                                                            + + + + + + + + + +
                                                            +
                                                            +

                                                            results matching ""

                                                            +
                                                              +
                                                              +
                                                              +

                                                              No results matching ""

                                                              +
                                                              +
                                                              +
                                                              + +
                                                              +
                                                              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/classes/UpdateLabelInput.html b/backend/documentation/classes/UpdateLabelInput.html new file mode 100644 index 0000000..a3cbd0a --- /dev/null +++ b/backend/documentation/classes/UpdateLabelInput.html @@ -0,0 +1,695 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                                                              +
                                                              + + +
                                                              +
                                                              + + + + + + + + + + + + + + + + + + + + +
                                                              +
                                                              +

                                                              +

                                                              File

                                                              +

                                                              +

                                                              + src/graphql/graphql.ts +

                                                              + + + + + + +
                                                              +

                                                              Index

                                                              + + + + + + + + + + + + + + + +
                                                              +
                                                              Properties
                                                              +
                                                              + +
                                                              +
                                                              + + +
                                                              + +

                                                              + Properties +

                                                              + + + + + + + + + + + + + + +
                                                              + + + Optional + color + + +
                                                              + Type : Nullable<string> + +
                                                              + +
                                                              + + + + + + + + + + + + + + +
                                                              + + + label_id + + +
                                                              + Type : string + +
                                                              + +
                                                              + + + + + + + + + + + + + + +
                                                              + + + Optional + name + + +
                                                              + Type : Nullable<string> + +
                                                              + +
                                                              +
                                                              + + + + + + + +
                                                              + + +
                                                              +
                                                              export enum Role {
                                                              +    Admin = "Admin",
                                                              +    Member = "Member",
                                                              +    Viewer = "Viewer"
                                                              +}
                                                              +
                                                              +export class CreateBoardInput {
                                                              +    title: string;
                                                              +    description?: Nullable<string>;
                                                              +    color: string;
                                                              +    workspace_id: string;
                                                              +}
                                                              +
                                                              +export class UpdateBoardInput {
                                                              +    board_id: string;
                                                              +    title?: Nullable<string>;
                                                              +    description?: Nullable<string>;
                                                              +    color?: Nullable<string>;
                                                              +}
                                                              +
                                                              +export class CreateListInput {
                                                              +    title: string;
                                                              +    board_id: string;
                                                              +    position: number;
                                                              +    color?: Nullable<string>;
                                                              +}
                                                              +
                                                              +export class UpdateListInput {
                                                              +    list_id: string;
                                                              +    title?: Nullable<string>;
                                                              +    position?: Nullable<number>;
                                                              +    color?: Nullable<string>;
                                                              +}
                                                              +
                                                              +export class CreateCardInput {
                                                              +    title: string;
                                                              +    list_id: string;
                                                              +    description?: Nullable<string>;
                                                              +    position: number;
                                                              +    due_date?: Nullable<DateTime>;
                                                              +}
                                                              +
                                                              +export class UpdateCardInput {
                                                              +    card_id: string;
                                                              +    title?: Nullable<string>;
                                                              +    description?: Nullable<string>;
                                                              +    position?: Nullable<number>;
                                                              +    due_date?: Nullable<DateTime>;
                                                              +}
                                                              +
                                                              +export class CreateLabelInput {
                                                              +    name: string;
                                                              +    color: string;
                                                              +    board_id: string;
                                                              +}
                                                              +
                                                              +export class UpdateLabelInput {
                                                              +    label_id: string;
                                                              +    name?: Nullable<string>;
                                                              +    color?: Nullable<string>;
                                                              +}
                                                              +
                                                              +export class LoginInput {
                                                              +    email: string;
                                                              +    password: string;
                                                              +}
                                                              +
                                                              +export class RegisterInput {
                                                              +    username: string;
                                                              +    email: string;
                                                              +    password: string;
                                                              +}
                                                              +
                                                              +export class CreateUserInput {
                                                              +    username: string;
                                                              +    email: string;
                                                              +    password: string;
                                                              +}
                                                              +
                                                              +export class UpdateUserInput {
                                                              +    user_id: string;
                                                              +    username?: Nullable<string>;
                                                              +    email?: Nullable<string>;
                                                              +    password?: Nullable<string>;
                                                              +}
                                                              +
                                                              +export class CreateWorkspaceInput {
                                                              +    name: string;
                                                              +    description?: Nullable<string>;
                                                              +    color?: Nullable<string>;
                                                              +}
                                                              +
                                                              +export class UpdateWorkspaceInput {
                                                              +    name?: Nullable<string>;
                                                              +    description?: Nullable<string>;
                                                              +    color?: Nullable<string>;
                                                              +}
                                                              +
                                                              +export class AddWorkspaceMemberInput {
                                                              +    workspace_id: string;
                                                              +    user_email: string;
                                                              +    role?: Nullable<Role>;
                                                              +}
                                                              +
                                                              +export class UpdateMemberRoleInput {
                                                              +    workspace_id: string;
                                                              +    user_id: string;
                                                              +    role: Role;
                                                              +}
                                                              +
                                                              +export class Board {
                                                              +    board_id: string;
                                                              +    title: string;
                                                              +    description?: Nullable<string>;
                                                              +    color: string;
                                                              +    lists: List[];
                                                              +    workspace_id: string;
                                                              +}
                                                              +
                                                              +export class List {
                                                              +    list_id: string;
                                                              +    title: string;
                                                              +    position: number;
                                                              +    color: string;
                                                              +    board_id: string;
                                                              +    cards?: Nullable<Nullable<Card>[]>;
                                                              +}
                                                              +
                                                              +export class Card {
                                                              +    card_id: string;
                                                              +    title: string;
                                                              +    description?: Nullable<string>;
                                                              +    position: number;
                                                              +    list_id: string;
                                                              +    labels?: Nullable<Nullable<Label>[]>;
                                                              +    due_date?: Nullable<DateTime>;
                                                              +    comments?: Nullable<Nullable<Comment>[]>;
                                                              +    attachments?: Nullable<Nullable<Attachment>[]>;
                                                              +    members?: Nullable<Nullable<CardMember>[]>;
                                                              +}
                                                              +
                                                              +export class Comment {
                                                              +    comment_id: string;
                                                              +    content: string;
                                                              +    created_at: DateTime;
                                                              +    card_id: string;
                                                              +    user_id: string;
                                                              +}
                                                              +
                                                              +export class Label {
                                                              +    label_id: string;
                                                              +    name: string;
                                                              +    color: string;
                                                              +    workspace_id: string;
                                                              +}
                                                              +
                                                              +export class Attachment {
                                                              +    attachment_id: string;
                                                              +    card_id: string;
                                                              +    url: string;
                                                              +    filename: string;
                                                              +}
                                                              +
                                                              +export class CardLabel {
                                                              +    card_id: string;
                                                              +    label_id: string;
                                                              +}
                                                              +
                                                              +export class CardMember {
                                                              +    card_id: string;
                                                              +    user_id: string;
                                                              +}
                                                              +
                                                              +export abstract class IQuery {
                                                              +    abstract boards(workspace_id: string): Nullable<Nullable<Board>[]> | Promise<Nullable<Nullable<Board>[]>>;
                                                              +
                                                              +    abstract board(board_id: string): Nullable<Board> | Promise<Nullable<Board>>;
                                                              +
                                                              +    abstract lists(board_id: string): Nullable<Nullable<List>[]> | Promise<Nullable<Nullable<List>[]>>;
                                                              +
                                                              +    abstract list(list_id: string): Nullable<List> | Promise<Nullable<List>>;
                                                              +
                                                              +    abstract cards(list_id: string): Nullable<Nullable<Card>[]> | Promise<Nullable<Nullable<Card>[]>>;
                                                              +
                                                              +    abstract card(card_id: string): Nullable<Card> | Promise<Nullable<Card>>;
                                                              +
                                                              +    abstract labels(workspace_id: string): Nullable<Nullable<Label>[]> | Promise<Nullable<Nullable<Label>[]>>;
                                                              +
                                                              +    abstract comments(card_id: string): Nullable<Nullable<Comment>[]> | Promise<Nullable<Nullable<Comment>[]>>;
                                                              +
                                                              +    abstract users(): Nullable<Nullable<User>[]> | Promise<Nullable<Nullable<User>[]>>;
                                                              +
                                                              +    abstract user(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                                                              +
                                                              +    abstract me(): Nullable<User> | Promise<Nullable<User>>;
                                                              +
                                                              +    abstract workspaces(): Nullable<Nullable<Workspace>[]> | Promise<Nullable<Nullable<Workspace>[]>>;
                                                              +
                                                              +    abstract workspace(workspace_id: string): Nullable<Workspace> | Promise<Nullable<Workspace>>;
                                                              +
                                                              +    abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise<WorkspaceMembers[]>;
                                                              +}
                                                              +
                                                              +export class CreateBoardPayload {
                                                              +    board?: Nullable<Board>;
                                                              +}
                                                              +
                                                              +export abstract class IMutation {
                                                              +    abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise<CreateBoardPayload>;
                                                              +
                                                              +    abstract updateBoard(input: UpdateBoardInput): Board | Promise<Board>;
                                                              +
                                                              +    abstract deleteBoard(board_id: string): Status | Promise<Status>;
                                                              +
                                                              +    abstract createList(input: CreateListInput): List | Promise<List>;
                                                              +
                                                              +    abstract updateList(input: UpdateListInput): List | Promise<List>;
                                                              +
                                                              +    abstract deleteList(list_id: string): Status | Promise<Status>;
                                                              +
                                                              +    abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise<List[]>;
                                                              +
                                                              +    abstract createCard(input: CreateCardInput): Card | Promise<Card>;
                                                              +
                                                              +    abstract updateCard(input: UpdateCardInput): Card | Promise<Card>;
                                                              +
                                                              +    abstract deleteCard(card_id: string): Status | Promise<Status>;
                                                              +
                                                              +    abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise<Card>;
                                                              +
                                                              +    abstract createLabel(input: CreateLabelInput): Label | Promise<Label>;
                                                              +
                                                              +    abstract updateLabel(input: UpdateLabelInput): Label | Promise<Label>;
                                                              +
                                                              +    abstract deleteLabel(label_id: string): Status | Promise<Status>;
                                                              +
                                                              +    abstract uploadFile(file: Upload): FileResponse | Promise<FileResponse>;
                                                              +
                                                              +    abstract createUser(input: CreateUserInput): Nullable<User> | Promise<Nullable<User>>;
                                                              +
                                                              +    abstract updateUser(input: UpdateUserInput): Nullable<User> | Promise<Nullable<User>>;
                                                              +
                                                              +    abstract deleteUser(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                                                              +
                                                              +    abstract login(input: LoginInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                                                              +
                                                              +    abstract register(input: RegisterInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                                                              +
                                                              +    abstract logout(): Status | Promise<Status>;
                                                              +
                                                              +    abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise<Workspace>;
                                                              +
                                                              +    abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise<Workspace>;
                                                              +
                                                              +    abstract deleteWorkspace(workspace_id: string): Status | Promise<Status>;
                                                              +
                                                              +    abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                                                              +
                                                              +    abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                                                              +
                                                              +    abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                                                              +
                                                              +    abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise<Status>;
                                                              +
                                                              +    abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                                                              +}
                                                              +
                                                              +export class Success {
                                                              +    successMessage?: Nullable<string>;
                                                              +}
                                                              +
                                                              +export class Error {
                                                              +    errorMessage: string;
                                                              +    code?: Nullable<string>;
                                                              +}
                                                              +
                                                              +export class FileResponse {
                                                              +    success: boolean;
                                                              +    url?: Nullable<string>;
                                                              +    message?: Nullable<string>;
                                                              +}
                                                              +
                                                              +export class User {
                                                              +    user_id: string;
                                                              +    username: string;
                                                              +    email: string;
                                                              +    picture?: Nullable<string>;
                                                              +    created_at: DateTime;
                                                              +}
                                                              +
                                                              +export class AuthSuccess {
                                                              +    token: string;
                                                              +    user: User;
                                                              +}
                                                              +
                                                              +export class AuthError {
                                                              +    message: string;
                                                              +    code?: Nullable<string>;
                                                              +    field?: Nullable<string>;
                                                              +}
                                                              +
                                                              +export class Workspace {
                                                              +    workspace_id: string;
                                                              +    name: string;
                                                              +    color: string;
                                                              +    description?: Nullable<string>;
                                                              +    owner_id: string;
                                                              +    owner: User;
                                                              +    members: WorkspaceMembers[];
                                                              +    boards?: Nullable<Nullable<Board>[]>;
                                                              +    labels?: Nullable<Nullable<Label>[]>;
                                                              +    is_pinned: boolean;
                                                              +}
                                                              +
                                                              +export class WorkspaceMembers {
                                                              +    workspace_id: string;
                                                              +    user_id: string;
                                                              +    role: string;
                                                              +    user: User;
                                                              +    workspace: Workspace;
                                                              +}
                                                              +
                                                              +export class PinWorkspacePayload {
                                                              +    workspace: Workspace;
                                                              +}
                                                              +
                                                              +export type DateTime = any;
                                                              +export type Upload = any;
                                                              +export type Status = Success | Error;
                                                              +export type AuthResult = AuthSuccess | AuthError;
                                                              +type Nullable<T> = T | null;
                                                              +
                                                              +
                                                              +
                                                              + + + + + + + + + +
                                                              +
                                                              +

                                                              results matching ""

                                                              +
                                                                +
                                                                +
                                                                +

                                                                No results matching ""

                                                                +
                                                                +
                                                                +
                                                                + +
                                                                +
                                                                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/classes/UpdateListInput.html b/backend/documentation/classes/UpdateListInput.html new file mode 100644 index 0000000..ead71ea --- /dev/null +++ b/backend/documentation/classes/UpdateListInput.html @@ -0,0 +1,726 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                                                                +
                                                                + + +
                                                                +
                                                                + + + + + + + + + + + + + + + + + + + + +
                                                                +
                                                                +

                                                                +

                                                                File

                                                                +

                                                                +

                                                                + src/graphql/graphql.ts +

                                                                + + + + + + +
                                                                +

                                                                Index

                                                                + + + + + + + + + + + + + + + +
                                                                +
                                                                Properties
                                                                +
                                                                + +
                                                                +
                                                                + + +
                                                                + +

                                                                + Properties +

                                                                + + + + + + + + + + + + + + +
                                                                + + + Optional + color + + +
                                                                + Type : Nullable<string> + +
                                                                + +
                                                                + + + + + + + + + + + + + + +
                                                                + + + list_id + + +
                                                                + Type : string + +
                                                                + +
                                                                + + + + + + + + + + + + + + +
                                                                + + + Optional + position + + +
                                                                + Type : Nullable<number> + +
                                                                + +
                                                                + + + + + + + + + + + + + + +
                                                                + + + Optional + title + + +
                                                                + Type : Nullable<string> + +
                                                                + +
                                                                +
                                                                + + + + + + + +
                                                                + + +
                                                                +
                                                                export enum Role {
                                                                +    Admin = "Admin",
                                                                +    Member = "Member",
                                                                +    Viewer = "Viewer"
                                                                +}
                                                                +
                                                                +export class CreateBoardInput {
                                                                +    title: string;
                                                                +    description?: Nullable<string>;
                                                                +    color: string;
                                                                +    workspace_id: string;
                                                                +}
                                                                +
                                                                +export class UpdateBoardInput {
                                                                +    board_id: string;
                                                                +    title?: Nullable<string>;
                                                                +    description?: Nullable<string>;
                                                                +    color?: Nullable<string>;
                                                                +}
                                                                +
                                                                +export class CreateListInput {
                                                                +    title: string;
                                                                +    board_id: string;
                                                                +    position: number;
                                                                +    color?: Nullable<string>;
                                                                +}
                                                                +
                                                                +export class UpdateListInput {
                                                                +    list_id: string;
                                                                +    title?: Nullable<string>;
                                                                +    position?: Nullable<number>;
                                                                +    color?: Nullable<string>;
                                                                +}
                                                                +
                                                                +export class CreateCardInput {
                                                                +    title: string;
                                                                +    list_id: string;
                                                                +    description?: Nullable<string>;
                                                                +    position: number;
                                                                +    due_date?: Nullable<DateTime>;
                                                                +}
                                                                +
                                                                +export class UpdateCardInput {
                                                                +    card_id: string;
                                                                +    title?: Nullable<string>;
                                                                +    description?: Nullable<string>;
                                                                +    position?: Nullable<number>;
                                                                +    due_date?: Nullable<DateTime>;
                                                                +}
                                                                +
                                                                +export class CreateLabelInput {
                                                                +    name: string;
                                                                +    color: string;
                                                                +    board_id: string;
                                                                +}
                                                                +
                                                                +export class UpdateLabelInput {
                                                                +    label_id: string;
                                                                +    name?: Nullable<string>;
                                                                +    color?: Nullable<string>;
                                                                +}
                                                                +
                                                                +export class LoginInput {
                                                                +    email: string;
                                                                +    password: string;
                                                                +}
                                                                +
                                                                +export class RegisterInput {
                                                                +    username: string;
                                                                +    email: string;
                                                                +    password: string;
                                                                +}
                                                                +
                                                                +export class CreateUserInput {
                                                                +    username: string;
                                                                +    email: string;
                                                                +    password: string;
                                                                +}
                                                                +
                                                                +export class UpdateUserInput {
                                                                +    user_id: string;
                                                                +    username?: Nullable<string>;
                                                                +    email?: Nullable<string>;
                                                                +    password?: Nullable<string>;
                                                                +}
                                                                +
                                                                +export class CreateWorkspaceInput {
                                                                +    name: string;
                                                                +    description?: Nullable<string>;
                                                                +    color?: Nullable<string>;
                                                                +}
                                                                +
                                                                +export class UpdateWorkspaceInput {
                                                                +    name?: Nullable<string>;
                                                                +    description?: Nullable<string>;
                                                                +    color?: Nullable<string>;
                                                                +}
                                                                +
                                                                +export class AddWorkspaceMemberInput {
                                                                +    workspace_id: string;
                                                                +    user_email: string;
                                                                +    role?: Nullable<Role>;
                                                                +}
                                                                +
                                                                +export class UpdateMemberRoleInput {
                                                                +    workspace_id: string;
                                                                +    user_id: string;
                                                                +    role: Role;
                                                                +}
                                                                +
                                                                +export class Board {
                                                                +    board_id: string;
                                                                +    title: string;
                                                                +    description?: Nullable<string>;
                                                                +    color: string;
                                                                +    lists: List[];
                                                                +    workspace_id: string;
                                                                +}
                                                                +
                                                                +export class List {
                                                                +    list_id: string;
                                                                +    title: string;
                                                                +    position: number;
                                                                +    color: string;
                                                                +    board_id: string;
                                                                +    cards?: Nullable<Nullable<Card>[]>;
                                                                +}
                                                                +
                                                                +export class Card {
                                                                +    card_id: string;
                                                                +    title: string;
                                                                +    description?: Nullable<string>;
                                                                +    position: number;
                                                                +    list_id: string;
                                                                +    labels?: Nullable<Nullable<Label>[]>;
                                                                +    due_date?: Nullable<DateTime>;
                                                                +    comments?: Nullable<Nullable<Comment>[]>;
                                                                +    attachments?: Nullable<Nullable<Attachment>[]>;
                                                                +    members?: Nullable<Nullable<CardMember>[]>;
                                                                +}
                                                                +
                                                                +export class Comment {
                                                                +    comment_id: string;
                                                                +    content: string;
                                                                +    created_at: DateTime;
                                                                +    card_id: string;
                                                                +    user_id: string;
                                                                +}
                                                                +
                                                                +export class Label {
                                                                +    label_id: string;
                                                                +    name: string;
                                                                +    color: string;
                                                                +    workspace_id: string;
                                                                +}
                                                                +
                                                                +export class Attachment {
                                                                +    attachment_id: string;
                                                                +    card_id: string;
                                                                +    url: string;
                                                                +    filename: string;
                                                                +}
                                                                +
                                                                +export class CardLabel {
                                                                +    card_id: string;
                                                                +    label_id: string;
                                                                +}
                                                                +
                                                                +export class CardMember {
                                                                +    card_id: string;
                                                                +    user_id: string;
                                                                +}
                                                                +
                                                                +export abstract class IQuery {
                                                                +    abstract boards(workspace_id: string): Nullable<Nullable<Board>[]> | Promise<Nullable<Nullable<Board>[]>>;
                                                                +
                                                                +    abstract board(board_id: string): Nullable<Board> | Promise<Nullable<Board>>;
                                                                +
                                                                +    abstract lists(board_id: string): Nullable<Nullable<List>[]> | Promise<Nullable<Nullable<List>[]>>;
                                                                +
                                                                +    abstract list(list_id: string): Nullable<List> | Promise<Nullable<List>>;
                                                                +
                                                                +    abstract cards(list_id: string): Nullable<Nullable<Card>[]> | Promise<Nullable<Nullable<Card>[]>>;
                                                                +
                                                                +    abstract card(card_id: string): Nullable<Card> | Promise<Nullable<Card>>;
                                                                +
                                                                +    abstract labels(workspace_id: string): Nullable<Nullable<Label>[]> | Promise<Nullable<Nullable<Label>[]>>;
                                                                +
                                                                +    abstract comments(card_id: string): Nullable<Nullable<Comment>[]> | Promise<Nullable<Nullable<Comment>[]>>;
                                                                +
                                                                +    abstract users(): Nullable<Nullable<User>[]> | Promise<Nullable<Nullable<User>[]>>;
                                                                +
                                                                +    abstract user(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                                                                +
                                                                +    abstract me(): Nullable<User> | Promise<Nullable<User>>;
                                                                +
                                                                +    abstract workspaces(): Nullable<Nullable<Workspace>[]> | Promise<Nullable<Nullable<Workspace>[]>>;
                                                                +
                                                                +    abstract workspace(workspace_id: string): Nullable<Workspace> | Promise<Nullable<Workspace>>;
                                                                +
                                                                +    abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise<WorkspaceMembers[]>;
                                                                +}
                                                                +
                                                                +export class CreateBoardPayload {
                                                                +    board?: Nullable<Board>;
                                                                +}
                                                                +
                                                                +export abstract class IMutation {
                                                                +    abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise<CreateBoardPayload>;
                                                                +
                                                                +    abstract updateBoard(input: UpdateBoardInput): Board | Promise<Board>;
                                                                +
                                                                +    abstract deleteBoard(board_id: string): Status | Promise<Status>;
                                                                +
                                                                +    abstract createList(input: CreateListInput): List | Promise<List>;
                                                                +
                                                                +    abstract updateList(input: UpdateListInput): List | Promise<List>;
                                                                +
                                                                +    abstract deleteList(list_id: string): Status | Promise<Status>;
                                                                +
                                                                +    abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise<List[]>;
                                                                +
                                                                +    abstract createCard(input: CreateCardInput): Card | Promise<Card>;
                                                                +
                                                                +    abstract updateCard(input: UpdateCardInput): Card | Promise<Card>;
                                                                +
                                                                +    abstract deleteCard(card_id: string): Status | Promise<Status>;
                                                                +
                                                                +    abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise<Card>;
                                                                +
                                                                +    abstract createLabel(input: CreateLabelInput): Label | Promise<Label>;
                                                                +
                                                                +    abstract updateLabel(input: UpdateLabelInput): Label | Promise<Label>;
                                                                +
                                                                +    abstract deleteLabel(label_id: string): Status | Promise<Status>;
                                                                +
                                                                +    abstract uploadFile(file: Upload): FileResponse | Promise<FileResponse>;
                                                                +
                                                                +    abstract createUser(input: CreateUserInput): Nullable<User> | Promise<Nullable<User>>;
                                                                +
                                                                +    abstract updateUser(input: UpdateUserInput): Nullable<User> | Promise<Nullable<User>>;
                                                                +
                                                                +    abstract deleteUser(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                                                                +
                                                                +    abstract login(input: LoginInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                                                                +
                                                                +    abstract register(input: RegisterInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                                                                +
                                                                +    abstract logout(): Status | Promise<Status>;
                                                                +
                                                                +    abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise<Workspace>;
                                                                +
                                                                +    abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise<Workspace>;
                                                                +
                                                                +    abstract deleteWorkspace(workspace_id: string): Status | Promise<Status>;
                                                                +
                                                                +    abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                                                                +
                                                                +    abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                                                                +
                                                                +    abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                                                                +
                                                                +    abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise<Status>;
                                                                +
                                                                +    abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                                                                +}
                                                                +
                                                                +export class Success {
                                                                +    successMessage?: Nullable<string>;
                                                                +}
                                                                +
                                                                +export class Error {
                                                                +    errorMessage: string;
                                                                +    code?: Nullable<string>;
                                                                +}
                                                                +
                                                                +export class FileResponse {
                                                                +    success: boolean;
                                                                +    url?: Nullable<string>;
                                                                +    message?: Nullable<string>;
                                                                +}
                                                                +
                                                                +export class User {
                                                                +    user_id: string;
                                                                +    username: string;
                                                                +    email: string;
                                                                +    picture?: Nullable<string>;
                                                                +    created_at: DateTime;
                                                                +}
                                                                +
                                                                +export class AuthSuccess {
                                                                +    token: string;
                                                                +    user: User;
                                                                +}
                                                                +
                                                                +export class AuthError {
                                                                +    message: string;
                                                                +    code?: Nullable<string>;
                                                                +    field?: Nullable<string>;
                                                                +}
                                                                +
                                                                +export class Workspace {
                                                                +    workspace_id: string;
                                                                +    name: string;
                                                                +    color: string;
                                                                +    description?: Nullable<string>;
                                                                +    owner_id: string;
                                                                +    owner: User;
                                                                +    members: WorkspaceMembers[];
                                                                +    boards?: Nullable<Nullable<Board>[]>;
                                                                +    labels?: Nullable<Nullable<Label>[]>;
                                                                +    is_pinned: boolean;
                                                                +}
                                                                +
                                                                +export class WorkspaceMembers {
                                                                +    workspace_id: string;
                                                                +    user_id: string;
                                                                +    role: string;
                                                                +    user: User;
                                                                +    workspace: Workspace;
                                                                +}
                                                                +
                                                                +export class PinWorkspacePayload {
                                                                +    workspace: Workspace;
                                                                +}
                                                                +
                                                                +export type DateTime = any;
                                                                +export type Upload = any;
                                                                +export type Status = Success | Error;
                                                                +export type AuthResult = AuthSuccess | AuthError;
                                                                +type Nullable<T> = T | null;
                                                                +
                                                                +
                                                                +
                                                                + + + + + + + + + +
                                                                +
                                                                +

                                                                results matching ""

                                                                +
                                                                  +
                                                                  +
                                                                  +

                                                                  No results matching ""

                                                                  +
                                                                  +
                                                                  +
                                                                  + +
                                                                  +
                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/classes/UpdateMemberRoleInput.html b/backend/documentation/classes/UpdateMemberRoleInput.html new file mode 100644 index 0000000..3dd1603 --- /dev/null +++ b/backend/documentation/classes/UpdateMemberRoleInput.html @@ -0,0 +1,691 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + + + + + + + + + + + + + + + + + + + +
                                                                  +
                                                                  +

                                                                  +

                                                                  File

                                                                  +

                                                                  +

                                                                  + src/graphql/graphql.ts +

                                                                  + + + + + + +
                                                                  +

                                                                  Index

                                                                  + + + + + + + + + + + + + + + +
                                                                  +
                                                                  Properties
                                                                  +
                                                                  + +
                                                                  +
                                                                  + + +
                                                                  + +

                                                                  + Properties +

                                                                  + + + + + + + + + + + + + + +
                                                                  + + + role + + +
                                                                  + Type : Role + +
                                                                  + +
                                                                  + + + + + + + + + + + + + + +
                                                                  + + + user_id + + +
                                                                  + Type : string + +
                                                                  + +
                                                                  + + + + + + + + + + + + + + +
                                                                  + + + workspace_id + + +
                                                                  + Type : string + +
                                                                  + +
                                                                  +
                                                                  + + + + + + + +
                                                                  + + +
                                                                  +
                                                                  export enum Role {
                                                                  +    Admin = "Admin",
                                                                  +    Member = "Member",
                                                                  +    Viewer = "Viewer"
                                                                  +}
                                                                  +
                                                                  +export class CreateBoardInput {
                                                                  +    title: string;
                                                                  +    description?: Nullable<string>;
                                                                  +    color: string;
                                                                  +    workspace_id: string;
                                                                  +}
                                                                  +
                                                                  +export class UpdateBoardInput {
                                                                  +    board_id: string;
                                                                  +    title?: Nullable<string>;
                                                                  +    description?: Nullable<string>;
                                                                  +    color?: Nullable<string>;
                                                                  +}
                                                                  +
                                                                  +export class CreateListInput {
                                                                  +    title: string;
                                                                  +    board_id: string;
                                                                  +    position: number;
                                                                  +    color?: Nullable<string>;
                                                                  +}
                                                                  +
                                                                  +export class UpdateListInput {
                                                                  +    list_id: string;
                                                                  +    title?: Nullable<string>;
                                                                  +    position?: Nullable<number>;
                                                                  +    color?: Nullable<string>;
                                                                  +}
                                                                  +
                                                                  +export class CreateCardInput {
                                                                  +    title: string;
                                                                  +    list_id: string;
                                                                  +    description?: Nullable<string>;
                                                                  +    position: number;
                                                                  +    due_date?: Nullable<DateTime>;
                                                                  +}
                                                                  +
                                                                  +export class UpdateCardInput {
                                                                  +    card_id: string;
                                                                  +    title?: Nullable<string>;
                                                                  +    description?: Nullable<string>;
                                                                  +    position?: Nullable<number>;
                                                                  +    due_date?: Nullable<DateTime>;
                                                                  +}
                                                                  +
                                                                  +export class CreateLabelInput {
                                                                  +    name: string;
                                                                  +    color: string;
                                                                  +    board_id: string;
                                                                  +}
                                                                  +
                                                                  +export class UpdateLabelInput {
                                                                  +    label_id: string;
                                                                  +    name?: Nullable<string>;
                                                                  +    color?: Nullable<string>;
                                                                  +}
                                                                  +
                                                                  +export class LoginInput {
                                                                  +    email: string;
                                                                  +    password: string;
                                                                  +}
                                                                  +
                                                                  +export class RegisterInput {
                                                                  +    username: string;
                                                                  +    email: string;
                                                                  +    password: string;
                                                                  +}
                                                                  +
                                                                  +export class CreateUserInput {
                                                                  +    username: string;
                                                                  +    email: string;
                                                                  +    password: string;
                                                                  +}
                                                                  +
                                                                  +export class UpdateUserInput {
                                                                  +    user_id: string;
                                                                  +    username?: Nullable<string>;
                                                                  +    email?: Nullable<string>;
                                                                  +    password?: Nullable<string>;
                                                                  +}
                                                                  +
                                                                  +export class CreateWorkspaceInput {
                                                                  +    name: string;
                                                                  +    description?: Nullable<string>;
                                                                  +    color?: Nullable<string>;
                                                                  +}
                                                                  +
                                                                  +export class UpdateWorkspaceInput {
                                                                  +    name?: Nullable<string>;
                                                                  +    description?: Nullable<string>;
                                                                  +    color?: Nullable<string>;
                                                                  +}
                                                                  +
                                                                  +export class AddWorkspaceMemberInput {
                                                                  +    workspace_id: string;
                                                                  +    user_email: string;
                                                                  +    role?: Nullable<Role>;
                                                                  +}
                                                                  +
                                                                  +export class UpdateMemberRoleInput {
                                                                  +    workspace_id: string;
                                                                  +    user_id: string;
                                                                  +    role: Role;
                                                                  +}
                                                                  +
                                                                  +export class Board {
                                                                  +    board_id: string;
                                                                  +    title: string;
                                                                  +    description?: Nullable<string>;
                                                                  +    color: string;
                                                                  +    lists: List[];
                                                                  +    workspace_id: string;
                                                                  +}
                                                                  +
                                                                  +export class List {
                                                                  +    list_id: string;
                                                                  +    title: string;
                                                                  +    position: number;
                                                                  +    color: string;
                                                                  +    board_id: string;
                                                                  +    cards?: Nullable<Nullable<Card>[]>;
                                                                  +}
                                                                  +
                                                                  +export class Card {
                                                                  +    card_id: string;
                                                                  +    title: string;
                                                                  +    description?: Nullable<string>;
                                                                  +    position: number;
                                                                  +    list_id: string;
                                                                  +    labels?: Nullable<Nullable<Label>[]>;
                                                                  +    due_date?: Nullable<DateTime>;
                                                                  +    comments?: Nullable<Nullable<Comment>[]>;
                                                                  +    attachments?: Nullable<Nullable<Attachment>[]>;
                                                                  +    members?: Nullable<Nullable<CardMember>[]>;
                                                                  +}
                                                                  +
                                                                  +export class Comment {
                                                                  +    comment_id: string;
                                                                  +    content: string;
                                                                  +    created_at: DateTime;
                                                                  +    card_id: string;
                                                                  +    user_id: string;
                                                                  +}
                                                                  +
                                                                  +export class Label {
                                                                  +    label_id: string;
                                                                  +    name: string;
                                                                  +    color: string;
                                                                  +    workspace_id: string;
                                                                  +}
                                                                  +
                                                                  +export class Attachment {
                                                                  +    attachment_id: string;
                                                                  +    card_id: string;
                                                                  +    url: string;
                                                                  +    filename: string;
                                                                  +}
                                                                  +
                                                                  +export class CardLabel {
                                                                  +    card_id: string;
                                                                  +    label_id: string;
                                                                  +}
                                                                  +
                                                                  +export class CardMember {
                                                                  +    card_id: string;
                                                                  +    user_id: string;
                                                                  +}
                                                                  +
                                                                  +export abstract class IQuery {
                                                                  +    abstract boards(workspace_id: string): Nullable<Nullable<Board>[]> | Promise<Nullable<Nullable<Board>[]>>;
                                                                  +
                                                                  +    abstract board(board_id: string): Nullable<Board> | Promise<Nullable<Board>>;
                                                                  +
                                                                  +    abstract lists(board_id: string): Nullable<Nullable<List>[]> | Promise<Nullable<Nullable<List>[]>>;
                                                                  +
                                                                  +    abstract list(list_id: string): Nullable<List> | Promise<Nullable<List>>;
                                                                  +
                                                                  +    abstract cards(list_id: string): Nullable<Nullable<Card>[]> | Promise<Nullable<Nullable<Card>[]>>;
                                                                  +
                                                                  +    abstract card(card_id: string): Nullable<Card> | Promise<Nullable<Card>>;
                                                                  +
                                                                  +    abstract labels(workspace_id: string): Nullable<Nullable<Label>[]> | Promise<Nullable<Nullable<Label>[]>>;
                                                                  +
                                                                  +    abstract comments(card_id: string): Nullable<Nullable<Comment>[]> | Promise<Nullable<Nullable<Comment>[]>>;
                                                                  +
                                                                  +    abstract users(): Nullable<Nullable<User>[]> | Promise<Nullable<Nullable<User>[]>>;
                                                                  +
                                                                  +    abstract user(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                                                                  +
                                                                  +    abstract me(): Nullable<User> | Promise<Nullable<User>>;
                                                                  +
                                                                  +    abstract workspaces(): Nullable<Nullable<Workspace>[]> | Promise<Nullable<Nullable<Workspace>[]>>;
                                                                  +
                                                                  +    abstract workspace(workspace_id: string): Nullable<Workspace> | Promise<Nullable<Workspace>>;
                                                                  +
                                                                  +    abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise<WorkspaceMembers[]>;
                                                                  +}
                                                                  +
                                                                  +export class CreateBoardPayload {
                                                                  +    board?: Nullable<Board>;
                                                                  +}
                                                                  +
                                                                  +export abstract class IMutation {
                                                                  +    abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise<CreateBoardPayload>;
                                                                  +
                                                                  +    abstract updateBoard(input: UpdateBoardInput): Board | Promise<Board>;
                                                                  +
                                                                  +    abstract deleteBoard(board_id: string): Status | Promise<Status>;
                                                                  +
                                                                  +    abstract createList(input: CreateListInput): List | Promise<List>;
                                                                  +
                                                                  +    abstract updateList(input: UpdateListInput): List | Promise<List>;
                                                                  +
                                                                  +    abstract deleteList(list_id: string): Status | Promise<Status>;
                                                                  +
                                                                  +    abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise<List[]>;
                                                                  +
                                                                  +    abstract createCard(input: CreateCardInput): Card | Promise<Card>;
                                                                  +
                                                                  +    abstract updateCard(input: UpdateCardInput): Card | Promise<Card>;
                                                                  +
                                                                  +    abstract deleteCard(card_id: string): Status | Promise<Status>;
                                                                  +
                                                                  +    abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise<Card>;
                                                                  +
                                                                  +    abstract createLabel(input: CreateLabelInput): Label | Promise<Label>;
                                                                  +
                                                                  +    abstract updateLabel(input: UpdateLabelInput): Label | Promise<Label>;
                                                                  +
                                                                  +    abstract deleteLabel(label_id: string): Status | Promise<Status>;
                                                                  +
                                                                  +    abstract uploadFile(file: Upload): FileResponse | Promise<FileResponse>;
                                                                  +
                                                                  +    abstract createUser(input: CreateUserInput): Nullable<User> | Promise<Nullable<User>>;
                                                                  +
                                                                  +    abstract updateUser(input: UpdateUserInput): Nullable<User> | Promise<Nullable<User>>;
                                                                  +
                                                                  +    abstract deleteUser(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                                                                  +
                                                                  +    abstract login(input: LoginInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                                                                  +
                                                                  +    abstract register(input: RegisterInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                                                                  +
                                                                  +    abstract logout(): Status | Promise<Status>;
                                                                  +
                                                                  +    abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise<Workspace>;
                                                                  +
                                                                  +    abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise<Workspace>;
                                                                  +
                                                                  +    abstract deleteWorkspace(workspace_id: string): Status | Promise<Status>;
                                                                  +
                                                                  +    abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                                                                  +
                                                                  +    abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                                                                  +
                                                                  +    abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                                                                  +
                                                                  +    abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise<Status>;
                                                                  +
                                                                  +    abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                                                                  +}
                                                                  +
                                                                  +export class Success {
                                                                  +    successMessage?: Nullable<string>;
                                                                  +}
                                                                  +
                                                                  +export class Error {
                                                                  +    errorMessage: string;
                                                                  +    code?: Nullable<string>;
                                                                  +}
                                                                  +
                                                                  +export class FileResponse {
                                                                  +    success: boolean;
                                                                  +    url?: Nullable<string>;
                                                                  +    message?: Nullable<string>;
                                                                  +}
                                                                  +
                                                                  +export class User {
                                                                  +    user_id: string;
                                                                  +    username: string;
                                                                  +    email: string;
                                                                  +    picture?: Nullable<string>;
                                                                  +    created_at: DateTime;
                                                                  +}
                                                                  +
                                                                  +export class AuthSuccess {
                                                                  +    token: string;
                                                                  +    user: User;
                                                                  +}
                                                                  +
                                                                  +export class AuthError {
                                                                  +    message: string;
                                                                  +    code?: Nullable<string>;
                                                                  +    field?: Nullable<string>;
                                                                  +}
                                                                  +
                                                                  +export class Workspace {
                                                                  +    workspace_id: string;
                                                                  +    name: string;
                                                                  +    color: string;
                                                                  +    description?: Nullable<string>;
                                                                  +    owner_id: string;
                                                                  +    owner: User;
                                                                  +    members: WorkspaceMembers[];
                                                                  +    boards?: Nullable<Nullable<Board>[]>;
                                                                  +    labels?: Nullable<Nullable<Label>[]>;
                                                                  +    is_pinned: boolean;
                                                                  +}
                                                                  +
                                                                  +export class WorkspaceMembers {
                                                                  +    workspace_id: string;
                                                                  +    user_id: string;
                                                                  +    role: string;
                                                                  +    user: User;
                                                                  +    workspace: Workspace;
                                                                  +}
                                                                  +
                                                                  +export class PinWorkspacePayload {
                                                                  +    workspace: Workspace;
                                                                  +}
                                                                  +
                                                                  +export type DateTime = any;
                                                                  +export type Upload = any;
                                                                  +export type Status = Success | Error;
                                                                  +export type AuthResult = AuthSuccess | AuthError;
                                                                  +type Nullable<T> = T | null;
                                                                  +
                                                                  +
                                                                  +
                                                                  + + + + + + + + + +
                                                                  +
                                                                  +

                                                                  results matching ""

                                                                  +
                                                                    +
                                                                    +
                                                                    +

                                                                    No results matching ""

                                                                    +
                                                                    +
                                                                    +
                                                                    + +
                                                                    +
                                                                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/classes/UpdateUserInput.html b/backend/documentation/classes/UpdateUserInput.html new file mode 100644 index 0000000..e544d51 --- /dev/null +++ b/backend/documentation/classes/UpdateUserInput.html @@ -0,0 +1,726 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                                                                    +
                                                                    + + +
                                                                    +
                                                                    + + + + + + + + + + + + + + + + + + + + +
                                                                    +
                                                                    +

                                                                    +

                                                                    File

                                                                    +

                                                                    +

                                                                    + src/graphql/graphql.ts +

                                                                    + + + + + + +
                                                                    +

                                                                    Index

                                                                    + + + + + + + + + + + + + + + +
                                                                    +
                                                                    Properties
                                                                    +
                                                                    + +
                                                                    +
                                                                    + + +
                                                                    + +

                                                                    + Properties +

                                                                    + + + + + + + + + + + + + + +
                                                                    + + + Optional + email + + +
                                                                    + Type : Nullable<string> + +
                                                                    + +
                                                                    + + + + + + + + + + + + + + +
                                                                    + + + Optional + password + + +
                                                                    + Type : Nullable<string> + +
                                                                    + +
                                                                    + + + + + + + + + + + + + + +
                                                                    + + + user_id + + +
                                                                    + Type : string + +
                                                                    + +
                                                                    + + + + + + + + + + + + + + +
                                                                    + + + Optional + username + + +
                                                                    + Type : Nullable<string> + +
                                                                    + +
                                                                    +
                                                                    + + + + + + + +
                                                                    + + +
                                                                    +
                                                                    export enum Role {
                                                                    +    Admin = "Admin",
                                                                    +    Member = "Member",
                                                                    +    Viewer = "Viewer"
                                                                    +}
                                                                    +
                                                                    +export class CreateBoardInput {
                                                                    +    title: string;
                                                                    +    description?: Nullable<string>;
                                                                    +    color: string;
                                                                    +    workspace_id: string;
                                                                    +}
                                                                    +
                                                                    +export class UpdateBoardInput {
                                                                    +    board_id: string;
                                                                    +    title?: Nullable<string>;
                                                                    +    description?: Nullable<string>;
                                                                    +    color?: Nullable<string>;
                                                                    +}
                                                                    +
                                                                    +export class CreateListInput {
                                                                    +    title: string;
                                                                    +    board_id: string;
                                                                    +    position: number;
                                                                    +    color?: Nullable<string>;
                                                                    +}
                                                                    +
                                                                    +export class UpdateListInput {
                                                                    +    list_id: string;
                                                                    +    title?: Nullable<string>;
                                                                    +    position?: Nullable<number>;
                                                                    +    color?: Nullable<string>;
                                                                    +}
                                                                    +
                                                                    +export class CreateCardInput {
                                                                    +    title: string;
                                                                    +    list_id: string;
                                                                    +    description?: Nullable<string>;
                                                                    +    position: number;
                                                                    +    due_date?: Nullable<DateTime>;
                                                                    +}
                                                                    +
                                                                    +export class UpdateCardInput {
                                                                    +    card_id: string;
                                                                    +    title?: Nullable<string>;
                                                                    +    description?: Nullable<string>;
                                                                    +    position?: Nullable<number>;
                                                                    +    due_date?: Nullable<DateTime>;
                                                                    +}
                                                                    +
                                                                    +export class CreateLabelInput {
                                                                    +    name: string;
                                                                    +    color: string;
                                                                    +    board_id: string;
                                                                    +}
                                                                    +
                                                                    +export class UpdateLabelInput {
                                                                    +    label_id: string;
                                                                    +    name?: Nullable<string>;
                                                                    +    color?: Nullable<string>;
                                                                    +}
                                                                    +
                                                                    +export class LoginInput {
                                                                    +    email: string;
                                                                    +    password: string;
                                                                    +}
                                                                    +
                                                                    +export class RegisterInput {
                                                                    +    username: string;
                                                                    +    email: string;
                                                                    +    password: string;
                                                                    +}
                                                                    +
                                                                    +export class CreateUserInput {
                                                                    +    username: string;
                                                                    +    email: string;
                                                                    +    password: string;
                                                                    +}
                                                                    +
                                                                    +export class UpdateUserInput {
                                                                    +    user_id: string;
                                                                    +    username?: Nullable<string>;
                                                                    +    email?: Nullable<string>;
                                                                    +    password?: Nullable<string>;
                                                                    +}
                                                                    +
                                                                    +export class CreateWorkspaceInput {
                                                                    +    name: string;
                                                                    +    description?: Nullable<string>;
                                                                    +    color?: Nullable<string>;
                                                                    +}
                                                                    +
                                                                    +export class UpdateWorkspaceInput {
                                                                    +    name?: Nullable<string>;
                                                                    +    description?: Nullable<string>;
                                                                    +    color?: Nullable<string>;
                                                                    +}
                                                                    +
                                                                    +export class AddWorkspaceMemberInput {
                                                                    +    workspace_id: string;
                                                                    +    user_email: string;
                                                                    +    role?: Nullable<Role>;
                                                                    +}
                                                                    +
                                                                    +export class UpdateMemberRoleInput {
                                                                    +    workspace_id: string;
                                                                    +    user_id: string;
                                                                    +    role: Role;
                                                                    +}
                                                                    +
                                                                    +export class Board {
                                                                    +    board_id: string;
                                                                    +    title: string;
                                                                    +    description?: Nullable<string>;
                                                                    +    color: string;
                                                                    +    lists: List[];
                                                                    +    workspace_id: string;
                                                                    +}
                                                                    +
                                                                    +export class List {
                                                                    +    list_id: string;
                                                                    +    title: string;
                                                                    +    position: number;
                                                                    +    color: string;
                                                                    +    board_id: string;
                                                                    +    cards?: Nullable<Nullable<Card>[]>;
                                                                    +}
                                                                    +
                                                                    +export class Card {
                                                                    +    card_id: string;
                                                                    +    title: string;
                                                                    +    description?: Nullable<string>;
                                                                    +    position: number;
                                                                    +    list_id: string;
                                                                    +    labels?: Nullable<Nullable<Label>[]>;
                                                                    +    due_date?: Nullable<DateTime>;
                                                                    +    comments?: Nullable<Nullable<Comment>[]>;
                                                                    +    attachments?: Nullable<Nullable<Attachment>[]>;
                                                                    +    members?: Nullable<Nullable<CardMember>[]>;
                                                                    +}
                                                                    +
                                                                    +export class Comment {
                                                                    +    comment_id: string;
                                                                    +    content: string;
                                                                    +    created_at: DateTime;
                                                                    +    card_id: string;
                                                                    +    user_id: string;
                                                                    +}
                                                                    +
                                                                    +export class Label {
                                                                    +    label_id: string;
                                                                    +    name: string;
                                                                    +    color: string;
                                                                    +    workspace_id: string;
                                                                    +}
                                                                    +
                                                                    +export class Attachment {
                                                                    +    attachment_id: string;
                                                                    +    card_id: string;
                                                                    +    url: string;
                                                                    +    filename: string;
                                                                    +}
                                                                    +
                                                                    +export class CardLabel {
                                                                    +    card_id: string;
                                                                    +    label_id: string;
                                                                    +}
                                                                    +
                                                                    +export class CardMember {
                                                                    +    card_id: string;
                                                                    +    user_id: string;
                                                                    +}
                                                                    +
                                                                    +export abstract class IQuery {
                                                                    +    abstract boards(workspace_id: string): Nullable<Nullable<Board>[]> | Promise<Nullable<Nullable<Board>[]>>;
                                                                    +
                                                                    +    abstract board(board_id: string): Nullable<Board> | Promise<Nullable<Board>>;
                                                                    +
                                                                    +    abstract lists(board_id: string): Nullable<Nullable<List>[]> | Promise<Nullable<Nullable<List>[]>>;
                                                                    +
                                                                    +    abstract list(list_id: string): Nullable<List> | Promise<Nullable<List>>;
                                                                    +
                                                                    +    abstract cards(list_id: string): Nullable<Nullable<Card>[]> | Promise<Nullable<Nullable<Card>[]>>;
                                                                    +
                                                                    +    abstract card(card_id: string): Nullable<Card> | Promise<Nullable<Card>>;
                                                                    +
                                                                    +    abstract labels(workspace_id: string): Nullable<Nullable<Label>[]> | Promise<Nullable<Nullable<Label>[]>>;
                                                                    +
                                                                    +    abstract comments(card_id: string): Nullable<Nullable<Comment>[]> | Promise<Nullable<Nullable<Comment>[]>>;
                                                                    +
                                                                    +    abstract users(): Nullable<Nullable<User>[]> | Promise<Nullable<Nullable<User>[]>>;
                                                                    +
                                                                    +    abstract user(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                                                                    +
                                                                    +    abstract me(): Nullable<User> | Promise<Nullable<User>>;
                                                                    +
                                                                    +    abstract workspaces(): Nullable<Nullable<Workspace>[]> | Promise<Nullable<Nullable<Workspace>[]>>;
                                                                    +
                                                                    +    abstract workspace(workspace_id: string): Nullable<Workspace> | Promise<Nullable<Workspace>>;
                                                                    +
                                                                    +    abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise<WorkspaceMembers[]>;
                                                                    +}
                                                                    +
                                                                    +export class CreateBoardPayload {
                                                                    +    board?: Nullable<Board>;
                                                                    +}
                                                                    +
                                                                    +export abstract class IMutation {
                                                                    +    abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise<CreateBoardPayload>;
                                                                    +
                                                                    +    abstract updateBoard(input: UpdateBoardInput): Board | Promise<Board>;
                                                                    +
                                                                    +    abstract deleteBoard(board_id: string): Status | Promise<Status>;
                                                                    +
                                                                    +    abstract createList(input: CreateListInput): List | Promise<List>;
                                                                    +
                                                                    +    abstract updateList(input: UpdateListInput): List | Promise<List>;
                                                                    +
                                                                    +    abstract deleteList(list_id: string): Status | Promise<Status>;
                                                                    +
                                                                    +    abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise<List[]>;
                                                                    +
                                                                    +    abstract createCard(input: CreateCardInput): Card | Promise<Card>;
                                                                    +
                                                                    +    abstract updateCard(input: UpdateCardInput): Card | Promise<Card>;
                                                                    +
                                                                    +    abstract deleteCard(card_id: string): Status | Promise<Status>;
                                                                    +
                                                                    +    abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise<Card>;
                                                                    +
                                                                    +    abstract createLabel(input: CreateLabelInput): Label | Promise<Label>;
                                                                    +
                                                                    +    abstract updateLabel(input: UpdateLabelInput): Label | Promise<Label>;
                                                                    +
                                                                    +    abstract deleteLabel(label_id: string): Status | Promise<Status>;
                                                                    +
                                                                    +    abstract uploadFile(file: Upload): FileResponse | Promise<FileResponse>;
                                                                    +
                                                                    +    abstract createUser(input: CreateUserInput): Nullable<User> | Promise<Nullable<User>>;
                                                                    +
                                                                    +    abstract updateUser(input: UpdateUserInput): Nullable<User> | Promise<Nullable<User>>;
                                                                    +
                                                                    +    abstract deleteUser(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                                                                    +
                                                                    +    abstract login(input: LoginInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                                                                    +
                                                                    +    abstract register(input: RegisterInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                                                                    +
                                                                    +    abstract logout(): Status | Promise<Status>;
                                                                    +
                                                                    +    abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise<Workspace>;
                                                                    +
                                                                    +    abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise<Workspace>;
                                                                    +
                                                                    +    abstract deleteWorkspace(workspace_id: string): Status | Promise<Status>;
                                                                    +
                                                                    +    abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                                                                    +
                                                                    +    abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                                                                    +
                                                                    +    abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                                                                    +
                                                                    +    abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise<Status>;
                                                                    +
                                                                    +    abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                                                                    +}
                                                                    +
                                                                    +export class Success {
                                                                    +    successMessage?: Nullable<string>;
                                                                    +}
                                                                    +
                                                                    +export class Error {
                                                                    +    errorMessage: string;
                                                                    +    code?: Nullable<string>;
                                                                    +}
                                                                    +
                                                                    +export class FileResponse {
                                                                    +    success: boolean;
                                                                    +    url?: Nullable<string>;
                                                                    +    message?: Nullable<string>;
                                                                    +}
                                                                    +
                                                                    +export class User {
                                                                    +    user_id: string;
                                                                    +    username: string;
                                                                    +    email: string;
                                                                    +    picture?: Nullable<string>;
                                                                    +    created_at: DateTime;
                                                                    +}
                                                                    +
                                                                    +export class AuthSuccess {
                                                                    +    token: string;
                                                                    +    user: User;
                                                                    +}
                                                                    +
                                                                    +export class AuthError {
                                                                    +    message: string;
                                                                    +    code?: Nullable<string>;
                                                                    +    field?: Nullable<string>;
                                                                    +}
                                                                    +
                                                                    +export class Workspace {
                                                                    +    workspace_id: string;
                                                                    +    name: string;
                                                                    +    color: string;
                                                                    +    description?: Nullable<string>;
                                                                    +    owner_id: string;
                                                                    +    owner: User;
                                                                    +    members: WorkspaceMembers[];
                                                                    +    boards?: Nullable<Nullable<Board>[]>;
                                                                    +    labels?: Nullable<Nullable<Label>[]>;
                                                                    +    is_pinned: boolean;
                                                                    +}
                                                                    +
                                                                    +export class WorkspaceMembers {
                                                                    +    workspace_id: string;
                                                                    +    user_id: string;
                                                                    +    role: string;
                                                                    +    user: User;
                                                                    +    workspace: Workspace;
                                                                    +}
                                                                    +
                                                                    +export class PinWorkspacePayload {
                                                                    +    workspace: Workspace;
                                                                    +}
                                                                    +
                                                                    +export type DateTime = any;
                                                                    +export type Upload = any;
                                                                    +export type Status = Success | Error;
                                                                    +export type AuthResult = AuthSuccess | AuthError;
                                                                    +type Nullable<T> = T | null;
                                                                    +
                                                                    +
                                                                    +
                                                                    + + + + + + + + + +
                                                                    +
                                                                    +

                                                                    results matching ""

                                                                    +
                                                                      +
                                                                      +
                                                                      +

                                                                      No results matching ""

                                                                      +
                                                                      +
                                                                      +
                                                                      + +
                                                                      +
                                                                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/classes/UpdateWorkspaceInput.html b/backend/documentation/classes/UpdateWorkspaceInput.html new file mode 100644 index 0000000..6200d1f --- /dev/null +++ b/backend/documentation/classes/UpdateWorkspaceInput.html @@ -0,0 +1,697 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                                                                      +
                                                                      + + +
                                                                      +
                                                                      + + + + + + + + + + + + + + + + + + + + +
                                                                      +
                                                                      +

                                                                      +

                                                                      File

                                                                      +

                                                                      +

                                                                      + src/graphql/graphql.ts +

                                                                      + + + + + + +
                                                                      +

                                                                      Index

                                                                      + + + + + + + + + + + + + + + +
                                                                      +
                                                                      Properties
                                                                      +
                                                                      + +
                                                                      +
                                                                      + + +
                                                                      + +

                                                                      + Properties +

                                                                      + + + + + + + + + + + + + + +
                                                                      + + + Optional + color + + +
                                                                      + Type : Nullable<string> + +
                                                                      + +
                                                                      + + + + + + + + + + + + + + +
                                                                      + + + Optional + description + + +
                                                                      + Type : Nullable<string> + +
                                                                      + +
                                                                      + + + + + + + + + + + + + + +
                                                                      + + + Optional + name + + +
                                                                      + Type : Nullable<string> + +
                                                                      + +
                                                                      +
                                                                      + + + + + + + +
                                                                      + + +
                                                                      +
                                                                      export enum Role {
                                                                      +    Admin = "Admin",
                                                                      +    Member = "Member",
                                                                      +    Viewer = "Viewer"
                                                                      +}
                                                                      +
                                                                      +export class CreateBoardInput {
                                                                      +    title: string;
                                                                      +    description?: Nullable<string>;
                                                                      +    color: string;
                                                                      +    workspace_id: string;
                                                                      +}
                                                                      +
                                                                      +export class UpdateBoardInput {
                                                                      +    board_id: string;
                                                                      +    title?: Nullable<string>;
                                                                      +    description?: Nullable<string>;
                                                                      +    color?: Nullable<string>;
                                                                      +}
                                                                      +
                                                                      +export class CreateListInput {
                                                                      +    title: string;
                                                                      +    board_id: string;
                                                                      +    position: number;
                                                                      +    color?: Nullable<string>;
                                                                      +}
                                                                      +
                                                                      +export class UpdateListInput {
                                                                      +    list_id: string;
                                                                      +    title?: Nullable<string>;
                                                                      +    position?: Nullable<number>;
                                                                      +    color?: Nullable<string>;
                                                                      +}
                                                                      +
                                                                      +export class CreateCardInput {
                                                                      +    title: string;
                                                                      +    list_id: string;
                                                                      +    description?: Nullable<string>;
                                                                      +    position: number;
                                                                      +    due_date?: Nullable<DateTime>;
                                                                      +}
                                                                      +
                                                                      +export class UpdateCardInput {
                                                                      +    card_id: string;
                                                                      +    title?: Nullable<string>;
                                                                      +    description?: Nullable<string>;
                                                                      +    position?: Nullable<number>;
                                                                      +    due_date?: Nullable<DateTime>;
                                                                      +}
                                                                      +
                                                                      +export class CreateLabelInput {
                                                                      +    name: string;
                                                                      +    color: string;
                                                                      +    board_id: string;
                                                                      +}
                                                                      +
                                                                      +export class UpdateLabelInput {
                                                                      +    label_id: string;
                                                                      +    name?: Nullable<string>;
                                                                      +    color?: Nullable<string>;
                                                                      +}
                                                                      +
                                                                      +export class LoginInput {
                                                                      +    email: string;
                                                                      +    password: string;
                                                                      +}
                                                                      +
                                                                      +export class RegisterInput {
                                                                      +    username: string;
                                                                      +    email: string;
                                                                      +    password: string;
                                                                      +}
                                                                      +
                                                                      +export class CreateUserInput {
                                                                      +    username: string;
                                                                      +    email: string;
                                                                      +    password: string;
                                                                      +}
                                                                      +
                                                                      +export class UpdateUserInput {
                                                                      +    user_id: string;
                                                                      +    username?: Nullable<string>;
                                                                      +    email?: Nullable<string>;
                                                                      +    password?: Nullable<string>;
                                                                      +}
                                                                      +
                                                                      +export class CreateWorkspaceInput {
                                                                      +    name: string;
                                                                      +    description?: Nullable<string>;
                                                                      +    color?: Nullable<string>;
                                                                      +}
                                                                      +
                                                                      +export class UpdateWorkspaceInput {
                                                                      +    name?: Nullable<string>;
                                                                      +    description?: Nullable<string>;
                                                                      +    color?: Nullable<string>;
                                                                      +}
                                                                      +
                                                                      +export class AddWorkspaceMemberInput {
                                                                      +    workspace_id: string;
                                                                      +    user_email: string;
                                                                      +    role?: Nullable<Role>;
                                                                      +}
                                                                      +
                                                                      +export class UpdateMemberRoleInput {
                                                                      +    workspace_id: string;
                                                                      +    user_id: string;
                                                                      +    role: Role;
                                                                      +}
                                                                      +
                                                                      +export class Board {
                                                                      +    board_id: string;
                                                                      +    title: string;
                                                                      +    description?: Nullable<string>;
                                                                      +    color: string;
                                                                      +    lists: List[];
                                                                      +    workspace_id: string;
                                                                      +}
                                                                      +
                                                                      +export class List {
                                                                      +    list_id: string;
                                                                      +    title: string;
                                                                      +    position: number;
                                                                      +    color: string;
                                                                      +    board_id: string;
                                                                      +    cards?: Nullable<Nullable<Card>[]>;
                                                                      +}
                                                                      +
                                                                      +export class Card {
                                                                      +    card_id: string;
                                                                      +    title: string;
                                                                      +    description?: Nullable<string>;
                                                                      +    position: number;
                                                                      +    list_id: string;
                                                                      +    labels?: Nullable<Nullable<Label>[]>;
                                                                      +    due_date?: Nullable<DateTime>;
                                                                      +    comments?: Nullable<Nullable<Comment>[]>;
                                                                      +    attachments?: Nullable<Nullable<Attachment>[]>;
                                                                      +    members?: Nullable<Nullable<CardMember>[]>;
                                                                      +}
                                                                      +
                                                                      +export class Comment {
                                                                      +    comment_id: string;
                                                                      +    content: string;
                                                                      +    created_at: DateTime;
                                                                      +    card_id: string;
                                                                      +    user_id: string;
                                                                      +}
                                                                      +
                                                                      +export class Label {
                                                                      +    label_id: string;
                                                                      +    name: string;
                                                                      +    color: string;
                                                                      +    workspace_id: string;
                                                                      +}
                                                                      +
                                                                      +export class Attachment {
                                                                      +    attachment_id: string;
                                                                      +    card_id: string;
                                                                      +    url: string;
                                                                      +    filename: string;
                                                                      +}
                                                                      +
                                                                      +export class CardLabel {
                                                                      +    card_id: string;
                                                                      +    label_id: string;
                                                                      +}
                                                                      +
                                                                      +export class CardMember {
                                                                      +    card_id: string;
                                                                      +    user_id: string;
                                                                      +}
                                                                      +
                                                                      +export abstract class IQuery {
                                                                      +    abstract boards(workspace_id: string): Nullable<Nullable<Board>[]> | Promise<Nullable<Nullable<Board>[]>>;
                                                                      +
                                                                      +    abstract board(board_id: string): Nullable<Board> | Promise<Nullable<Board>>;
                                                                      +
                                                                      +    abstract lists(board_id: string): Nullable<Nullable<List>[]> | Promise<Nullable<Nullable<List>[]>>;
                                                                      +
                                                                      +    abstract list(list_id: string): Nullable<List> | Promise<Nullable<List>>;
                                                                      +
                                                                      +    abstract cards(list_id: string): Nullable<Nullable<Card>[]> | Promise<Nullable<Nullable<Card>[]>>;
                                                                      +
                                                                      +    abstract card(card_id: string): Nullable<Card> | Promise<Nullable<Card>>;
                                                                      +
                                                                      +    abstract labels(workspace_id: string): Nullable<Nullable<Label>[]> | Promise<Nullable<Nullable<Label>[]>>;
                                                                      +
                                                                      +    abstract comments(card_id: string): Nullable<Nullable<Comment>[]> | Promise<Nullable<Nullable<Comment>[]>>;
                                                                      +
                                                                      +    abstract users(): Nullable<Nullable<User>[]> | Promise<Nullable<Nullable<User>[]>>;
                                                                      +
                                                                      +    abstract user(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                                                                      +
                                                                      +    abstract me(): Nullable<User> | Promise<Nullable<User>>;
                                                                      +
                                                                      +    abstract workspaces(): Nullable<Nullable<Workspace>[]> | Promise<Nullable<Nullable<Workspace>[]>>;
                                                                      +
                                                                      +    abstract workspace(workspace_id: string): Nullable<Workspace> | Promise<Nullable<Workspace>>;
                                                                      +
                                                                      +    abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise<WorkspaceMembers[]>;
                                                                      +}
                                                                      +
                                                                      +export class CreateBoardPayload {
                                                                      +    board?: Nullable<Board>;
                                                                      +}
                                                                      +
                                                                      +export abstract class IMutation {
                                                                      +    abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise<CreateBoardPayload>;
                                                                      +
                                                                      +    abstract updateBoard(input: UpdateBoardInput): Board | Promise<Board>;
                                                                      +
                                                                      +    abstract deleteBoard(board_id: string): Status | Promise<Status>;
                                                                      +
                                                                      +    abstract createList(input: CreateListInput): List | Promise<List>;
                                                                      +
                                                                      +    abstract updateList(input: UpdateListInput): List | Promise<List>;
                                                                      +
                                                                      +    abstract deleteList(list_id: string): Status | Promise<Status>;
                                                                      +
                                                                      +    abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise<List[]>;
                                                                      +
                                                                      +    abstract createCard(input: CreateCardInput): Card | Promise<Card>;
                                                                      +
                                                                      +    abstract updateCard(input: UpdateCardInput): Card | Promise<Card>;
                                                                      +
                                                                      +    abstract deleteCard(card_id: string): Status | Promise<Status>;
                                                                      +
                                                                      +    abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise<Card>;
                                                                      +
                                                                      +    abstract createLabel(input: CreateLabelInput): Label | Promise<Label>;
                                                                      +
                                                                      +    abstract updateLabel(input: UpdateLabelInput): Label | Promise<Label>;
                                                                      +
                                                                      +    abstract deleteLabel(label_id: string): Status | Promise<Status>;
                                                                      +
                                                                      +    abstract uploadFile(file: Upload): FileResponse | Promise<FileResponse>;
                                                                      +
                                                                      +    abstract createUser(input: CreateUserInput): Nullable<User> | Promise<Nullable<User>>;
                                                                      +
                                                                      +    abstract updateUser(input: UpdateUserInput): Nullable<User> | Promise<Nullable<User>>;
                                                                      +
                                                                      +    abstract deleteUser(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                                                                      +
                                                                      +    abstract login(input: LoginInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                                                                      +
                                                                      +    abstract register(input: RegisterInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                                                                      +
                                                                      +    abstract logout(): Status | Promise<Status>;
                                                                      +
                                                                      +    abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise<Workspace>;
                                                                      +
                                                                      +    abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise<Workspace>;
                                                                      +
                                                                      +    abstract deleteWorkspace(workspace_id: string): Status | Promise<Status>;
                                                                      +
                                                                      +    abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                                                                      +
                                                                      +    abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                                                                      +
                                                                      +    abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                                                                      +
                                                                      +    abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise<Status>;
                                                                      +
                                                                      +    abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                                                                      +}
                                                                      +
                                                                      +export class Success {
                                                                      +    successMessage?: Nullable<string>;
                                                                      +}
                                                                      +
                                                                      +export class Error {
                                                                      +    errorMessage: string;
                                                                      +    code?: Nullable<string>;
                                                                      +}
                                                                      +
                                                                      +export class FileResponse {
                                                                      +    success: boolean;
                                                                      +    url?: Nullable<string>;
                                                                      +    message?: Nullable<string>;
                                                                      +}
                                                                      +
                                                                      +export class User {
                                                                      +    user_id: string;
                                                                      +    username: string;
                                                                      +    email: string;
                                                                      +    picture?: Nullable<string>;
                                                                      +    created_at: DateTime;
                                                                      +}
                                                                      +
                                                                      +export class AuthSuccess {
                                                                      +    token: string;
                                                                      +    user: User;
                                                                      +}
                                                                      +
                                                                      +export class AuthError {
                                                                      +    message: string;
                                                                      +    code?: Nullable<string>;
                                                                      +    field?: Nullable<string>;
                                                                      +}
                                                                      +
                                                                      +export class Workspace {
                                                                      +    workspace_id: string;
                                                                      +    name: string;
                                                                      +    color: string;
                                                                      +    description?: Nullable<string>;
                                                                      +    owner_id: string;
                                                                      +    owner: User;
                                                                      +    members: WorkspaceMembers[];
                                                                      +    boards?: Nullable<Nullable<Board>[]>;
                                                                      +    labels?: Nullable<Nullable<Label>[]>;
                                                                      +    is_pinned: boolean;
                                                                      +}
                                                                      +
                                                                      +export class WorkspaceMembers {
                                                                      +    workspace_id: string;
                                                                      +    user_id: string;
                                                                      +    role: string;
                                                                      +    user: User;
                                                                      +    workspace: Workspace;
                                                                      +}
                                                                      +
                                                                      +export class PinWorkspacePayload {
                                                                      +    workspace: Workspace;
                                                                      +}
                                                                      +
                                                                      +export type DateTime = any;
                                                                      +export type Upload = any;
                                                                      +export type Status = Success | Error;
                                                                      +export type AuthResult = AuthSuccess | AuthError;
                                                                      +type Nullable<T> = T | null;
                                                                      +
                                                                      +
                                                                      +
                                                                      + + + + + + + + + +
                                                                      +
                                                                      +

                                                                      results matching ""

                                                                      +
                                                                        +
                                                                        +
                                                                        +

                                                                        No results matching ""

                                                                        +
                                                                        +
                                                                        +
                                                                        + +
                                                                        +
                                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/classes/User.html b/backend/documentation/classes/User.html new file mode 100644 index 0000000..0cd1e74 --- /dev/null +++ b/backend/documentation/classes/User.html @@ -0,0 +1,751 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                                                                        +
                                                                        + + +
                                                                        +
                                                                        + + + + + + + + + + + + + + + + + + + + +
                                                                        +
                                                                        +

                                                                        +

                                                                        File

                                                                        +

                                                                        +

                                                                        + src/graphql/graphql.ts +

                                                                        + + + + + + +
                                                                        +

                                                                        Index

                                                                        + + + + + + + + + + + + + + + +
                                                                        +
                                                                        Properties
                                                                        +
                                                                        + +
                                                                        +
                                                                        + + +
                                                                        + +

                                                                        + Properties +

                                                                        + + + + + + + + + + + + + + +
                                                                        + + + created_at + + +
                                                                        + Type : DateTime + +
                                                                        + +
                                                                        + + + + + + + + + + + + + + +
                                                                        + + + email + + +
                                                                        + Type : string + +
                                                                        + +
                                                                        + + + + + + + + + + + + + + +
                                                                        + + + Optional + picture + + +
                                                                        + Type : Nullable<string> + +
                                                                        + +
                                                                        + + + + + + + + + + + + + + +
                                                                        + + + user_id + + +
                                                                        + Type : string + +
                                                                        + +
                                                                        + + + + + + + + + + + + + + +
                                                                        + + + username + + +
                                                                        + Type : string + +
                                                                        + +
                                                                        +
                                                                        + + + + + + + +
                                                                        + + +
                                                                        +
                                                                        export enum Role {
                                                                        +    Admin = "Admin",
                                                                        +    Member = "Member",
                                                                        +    Viewer = "Viewer"
                                                                        +}
                                                                        +
                                                                        +export class CreateBoardInput {
                                                                        +    title: string;
                                                                        +    description?: Nullable<string>;
                                                                        +    color: string;
                                                                        +    workspace_id: string;
                                                                        +}
                                                                        +
                                                                        +export class UpdateBoardInput {
                                                                        +    board_id: string;
                                                                        +    title?: Nullable<string>;
                                                                        +    description?: Nullable<string>;
                                                                        +    color?: Nullable<string>;
                                                                        +}
                                                                        +
                                                                        +export class CreateListInput {
                                                                        +    title: string;
                                                                        +    board_id: string;
                                                                        +    position: number;
                                                                        +    color?: Nullable<string>;
                                                                        +}
                                                                        +
                                                                        +export class UpdateListInput {
                                                                        +    list_id: string;
                                                                        +    title?: Nullable<string>;
                                                                        +    position?: Nullable<number>;
                                                                        +    color?: Nullable<string>;
                                                                        +}
                                                                        +
                                                                        +export class CreateCardInput {
                                                                        +    title: string;
                                                                        +    list_id: string;
                                                                        +    description?: Nullable<string>;
                                                                        +    position: number;
                                                                        +    due_date?: Nullable<DateTime>;
                                                                        +}
                                                                        +
                                                                        +export class UpdateCardInput {
                                                                        +    card_id: string;
                                                                        +    title?: Nullable<string>;
                                                                        +    description?: Nullable<string>;
                                                                        +    position?: Nullable<number>;
                                                                        +    due_date?: Nullable<DateTime>;
                                                                        +}
                                                                        +
                                                                        +export class CreateLabelInput {
                                                                        +    name: string;
                                                                        +    color: string;
                                                                        +    board_id: string;
                                                                        +}
                                                                        +
                                                                        +export class UpdateLabelInput {
                                                                        +    label_id: string;
                                                                        +    name?: Nullable<string>;
                                                                        +    color?: Nullable<string>;
                                                                        +}
                                                                        +
                                                                        +export class LoginInput {
                                                                        +    email: string;
                                                                        +    password: string;
                                                                        +}
                                                                        +
                                                                        +export class RegisterInput {
                                                                        +    username: string;
                                                                        +    email: string;
                                                                        +    password: string;
                                                                        +}
                                                                        +
                                                                        +export class CreateUserInput {
                                                                        +    username: string;
                                                                        +    email: string;
                                                                        +    password: string;
                                                                        +}
                                                                        +
                                                                        +export class UpdateUserInput {
                                                                        +    user_id: string;
                                                                        +    username?: Nullable<string>;
                                                                        +    email?: Nullable<string>;
                                                                        +    password?: Nullable<string>;
                                                                        +}
                                                                        +
                                                                        +export class CreateWorkspaceInput {
                                                                        +    name: string;
                                                                        +    description?: Nullable<string>;
                                                                        +    color?: Nullable<string>;
                                                                        +}
                                                                        +
                                                                        +export class UpdateWorkspaceInput {
                                                                        +    name?: Nullable<string>;
                                                                        +    description?: Nullable<string>;
                                                                        +    color?: Nullable<string>;
                                                                        +}
                                                                        +
                                                                        +export class AddWorkspaceMemberInput {
                                                                        +    workspace_id: string;
                                                                        +    user_email: string;
                                                                        +    role?: Nullable<Role>;
                                                                        +}
                                                                        +
                                                                        +export class UpdateMemberRoleInput {
                                                                        +    workspace_id: string;
                                                                        +    user_id: string;
                                                                        +    role: Role;
                                                                        +}
                                                                        +
                                                                        +export class Board {
                                                                        +    board_id: string;
                                                                        +    title: string;
                                                                        +    description?: Nullable<string>;
                                                                        +    color: string;
                                                                        +    lists: List[];
                                                                        +    workspace_id: string;
                                                                        +}
                                                                        +
                                                                        +export class List {
                                                                        +    list_id: string;
                                                                        +    title: string;
                                                                        +    position: number;
                                                                        +    color: string;
                                                                        +    board_id: string;
                                                                        +    cards?: Nullable<Nullable<Card>[]>;
                                                                        +}
                                                                        +
                                                                        +export class Card {
                                                                        +    card_id: string;
                                                                        +    title: string;
                                                                        +    description?: Nullable<string>;
                                                                        +    position: number;
                                                                        +    list_id: string;
                                                                        +    labels?: Nullable<Nullable<Label>[]>;
                                                                        +    due_date?: Nullable<DateTime>;
                                                                        +    comments?: Nullable<Nullable<Comment>[]>;
                                                                        +    attachments?: Nullable<Nullable<Attachment>[]>;
                                                                        +    members?: Nullable<Nullable<CardMember>[]>;
                                                                        +}
                                                                        +
                                                                        +export class Comment {
                                                                        +    comment_id: string;
                                                                        +    content: string;
                                                                        +    created_at: DateTime;
                                                                        +    card_id: string;
                                                                        +    user_id: string;
                                                                        +}
                                                                        +
                                                                        +export class Label {
                                                                        +    label_id: string;
                                                                        +    name: string;
                                                                        +    color: string;
                                                                        +    workspace_id: string;
                                                                        +}
                                                                        +
                                                                        +export class Attachment {
                                                                        +    attachment_id: string;
                                                                        +    card_id: string;
                                                                        +    url: string;
                                                                        +    filename: string;
                                                                        +}
                                                                        +
                                                                        +export class CardLabel {
                                                                        +    card_id: string;
                                                                        +    label_id: string;
                                                                        +}
                                                                        +
                                                                        +export class CardMember {
                                                                        +    card_id: string;
                                                                        +    user_id: string;
                                                                        +}
                                                                        +
                                                                        +export abstract class IQuery {
                                                                        +    abstract boards(workspace_id: string): Nullable<Nullable<Board>[]> | Promise<Nullable<Nullable<Board>[]>>;
                                                                        +
                                                                        +    abstract board(board_id: string): Nullable<Board> | Promise<Nullable<Board>>;
                                                                        +
                                                                        +    abstract lists(board_id: string): Nullable<Nullable<List>[]> | Promise<Nullable<Nullable<List>[]>>;
                                                                        +
                                                                        +    abstract list(list_id: string): Nullable<List> | Promise<Nullable<List>>;
                                                                        +
                                                                        +    abstract cards(list_id: string): Nullable<Nullable<Card>[]> | Promise<Nullable<Nullable<Card>[]>>;
                                                                        +
                                                                        +    abstract card(card_id: string): Nullable<Card> | Promise<Nullable<Card>>;
                                                                        +
                                                                        +    abstract labels(workspace_id: string): Nullable<Nullable<Label>[]> | Promise<Nullable<Nullable<Label>[]>>;
                                                                        +
                                                                        +    abstract comments(card_id: string): Nullable<Nullable<Comment>[]> | Promise<Nullable<Nullable<Comment>[]>>;
                                                                        +
                                                                        +    abstract users(): Nullable<Nullable<User>[]> | Promise<Nullable<Nullable<User>[]>>;
                                                                        +
                                                                        +    abstract user(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                                                                        +
                                                                        +    abstract me(): Nullable<User> | Promise<Nullable<User>>;
                                                                        +
                                                                        +    abstract workspaces(): Nullable<Nullable<Workspace>[]> | Promise<Nullable<Nullable<Workspace>[]>>;
                                                                        +
                                                                        +    abstract workspace(workspace_id: string): Nullable<Workspace> | Promise<Nullable<Workspace>>;
                                                                        +
                                                                        +    abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise<WorkspaceMembers[]>;
                                                                        +}
                                                                        +
                                                                        +export class CreateBoardPayload {
                                                                        +    board?: Nullable<Board>;
                                                                        +}
                                                                        +
                                                                        +export abstract class IMutation {
                                                                        +    abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise<CreateBoardPayload>;
                                                                        +
                                                                        +    abstract updateBoard(input: UpdateBoardInput): Board | Promise<Board>;
                                                                        +
                                                                        +    abstract deleteBoard(board_id: string): Status | Promise<Status>;
                                                                        +
                                                                        +    abstract createList(input: CreateListInput): List | Promise<List>;
                                                                        +
                                                                        +    abstract updateList(input: UpdateListInput): List | Promise<List>;
                                                                        +
                                                                        +    abstract deleteList(list_id: string): Status | Promise<Status>;
                                                                        +
                                                                        +    abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise<List[]>;
                                                                        +
                                                                        +    abstract createCard(input: CreateCardInput): Card | Promise<Card>;
                                                                        +
                                                                        +    abstract updateCard(input: UpdateCardInput): Card | Promise<Card>;
                                                                        +
                                                                        +    abstract deleteCard(card_id: string): Status | Promise<Status>;
                                                                        +
                                                                        +    abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise<Card>;
                                                                        +
                                                                        +    abstract createLabel(input: CreateLabelInput): Label | Promise<Label>;
                                                                        +
                                                                        +    abstract updateLabel(input: UpdateLabelInput): Label | Promise<Label>;
                                                                        +
                                                                        +    abstract deleteLabel(label_id: string): Status | Promise<Status>;
                                                                        +
                                                                        +    abstract uploadFile(file: Upload): FileResponse | Promise<FileResponse>;
                                                                        +
                                                                        +    abstract createUser(input: CreateUserInput): Nullable<User> | Promise<Nullable<User>>;
                                                                        +
                                                                        +    abstract updateUser(input: UpdateUserInput): Nullable<User> | Promise<Nullable<User>>;
                                                                        +
                                                                        +    abstract deleteUser(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                                                                        +
                                                                        +    abstract login(input: LoginInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                                                                        +
                                                                        +    abstract register(input: RegisterInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                                                                        +
                                                                        +    abstract logout(): Status | Promise<Status>;
                                                                        +
                                                                        +    abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise<Workspace>;
                                                                        +
                                                                        +    abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise<Workspace>;
                                                                        +
                                                                        +    abstract deleteWorkspace(workspace_id: string): Status | Promise<Status>;
                                                                        +
                                                                        +    abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                                                                        +
                                                                        +    abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                                                                        +
                                                                        +    abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                                                                        +
                                                                        +    abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise<Status>;
                                                                        +
                                                                        +    abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                                                                        +}
                                                                        +
                                                                        +export class Success {
                                                                        +    successMessage?: Nullable<string>;
                                                                        +}
                                                                        +
                                                                        +export class Error {
                                                                        +    errorMessage: string;
                                                                        +    code?: Nullable<string>;
                                                                        +}
                                                                        +
                                                                        +export class FileResponse {
                                                                        +    success: boolean;
                                                                        +    url?: Nullable<string>;
                                                                        +    message?: Nullable<string>;
                                                                        +}
                                                                        +
                                                                        +export class User {
                                                                        +    user_id: string;
                                                                        +    username: string;
                                                                        +    email: string;
                                                                        +    picture?: Nullable<string>;
                                                                        +    created_at: DateTime;
                                                                        +}
                                                                        +
                                                                        +export class AuthSuccess {
                                                                        +    token: string;
                                                                        +    user: User;
                                                                        +}
                                                                        +
                                                                        +export class AuthError {
                                                                        +    message: string;
                                                                        +    code?: Nullable<string>;
                                                                        +    field?: Nullable<string>;
                                                                        +}
                                                                        +
                                                                        +export class Workspace {
                                                                        +    workspace_id: string;
                                                                        +    name: string;
                                                                        +    color: string;
                                                                        +    description?: Nullable<string>;
                                                                        +    owner_id: string;
                                                                        +    owner: User;
                                                                        +    members: WorkspaceMembers[];
                                                                        +    boards?: Nullable<Nullable<Board>[]>;
                                                                        +    labels?: Nullable<Nullable<Label>[]>;
                                                                        +    is_pinned: boolean;
                                                                        +}
                                                                        +
                                                                        +export class WorkspaceMembers {
                                                                        +    workspace_id: string;
                                                                        +    user_id: string;
                                                                        +    role: string;
                                                                        +    user: User;
                                                                        +    workspace: Workspace;
                                                                        +}
                                                                        +
                                                                        +export class PinWorkspacePayload {
                                                                        +    workspace: Workspace;
                                                                        +}
                                                                        +
                                                                        +export type DateTime = any;
                                                                        +export type Upload = any;
                                                                        +export type Status = Success | Error;
                                                                        +export type AuthResult = AuthSuccess | AuthError;
                                                                        +type Nullable<T> = T | null;
                                                                        +
                                                                        +
                                                                        +
                                                                        + + + + + + + + + +
                                                                        +
                                                                        +

                                                                        results matching ""

                                                                        +
                                                                          +
                                                                          +
                                                                          +

                                                                          No results matching ""

                                                                          +
                                                                          +
                                                                          +
                                                                          + +
                                                                          +
                                                                          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/classes/Workspace.html b/backend/documentation/classes/Workspace.html new file mode 100644 index 0000000..43fce74 --- /dev/null +++ b/backend/documentation/classes/Workspace.html @@ -0,0 +1,900 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                                                                          +
                                                                          + + +
                                                                          +
                                                                          + + + + + + + + + + + + + + + + + + + + +
                                                                          +
                                                                          +

                                                                          +

                                                                          File

                                                                          +

                                                                          +

                                                                          + src/graphql/graphql.ts +

                                                                          + + + + + + +
                                                                          +

                                                                          Index

                                                                          + + + + + + + + + + + + + + + +
                                                                          +
                                                                          Properties
                                                                          +
                                                                          + +
                                                                          +
                                                                          + + +
                                                                          + +

                                                                          + Properties +

                                                                          + + + + + + + + + + + + + + +
                                                                          + + + Optional + boards + + +
                                                                          + Type : Nullable<Nullable[]> + +
                                                                          + +
                                                                          + + + + + + + + + + + + + + +
                                                                          + + + color + + +
                                                                          + Type : string + +
                                                                          + +
                                                                          + + + + + + + + + + + + + + +
                                                                          + + + Optional + description + + +
                                                                          + Type : Nullable<string> + +
                                                                          + +
                                                                          + + + + + + + + + + + + + + +
                                                                          + + + is_pinned + + +
                                                                          + Type : boolean + +
                                                                          + +
                                                                          + + + + + + + + + + + + + + +
                                                                          + + + Optional + labels + + +
                                                                          + Type : Nullable<Nullable[]> + +
                                                                          + +
                                                                          + + + + + + + + + + + + + + +
                                                                          + + + members + + +
                                                                          + Type : WorkspaceMembers[] + +
                                                                          + +
                                                                          + + + + + + + + + + + + + + +
                                                                          + + + name + + +
                                                                          + Type : string + +
                                                                          + +
                                                                          + + + + + + + + + + + + + + +
                                                                          + + + owner + + +
                                                                          + Type : User + +
                                                                          + +
                                                                          + + + + + + + + + + + + + + +
                                                                          + + + owner_id + + +
                                                                          + Type : string + +
                                                                          + +
                                                                          + + + + + + + + + + + + + + +
                                                                          + + + workspace_id + + +
                                                                          + Type : string + +
                                                                          + +
                                                                          +
                                                                          + + + + + + + +
                                                                          + + +
                                                                          +
                                                                          export enum Role {
                                                                          +    Admin = "Admin",
                                                                          +    Member = "Member",
                                                                          +    Viewer = "Viewer"
                                                                          +}
                                                                          +
                                                                          +export class CreateBoardInput {
                                                                          +    title: string;
                                                                          +    description?: Nullable<string>;
                                                                          +    color: string;
                                                                          +    workspace_id: string;
                                                                          +}
                                                                          +
                                                                          +export class UpdateBoardInput {
                                                                          +    board_id: string;
                                                                          +    title?: Nullable<string>;
                                                                          +    description?: Nullable<string>;
                                                                          +    color?: Nullable<string>;
                                                                          +}
                                                                          +
                                                                          +export class CreateListInput {
                                                                          +    title: string;
                                                                          +    board_id: string;
                                                                          +    position: number;
                                                                          +    color?: Nullable<string>;
                                                                          +}
                                                                          +
                                                                          +export class UpdateListInput {
                                                                          +    list_id: string;
                                                                          +    title?: Nullable<string>;
                                                                          +    position?: Nullable<number>;
                                                                          +    color?: Nullable<string>;
                                                                          +}
                                                                          +
                                                                          +export class CreateCardInput {
                                                                          +    title: string;
                                                                          +    list_id: string;
                                                                          +    description?: Nullable<string>;
                                                                          +    position: number;
                                                                          +    due_date?: Nullable<DateTime>;
                                                                          +}
                                                                          +
                                                                          +export class UpdateCardInput {
                                                                          +    card_id: string;
                                                                          +    title?: Nullable<string>;
                                                                          +    description?: Nullable<string>;
                                                                          +    position?: Nullable<number>;
                                                                          +    due_date?: Nullable<DateTime>;
                                                                          +}
                                                                          +
                                                                          +export class CreateLabelInput {
                                                                          +    name: string;
                                                                          +    color: string;
                                                                          +    board_id: string;
                                                                          +}
                                                                          +
                                                                          +export class UpdateLabelInput {
                                                                          +    label_id: string;
                                                                          +    name?: Nullable<string>;
                                                                          +    color?: Nullable<string>;
                                                                          +}
                                                                          +
                                                                          +export class LoginInput {
                                                                          +    email: string;
                                                                          +    password: string;
                                                                          +}
                                                                          +
                                                                          +export class RegisterInput {
                                                                          +    username: string;
                                                                          +    email: string;
                                                                          +    password: string;
                                                                          +}
                                                                          +
                                                                          +export class CreateUserInput {
                                                                          +    username: string;
                                                                          +    email: string;
                                                                          +    password: string;
                                                                          +}
                                                                          +
                                                                          +export class UpdateUserInput {
                                                                          +    user_id: string;
                                                                          +    username?: Nullable<string>;
                                                                          +    email?: Nullable<string>;
                                                                          +    password?: Nullable<string>;
                                                                          +}
                                                                          +
                                                                          +export class CreateWorkspaceInput {
                                                                          +    name: string;
                                                                          +    description?: Nullable<string>;
                                                                          +    color?: Nullable<string>;
                                                                          +}
                                                                          +
                                                                          +export class UpdateWorkspaceInput {
                                                                          +    name?: Nullable<string>;
                                                                          +    description?: Nullable<string>;
                                                                          +    color?: Nullable<string>;
                                                                          +}
                                                                          +
                                                                          +export class AddWorkspaceMemberInput {
                                                                          +    workspace_id: string;
                                                                          +    user_email: string;
                                                                          +    role?: Nullable<Role>;
                                                                          +}
                                                                          +
                                                                          +export class UpdateMemberRoleInput {
                                                                          +    workspace_id: string;
                                                                          +    user_id: string;
                                                                          +    role: Role;
                                                                          +}
                                                                          +
                                                                          +export class Board {
                                                                          +    board_id: string;
                                                                          +    title: string;
                                                                          +    description?: Nullable<string>;
                                                                          +    color: string;
                                                                          +    lists: List[];
                                                                          +    workspace_id: string;
                                                                          +}
                                                                          +
                                                                          +export class List {
                                                                          +    list_id: string;
                                                                          +    title: string;
                                                                          +    position: number;
                                                                          +    color: string;
                                                                          +    board_id: string;
                                                                          +    cards?: Nullable<Nullable<Card>[]>;
                                                                          +}
                                                                          +
                                                                          +export class Card {
                                                                          +    card_id: string;
                                                                          +    title: string;
                                                                          +    description?: Nullable<string>;
                                                                          +    position: number;
                                                                          +    list_id: string;
                                                                          +    labels?: Nullable<Nullable<Label>[]>;
                                                                          +    due_date?: Nullable<DateTime>;
                                                                          +    comments?: Nullable<Nullable<Comment>[]>;
                                                                          +    attachments?: Nullable<Nullable<Attachment>[]>;
                                                                          +    members?: Nullable<Nullable<CardMember>[]>;
                                                                          +}
                                                                          +
                                                                          +export class Comment {
                                                                          +    comment_id: string;
                                                                          +    content: string;
                                                                          +    created_at: DateTime;
                                                                          +    card_id: string;
                                                                          +    user_id: string;
                                                                          +}
                                                                          +
                                                                          +export class Label {
                                                                          +    label_id: string;
                                                                          +    name: string;
                                                                          +    color: string;
                                                                          +    workspace_id: string;
                                                                          +}
                                                                          +
                                                                          +export class Attachment {
                                                                          +    attachment_id: string;
                                                                          +    card_id: string;
                                                                          +    url: string;
                                                                          +    filename: string;
                                                                          +}
                                                                          +
                                                                          +export class CardLabel {
                                                                          +    card_id: string;
                                                                          +    label_id: string;
                                                                          +}
                                                                          +
                                                                          +export class CardMember {
                                                                          +    card_id: string;
                                                                          +    user_id: string;
                                                                          +}
                                                                          +
                                                                          +export abstract class IQuery {
                                                                          +    abstract boards(workspace_id: string): Nullable<Nullable<Board>[]> | Promise<Nullable<Nullable<Board>[]>>;
                                                                          +
                                                                          +    abstract board(board_id: string): Nullable<Board> | Promise<Nullable<Board>>;
                                                                          +
                                                                          +    abstract lists(board_id: string): Nullable<Nullable<List>[]> | Promise<Nullable<Nullable<List>[]>>;
                                                                          +
                                                                          +    abstract list(list_id: string): Nullable<List> | Promise<Nullable<List>>;
                                                                          +
                                                                          +    abstract cards(list_id: string): Nullable<Nullable<Card>[]> | Promise<Nullable<Nullable<Card>[]>>;
                                                                          +
                                                                          +    abstract card(card_id: string): Nullable<Card> | Promise<Nullable<Card>>;
                                                                          +
                                                                          +    abstract labels(workspace_id: string): Nullable<Nullable<Label>[]> | Promise<Nullable<Nullable<Label>[]>>;
                                                                          +
                                                                          +    abstract comments(card_id: string): Nullable<Nullable<Comment>[]> | Promise<Nullable<Nullable<Comment>[]>>;
                                                                          +
                                                                          +    abstract users(): Nullable<Nullable<User>[]> | Promise<Nullable<Nullable<User>[]>>;
                                                                          +
                                                                          +    abstract user(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                                                                          +
                                                                          +    abstract me(): Nullable<User> | Promise<Nullable<User>>;
                                                                          +
                                                                          +    abstract workspaces(): Nullable<Nullable<Workspace>[]> | Promise<Nullable<Nullable<Workspace>[]>>;
                                                                          +
                                                                          +    abstract workspace(workspace_id: string): Nullable<Workspace> | Promise<Nullable<Workspace>>;
                                                                          +
                                                                          +    abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise<WorkspaceMembers[]>;
                                                                          +}
                                                                          +
                                                                          +export class CreateBoardPayload {
                                                                          +    board?: Nullable<Board>;
                                                                          +}
                                                                          +
                                                                          +export abstract class IMutation {
                                                                          +    abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise<CreateBoardPayload>;
                                                                          +
                                                                          +    abstract updateBoard(input: UpdateBoardInput): Board | Promise<Board>;
                                                                          +
                                                                          +    abstract deleteBoard(board_id: string): Status | Promise<Status>;
                                                                          +
                                                                          +    abstract createList(input: CreateListInput): List | Promise<List>;
                                                                          +
                                                                          +    abstract updateList(input: UpdateListInput): List | Promise<List>;
                                                                          +
                                                                          +    abstract deleteList(list_id: string): Status | Promise<Status>;
                                                                          +
                                                                          +    abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise<List[]>;
                                                                          +
                                                                          +    abstract createCard(input: CreateCardInput): Card | Promise<Card>;
                                                                          +
                                                                          +    abstract updateCard(input: UpdateCardInput): Card | Promise<Card>;
                                                                          +
                                                                          +    abstract deleteCard(card_id: string): Status | Promise<Status>;
                                                                          +
                                                                          +    abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise<Card>;
                                                                          +
                                                                          +    abstract createLabel(input: CreateLabelInput): Label | Promise<Label>;
                                                                          +
                                                                          +    abstract updateLabel(input: UpdateLabelInput): Label | Promise<Label>;
                                                                          +
                                                                          +    abstract deleteLabel(label_id: string): Status | Promise<Status>;
                                                                          +
                                                                          +    abstract uploadFile(file: Upload): FileResponse | Promise<FileResponse>;
                                                                          +
                                                                          +    abstract createUser(input: CreateUserInput): Nullable<User> | Promise<Nullable<User>>;
                                                                          +
                                                                          +    abstract updateUser(input: UpdateUserInput): Nullable<User> | Promise<Nullable<User>>;
                                                                          +
                                                                          +    abstract deleteUser(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                                                                          +
                                                                          +    abstract login(input: LoginInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                                                                          +
                                                                          +    abstract register(input: RegisterInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                                                                          +
                                                                          +    abstract logout(): Status | Promise<Status>;
                                                                          +
                                                                          +    abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise<Workspace>;
                                                                          +
                                                                          +    abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise<Workspace>;
                                                                          +
                                                                          +    abstract deleteWorkspace(workspace_id: string): Status | Promise<Status>;
                                                                          +
                                                                          +    abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                                                                          +
                                                                          +    abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                                                                          +
                                                                          +    abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                                                                          +
                                                                          +    abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise<Status>;
                                                                          +
                                                                          +    abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                                                                          +}
                                                                          +
                                                                          +export class Success {
                                                                          +    successMessage?: Nullable<string>;
                                                                          +}
                                                                          +
                                                                          +export class Error {
                                                                          +    errorMessage: string;
                                                                          +    code?: Nullable<string>;
                                                                          +}
                                                                          +
                                                                          +export class FileResponse {
                                                                          +    success: boolean;
                                                                          +    url?: Nullable<string>;
                                                                          +    message?: Nullable<string>;
                                                                          +}
                                                                          +
                                                                          +export class User {
                                                                          +    user_id: string;
                                                                          +    username: string;
                                                                          +    email: string;
                                                                          +    picture?: Nullable<string>;
                                                                          +    created_at: DateTime;
                                                                          +}
                                                                          +
                                                                          +export class AuthSuccess {
                                                                          +    token: string;
                                                                          +    user: User;
                                                                          +}
                                                                          +
                                                                          +export class AuthError {
                                                                          +    message: string;
                                                                          +    code?: Nullable<string>;
                                                                          +    field?: Nullable<string>;
                                                                          +}
                                                                          +
                                                                          +export class Workspace {
                                                                          +    workspace_id: string;
                                                                          +    name: string;
                                                                          +    color: string;
                                                                          +    description?: Nullable<string>;
                                                                          +    owner_id: string;
                                                                          +    owner: User;
                                                                          +    members: WorkspaceMembers[];
                                                                          +    boards?: Nullable<Nullable<Board>[]>;
                                                                          +    labels?: Nullable<Nullable<Label>[]>;
                                                                          +    is_pinned: boolean;
                                                                          +}
                                                                          +
                                                                          +export class WorkspaceMembers {
                                                                          +    workspace_id: string;
                                                                          +    user_id: string;
                                                                          +    role: string;
                                                                          +    user: User;
                                                                          +    workspace: Workspace;
                                                                          +}
                                                                          +
                                                                          +export class PinWorkspacePayload {
                                                                          +    workspace: Workspace;
                                                                          +}
                                                                          +
                                                                          +export type DateTime = any;
                                                                          +export type Upload = any;
                                                                          +export type Status = Success | Error;
                                                                          +export type AuthResult = AuthSuccess | AuthError;
                                                                          +type Nullable<T> = T | null;
                                                                          +
                                                                          +
                                                                          +
                                                                          + + + + + + + + + +
                                                                          +
                                                                          +

                                                                          results matching ""

                                                                          +
                                                                            +
                                                                            +
                                                                            +

                                                                            No results matching ""

                                                                            +
                                                                            +
                                                                            +
                                                                            + +
                                                                            +
                                                                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/classes/WorkspaceMembers.html b/backend/documentation/classes/WorkspaceMembers.html new file mode 100644 index 0000000..512c381 --- /dev/null +++ b/backend/documentation/classes/WorkspaceMembers.html @@ -0,0 +1,749 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                                                                            +
                                                                            + + +
                                                                            +
                                                                            + + + + + + + + + + + + + + + + + + + + +
                                                                            +
                                                                            +

                                                                            +

                                                                            File

                                                                            +

                                                                            +

                                                                            + src/graphql/graphql.ts +

                                                                            + + + + + + +
                                                                            +

                                                                            Index

                                                                            + + + + + + + + + + + + + + + +
                                                                            +
                                                                            Properties
                                                                            +
                                                                            + +
                                                                            +
                                                                            + + +
                                                                            + +

                                                                            + Properties +

                                                                            + + + + + + + + + + + + + + +
                                                                            + + + role + + +
                                                                            + Type : string + +
                                                                            + +
                                                                            + + + + + + + + + + + + + + +
                                                                            + + + user + + +
                                                                            + Type : User + +
                                                                            + +
                                                                            + + + + + + + + + + + + + + +
                                                                            + + + user_id + + +
                                                                            + Type : string + +
                                                                            + +
                                                                            + + + + + + + + + + + + + + +
                                                                            + + + workspace + + +
                                                                            + Type : Workspace + +
                                                                            + +
                                                                            + + + + + + + + + + + + + + +
                                                                            + + + workspace_id + + +
                                                                            + Type : string + +
                                                                            + +
                                                                            +
                                                                            + + + + + + + +
                                                                            + + +
                                                                            +
                                                                            export enum Role {
                                                                            +    Admin = "Admin",
                                                                            +    Member = "Member",
                                                                            +    Viewer = "Viewer"
                                                                            +}
                                                                            +
                                                                            +export class CreateBoardInput {
                                                                            +    title: string;
                                                                            +    description?: Nullable<string>;
                                                                            +    color: string;
                                                                            +    workspace_id: string;
                                                                            +}
                                                                            +
                                                                            +export class UpdateBoardInput {
                                                                            +    board_id: string;
                                                                            +    title?: Nullable<string>;
                                                                            +    description?: Nullable<string>;
                                                                            +    color?: Nullable<string>;
                                                                            +}
                                                                            +
                                                                            +export class CreateListInput {
                                                                            +    title: string;
                                                                            +    board_id: string;
                                                                            +    position: number;
                                                                            +    color?: Nullable<string>;
                                                                            +}
                                                                            +
                                                                            +export class UpdateListInput {
                                                                            +    list_id: string;
                                                                            +    title?: Nullable<string>;
                                                                            +    position?: Nullable<number>;
                                                                            +    color?: Nullable<string>;
                                                                            +}
                                                                            +
                                                                            +export class CreateCardInput {
                                                                            +    title: string;
                                                                            +    list_id: string;
                                                                            +    description?: Nullable<string>;
                                                                            +    position: number;
                                                                            +    due_date?: Nullable<DateTime>;
                                                                            +}
                                                                            +
                                                                            +export class UpdateCardInput {
                                                                            +    card_id: string;
                                                                            +    title?: Nullable<string>;
                                                                            +    description?: Nullable<string>;
                                                                            +    position?: Nullable<number>;
                                                                            +    due_date?: Nullable<DateTime>;
                                                                            +}
                                                                            +
                                                                            +export class CreateLabelInput {
                                                                            +    name: string;
                                                                            +    color: string;
                                                                            +    board_id: string;
                                                                            +}
                                                                            +
                                                                            +export class UpdateLabelInput {
                                                                            +    label_id: string;
                                                                            +    name?: Nullable<string>;
                                                                            +    color?: Nullable<string>;
                                                                            +}
                                                                            +
                                                                            +export class LoginInput {
                                                                            +    email: string;
                                                                            +    password: string;
                                                                            +}
                                                                            +
                                                                            +export class RegisterInput {
                                                                            +    username: string;
                                                                            +    email: string;
                                                                            +    password: string;
                                                                            +}
                                                                            +
                                                                            +export class CreateUserInput {
                                                                            +    username: string;
                                                                            +    email: string;
                                                                            +    password: string;
                                                                            +}
                                                                            +
                                                                            +export class UpdateUserInput {
                                                                            +    user_id: string;
                                                                            +    username?: Nullable<string>;
                                                                            +    email?: Nullable<string>;
                                                                            +    password?: Nullable<string>;
                                                                            +}
                                                                            +
                                                                            +export class CreateWorkspaceInput {
                                                                            +    name: string;
                                                                            +    description?: Nullable<string>;
                                                                            +    color?: Nullable<string>;
                                                                            +}
                                                                            +
                                                                            +export class UpdateWorkspaceInput {
                                                                            +    name?: Nullable<string>;
                                                                            +    description?: Nullable<string>;
                                                                            +    color?: Nullable<string>;
                                                                            +}
                                                                            +
                                                                            +export class AddWorkspaceMemberInput {
                                                                            +    workspace_id: string;
                                                                            +    user_email: string;
                                                                            +    role?: Nullable<Role>;
                                                                            +}
                                                                            +
                                                                            +export class UpdateMemberRoleInput {
                                                                            +    workspace_id: string;
                                                                            +    user_id: string;
                                                                            +    role: Role;
                                                                            +}
                                                                            +
                                                                            +export class Board {
                                                                            +    board_id: string;
                                                                            +    title: string;
                                                                            +    description?: Nullable<string>;
                                                                            +    color: string;
                                                                            +    lists: List[];
                                                                            +    workspace_id: string;
                                                                            +}
                                                                            +
                                                                            +export class List {
                                                                            +    list_id: string;
                                                                            +    title: string;
                                                                            +    position: number;
                                                                            +    color: string;
                                                                            +    board_id: string;
                                                                            +    cards?: Nullable<Nullable<Card>[]>;
                                                                            +}
                                                                            +
                                                                            +export class Card {
                                                                            +    card_id: string;
                                                                            +    title: string;
                                                                            +    description?: Nullable<string>;
                                                                            +    position: number;
                                                                            +    list_id: string;
                                                                            +    labels?: Nullable<Nullable<Label>[]>;
                                                                            +    due_date?: Nullable<DateTime>;
                                                                            +    comments?: Nullable<Nullable<Comment>[]>;
                                                                            +    attachments?: Nullable<Nullable<Attachment>[]>;
                                                                            +    members?: Nullable<Nullable<CardMember>[]>;
                                                                            +}
                                                                            +
                                                                            +export class Comment {
                                                                            +    comment_id: string;
                                                                            +    content: string;
                                                                            +    created_at: DateTime;
                                                                            +    card_id: string;
                                                                            +    user_id: string;
                                                                            +}
                                                                            +
                                                                            +export class Label {
                                                                            +    label_id: string;
                                                                            +    name: string;
                                                                            +    color: string;
                                                                            +    workspace_id: string;
                                                                            +}
                                                                            +
                                                                            +export class Attachment {
                                                                            +    attachment_id: string;
                                                                            +    card_id: string;
                                                                            +    url: string;
                                                                            +    filename: string;
                                                                            +}
                                                                            +
                                                                            +export class CardLabel {
                                                                            +    card_id: string;
                                                                            +    label_id: string;
                                                                            +}
                                                                            +
                                                                            +export class CardMember {
                                                                            +    card_id: string;
                                                                            +    user_id: string;
                                                                            +}
                                                                            +
                                                                            +export abstract class IQuery {
                                                                            +    abstract boards(workspace_id: string): Nullable<Nullable<Board>[]> | Promise<Nullable<Nullable<Board>[]>>;
                                                                            +
                                                                            +    abstract board(board_id: string): Nullable<Board> | Promise<Nullable<Board>>;
                                                                            +
                                                                            +    abstract lists(board_id: string): Nullable<Nullable<List>[]> | Promise<Nullable<Nullable<List>[]>>;
                                                                            +
                                                                            +    abstract list(list_id: string): Nullable<List> | Promise<Nullable<List>>;
                                                                            +
                                                                            +    abstract cards(list_id: string): Nullable<Nullable<Card>[]> | Promise<Nullable<Nullable<Card>[]>>;
                                                                            +
                                                                            +    abstract card(card_id: string): Nullable<Card> | Promise<Nullable<Card>>;
                                                                            +
                                                                            +    abstract labels(workspace_id: string): Nullable<Nullable<Label>[]> | Promise<Nullable<Nullable<Label>[]>>;
                                                                            +
                                                                            +    abstract comments(card_id: string): Nullable<Nullable<Comment>[]> | Promise<Nullable<Nullable<Comment>[]>>;
                                                                            +
                                                                            +    abstract users(): Nullable<Nullable<User>[]> | Promise<Nullable<Nullable<User>[]>>;
                                                                            +
                                                                            +    abstract user(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                                                                            +
                                                                            +    abstract me(): Nullable<User> | Promise<Nullable<User>>;
                                                                            +
                                                                            +    abstract workspaces(): Nullable<Nullable<Workspace>[]> | Promise<Nullable<Nullable<Workspace>[]>>;
                                                                            +
                                                                            +    abstract workspace(workspace_id: string): Nullable<Workspace> | Promise<Nullable<Workspace>>;
                                                                            +
                                                                            +    abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise<WorkspaceMembers[]>;
                                                                            +}
                                                                            +
                                                                            +export class CreateBoardPayload {
                                                                            +    board?: Nullable<Board>;
                                                                            +}
                                                                            +
                                                                            +export abstract class IMutation {
                                                                            +    abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise<CreateBoardPayload>;
                                                                            +
                                                                            +    abstract updateBoard(input: UpdateBoardInput): Board | Promise<Board>;
                                                                            +
                                                                            +    abstract deleteBoard(board_id: string): Status | Promise<Status>;
                                                                            +
                                                                            +    abstract createList(input: CreateListInput): List | Promise<List>;
                                                                            +
                                                                            +    abstract updateList(input: UpdateListInput): List | Promise<List>;
                                                                            +
                                                                            +    abstract deleteList(list_id: string): Status | Promise<Status>;
                                                                            +
                                                                            +    abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise<List[]>;
                                                                            +
                                                                            +    abstract createCard(input: CreateCardInput): Card | Promise<Card>;
                                                                            +
                                                                            +    abstract updateCard(input: UpdateCardInput): Card | Promise<Card>;
                                                                            +
                                                                            +    abstract deleteCard(card_id: string): Status | Promise<Status>;
                                                                            +
                                                                            +    abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise<Card>;
                                                                            +
                                                                            +    abstract createLabel(input: CreateLabelInput): Label | Promise<Label>;
                                                                            +
                                                                            +    abstract updateLabel(input: UpdateLabelInput): Label | Promise<Label>;
                                                                            +
                                                                            +    abstract deleteLabel(label_id: string): Status | Promise<Status>;
                                                                            +
                                                                            +    abstract uploadFile(file: Upload): FileResponse | Promise<FileResponse>;
                                                                            +
                                                                            +    abstract createUser(input: CreateUserInput): Nullable<User> | Promise<Nullable<User>>;
                                                                            +
                                                                            +    abstract updateUser(input: UpdateUserInput): Nullable<User> | Promise<Nullable<User>>;
                                                                            +
                                                                            +    abstract deleteUser(user_id: string): Nullable<User> | Promise<Nullable<User>>;
                                                                            +
                                                                            +    abstract login(input: LoginInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                                                                            +
                                                                            +    abstract register(input: RegisterInput): Nullable<AuthResult> | Promise<Nullable<AuthResult>>;
                                                                            +
                                                                            +    abstract logout(): Status | Promise<Status>;
                                                                            +
                                                                            +    abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise<Workspace>;
                                                                            +
                                                                            +    abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise<Workspace>;
                                                                            +
                                                                            +    abstract deleteWorkspace(workspace_id: string): Status | Promise<Status>;
                                                                            +
                                                                            +    abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                                                                            +
                                                                            +    abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise<PinWorkspacePayload>;
                                                                            +
                                                                            +    abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                                                                            +
                                                                            +    abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise<Status>;
                                                                            +
                                                                            +    abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise<WorkspaceMembers>;
                                                                            +}
                                                                            +
                                                                            +export class Success {
                                                                            +    successMessage?: Nullable<string>;
                                                                            +}
                                                                            +
                                                                            +export class Error {
                                                                            +    errorMessage: string;
                                                                            +    code?: Nullable<string>;
                                                                            +}
                                                                            +
                                                                            +export class FileResponse {
                                                                            +    success: boolean;
                                                                            +    url?: Nullable<string>;
                                                                            +    message?: Nullable<string>;
                                                                            +}
                                                                            +
                                                                            +export class User {
                                                                            +    user_id: string;
                                                                            +    username: string;
                                                                            +    email: string;
                                                                            +    picture?: Nullable<string>;
                                                                            +    created_at: DateTime;
                                                                            +}
                                                                            +
                                                                            +export class AuthSuccess {
                                                                            +    token: string;
                                                                            +    user: User;
                                                                            +}
                                                                            +
                                                                            +export class AuthError {
                                                                            +    message: string;
                                                                            +    code?: Nullable<string>;
                                                                            +    field?: Nullable<string>;
                                                                            +}
                                                                            +
                                                                            +export class Workspace {
                                                                            +    workspace_id: string;
                                                                            +    name: string;
                                                                            +    color: string;
                                                                            +    description?: Nullable<string>;
                                                                            +    owner_id: string;
                                                                            +    owner: User;
                                                                            +    members: WorkspaceMembers[];
                                                                            +    boards?: Nullable<Nullable<Board>[]>;
                                                                            +    labels?: Nullable<Nullable<Label>[]>;
                                                                            +    is_pinned: boolean;
                                                                            +}
                                                                            +
                                                                            +export class WorkspaceMembers {
                                                                            +    workspace_id: string;
                                                                            +    user_id: string;
                                                                            +    role: string;
                                                                            +    user: User;
                                                                            +    workspace: Workspace;
                                                                            +}
                                                                            +
                                                                            +export class PinWorkspacePayload {
                                                                            +    workspace: Workspace;
                                                                            +}
                                                                            +
                                                                            +export type DateTime = any;
                                                                            +export type Upload = any;
                                                                            +export type Status = Success | Error;
                                                                            +export type AuthResult = AuthSuccess | AuthError;
                                                                            +type Nullable<T> = T | null;
                                                                            +
                                                                            +
                                                                            +
                                                                            + + + + + + + + + +
                                                                            +
                                                                            +

                                                                            results matching ""

                                                                            +
                                                                              +
                                                                              +
                                                                              +

                                                                              No results matching ""

                                                                              +
                                                                              +
                                                                              +
                                                                              + +
                                                                              +
                                                                              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/classes/WorkspaceResolver.html b/backend/documentation/classes/WorkspaceResolver.html new file mode 100644 index 0000000..6b2141c --- /dev/null +++ b/backend/documentation/classes/WorkspaceResolver.html @@ -0,0 +1,830 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                                                                              +
                                                                              + + +
                                                                              +
                                                                              + + + + + + + + + + + + + + + + + + + + +
                                                                              +
                                                                              +

                                                                              +

                                                                              File

                                                                              +

                                                                              +

                                                                              + src/workspace/workspace.resolver.ts +

                                                                              + + + + + + +
                                                                              +

                                                                              Index

                                                                              + + + + + + + + + + + + + + + +
                                                                              +
                                                                              Methods
                                                                              +
                                                                              + +
                                                                              +
                                                                              + +
                                                                              +

                                                                              Constructor

                                                                              + + + + + + + + + + + + + +
                                                                              +constructor(workspaceService: WorkspaceService) +
                                                                              + +
                                                                              +
                                                                              + Parameters : + + + + + + + + + + + + + + + + + + +
                                                                              NameTypeOptional
                                                                              workspaceService + WorkspaceService + + No +
                                                                              +
                                                                              +
                                                                              +
                                                                              + + +
                                                                              + +

                                                                              + Methods +

                                                                              + + + + + + + + + + + + + + + + + + + + + + +
                                                                              + + + + + Async + createWorkspace + + +
                                                                              + + createWorkspace(input: CreateWorkspaceInput, context: any) +
                                                                              + Decorators : +
                                                                              + @Mutation()
                                                                              @UseGuards(AuthGuard)
                                                                              +
                                                                              + +
                                                                              + +
                                                                              + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                              NameTypeOptional
                                                                              input + CreateWorkspaceInput + + No +
                                                                              context + any + + No +
                                                                              +
                                                                              +
                                                                              + Returns : unknown + +
                                                                              +
                                                                              + +
                                                                              +
                                                                              + + + + + + + + + + + + + + + + + + + + + + +
                                                                              + + + + + Async + deleteWorkspace + + +
                                                                              + + deleteWorkspace(workspace_id: string, context: any) +
                                                                              + Decorators : +
                                                                              + @Mutation()
                                                                              @WorkspaceAuth(Role.Admin)
                                                                              +
                                                                              + +
                                                                              + +
                                                                              + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                              NameTypeOptional
                                                                              workspace_id + string + + No +
                                                                              context + any + + No +
                                                                              +
                                                                              +
                                                                              + Returns : unknown + +
                                                                              +
                                                                              + +
                                                                              +
                                                                              + + + + + + + + + + + + + + + + + + + + + + +
                                                                              + + + + + Async + getUserWorkspaces + + +
                                                                              + + getUserWorkspaces(context: any) +
                                                                              + Decorators : +
                                                                              + @Query('workspaces')
                                                                              @UseGuards(AuthGuard)
                                                                              +
                                                                              + +
                                                                              + +
                                                                              + Parameters : + + + + + + + + + + + + + + + + + + + +
                                                                              NameTypeOptional
                                                                              context + any + + No +
                                                                              +
                                                                              +
                                                                              + Returns : unknown + +
                                                                              +
                                                                              + +
                                                                              +
                                                                              + + + + + + + + + + + + + + + + + + + + + + +
                                                                              + + + + + Async + getWorkspace + + +
                                                                              + + getWorkspace(workspace_id: string) +
                                                                              + Decorators : +
                                                                              + @Query('workspace')
                                                                              @WorkspaceAuth(Role.Viewer)
                                                                              +
                                                                              + +
                                                                              + +
                                                                              + Parameters : + + + + + + + + + + + + + + + + + + + +
                                                                              NameTypeOptional
                                                                              workspace_id + string + + No +
                                                                              +
                                                                              +
                                                                              + Returns : unknown + +
                                                                              +
                                                                              + +
                                                                              +
                                                                              + + + + + + + + + + + + + + + + + + + + + + +
                                                                              + + + + + Async + updateWorkspace + + +
                                                                              + + updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput) +
                                                                              + Decorators : +
                                                                              + @Mutation('updateWorkspace')
                                                                              @WorkspaceAuth(Role.Admin)
                                                                              +
                                                                              + +
                                                                              + +
                                                                              + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                              NameTypeOptional
                                                                              workspace_id + string + + No +
                                                                              input + UpdateWorkspaceInput + + No +
                                                                              +
                                                                              +
                                                                              + Returns : unknown + +
                                                                              +
                                                                              + +
                                                                              +
                                                                              +
                                                                              + + + + + +
                                                                              + + +
                                                                              +
                                                                              import { Args, Mutation, Resolver, Context, Query } from '@nestjs/graphql';
                                                                              +import { UseGuards } from '@nestjs/common';
                                                                              +import { WorkspaceService } from './workspace.service';
                                                                              +import { AuthGuard } from '../common/guards/auth.guard';
                                                                              +import { WorkspaceAuth } from '../common/decorators/workspace-auth.decorator';
                                                                              +import { CreateWorkspaceInput, UpdateWorkspaceInput } from '../graphql/graphql';
                                                                              +import { Role } from '@prisma/client';
                                                                              +
                                                                              +@Resolver('Workspace')
                                                                              +export class WorkspaceResolver {
                                                                              +    constructor(private workspaceService: WorkspaceService) {}
                                                                              +
                                                                              +    @Mutation()
                                                                              +    @UseGuards(AuthGuard)
                                                                              +    async createWorkspace(
                                                                              +        @Args('input') input: CreateWorkspaceInput,
                                                                              +        @Context() context: any,
                                                                              +    ) {
                                                                              +        return this.workspaceService.createWorkspace(context.user.user_id, input);
                                                                              +    }
                                                                              +
                                                                              +    @Query("workspaces")
                                                                              +    @UseGuards(AuthGuard)
                                                                              +    async getUserWorkspaces(@Context() context: any) {
                                                                              +        return this.workspaceService.findAllUserWorkspaces(context.user.user_id);
                                                                              +    }
                                                                              +
                                                                              +    @Query("workspace")
                                                                              +    @WorkspaceAuth(Role.Viewer)
                                                                              +    async getWorkspace(@Args('workspace_id') workspace_id: string) {
                                                                              +        return this.workspaceService.findWorkspace(workspace_id);
                                                                              +    }
                                                                              +
                                                                              +    @Mutation("updateWorkspace") 
                                                                              +    @WorkspaceAuth(Role.Admin)
                                                                              +    async updateWorkspace(
                                                                              +        @Args('workspace_id') workspace_id: string,
                                                                              +        @Args('input') input: UpdateWorkspaceInput,
                                                                              +    ) {
                                                                              +        return this.workspaceService.updateWorkspace(workspace_id, input);
                                                                              +    }
                                                                              +
                                                                              +    @Mutation()
                                                                              +    @WorkspaceAuth(Role.Admin)
                                                                              +    async deleteWorkspace(
                                                                              +        @Args('workspace_id') workspace_id: string,
                                                                              +        @Context() context: any,
                                                                              +    ) {
                                                                              +        return this.workspaceService.delete(
                                                                              +            workspace_id,
                                                                              +            context.user.user_id,
                                                                              +        );
                                                                              +    }
                                                                              +}
                                                                              +
                                                                              +
                                                                              +
                                                                              + + + + + + + + + +
                                                                              +
                                                                              +

                                                                              results matching ""

                                                                              +
                                                                                +
                                                                                +
                                                                                +

                                                                                No results matching ""

                                                                                +
                                                                                +
                                                                                +
                                                                                + +
                                                                                +
                                                                                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/components/TemplatePlaygroundComponent.html b/backend/documentation/components/TemplatePlaygroundComponent.html new file mode 100644 index 0000000..336cc38 --- /dev/null +++ b/backend/documentation/components/TemplatePlaygroundComponent.html @@ -0,0 +1,2876 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                                                                                +
                                                                                + + +
                                                                                +
                                                                                + + + + + + + + + + + + +
                                                                                +

                                                                                +

                                                                                File

                                                                                +

                                                                                +

                                                                                + documentation/template-playground/template-playground.component.ts +

                                                                                + + + + +

                                                                                +

                                                                                Implements

                                                                                +

                                                                                +

                                                                                + OnInit + OnDestroy +

                                                                                + + +
                                                                                +

                                                                                Metadata

                                                                                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                + +
                                                                                +

                                                                                Index

                                                                                + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                +
                                                                                Properties
                                                                                +
                                                                                + +
                                                                                +
                                                                                Methods
                                                                                +
                                                                                + +
                                                                                +
                                                                                Accessors
                                                                                +
                                                                                + +
                                                                                +
                                                                                + +
                                                                                +

                                                                                Constructor

                                                                                + + + + + + + + + + + + + +
                                                                                +constructor(http: HttpClient, editorService: TemplateEditorService, zipService: ZipExportService, hbsService: HbsRenderService) +
                                                                                + +
                                                                                +
                                                                                + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                NameTypeOptional
                                                                                http + HttpClient + + No +
                                                                                editorService + TemplateEditorService + + No +
                                                                                zipService + ZipExportService + + No +
                                                                                hbsService + HbsRenderService + + No +
                                                                                +
                                                                                +
                                                                                +
                                                                                + + + + + +
                                                                                + +

                                                                                + Methods +

                                                                                + + + + + + + + + + + + + + + + + + + +
                                                                                + + + Private + Async + createSession + + +
                                                                                + + createSession() +
                                                                                + +
                                                                                + +
                                                                                + Returns : Promise<void> + +
                                                                                +
                                                                                + + + + + + + + + + + + + + + + + + + +
                                                                                + + + Async + exportZip + + +
                                                                                + + exportZip() +
                                                                                + +
                                                                                + +
                                                                                + Returns : Promise<void> + +
                                                                                +
                                                                                + + + + + + + + + + + + + + + + + + + +
                                                                                + + + initializeEditor + + +
                                                                                +initializeEditor() +
                                                                                + +
                                                                                + +
                                                                                + Returns : void + +
                                                                                +
                                                                                + + + + + + + + + + + + + + + + + + + +
                                                                                + + + Private + Async + loadSessionConfig + + +
                                                                                + + loadSessionConfig() +
                                                                                + +
                                                                                + +
                                                                                + Returns : Promise<void> + +
                                                                                +
                                                                                + + + + + + + + + + + + + + + + + + + +
                                                                                + + + Private + Async + loadSessionTemplates + + +
                                                                                + + loadSessionTemplates() +
                                                                                + +
                                                                                + +
                                                                                + Returns : Promise<void> + +
                                                                                +
                                                                                + + + + + + + + + + + + + + + + + + + +
                                                                                + + + ngOnDestroy + + +
                                                                                +ngOnDestroy() +
                                                                                + +
                                                                                + +
                                                                                + Returns : void + +
                                                                                +
                                                                                + + + + + + + + + + + + + + + + + + + +
                                                                                + + + Async + ngOnInit + + +
                                                                                + + ngOnInit() +
                                                                                + +
                                                                                + +
                                                                                + Returns : any + +
                                                                                +
                                                                                + + + + + + + + + + + + + + + + + + + +
                                                                                + + + refreshPreview + + +
                                                                                +refreshPreview() +
                                                                                + +
                                                                                + +
                                                                                + Returns : void + +
                                                                                +
                                                                                + + + + + + + + + + + + + + + + + + + +
                                                                                + + + resetToDefault + + +
                                                                                +resetToDefault() +
                                                                                + +
                                                                                + +
                                                                                + Returns : void + +
                                                                                +
                                                                                + + + + + + + + + + + + + + + + + + + +
                                                                                + + + Private + Async + saveTemplate + + +
                                                                                + + saveTemplate(content: string) +
                                                                                + +
                                                                                + +
                                                                                + Parameters : + + + + + + + + + + + + + + + + + + + +
                                                                                NameTypeOptional
                                                                                content + string + + No +
                                                                                +
                                                                                +
                                                                                + Returns : Promise<void> + +
                                                                                +
                                                                                + +
                                                                                +
                                                                                + + + + + + + + + + + + + + + + + + + +
                                                                                + + + Private + scheduleAutoSave + + +
                                                                                + + scheduleAutoSave(content: string) +
                                                                                + +
                                                                                + +
                                                                                + Parameters : + + + + + + + + + + + + + + + + + + + +
                                                                                NameTypeOptional
                                                                                content + string + + No +
                                                                                +
                                                                                +
                                                                                + Returns : void + +
                                                                                +
                                                                                + +
                                                                                +
                                                                                + + + + + + + + + + + + + + + + + + + +
                                                                                + + + Async + selectFile + + +
                                                                                + + selectFile(template: Template) +
                                                                                + +
                                                                                + +
                                                                                + Parameters : + + + + + + + + + + + + + + + + + + + +
                                                                                NameTypeOptional
                                                                                template + Template + + No +
                                                                                +
                                                                                +
                                                                                + Returns : any + +
                                                                                +
                                                                                + +
                                                                                +
                                                                                + + + + + + + + + + + + + + + + + + + +
                                                                                + + + toggleConfigPanel + + +
                                                                                +toggleConfigPanel() +
                                                                                + +
                                                                                + +
                                                                                + Returns : void + +
                                                                                +
                                                                                + + + + + + + + + + + + + + + + + + + +
                                                                                + + + trackByName + + +
                                                                                +trackByName(index: number, item: Template) +
                                                                                + +
                                                                                + +
                                                                                + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                NameTypeOptional
                                                                                index + number + + No +
                                                                                item + Template + + No +
                                                                                +
                                                                                +
                                                                                + Returns : string + +
                                                                                +
                                                                                + +
                                                                                +
                                                                                + + + + + + + + + + + + + + + + + + + +
                                                                                + + + Async + updateConfig + + +
                                                                                + + updateConfig() +
                                                                                + +
                                                                                + +
                                                                                + Returns : Promise<void> + +
                                                                                +
                                                                                +
                                                                                +
                                                                                + +

                                                                                + Properties +

                                                                                + + + + + + + + + + + + + + + + + +
                                                                                + + + config + + +
                                                                                + Type : CompoDocConfig + +
                                                                                + Default value : {} +
                                                                                + +
                                                                                + + + + + + + + + + + + + + + + + +
                                                                                + + + + editorContainer + + +
                                                                                + Type : ElementRef + +
                                                                                + Decorators : +
                                                                                + + @ViewChild('editorContainer', {static: true})
                                                                                +
                                                                                +
                                                                                + +
                                                                                + + + + + + + + + + + + + + + + + +
                                                                                + + + lastSaved + + +
                                                                                + Type : Date | null + +
                                                                                + Default value : null +
                                                                                + +
                                                                                + + + + + + + + + + + + + + + + + +
                                                                                + + + + previewFrame + + +
                                                                                + Type : ElementRef + +
                                                                                + Decorators : +
                                                                                + + @ViewChild('previewFrame', {static: true})
                                                                                +
                                                                                +
                                                                                + +
                                                                                + + + + + + + + + + + + + + + + + +
                                                                                + + + Private + Readonly + SAVE_DELAY + + +
                                                                                + Type : number + +
                                                                                + Default value : 300 +
                                                                                + +
                                                                                + + + + + + + + + + + + + + +
                                                                                + + + Private + Optional + saveTimeout + + +
                                                                                + Type : number + +
                                                                                + +
                                                                                + + + + + + + + + + + + + + + + + +
                                                                                + + + saving + + +
                                                                                + Type : boolean + +
                                                                                + Default value : false +
                                                                                + +
                                                                                + + + + + + + + + + + + + + + + + +
                                                                                + + + selectedFile + + +
                                                                                + Type : Template | null + +
                                                                                + Default value : null +
                                                                                + +
                                                                                + + + + + + + + + + + + + + + + + +
                                                                                + + + sessionId + + +
                                                                                + Type : string + +
                                                                                + Default value : '' +
                                                                                + +
                                                                                + + + + + + + + + + + + + + + + + +
                                                                                + + + showConfigPanel + + +
                                                                                + Type : boolean + +
                                                                                + Default value : false +
                                                                                + +
                                                                                + + + + + + + + + + + + + + + + + +
                                                                                + + + templates + + +
                                                                                + Type : Template[] + +
                                                                                + Default value : [] +
                                                                                + +
                                                                                +
                                                                                + +
                                                                                +

                                                                                + Accessors +

                                                                                + + + + + + + + + + + + + + +
                                                                                + + previewUrl +
                                                                                + getpreviewUrl() +
                                                                                + +
                                                                                +
                                                                                +
                                                                                + + +
                                                                                +
                                                                                import { Component, OnInit, ViewChild, ElementRef, OnDestroy } from '@angular/core';
                                                                                +import { HttpClient } from '@angular/common/http';
                                                                                +import { TemplateEditorService } from './template-editor.service';
                                                                                +import { ZipExportService } from './zip-export.service';
                                                                                +import { HbsRenderService } from './hbs-render.service';
                                                                                +
                                                                                +interface Template {
                                                                                +  name: string;
                                                                                +  path: string;
                                                                                +  type: 'template' | 'partial';
                                                                                +}
                                                                                +
                                                                                +interface Session {
                                                                                +  sessionId: string;
                                                                                +  success: boolean;
                                                                                +  message: string;
                                                                                +}
                                                                                +
                                                                                +interface CompoDocConfig {
                                                                                +  hideGenerator?: boolean;
                                                                                +  disableSourceCode?: boolean;
                                                                                +  disableGraph?: boolean;
                                                                                +  disableCoverage?: boolean;
                                                                                +  disablePrivate?: boolean;
                                                                                +  disableProtected?: boolean;
                                                                                +  disableInternal?: boolean;
                                                                                +  disableLifeCycleHooks?: boolean;
                                                                                +  disableConstructors?: boolean;
                                                                                +  disableRoutesGraph?: boolean;
                                                                                +  disableSearch?: boolean;
                                                                                +  disableDependencies?: boolean;
                                                                                +  disableProperties?: boolean;
                                                                                +  disableDomTree?: boolean;
                                                                                +  disableTemplateTab?: boolean;
                                                                                +  disableStyleTab?: boolean;
                                                                                +  disableMainGraph?: boolean;
                                                                                +  disableFilePath?: boolean;
                                                                                +  disableOverview?: boolean;
                                                                                +  hideDarkModeToggle?: boolean;
                                                                                +  minimal?: boolean;
                                                                                +  customFavicon?: string;
                                                                                +  includes?: string;
                                                                                +  includesName?: string;
                                                                                +}
                                                                                +
                                                                                +@Component({
                                                                                +  selector: 'template-playground-root',
                                                                                +  template: `
                                                                                +    <div class="template-playground">
                                                                                +      <div class="template-playground-header">
                                                                                +        <h2>Template Playground</h2>
                                                                                +        <div class="template-playground-status">
                                                                                +          <span *ngIf="sessionId" class="session-info">Session: {{sessionId.substring(0, 8)}}...</span>
                                                                                +          <span *ngIf="saving" class="saving-indicator">Saving...</span>
                                                                                +          <span *ngIf="lastSaved" class="last-saved">Last saved: {{lastSaved | date:'short'}}</span>
                                                                                +        </div>
                                                                                +        <div class="template-playground-actions">
                                                                                +          <button class="btn btn-secondary" (click)="toggleConfigPanel()">⚙️ Config</button>
                                                                                +          <button class="btn btn-primary" (click)="resetToDefault()">Reset to Default</button>
                                                                                +          <button class="btn btn-success" (click)="exportZip()">Download Templates</button>
                                                                                +        </div>
                                                                                +      </div>
                                                                                +
                                                                                +      <!-- Configuration Panel -->
                                                                                +      <div class="config-panel" [class.collapsed]="!showConfigPanel">
                                                                                +        <h3>CompoDoc Configuration</h3>
                                                                                +        <div class="config-options">
                                                                                +          <label><input type="checkbox" [(ngModel)]="config.hideGenerator" (change)="updateConfig()"> Hide Generator</label>
                                                                                +          <label><input type="checkbox" [(ngModel)]="config.hideDarkModeToggle" (change)="updateConfig()"> Hide Dark Mode Toggle</label>
                                                                                +          <label><input type="checkbox" [(ngModel)]="config.minimal" (change)="updateConfig()"> Minimal Mode</label>
                                                                                +          <label><input type="checkbox" [(ngModel)]="config.disableOverview" (change)="updateConfig()"> Disable Overview</label>
                                                                                +          <label><input type="checkbox" [(ngModel)]="config.disableFilePath" (change)="updateConfig()"> Disable File Path</label>
                                                                                +          <label><input type="checkbox" [(ngModel)]="config.disableSourceCode" (change)="updateConfig()"> Disable Source Code</label>
                                                                                +          <label><input type="checkbox" [(ngModel)]="config.disableGraph" (change)="updateConfig()"> Disable Graph</label>
                                                                                +          <label><input type="checkbox" [(ngModel)]="config.disableMainGraph" (change)="updateConfig()"> Disable Main Graph</label>
                                                                                +          <label><input type="checkbox" [(ngModel)]="config.disableRoutesGraph" (change)="updateConfig()"> Disable Routes Graph</label>
                                                                                +          <label><input type="checkbox" [(ngModel)]="config.disableCoverage" (change)="updateConfig()"> Disable Coverage</label>
                                                                                +          <label><input type="checkbox" [(ngModel)]="config.disableSearch" (change)="updateConfig()"> Disable Search</label>
                                                                                +          <label><input type="checkbox" [(ngModel)]="config.disableDependencies" (change)="updateConfig()"> Disable Dependencies</label>
                                                                                +          <label><input type="checkbox" [(ngModel)]="config.disablePrivate" (change)="updateConfig()"> Disable Private</label>
                                                                                +          <label><input type="checkbox" [(ngModel)]="config.disableProtected" (change)="updateConfig()"> Disable Protected</label>
                                                                                +          <label><input type="checkbox" [(ngModel)]="config.disableInternal" (change)="updateConfig()"> Disable Internal</label>
                                                                                +          <label><input type="checkbox" [(ngModel)]="config.disableLifeCycleHooks" (change)="updateConfig()"> Disable Lifecycle Hooks</label>
                                                                                +          <label><input type="checkbox" [(ngModel)]="config.disableConstructors" (change)="updateConfig()"> Disable Constructors</label>
                                                                                +          <label><input type="checkbox" [(ngModel)]="config.disableProperties" (change)="updateConfig()"> Disable Properties</label>
                                                                                +          <label><input type="checkbox" [(ngModel)]="config.disableDomTree" (change)="updateConfig()"> Disable DOM Tree</label>
                                                                                +          <label><input type="checkbox" [(ngModel)]="config.disableTemplateTab" (change)="updateConfig()"> Disable Template Tab</label>
                                                                                +          <label><input type="checkbox" [(ngModel)]="config.disableStyleTab" (change)="updateConfig()"> Disable Style Tab</label>
                                                                                +        </div>
                                                                                +      </div>
                                                                                +
                                                                                +      <div class="template-playground-body">
                                                                                +        <div class="template-playground-sidebar">
                                                                                +          <div class="template-file-list">
                                                                                +            <h3>Templates</h3>
                                                                                +            <ul class="file-list">
                                                                                +              <li *ngFor="let template of templates; trackBy: trackByName"
                                                                                +                  [class.active]="selectedFile === template"
                                                                                +                  (click)="selectFile(template)">
                                                                                +                <i class="file-icon ion-document-text"></i>
                                                                                +                {{template.name}}
                                                                                +                <span class="file-type">{{template.type}}</span>
                                                                                +              </li>
                                                                                +            </ul>
                                                                                +
                                                                                +            <div *ngIf="templates.length === 0" class="loading-templates">
                                                                                +              Loading templates...
                                                                                +            </div>
                                                                                +          </div>
                                                                                +        </div>
                                                                                +
                                                                                +        <div class="template-playground-main">
                                                                                +          <div class="template-playground-editor">
                                                                                +            <div class="editor-header" *ngIf="selectedFile">
                                                                                +              <h4>{{selectedFile.path}}</h4>
                                                                                +              <span class="file-type-badge">{{selectedFile.type}}</span>
                                                                                +            </div>
                                                                                +            <div #editorContainer class="editor-container"></div>
                                                                                +          </div>
                                                                                +
                                                                                +          <div class="template-playground-preview">
                                                                                +            <div class="preview-header">
                                                                                +              <h4>Live Preview</h4>
                                                                                +              <button class="btn btn-sm btn-secondary" (click)="refreshPreview()">🔄 Refresh</button>
                                                                                +            </div>
                                                                                +            <iframe #previewFrame class="preview-frame" [src]="previewUrl"></iframe>
                                                                                +          </div>
                                                                                +        </div>
                                                                                +      </div>
                                                                                +    </div>
                                                                                +  `,
                                                                                +  styles: [`
                                                                                +    .template-playground {
                                                                                +      display: flex;
                                                                                +      flex-direction: column;
                                                                                +      height: 100vh;
                                                                                +      font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
                                                                                +    }
                                                                                +
                                                                                +    .template-playground-header {
                                                                                +      display: flex;
                                                                                +      justify-content: space-between;
                                                                                +      align-items: center;
                                                                                +      padding: 1rem 2rem;
                                                                                +      background: #f8f9fa;
                                                                                +      border-bottom: 1px solid #dee2e6;
                                                                                +    }
                                                                                +
                                                                                +    .template-playground-status {
                                                                                +      display: flex;
                                                                                +      align-items: center;
                                                                                +      gap: 1rem;
                                                                                +      font-size: 0.875rem;
                                                                                +    }
                                                                                +
                                                                                +    .session-info {
                                                                                +      color: #6c757d;
                                                                                +      font-family: monospace;
                                                                                +    }
                                                                                +
                                                                                +    .saving-indicator {
                                                                                +      color: #ffc107;
                                                                                +      font-weight: bold;
                                                                                +    }
                                                                                +
                                                                                +    .last-saved {
                                                                                +      color: #28a745;
                                                                                +    }
                                                                                +
                                                                                +    .template-playground-actions {
                                                                                +      display: flex;
                                                                                +      gap: 0.5rem;
                                                                                +    }
                                                                                +
                                                                                +    .config-panel {
                                                                                +      background: #e9ecef;
                                                                                +      padding: 1rem 2rem;
                                                                                +      border-bottom: 1px solid #dee2e6;
                                                                                +      transition: all 0.3s ease;
                                                                                +      max-height: 200px;
                                                                                +      overflow: hidden;
                                                                                +    }
                                                                                +
                                                                                +    .config-panel.collapsed {
                                                                                +      max-height: 0;
                                                                                +      padding: 0 2rem;
                                                                                +    }
                                                                                +
                                                                                +    .config-options {
                                                                                +      display: grid;
                                                                                +      grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
                                                                                +      gap: 0.5rem;
                                                                                +      margin-top: 0.5rem;
                                                                                +    }
                                                                                +
                                                                                +    .config-options label {
                                                                                +      display: flex;
                                                                                +      align-items: center;
                                                                                +      gap: 0.5rem;
                                                                                +      font-size: 0.875rem;
                                                                                +    }
                                                                                +
                                                                                +    .template-playground-body {
                                                                                +      display: flex;
                                                                                +      flex: 1;
                                                                                +      overflow: hidden;
                                                                                +    }
                                                                                +
                                                                                +    .template-playground-sidebar {
                                                                                +      width: 250px;
                                                                                +      background: #f8f9fa;
                                                                                +      border-right: 1px solid #dee2e6;
                                                                                +      overflow-y: auto;
                                                                                +    }
                                                                                +
                                                                                +    .template-file-list {
                                                                                +      padding: 1rem;
                                                                                +    }
                                                                                +
                                                                                +    .template-file-list h3 {
                                                                                +      margin: 0 0 0.5rem 0;
                                                                                +      font-size: 0.875rem;
                                                                                +      font-weight: 600;
                                                                                +      color: #495057;
                                                                                +      text-transform: uppercase;
                                                                                +      letter-spacing: 0.5px;
                                                                                +    }
                                                                                +
                                                                                +    .file-list {
                                                                                +      list-style: none;
                                                                                +      padding: 0;
                                                                                +      margin: 0 0 1.5rem 0;
                                                                                +    }
                                                                                +
                                                                                +    .file-list li {
                                                                                +      display: flex;
                                                                                +      align-items: center;
                                                                                +      padding: 0.5rem;
                                                                                +      cursor: pointer;
                                                                                +      border-radius: 4px;
                                                                                +      font-size: 0.875rem;
                                                                                +      transition: background-color 0.15s ease;
                                                                                +    }
                                                                                +
                                                                                +    .file-list li:hover {
                                                                                +      background: #e9ecef;
                                                                                +    }
                                                                                +
                                                                                +    .file-list li.active {
                                                                                +      background: #007bff;
                                                                                +      color: white;
                                                                                +    }
                                                                                +
                                                                                +    .file-icon {
                                                                                +      margin-right: 0.5rem;
                                                                                +      opacity: 0.7;
                                                                                +    }
                                                                                +
                                                                                +    .file-type {
                                                                                +      margin-left: auto;
                                                                                +      font-size: 0.75rem;
                                                                                +      opacity: 0.7;
                                                                                +      text-transform: uppercase;
                                                                                +    }
                                                                                +
                                                                                +    .loading-templates {
                                                                                +      text-align: center;
                                                                                +      color: #6c757d;
                                                                                +      font-style: italic;
                                                                                +      padding: 2rem;
                                                                                +    }
                                                                                +
                                                                                +    .template-playground-main {
                                                                                +      flex: 1;
                                                                                +      display: flex;
                                                                                +      overflow: hidden;
                                                                                +    }
                                                                                +
                                                                                +    .template-playground-editor {
                                                                                +      width: 50%;
                                                                                +      display: flex;
                                                                                +      flex-direction: column;
                                                                                +      border-right: 1px solid #dee2e6;
                                                                                +    }
                                                                                +
                                                                                +    .editor-header {
                                                                                +      display: flex;
                                                                                +      justify-content: space-between;
                                                                                +      align-items: center;
                                                                                +      padding: 0.75rem 1rem;
                                                                                +      background: #f8f9fa;
                                                                                +      border-bottom: 1px solid #dee2e6;
                                                                                +    }
                                                                                +
                                                                                +    .editor-header h4 {
                                                                                +      margin: 0;
                                                                                +      font-size: 0.875rem;
                                                                                +      font-weight: 600;
                                                                                +    }
                                                                                +
                                                                                +    .file-type-badge {
                                                                                +      background: #6c757d;
                                                                                +      color: white;
                                                                                +      padding: 0.125rem 0.5rem;
                                                                                +      border-radius: 12px;
                                                                                +      font-size: 0.75rem;
                                                                                +      text-transform: uppercase;
                                                                                +    }
                                                                                +
                                                                                +    .editor-container {
                                                                                +      flex: 1;
                                                                                +      position: relative;
                                                                                +    }
                                                                                +
                                                                                +    .template-playground-preview {
                                                                                +      width: 50%;
                                                                                +      display: flex;
                                                                                +      flex-direction: column;
                                                                                +    }
                                                                                +
                                                                                +    .preview-header {
                                                                                +      display: flex;
                                                                                +      justify-content: space-between;
                                                                                +      align-items: center;
                                                                                +      padding: 0.75rem 1rem;
                                                                                +      background: #f8f9fa;
                                                                                +      border-bottom: 1px solid #dee2e6;
                                                                                +    }
                                                                                +
                                                                                +    .preview-header h4 {
                                                                                +      margin: 0;
                                                                                +      font-size: 0.875rem;
                                                                                +      font-weight: 600;
                                                                                +    }
                                                                                +
                                                                                +    .preview-frame {
                                                                                +      flex: 1;
                                                                                +      border: none;
                                                                                +      background: white;
                                                                                +    }
                                                                                +
                                                                                +    .btn {
                                                                                +      padding: 0.375rem 0.75rem;
                                                                                +      border: 1px solid transparent;
                                                                                +      border-radius: 0.25rem;
                                                                                +      font-size: 0.875rem;
                                                                                +      font-weight: 500;
                                                                                +      text-decoration: none;
                                                                                +      cursor: pointer;
                                                                                +      transition: all 0.15s ease;
                                                                                +    }
                                                                                +
                                                                                +    .btn-primary {
                                                                                +      background: #007bff;
                                                                                +      border-color: #007bff;
                                                                                +      color: white;
                                                                                +    }
                                                                                +
                                                                                +    .btn-primary:hover {
                                                                                +      background: #0056b3;
                                                                                +      border-color: #004085;
                                                                                +    }
                                                                                +
                                                                                +    .btn-secondary {
                                                                                +      background: #6c757d;
                                                                                +      border-color: #6c757d;
                                                                                +      color: white;
                                                                                +    }
                                                                                +
                                                                                +    .btn-secondary:hover {
                                                                                +      background: #545b62;
                                                                                +      border-color: #4e555b;
                                                                                +    }
                                                                                +
                                                                                +    .btn-success {
                                                                                +      background: #28a745;
                                                                                +      border-color: #28a745;
                                                                                +      color: white;
                                                                                +    }
                                                                                +
                                                                                +    .btn-success:hover {
                                                                                +      background: #1e7e34;
                                                                                +      border-color: #1c7430;
                                                                                +    }
                                                                                +
                                                                                +    .btn-sm {
                                                                                +      padding: 0.25rem 0.5rem;
                                                                                +      font-size: 0.75rem;
                                                                                +    }
                                                                                +  `]
                                                                                +})
                                                                                +export class TemplatePlaygroundComponent implements OnInit, OnDestroy {
                                                                                +  @ViewChild('editorContainer', { static: true }) editorContainer!: ElementRef;
                                                                                +  @ViewChild('previewFrame', { static: true }) previewFrame!: ElementRef;
                                                                                +
                                                                                +  sessionId: string = '';
                                                                                +  templates: Template[] = [];
                                                                                +  selectedFile: Template | null = null;
                                                                                +  config: CompoDocConfig = {};
                                                                                +  showConfigPanel: boolean = false;
                                                                                +  saving: boolean = false;
                                                                                +  lastSaved: Date | null = null;
                                                                                +
                                                                                +  private saveTimeout?: number;
                                                                                +  private readonly SAVE_DELAY = 300; // 300ms debounce
                                                                                +
                                                                                +  get previewUrl(): string {
                                                                                +    return this.sessionId ? `/api/session/${this.sessionId}/docs/` : '';
                                                                                +  }
                                                                                +
                                                                                +  constructor(
                                                                                +    private http: HttpClient,
                                                                                +    private editorService: TemplateEditorService,
                                                                                +    private zipService: ZipExportService,
                                                                                +    private hbsService: HbsRenderService
                                                                                +  ) {}
                                                                                +
                                                                                +  async ngOnInit() {
                                                                                +    try {
                                                                                +      await this.createSession();
                                                                                +      await this.loadSessionTemplates();
                                                                                +      await this.loadSessionConfig();
                                                                                +      this.initializeEditor();
                                                                                +    } catch (error) {
                                                                                +      console.error('Error initializing template playground:', error);
                                                                                +    }
                                                                                +  }
                                                                                +
                                                                                +  ngOnDestroy() {
                                                                                +    if (this.saveTimeout) {
                                                                                +      clearTimeout(this.saveTimeout);
                                                                                +    }
                                                                                +  }
                                                                                +
                                                                                +  private async createSession(): Promise<void> {
                                                                                +    const response = await this.http.post<Session>('/api/session/create', {}).toPromise();
                                                                                +    if (response && response.success) {
                                                                                +      this.sessionId = response.sessionId;
                                                                                +      console.log('Session created:', this.sessionId);
                                                                                +    } else {
                                                                                +      throw new Error('Failed to create session');
                                                                                +    }
                                                                                +  }
                                                                                +
                                                                                +  private async loadSessionTemplates(): Promise<void> {
                                                                                +    if (!this.sessionId) return;
                                                                                +
                                                                                +    const response = await this.http.get<{templates: Template[], success: boolean}>(`/api/session/${this.sessionId}/templates`).toPromise();
                                                                                +    if (response && response.success) {
                                                                                +      this.templates = response.templates;
                                                                                +
                                                                                +      // Auto-select the first template
                                                                                +      if (this.templates.length > 0 && !this.selectedFile) {
                                                                                +        this.selectFile(this.templates[0]);
                                                                                +      }
                                                                                +    }
                                                                                +  }
                                                                                +
                                                                                +  private async loadSessionConfig(): Promise<void> {
                                                                                +    if (!this.sessionId) return;
                                                                                +
                                                                                +    const response = await this.http.get<{config: CompoDocConfig, success: boolean}>(`/api/session/${this.sessionId}/config`).toPromise();
                                                                                +    if (response && response.success) {
                                                                                +      this.config = response.config;
                                                                                +    }
                                                                                +  }
                                                                                +
                                                                                +  initializeEditor() {
                                                                                +    this.editorService.initializeEditor(this.editorContainer.nativeElement);
                                                                                +
                                                                                +    // Set up debounced save on content change
                                                                                +    this.editorService.setOnChangeCallback((content: string) => {
                                                                                +      this.scheduleAutoSave(content);
                                                                                +    });
                                                                                +  }
                                                                                +
                                                                                +  async selectFile(template: Template) {
                                                                                +    this.selectedFile = template;
                                                                                +
                                                                                +    if (!this.sessionId) return;
                                                                                +
                                                                                +    try {
                                                                                +      const response = await this.http.get<{content: string, success: boolean}>(`/api/session/${this.sessionId}/template/${template.path}`).toPromise();
                                                                                +      if (response && response.success) {
                                                                                +        this.editorService.setEditorContent(response.content, template.type === 'template' ? 'handlebars' : 'handlebars');
                                                                                +      }
                                                                                +    } catch (error) {
                                                                                +      console.error('Error loading template:', error);
                                                                                +    }
                                                                                +  }
                                                                                +
                                                                                +  private scheduleAutoSave(content: string): void {
                                                                                +    if (!this.selectedFile || !this.sessionId) return;
                                                                                +
                                                                                +    // Clear existing timeout
                                                                                +    if (this.saveTimeout) {
                                                                                +      clearTimeout(this.saveTimeout);
                                                                                +    }
                                                                                +
                                                                                +    // Set saving indicator
                                                                                +    this.saving = true;
                                                                                +
                                                                                +    // Schedule new save
                                                                                +    this.saveTimeout = window.setTimeout(async () => {
                                                                                +      try {
                                                                                +        await this.saveTemplate(content);
                                                                                +        this.saving = false;
                                                                                +        this.lastSaved = new Date();
                                                                                +      } catch (error) {
                                                                                +        console.error('Error saving template:', error);
                                                                                +        this.saving = false;
                                                                                +      }
                                                                                +    }, this.SAVE_DELAY);
                                                                                +  }
                                                                                +
                                                                                +  private async saveTemplate(content: string): Promise<void> {
                                                                                +    if (!this.selectedFile || !this.sessionId) return;
                                                                                +
                                                                                +    const response = await this.http.post<{success: boolean}>(`/api/session/${this.sessionId}/template/${this.selectedFile.path}`, {
                                                                                +      content
                                                                                +    }).toPromise();
                                                                                +
                                                                                +    if (!response || !response.success) {
                                                                                +      throw new Error('Failed to save template');
                                                                                +    }
                                                                                +  }
                                                                                +
                                                                                +  async updateConfig(): Promise<void> {
                                                                                +    if (!this.sessionId) return;
                                                                                +
                                                                                +    try {
                                                                                +      const response = await this.http.post<{success: boolean}>(`/api/session/${this.sessionId}/config`, {
                                                                                +        config: this.config
                                                                                +      }).toPromise();
                                                                                +
                                                                                +      if (response && response.success) {
                                                                                +        // Config updated, documentation will be regenerated automatically
                                                                                +      }
                                                                                +    } catch (error) {
                                                                                +      console.error('Error updating config:', error);
                                                                                +    }
                                                                                +  }
                                                                                +
                                                                                +  toggleConfigPanel(): void {
                                                                                +    this.showConfigPanel = !this.showConfigPanel;
                                                                                +  }
                                                                                +
                                                                                +  refreshPreview(): void {
                                                                                +    if (this.previewFrame?.nativeElement) {
                                                                                +      this.previewFrame.nativeElement.src = this.previewFrame.nativeElement.src;
                                                                                +    }
                                                                                +  }
                                                                                +
                                                                                +  resetToDefault(): void {
                                                                                +    // Implementation for resetting to default templates
                                                                                +    if (confirm('Are you sure you want to reset all templates to their default values? This action cannot be undone.')) {
                                                                                +      // TODO: Implement reset functionality
                                                                                +      console.log('Reset to default templates');
                                                                                +    }
                                                                                +  }
                                                                                +
                                                                                +  async exportZip(): Promise<void> {
                                                                                +    try {
                                                                                +      if (!this.sessionId) {
                                                                                +        console.error('No active session. Please refresh the page and try again.');
                                                                                +        return;
                                                                                +      }
                                                                                +
                                                                                +      console.log('Creating template package...');
                                                                                +
                                                                                +      // Call server-side ZIP creation endpoint for all templates
                                                                                +      const response = await this.http.post(`/api/session/${this.sessionId}/download-all-templates`, {}, {
                                                                                +        responseType: 'blob',
                                                                                +        observe: 'response'
                                                                                +      }).toPromise();
                                                                                +
                                                                                +      if (!response || !response.body) {
                                                                                +        throw new Error('Failed to create template package');
                                                                                +      }
                                                                                +
                                                                                +      // Get the ZIP file as a blob
                                                                                +      const zipBlob = response.body;
                                                                                +
                                                                                +      // Get filename from response headers or construct it
                                                                                +      const contentDisposition = response.headers.get('Content-Disposition');
                                                                                +      let filename = `compodoc-templates-${this.sessionId}.zip`;
                                                                                +
                                                                                +      if (contentDisposition) {
                                                                                +        const filenameMatch = contentDisposition.match(/filename="([^"]+)"/);
                                                                                +        if (filenameMatch) {
                                                                                +          filename = filenameMatch[1];
                                                                                +        }
                                                                                +      }
                                                                                +
                                                                                +      // Create download link and trigger download
                                                                                +      const url = URL.createObjectURL(zipBlob);
                                                                                +      const a = document.createElement('a');
                                                                                +      a.href = url;
                                                                                +      a.download = filename;
                                                                                +      document.body.appendChild(a);
                                                                                +      a.click();
                                                                                +      document.body.removeChild(a);
                                                                                +      URL.revokeObjectURL(url);
                                                                                +
                                                                                +      console.log('Template package downloaded successfully!');
                                                                                +    } catch (error) {
                                                                                +      console.error('Error downloading template package:', error);
                                                                                +    }
                                                                                +  }
                                                                                +
                                                                                +  trackByName(index: number, item: Template): string {
                                                                                +    return item.name;
                                                                                +  }
                                                                                +}
                                                                                +
                                                                                +
                                                                                + + +
                                                                                +
                                                                                
                                                                                +    .template-playground {
                                                                                +      display: flex;
                                                                                +      flex-direction: column;
                                                                                +      height: 100vh;
                                                                                +      font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
                                                                                +    }
                                                                                +
                                                                                +    .template-playground-header {
                                                                                +      display: flex;
                                                                                +      justify-content: space-between;
                                                                                +      align-items: center;
                                                                                +      padding: 1rem 2rem;
                                                                                +      background: #f8f9fa;
                                                                                +      border-bottom: 1px solid #dee2e6;
                                                                                +    }
                                                                                +
                                                                                +    .template-playground-status {
                                                                                +      display: flex;
                                                                                +      align-items: center;
                                                                                +      gap: 1rem;
                                                                                +      font-size: 0.875rem;
                                                                                +    }
                                                                                +
                                                                                +    .session-info {
                                                                                +      color: #6c757d;
                                                                                +      font-family: monospace;
                                                                                +    }
                                                                                +
                                                                                +    .saving-indicator {
                                                                                +      color: #ffc107;
                                                                                +      font-weight: bold;
                                                                                +    }
                                                                                +
                                                                                +    .last-saved {
                                                                                +      color: #28a745;
                                                                                +    }
                                                                                +
                                                                                +    .template-playground-actions {
                                                                                +      display: flex;
                                                                                +      gap: 0.5rem;
                                                                                +    }
                                                                                +
                                                                                +    .config-panel {
                                                                                +      background: #e9ecef;
                                                                                +      padding: 1rem 2rem;
                                                                                +      border-bottom: 1px solid #dee2e6;
                                                                                +      transition: all 0.3s ease;
                                                                                +      max-height: 200px;
                                                                                +      overflow: hidden;
                                                                                +    }
                                                                                +
                                                                                +    .config-panel.collapsed {
                                                                                +      max-height: 0;
                                                                                +      padding: 0 2rem;
                                                                                +    }
                                                                                +
                                                                                +    .config-options {
                                                                                +      display: grid;
                                                                                +      grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
                                                                                +      gap: 0.5rem;
                                                                                +      margin-top: 0.5rem;
                                                                                +    }
                                                                                +
                                                                                +    .config-options label {
                                                                                +      display: flex;
                                                                                +      align-items: center;
                                                                                +      gap: 0.5rem;
                                                                                +      font-size: 0.875rem;
                                                                                +    }
                                                                                +
                                                                                +    .template-playground-body {
                                                                                +      display: flex;
                                                                                +      flex: 1;
                                                                                +      overflow: hidden;
                                                                                +    }
                                                                                +
                                                                                +    .template-playground-sidebar {
                                                                                +      width: 250px;
                                                                                +      background: #f8f9fa;
                                                                                +      border-right: 1px solid #dee2e6;
                                                                                +      overflow-y: auto;
                                                                                +    }
                                                                                +
                                                                                +    .template-file-list {
                                                                                +      padding: 1rem;
                                                                                +    }
                                                                                +
                                                                                +    .template-file-list h3 {
                                                                                +      margin: 0 0 0.5rem 0;
                                                                                +      font-size: 0.875rem;
                                                                                +      font-weight: 600;
                                                                                +      color: #495057;
                                                                                +      text-transform: uppercase;
                                                                                +      letter-spacing: 0.5px;
                                                                                +    }
                                                                                +
                                                                                +    .file-list {
                                                                                +      list-style: none;
                                                                                +      padding: 0;
                                                                                +      margin: 0 0 1.5rem 0;
                                                                                +    }
                                                                                +
                                                                                +    .file-list li {
                                                                                +      display: flex;
                                                                                +      align-items: center;
                                                                                +      padding: 0.5rem;
                                                                                +      cursor: pointer;
                                                                                +      border-radius: 4px;
                                                                                +      font-size: 0.875rem;
                                                                                +      transition: background-color 0.15s ease;
                                                                                +    }
                                                                                +
                                                                                +    .file-list li:hover {
                                                                                +      background: #e9ecef;
                                                                                +    }
                                                                                +
                                                                                +    .file-list li.active {
                                                                                +      background: #007bff;
                                                                                +      color: white;
                                                                                +    }
                                                                                +
                                                                                +    .file-icon {
                                                                                +      margin-right: 0.5rem;
                                                                                +      opacity: 0.7;
                                                                                +    }
                                                                                +
                                                                                +    .file-type {
                                                                                +      margin-left: auto;
                                                                                +      font-size: 0.75rem;
                                                                                +      opacity: 0.7;
                                                                                +      text-transform: uppercase;
                                                                                +    }
                                                                                +
                                                                                +    .loading-templates {
                                                                                +      text-align: center;
                                                                                +      color: #6c757d;
                                                                                +      font-style: italic;
                                                                                +      padding: 2rem;
                                                                                +    }
                                                                                +
                                                                                +    .template-playground-main {
                                                                                +      flex: 1;
                                                                                +      display: flex;
                                                                                +      overflow: hidden;
                                                                                +    }
                                                                                +
                                                                                +    .template-playground-editor {
                                                                                +      width: 50%;
                                                                                +      display: flex;
                                                                                +      flex-direction: column;
                                                                                +      border-right: 1px solid #dee2e6;
                                                                                +    }
                                                                                +
                                                                                +    .editor-header {
                                                                                +      display: flex;
                                                                                +      justify-content: space-between;
                                                                                +      align-items: center;
                                                                                +      padding: 0.75rem 1rem;
                                                                                +      background: #f8f9fa;
                                                                                +      border-bottom: 1px solid #dee2e6;
                                                                                +    }
                                                                                +
                                                                                +    .editor-header h4 {
                                                                                +      margin: 0;
                                                                                +      font-size: 0.875rem;
                                                                                +      font-weight: 600;
                                                                                +    }
                                                                                +
                                                                                +    .file-type-badge {
                                                                                +      background: #6c757d;
                                                                                +      color: white;
                                                                                +      padding: 0.125rem 0.5rem;
                                                                                +      border-radius: 12px;
                                                                                +      font-size: 0.75rem;
                                                                                +      text-transform: uppercase;
                                                                                +    }
                                                                                +
                                                                                +    .editor-container {
                                                                                +      flex: 1;
                                                                                +      position: relative;
                                                                                +    }
                                                                                +
                                                                                +    .template-playground-preview {
                                                                                +      width: 50%;
                                                                                +      display: flex;
                                                                                +      flex-direction: column;
                                                                                +    }
                                                                                +
                                                                                +    .preview-header {
                                                                                +      display: flex;
                                                                                +      justify-content: space-between;
                                                                                +      align-items: center;
                                                                                +      padding: 0.75rem 1rem;
                                                                                +      background: #f8f9fa;
                                                                                +      border-bottom: 1px solid #dee2e6;
                                                                                +    }
                                                                                +
                                                                                +    .preview-header h4 {
                                                                                +      margin: 0;
                                                                                +      font-size: 0.875rem;
                                                                                +      font-weight: 600;
                                                                                +    }
                                                                                +
                                                                                +    .preview-frame {
                                                                                +      flex: 1;
                                                                                +      border: none;
                                                                                +      background: white;
                                                                                +    }
                                                                                +
                                                                                +    .btn {
                                                                                +      padding: 0.375rem 0.75rem;
                                                                                +      border: 1px solid transparent;
                                                                                +      border-radius: 0.25rem;
                                                                                +      font-size: 0.875rem;
                                                                                +      font-weight: 500;
                                                                                +      text-decoration: none;
                                                                                +      cursor: pointer;
                                                                                +      transition: all 0.15s ease;
                                                                                +    }
                                                                                +
                                                                                +    .btn-primary {
                                                                                +      background: #007bff;
                                                                                +      border-color: #007bff;
                                                                                +      color: white;
                                                                                +    }
                                                                                +
                                                                                +    .btn-primary:hover {
                                                                                +      background: #0056b3;
                                                                                +      border-color: #004085;
                                                                                +    }
                                                                                +
                                                                                +    .btn-secondary {
                                                                                +      background: #6c757d;
                                                                                +      border-color: #6c757d;
                                                                                +      color: white;
                                                                                +    }
                                                                                +
                                                                                +    .btn-secondary:hover {
                                                                                +      background: #545b62;
                                                                                +      border-color: #4e555b;
                                                                                +    }
                                                                                +
                                                                                +    .btn-success {
                                                                                +      background: #28a745;
                                                                                +      border-color: #28a745;
                                                                                +      color: white;
                                                                                +    }
                                                                                +
                                                                                +    .btn-success:hover {
                                                                                +      background: #1e7e34;
                                                                                +      border-color: #1c7430;
                                                                                +    }
                                                                                +
                                                                                +    .btn-sm {
                                                                                +      padding: 0.25rem 0.5rem;
                                                                                +      font-size: 0.75rem;
                                                                                +    }
                                                                                +  
                                                                                +
                                                                                +
                                                                                + +
                                                                                +
                                                                                +
                                                                                +
                                                                                + Legend +
                                                                                +
                                                                                +
                                                                                Html element +
                                                                                +
                                                                                +
                                                                                Component +
                                                                                +
                                                                                +
                                                                                Html element with directive +
                                                                                +
                                                                                +
                                                                                + + +
                                                                                + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                +
                                                                                +

                                                                                results matching ""

                                                                                +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  No results matching ""

                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/controllers/AppController.html b/backend/documentation/controllers/AppController.html new file mode 100644 index 0000000..f2c6831 --- /dev/null +++ b/backend/documentation/controllers/AppController.html @@ -0,0 +1,333 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  + + + + + + + + + + + + + +
                                                                                  +
                                                                                  +

                                                                                  +

                                                                                  File

                                                                                  +

                                                                                  +

                                                                                  + src/app.controller.ts +

                                                                                  + + + + + + +
                                                                                  +

                                                                                  Index

                                                                                  + + + + + + + + + + + + + + + +
                                                                                  +
                                                                                  Methods
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  + +
                                                                                  + +

                                                                                  + Methods +

                                                                                  + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + + + + getHello + + +
                                                                                  + + getHello() +
                                                                                  + Decorators : +
                                                                                  + @Get()
                                                                                  +
                                                                                  + +
                                                                                  + +
                                                                                  + Returns : string + +
                                                                                  +
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  /*
                                                                                  +** EPITECH PROJECT, 2025
                                                                                  +** TaskFlow
                                                                                  +** File description:
                                                                                  +** app.controller
                                                                                  +*/
                                                                                  +
                                                                                  +import { Controller, Get } from '@nestjs/common';
                                                                                  +import { AppService } from './app.service';
                                                                                  +
                                                                                  +@Controller()
                                                                                  +export class AppController {
                                                                                  +    constructor(private readonly appService: AppService) {}
                                                                                  +
                                                                                  +    @Get()
                                                                                  +    getHello(): string {
                                                                                  +        return this.appService.getHello();
                                                                                  +    }
                                                                                  +}
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + + + + + + + + + + + + + + + + +
                                                                                  +
                                                                                  +

                                                                                  results matching ""

                                                                                  +
                                                                                    +
                                                                                    +
                                                                                    +

                                                                                    No results matching ""

                                                                                    +
                                                                                    +
                                                                                    +
                                                                                    + +
                                                                                    +
                                                                                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/coverage.html b/backend/documentation/coverage.html new file mode 100644 index 0000000..9a94543 --- /dev/null +++ b/backend/documentation/coverage.html @@ -0,0 +1,986 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                                                                                    +
                                                                                    + + +
                                                                                    +
                                                                                    + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                    + +
                                                                                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                    FileTypeIdentifierStatements
                                                                                    + + documentation/template-playground/hbs-render.service.ts + injectableHbsRenderService + 0 % + (0/7) +
                                                                                    + + documentation/template-playground/hbs-render.service.ts + variableHandlebars + 0 % + (0/1) +
                                                                                    + + documentation/template-playground/template-editor.service.ts + injectableTemplateEditorService + 0 % + (0/9) +
                                                                                    + + documentation/template-playground/template-editor.service.ts + variablemonaco + 0 % + (0/1) +
                                                                                    + + documentation/template-playground/template-playground.component.ts + componentTemplatePlaygroundComponent + 0 % + (0/28) +
                                                                                    + + documentation/template-playground/template-playground.component.ts + interfaceCompoDocConfig + 0 % + (0/25) +
                                                                                    + + documentation/template-playground/template-playground.component.ts + interfaceSession + 0 % + (0/4) +
                                                                                    + + documentation/template-playground/template-playground.component.ts + interfaceTemplate + 0 % + (0/4) +
                                                                                    + + documentation/template-playground/zip-export.service.ts + injectableZipExportService + 0 % + (0/4) +
                                                                                    + + documentation/template-playground/zip-export.service.ts + variableJSZip + 0 % + (0/1) +
                                                                                    + + src/app.controller.ts + controllerAppController + 0 % + (0/2) +
                                                                                    + + src/app.service.ts + injectableAppService + 0 % + (0/2) +
                                                                                    + + src/auth/auth.resolver.ts + classAuthResolver + 60 % + (3/5) +
                                                                                    + + src/auth/auth.resolver.ts + classAuthResultResolver + 0 % + (0/2) +
                                                                                    + + src/auth/auth.service.ts + injectableAuthService + 0 % + (0/4) +
                                                                                    + + src/common/decorators/workspace-auth.decorator.ts + functionWorkspaceAuth + 0 % + (0/1) +
                                                                                    + + src/common/decorators/workspace-auth.decorator.ts + variableROLES_KEY + 0 % + (0/1) +
                                                                                    + + src/common/guards/auth.guard.ts + guardAuthGuard + 0 % + (0/3) +
                                                                                    + + src/common/guards/workspace.guard.ts + guardWorkspaceGuard + 0 % + (0/5) +
                                                                                    + + src/graphql/graphql.ts + classAddWorkspaceMemberInput + 0 % + (0/4) +
                                                                                    + + src/graphql/graphql.ts + classAttachment + 0 % + (0/5) +
                                                                                    + + src/graphql/graphql.ts + classAuthError + 0 % + (0/4) +
                                                                                    + + src/graphql/graphql.ts + classAuthSuccess + 0 % + (0/3) +
                                                                                    + + src/graphql/graphql.ts + classBoard + 0 % + (0/7) +
                                                                                    + + src/graphql/graphql.ts + classCard + 0 % + (0/11) +
                                                                                    + + src/graphql/graphql.ts + classCardLabel + 0 % + (0/3) +
                                                                                    + + src/graphql/graphql.ts + classCardMember + 0 % + (0/3) +
                                                                                    + + src/graphql/graphql.ts + classComment + 0 % + (0/6) +
                                                                                    + + src/graphql/graphql.ts + classCreateBoardInput + 0 % + (0/5) +
                                                                                    + + src/graphql/graphql.ts + classCreateBoardPayload + 0 % + (0/2) +
                                                                                    + + src/graphql/graphql.ts + classCreateCardInput + 0 % + (0/6) +
                                                                                    + + src/graphql/graphql.ts + classCreateLabelInput + 0 % + (0/4) +
                                                                                    + + src/graphql/graphql.ts + classCreateListInput + 0 % + (0/5) +
                                                                                    + + src/graphql/graphql.ts + classCreateUserInput + 0 % + (0/4) +
                                                                                    + + src/graphql/graphql.ts + classCreateWorkspaceInput + 0 % + (0/4) +
                                                                                    + + src/graphql/graphql.ts + classError + 0 % + (0/3) +
                                                                                    + + src/graphql/graphql.ts + classFileResponse + 0 % + (0/4) +
                                                                                    + + src/graphql/graphql.ts + classIMutation + 0 % + (0/30) +
                                                                                    + + src/graphql/graphql.ts + classIQuery + 0 % + (0/15) +
                                                                                    + + src/graphql/graphql.ts + classLabel + 0 % + (0/5) +
                                                                                    + + src/graphql/graphql.ts + classList + 0 % + (0/7) +
                                                                                    + + src/graphql/graphql.ts + classLoginInput + 0 % + (0/3) +
                                                                                    + + src/graphql/graphql.ts + classPinWorkspacePayload + 0 % + (0/2) +
                                                                                    + + src/graphql/graphql.ts + classRegisterInput + 0 % + (0/4) +
                                                                                    + + src/graphql/graphql.ts + classSuccess + 0 % + (0/2) +
                                                                                    + + src/graphql/graphql.ts + classUpdateBoardInput + 0 % + (0/5) +
                                                                                    + + src/graphql/graphql.ts + classUpdateCardInput + 0 % + (0/6) +
                                                                                    + + src/graphql/graphql.ts + classUpdateLabelInput + 0 % + (0/4) +
                                                                                    + + src/graphql/graphql.ts + classUpdateListInput + 0 % + (0/5) +
                                                                                    + + src/graphql/graphql.ts + classUpdateMemberRoleInput + 0 % + (0/4) +
                                                                                    + + src/graphql/graphql.ts + classUpdateUserInput + 0 % + (0/5) +
                                                                                    + + src/graphql/graphql.ts + classUpdateWorkspaceInput + 0 % + (0/4) +
                                                                                    + + src/graphql/graphql.ts + classUser + 0 % + (0/6) +
                                                                                    + + src/graphql/graphql.ts + classWorkspace + 0 % + (0/11) +
                                                                                    + + src/graphql/graphql.ts + classWorkspaceMembers + 0 % + (0/6) +
                                                                                    + + src/graphql/graphql.ts + type aliasAuthResult + 0 % + (0/1) +
                                                                                    + + src/graphql/graphql.ts + type aliasDateTime + 0 % + (0/1) +
                                                                                    + + src/graphql/graphql.ts + type aliasNullable + 0 % + (0/1) +
                                                                                    + + src/graphql/graphql.ts + type aliasStatus + 0 % + (0/1) +
                                                                                    + + src/graphql/graphql.ts + type aliasUpload + 0 % + (0/1) +
                                                                                    + + src/main.ts + functionbootstrap + 0 % + (0/1) +
                                                                                    + + src/prisma/prisma.service.ts + injectablePrismaService + 0 % + (0/2) +
                                                                                    + + src/workspace/workspace.resolver.ts + classWorkspaceResolver + 0 % + (0/7) +
                                                                                    + + src/workspace/workspace.service.ts + injectableWorkspaceService + 14 % + (1/7) +
                                                                                    + + + + + +
                                                                                    +
                                                                                    +

                                                                                    results matching ""

                                                                                    +
                                                                                      +
                                                                                      +
                                                                                      +

                                                                                      No results matching ""

                                                                                      +
                                                                                      +
                                                                                      +
                                                                                      + +
                                                                                      +
                                                                                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/dependencies.html b/backend/documentation/dependencies.html new file mode 100644 index 0000000..08f61f6 --- /dev/null +++ b/backend/documentation/dependencies.html @@ -0,0 +1,231 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                                                                                      +
                                                                                      + + +
                                                                                      +
                                                                                      + + + + + + + + + + + + + + + + + + + + +
                                                                                        +
                                                                                      • + @fastify/cookie : ^11.0.2
                                                                                      • +
                                                                                      • + @nestjs/common : ^11.0.1
                                                                                      • +
                                                                                      • + @nestjs/config : ^4.0.2
                                                                                      • +
                                                                                      • + @nestjs/core : ^11.0.1
                                                                                      • +
                                                                                      • + @nestjs/graphql : ^13.2.0
                                                                                      • +
                                                                                      • + @nestjs/jwt : ^11.0.1
                                                                                      • +
                                                                                      • + @nestjs/mercurius : ^13.2.0
                                                                                      • +
                                                                                      • + @nestjs/platform-fastify : ^11.1.9
                                                                                      • +
                                                                                      • + @prisma/client : 5.22.0
                                                                                      • +
                                                                                      • + @prisma/config : ^7.0.0
                                                                                      • +
                                                                                      • + bcrypt : ^6.0.0
                                                                                      • +
                                                                                      • + mercurius : ^16.6.0
                                                                                      • +
                                                                                      • + prisma : 5.22.0
                                                                                      • +
                                                                                      • + reflect-metadata : ^0.2.2
                                                                                      • +
                                                                                      • + rxjs : ^7.8.1
                                                                                      • +
                                                                                      • + ts-morph : ^25.0.1
                                                                                      • +
                                                                                      + + + + + + + +
                                                                                      +
                                                                                      +

                                                                                      results matching ""

                                                                                      +
                                                                                        +
                                                                                        +
                                                                                        +

                                                                                        No results matching ""

                                                                                        +
                                                                                        +
                                                                                        +
                                                                                        + +
                                                                                        +
                                                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/fonts/ionicons.eot b/backend/documentation/fonts/ionicons.eot new file mode 100644 index 0000000..4b1fd0f Binary files /dev/null and b/backend/documentation/fonts/ionicons.eot differ diff --git a/backend/documentation/fonts/ionicons.svg b/backend/documentation/fonts/ionicons.svg new file mode 100644 index 0000000..ba35c41 --- /dev/null +++ b/backend/documentation/fonts/ionicons.svg @@ -0,0 +1,2090 @@ + + + + + +Created by FontForge 20160407 at Thu Jun 14 08:50:34 2018 + By Adam Bradley +Copyright (c) 2018, Adam Bradley + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/fonts/ionicons.ttf b/backend/documentation/fonts/ionicons.ttf new file mode 100644 index 0000000..67bd842 Binary files /dev/null and b/backend/documentation/fonts/ionicons.ttf differ diff --git a/backend/documentation/fonts/ionicons.woff b/backend/documentation/fonts/ionicons.woff new file mode 100644 index 0000000..ec1c1f8 Binary files /dev/null and b/backend/documentation/fonts/ionicons.woff differ diff --git a/backend/documentation/fonts/ionicons.woff2 b/backend/documentation/fonts/ionicons.woff2 new file mode 100644 index 0000000..4233951 Binary files /dev/null and b/backend/documentation/fonts/ionicons.woff2 differ diff --git a/backend/documentation/fonts/roboto-v15-latin-300.eot b/backend/documentation/fonts/roboto-v15-latin-300.eot new file mode 100644 index 0000000..826acfd Binary files /dev/null and b/backend/documentation/fonts/roboto-v15-latin-300.eot differ diff --git a/backend/documentation/fonts/roboto-v15-latin-300.svg b/backend/documentation/fonts/roboto-v15-latin-300.svg new file mode 100644 index 0000000..52b2832 --- /dev/null +++ b/backend/documentation/fonts/roboto-v15-latin-300.svg @@ -0,0 +1,314 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/fonts/roboto-v15-latin-300.ttf b/backend/documentation/fonts/roboto-v15-latin-300.ttf new file mode 100644 index 0000000..66bc5ab Binary files /dev/null and b/backend/documentation/fonts/roboto-v15-latin-300.ttf differ diff --git a/backend/documentation/fonts/roboto-v15-latin-300.woff b/backend/documentation/fonts/roboto-v15-latin-300.woff new file mode 100644 index 0000000..7e6c479 Binary files /dev/null and b/backend/documentation/fonts/roboto-v15-latin-300.woff differ diff --git a/backend/documentation/fonts/roboto-v15-latin-300.woff2 b/backend/documentation/fonts/roboto-v15-latin-300.woff2 new file mode 100644 index 0000000..c34c128 Binary files /dev/null and b/backend/documentation/fonts/roboto-v15-latin-300.woff2 differ diff --git a/backend/documentation/fonts/roboto-v15-latin-700.eot b/backend/documentation/fonts/roboto-v15-latin-700.eot new file mode 100644 index 0000000..f89cad7 Binary files /dev/null and b/backend/documentation/fonts/roboto-v15-latin-700.eot differ diff --git a/backend/documentation/fonts/roboto-v15-latin-700.svg b/backend/documentation/fonts/roboto-v15-latin-700.svg new file mode 100644 index 0000000..fc8d42f --- /dev/null +++ b/backend/documentation/fonts/roboto-v15-latin-700.svg @@ -0,0 +1,310 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/fonts/roboto-v15-latin-700.ttf b/backend/documentation/fonts/roboto-v15-latin-700.ttf new file mode 100644 index 0000000..19090af Binary files /dev/null and b/backend/documentation/fonts/roboto-v15-latin-700.ttf differ diff --git a/backend/documentation/fonts/roboto-v15-latin-700.woff b/backend/documentation/fonts/roboto-v15-latin-700.woff new file mode 100644 index 0000000..bf737c1 Binary files /dev/null and b/backend/documentation/fonts/roboto-v15-latin-700.woff differ diff --git a/backend/documentation/fonts/roboto-v15-latin-700.woff2 b/backend/documentation/fonts/roboto-v15-latin-700.woff2 new file mode 100644 index 0000000..11cde5d Binary files /dev/null and b/backend/documentation/fonts/roboto-v15-latin-700.woff2 differ diff --git a/backend/documentation/fonts/roboto-v15-latin-italic.eot b/backend/documentation/fonts/roboto-v15-latin-italic.eot new file mode 100644 index 0000000..f2d020a Binary files /dev/null and b/backend/documentation/fonts/roboto-v15-latin-italic.eot differ diff --git a/backend/documentation/fonts/roboto-v15-latin-italic.svg b/backend/documentation/fonts/roboto-v15-latin-italic.svg new file mode 100644 index 0000000..738b829 --- /dev/null +++ b/backend/documentation/fonts/roboto-v15-latin-italic.svg @@ -0,0 +1,323 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/fonts/roboto-v15-latin-italic.ttf b/backend/documentation/fonts/roboto-v15-latin-italic.ttf new file mode 100644 index 0000000..b0dd4a1 Binary files /dev/null and b/backend/documentation/fonts/roboto-v15-latin-italic.ttf differ diff --git a/backend/documentation/fonts/roboto-v15-latin-italic.woff b/backend/documentation/fonts/roboto-v15-latin-italic.woff new file mode 100644 index 0000000..a2b7704 Binary files /dev/null and b/backend/documentation/fonts/roboto-v15-latin-italic.woff differ diff --git a/backend/documentation/fonts/roboto-v15-latin-italic.woff2 b/backend/documentation/fonts/roboto-v15-latin-italic.woff2 new file mode 100644 index 0000000..1bb77f9 Binary files /dev/null and b/backend/documentation/fonts/roboto-v15-latin-italic.woff2 differ diff --git a/backend/documentation/fonts/roboto-v15-latin-regular.eot b/backend/documentation/fonts/roboto-v15-latin-regular.eot new file mode 100644 index 0000000..d26bc8f Binary files /dev/null and b/backend/documentation/fonts/roboto-v15-latin-regular.eot differ diff --git a/backend/documentation/fonts/roboto-v15-latin-regular.svg b/backend/documentation/fonts/roboto-v15-latin-regular.svg new file mode 100644 index 0000000..ed55c10 --- /dev/null +++ b/backend/documentation/fonts/roboto-v15-latin-regular.svg @@ -0,0 +1,308 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/fonts/roboto-v15-latin-regular.ttf b/backend/documentation/fonts/roboto-v15-latin-regular.ttf new file mode 100644 index 0000000..7b25f3c Binary files /dev/null and b/backend/documentation/fonts/roboto-v15-latin-regular.ttf differ diff --git a/backend/documentation/fonts/roboto-v15-latin-regular.woff b/backend/documentation/fonts/roboto-v15-latin-regular.woff new file mode 100644 index 0000000..941dfa4 Binary files /dev/null and b/backend/documentation/fonts/roboto-v15-latin-regular.woff differ diff --git a/backend/documentation/fonts/roboto-v15-latin-regular.woff2 b/backend/documentation/fonts/roboto-v15-latin-regular.woff2 new file mode 100644 index 0000000..120796b Binary files /dev/null and b/backend/documentation/fonts/roboto-v15-latin-regular.woff2 differ diff --git a/backend/documentation/graph/dependencies.svg b/backend/documentation/graph/dependencies.svg new file mode 100644 index 0000000..8918d17 --- /dev/null +++ b/backend/documentation/graph/dependencies.svg @@ -0,0 +1,306 @@ + + + + + + +dependencies + +Legend + +  Declarations + +  Module + +  Bootstrap + +  Providers + +  Exports + +cluster_AppModule + + + +cluster_AppModule_imports + + + +cluster_AppModule_providers + + + +cluster_AuthModule + + + +cluster_AuthModule_providers + + + +cluster_CommonModule + + + +cluster_CommonModule_exports + + + +cluster_PrismaModule + + + +cluster_PrismaModule_exports + + + +cluster_TemplatePlaygroundModule + + + +cluster_TemplatePlaygroundModule_declarations + + + +cluster_TemplatePlaygroundModule_bootstrap + + + +cluster_TemplatePlaygroundModule_providers + + + +cluster_WorkspaceModule + + + +cluster_WorkspaceModule_providers + + + + +AuthModule + +AuthModule + + + +AppModule + +AppModule + + + +AuthModule->AppModule + + + + + +CommonModule + +CommonModule + + + +CommonModule->AppModule + + + + + +AuthGuard + +AuthGuard + + + +CommonModule->AuthGuard + + + + + +WorkspaceGuard + +WorkspaceGuard + + + +CommonModule->WorkspaceGuard + + + + + +TemplatePlaygroundModule + +TemplatePlaygroundModule + + + +CommonModule->TemplatePlaygroundModule + + + + + +PrismaModule + +PrismaModule + + + +PrismaModule->CommonModule + + + + + +PrismaModule->AppModule + + + + + +PrismaService + +PrismaService + + + +PrismaModule->PrismaService + + + + + +WorkspaceModule + +WorkspaceModule + + + +WorkspaceModule->AppModule + + + + + +AppService + +AppService + + + +AppService->AppModule + + + + + +AuthService + +AuthService + + + +AuthService->AuthModule + + + + + +PrismaService + +PrismaService + + + +PrismaService->AuthModule + + + + + +PrismaService->PrismaModule + + + + + +TemplatePlaygroundComponent + +TemplatePlaygroundComponent + + + +TemplatePlaygroundComponent->TemplatePlaygroundModule + + + + + +TemplatePlaygroundComponent + +TemplatePlaygroundComponent + + + +TemplatePlaygroundModule->TemplatePlaygroundComponent + + + + + +HbsRenderService + +HbsRenderService + + + +HbsRenderService->TemplatePlaygroundModule + + + + + +TemplateEditorService + +TemplateEditorService + + + +TemplateEditorService->TemplatePlaygroundModule + + + + + +ZipExportService + +ZipExportService + + + +ZipExportService->TemplatePlaygroundModule + + + + + +WorkspaceService + +WorkspaceService + + + +WorkspaceService->WorkspaceModule + + + + + diff --git a/backend/documentation/guards/AuthGuard.html b/backend/documentation/guards/AuthGuard.html new file mode 100644 index 0000000..ca5ddfa --- /dev/null +++ b/backend/documentation/guards/AuthGuard.html @@ -0,0 +1,421 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                                                                                        +
                                                                                        + + +
                                                                                        +
                                                                                        + + + + + + + + + + + + + + + + + + +
                                                                                        +
                                                                                        +

                                                                                        +

                                                                                        File

                                                                                        +

                                                                                        +

                                                                                        + src/common/guards/auth.guard.ts +

                                                                                        + + + + + + +
                                                                                        +

                                                                                        Index

                                                                                        + + + + + + + + + + + + + + + +
                                                                                        +
                                                                                        Methods
                                                                                        +
                                                                                        + +
                                                                                        +
                                                                                        + +
                                                                                        +

                                                                                        Constructor

                                                                                        + + + + + + + + + + + + + +
                                                                                        +constructor(prisma: PrismaService) +
                                                                                        + +
                                                                                        +
                                                                                        + Parameters : + + + + + + + + + + + + + + + + + + +
                                                                                        NameTypeOptional
                                                                                        prisma + PrismaService + + No +
                                                                                        +
                                                                                        +
                                                                                        +
                                                                                        + +
                                                                                        + +

                                                                                        + Methods +

                                                                                        + + + + + + + + + + + + + + + + + + + +
                                                                                        + + + Async + canActivate + + +
                                                                                        + + canActivate(context: ExecutionContext) +
                                                                                        + +
                                                                                        + +
                                                                                        + Parameters : + + + + + + + + + + + + + + + + + + + +
                                                                                        NameTypeOptional
                                                                                        context + ExecutionContext + + No +
                                                                                        +
                                                                                        +
                                                                                        + Returns : Promise<boolean> + +
                                                                                        +
                                                                                        + +
                                                                                        +
                                                                                        +
                                                                                        +
                                                                                        + + +
                                                                                        +
                                                                                        import {
                                                                                        +    CanActivate,
                                                                                        +    ExecutionContext,
                                                                                        +    Injectable,
                                                                                        +    ForbiddenException,
                                                                                        +} from '@nestjs/common';
                                                                                        +import { PrismaService } from '../../prisma/prisma.service';
                                                                                        +import { GqlExecutionContext } from '@nestjs/graphql';
                                                                                        +
                                                                                        +@Injectable()
                                                                                        +export class AuthGuard implements CanActivate {
                                                                                        +    constructor(
                                                                                        +        private prisma: PrismaService,
                                                                                        +    ) {}
                                                                                        +
                                                                                        +    async canActivate(context: ExecutionContext): Promise<boolean> {
                                                                                        +        const ctx = GqlExecutionContext.create(context);
                                                                                        +        const { user } = ctx.getContext();
                                                                                        +
                                                                                        +        if (!user) {
                                                                                        +            throw new ForbiddenException('Authentication required');
                                                                                        +        }
                                                                                        +
                                                                                        +        const existingUser = await this.prisma.user.findUnique({
                                                                                        +            where: { user_id: user.user_id },
                                                                                        +        });
                                                                                        +
                                                                                        +        if (!existingUser) {
                                                                                        +            throw new ForbiddenException('User does not exist');
                                                                                        +        }
                                                                                        +
                                                                                        +        return true;
                                                                                        +    }
                                                                                        +}
                                                                                        +
                                                                                        +
                                                                                        +
                                                                                        + + + + + + + + + + + +
                                                                                        +
                                                                                        +

                                                                                        results matching ""

                                                                                        +
                                                                                          +
                                                                                          +
                                                                                          +

                                                                                          No results matching ""

                                                                                          +
                                                                                          +
                                                                                          +
                                                                                          + +
                                                                                          +
                                                                                          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/guards/WorkspaceGuard.html b/backend/documentation/guards/WorkspaceGuard.html new file mode 100644 index 0000000..1be8458 --- /dev/null +++ b/backend/documentation/guards/WorkspaceGuard.html @@ -0,0 +1,487 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                                                                                          +
                                                                                          + + +
                                                                                          +
                                                                                          + + + + + + + + + + + + + + + + + + +
                                                                                          +
                                                                                          +

                                                                                          +

                                                                                          File

                                                                                          +

                                                                                          +

                                                                                          + src/common/guards/workspace.guard.ts +

                                                                                          + + + + + + +
                                                                                          +

                                                                                          Index

                                                                                          + + + + + + + + + + + + + + + + + + + + + +
                                                                                          +
                                                                                          Properties
                                                                                          +
                                                                                          + +
                                                                                          +
                                                                                          Methods
                                                                                          +
                                                                                          + +
                                                                                          +
                                                                                          + +
                                                                                          +

                                                                                          Constructor

                                                                                          + + + + + + + + + + + + + +
                                                                                          +constructor(reflector: Reflector, prisma: PrismaService) +
                                                                                          + +
                                                                                          +
                                                                                          + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                          NameTypeOptional
                                                                                          reflector + Reflector + + No +
                                                                                          prisma + PrismaService + + No +
                                                                                          +
                                                                                          +
                                                                                          +
                                                                                          + +
                                                                                          + +

                                                                                          + Methods +

                                                                                          + + + + + + + + + + + + + + + + + + + +
                                                                                          + + + Async + canActivate + + +
                                                                                          + + canActivate(context: ExecutionContext) +
                                                                                          + +
                                                                                          + +
                                                                                          + Parameters : + + + + + + + + + + + + + + + + + + + +
                                                                                          NameTypeOptional
                                                                                          context + ExecutionContext + + No +
                                                                                          +
                                                                                          +
                                                                                          + Returns : Promise<boolean> + +
                                                                                          +
                                                                                          + +
                                                                                          +
                                                                                          +
                                                                                          +
                                                                                          + + +
                                                                                          +
                                                                                          import {
                                                                                          +    CanActivate,
                                                                                          +    ExecutionContext,
                                                                                          +    Injectable,
                                                                                          +    ForbiddenException,
                                                                                          +} from '@nestjs/common';
                                                                                          +import { Reflector } from '@nestjs/core';
                                                                                          +import { GqlExecutionContext } from '@nestjs/graphql';
                                                                                          +import { PrismaService } from '../../prisma/prisma.service';
                                                                                          +import { Role } from '@prisma/client';
                                                                                          +import { ROLES_KEY } from '../decorators/workspace-auth.decorator';
                                                                                          +
                                                                                          +@Injectable()
                                                                                          +export class WorkspaceGuard implements CanActivate {
                                                                                          +    constructor(
                                                                                          +        private reflector: Reflector,
                                                                                          +        private prisma: PrismaService,
                                                                                          +    ) {}
                                                                                          +    Ò;
                                                                                          +    private roleHierarchy = {
                                                                                          +        [Role.Viewer]: 1,
                                                                                          +        [Role.Member]: 2,
                                                                                          +        [Role.Admin]: 3,
                                                                                          +    };
                                                                                          +
                                                                                          +    async canActivate(context: ExecutionContext): Promise<boolean> {
                                                                                          +        const requiredRole = this.reflector.getAllAndOverride<Role>(ROLES_KEY, [
                                                                                          +            context.getHandler(),
                                                                                          +            context.getClass(),
                                                                                          +        ]);
                                                                                          +
                                                                                          +        if (!requiredRole) return true;
                                                                                          +
                                                                                          +        const ctx = GqlExecutionContext.create(context);
                                                                                          +        const { user } = ctx.getContext();
                                                                                          +        const args = ctx.getArgs();
                                                                                          +
                                                                                          +        const workspaceId = args.workspace_id || args.input?.workspace_id;
                                                                                          +        if (!workspaceId) {
                                                                                          +            throw new ForbiddenException(
                                                                                          +                'Cannot verify permissions: No workspace_id provided',
                                                                                          +            );
                                                                                          +        }
                                                                                          +
                                                                                          +        const membership = await this.prisma.workspaceMembers.findUnique({
                                                                                          +            where: {
                                                                                          +                workspace_id_user_id: {
                                                                                          +                    workspace_id: workspaceId,
                                                                                          +                    user_id: user.user_id,
                                                                                          +                },
                                                                                          +            },
                                                                                          +        });
                                                                                          +
                                                                                          +        if (!membership)
                                                                                          +            throw new ForbiddenException(
                                                                                          +                'You are not a member of this workspace',
                                                                                          +            );
                                                                                          +
                                                                                          +        const userLevel = this.roleHierarchy[membership.role];
                                                                                          +        const requiredLevel = this.roleHierarchy[requiredRole];
                                                                                          +
                                                                                          +        if (userLevel < requiredLevel) {
                                                                                          +            throw new ForbiddenException(
                                                                                          +                `Insufficient permissions. Required: ${requiredRole}`,
                                                                                          +            );
                                                                                          +        }
                                                                                          +
                                                                                          +        return true;
                                                                                          +    }
                                                                                          +}
                                                                                          +
                                                                                          +
                                                                                          +
                                                                                          + + + + + + + + + + + +
                                                                                          +
                                                                                          +

                                                                                          results matching ""

                                                                                          +
                                                                                            +
                                                                                            +
                                                                                            +

                                                                                            No results matching ""

                                                                                            +
                                                                                            +
                                                                                            +
                                                                                            + +
                                                                                            +
                                                                                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/images/compodoc-vectorise-inverted.png b/backend/documentation/images/compodoc-vectorise-inverted.png new file mode 100644 index 0000000..e95ccfb Binary files /dev/null and b/backend/documentation/images/compodoc-vectorise-inverted.png differ diff --git a/backend/documentation/images/compodoc-vectorise-inverted.svg b/backend/documentation/images/compodoc-vectorise-inverted.svg new file mode 100644 index 0000000..d1479a5 --- /dev/null +++ b/backend/documentation/images/compodoc-vectorise-inverted.svg @@ -0,0 +1,201 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/images/compodoc-vectorise.png b/backend/documentation/images/compodoc-vectorise.png new file mode 100644 index 0000000..8137403 Binary files /dev/null and b/backend/documentation/images/compodoc-vectorise.png differ diff --git a/backend/documentation/images/compodoc-vectorise.svg b/backend/documentation/images/compodoc-vectorise.svg new file mode 100644 index 0000000..5e21f1e --- /dev/null +++ b/backend/documentation/images/compodoc-vectorise.svg @@ -0,0 +1,201 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/images/coverage-badge-documentation.svg b/backend/documentation/images/coverage-badge-documentation.svg new file mode 100644 index 0000000..20c754d --- /dev/null +++ b/backend/documentation/images/coverage-badge-documentation.svg @@ -0,0 +1,9 @@ + + + + + + documentation + 1% + + diff --git a/backend/documentation/images/favicon.ico b/backend/documentation/images/favicon.ico new file mode 100644 index 0000000..4144ee4 Binary files /dev/null and b/backend/documentation/images/favicon.ico differ diff --git a/backend/documentation/index.html b/backend/documentation/index.html new file mode 100644 index 0000000..04f20ad --- /dev/null +++ b/backend/documentation/index.html @@ -0,0 +1,260 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                                                                                            +
                                                                                            + + +
                                                                                            +
                                                                                            + + +

                                                                                            + Nest Logo +

                                                                                            + +

                                                                                            A progressive Node.js framework for building efficient and scalable server-side applications.

                                                                                            +

                                                                                            +NPM Version +Package License +NPM Downloads +CircleCI +Discord +Backers on Open Collective +Sponsors on Open Collective + Donate us + Support us + Follow us on Twitter +

                                                                                            + + +

                                                                                            Description

                                                                                            +

                                                                                            Nest framework TypeScript starter repository.

                                                                                            +

                                                                                            Project setup

                                                                                            +Example :
                                                                                            $ npm install

                                                                                            Compile and run the project

                                                                                            +Example :
                                                                                            # development
                                                                                            +$ npm run start
                                                                                            +
                                                                                            +# watch mode
                                                                                            +$ npm run start:dev
                                                                                            +
                                                                                            +# production mode
                                                                                            +$ npm run start:prod

                                                                                            Run tests

                                                                                            +Example :
                                                                                            # unit tests
                                                                                            +$ npm run test
                                                                                            +
                                                                                            +# e2e tests
                                                                                            +$ npm run test:e2e
                                                                                            +
                                                                                            +# test coverage
                                                                                            +$ npm run test:cov

                                                                                            Deployment

                                                                                            +

                                                                                            When you're ready to deploy your NestJS application to production, there are some key steps you can take to ensure it runs as efficiently as possible. Check out the deployment documentation for more information.

                                                                                            +

                                                                                            If you are looking for a cloud-based platform to deploy your NestJS application, check out Mau, our official platform for deploying NestJS applications on AWS. Mau makes deployment straightforward and fast, requiring just a few simple steps:

                                                                                            +Example :
                                                                                            $ npm install -g @nestjs/mau
                                                                                            +$ mau deploy

                                                                                            With Mau, you can deploy your application in just a few clicks, allowing you to focus on building features rather than managing infrastructure.

                                                                                            +

                                                                                            Resources

                                                                                            +

                                                                                            Check out a few resources that may come in handy when working with NestJS:

                                                                                            +
                                                                                              +
                                                                                            • Visit the NestJS Documentation to learn more about the framework.
                                                                                            • +
                                                                                            • For questions and support, please visit our Discord channel.
                                                                                            • +
                                                                                            • To dive deeper and get more hands-on experience, check out our official video courses.
                                                                                            • +
                                                                                            • Deploy your application to AWS with the help of NestJS Mau in just a few clicks.
                                                                                            • +
                                                                                            • Visualize your application graph and interact with the NestJS application in real-time using NestJS Devtools.
                                                                                            • +
                                                                                            • Need help with your project (part-time to full-time)? Check out our official enterprise support.
                                                                                            • +
                                                                                            • To stay in the loop and get updates, follow us on X and LinkedIn.
                                                                                            • +
                                                                                            • Looking for a job, or have a job to offer? Check out our official Jobs board.
                                                                                            • +
                                                                                            +

                                                                                            Support

                                                                                            +

                                                                                            Nest is an MIT-licensed open source project. It can grow thanks to the sponsors and support by the amazing backers. If you'd like to join them, please read more here.

                                                                                            +

                                                                                            Stay in touch

                                                                                            + +

                                                                                            License

                                                                                            +

                                                                                            Nest is MIT licensed.

                                                                                            + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                            +
                                                                                            +

                                                                                            results matching ""

                                                                                            +
                                                                                              +
                                                                                              +
                                                                                              +

                                                                                              No results matching ""

                                                                                              +
                                                                                              +
                                                                                              +
                                                                                              + +
                                                                                              +
                                                                                              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/injectables/AppService.html b/backend/documentation/injectables/AppService.html new file mode 100644 index 0000000..c0d309d --- /dev/null +++ b/backend/documentation/injectables/AppService.html @@ -0,0 +1,315 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                                                                                              +
                                                                                              + + +
                                                                                              +
                                                                                              + + + + + + + + + + + + + + + + +
                                                                                              +
                                                                                              +

                                                                                              +

                                                                                              File

                                                                                              +

                                                                                              +

                                                                                              + src/app.service.ts +

                                                                                              + + + + + +
                                                                                              +

                                                                                              Index

                                                                                              + + + + + + + + + + + + + + + +
                                                                                              +
                                                                                              Methods
                                                                                              +
                                                                                              + +
                                                                                              +
                                                                                              + + +
                                                                                              + +

                                                                                              + Methods +

                                                                                              + + + + + + + + + + + + + + + + + + + +
                                                                                              + + + getHello + + +
                                                                                              +getHello() +
                                                                                              + +
                                                                                              + +
                                                                                              + Returns : string + +
                                                                                              +
                                                                                              +
                                                                                              + +
                                                                                              + + +
                                                                                              +
                                                                                              import { Injectable } from '@nestjs/common';
                                                                                              +
                                                                                              +@Injectable()
                                                                                              +export class AppService {
                                                                                              +  getHello(): string {
                                                                                              +    return 'Hello World!';
                                                                                              +  }
                                                                                              +}
                                                                                              +
                                                                                              +
                                                                                              + +
                                                                                              + + + + + + + + + + + + + +
                                                                                              +
                                                                                              +

                                                                                              results matching ""

                                                                                              +
                                                                                                +
                                                                                                +
                                                                                                +

                                                                                                No results matching ""

                                                                                                +
                                                                                                +
                                                                                                +
                                                                                                + +
                                                                                                +
                                                                                                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/injectables/AuthService.html b/backend/documentation/injectables/AuthService.html new file mode 100644 index 0000000..54df96a --- /dev/null +++ b/backend/documentation/injectables/AuthService.html @@ -0,0 +1,598 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                                                                                                +
                                                                                                + + +
                                                                                                +
                                                                                                + + + + + + + + + + + + + + + + +
                                                                                                +
                                                                                                +

                                                                                                +

                                                                                                File

                                                                                                +

                                                                                                +

                                                                                                + src/auth/auth.service.ts +

                                                                                                + + + + + +
                                                                                                +

                                                                                                Index

                                                                                                + + + + + + + + + + + + + + + +
                                                                                                +
                                                                                                Methods
                                                                                                +
                                                                                                + +
                                                                                                +
                                                                                                + +
                                                                                                +

                                                                                                Constructor

                                                                                                + + + + + + + + + + + + + +
                                                                                                +constructor(prisma: PrismaService, jwtService: JwtService) +
                                                                                                + +
                                                                                                +
                                                                                                + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                NameTypeOptional
                                                                                                prisma + PrismaService + + No +
                                                                                                jwtService + JwtService + + No +
                                                                                                +
                                                                                                +
                                                                                                +
                                                                                                + +
                                                                                                + +

                                                                                                + Methods +

                                                                                                + + + + + + + + + + + + + + + + + + + +
                                                                                                + + + Async + loginUser + + +
                                                                                                + + loginUser(input: LoginInput) +
                                                                                                + +
                                                                                                + +
                                                                                                + Parameters : + + + + + + + + + + + + + + + + + + + +
                                                                                                NameTypeOptional
                                                                                                input + LoginInput + + No +
                                                                                                +
                                                                                                +
                                                                                                + Returns : unknown + +
                                                                                                +
                                                                                                + +
                                                                                                +
                                                                                                + + + + + + + + + + + + + + + + + + + +
                                                                                                + + + Async + registerUser + + +
                                                                                                + + registerUser(input: RegisterInput) +
                                                                                                + +
                                                                                                + +
                                                                                                + Parameters : + + + + + + + + + + + + + + + + + + + +
                                                                                                NameTypeOptional
                                                                                                input + RegisterInput + + No +
                                                                                                +
                                                                                                +
                                                                                                + Returns : unknown + +
                                                                                                +
                                                                                                + +
                                                                                                +
                                                                                                +
                                                                                                + +
                                                                                                + + +
                                                                                                +
                                                                                                import { Injectable } from '@nestjs/common';
                                                                                                +import { PrismaService } from '../prisma/prisma.service';
                                                                                                +import * as bcrypt from 'bcrypt';
                                                                                                +import { JwtService } from '@nestjs/jwt';
                                                                                                +import { RegisterInput, LoginInput } from '../graphql/graphql';
                                                                                                +import { Prisma } from '@prisma/client';
                                                                                                +
                                                                                                +@Injectable()
                                                                                                +export class AuthService {
                                                                                                +    constructor(
                                                                                                +        private prisma: PrismaService,
                                                                                                +        private jwtService: JwtService,
                                                                                                +    ) {}
                                                                                                +
                                                                                                +    async loginUser(input: LoginInput) {
                                                                                                +        try {
                                                                                                +            const user = await this.prisma.user.findUniqueOrThrow({
                                                                                                +                where: { email: input.email },
                                                                                                +            });
                                                                                                +
                                                                                                +            const isPasswordValid = await bcrypt.compare(
                                                                                                +                input.password,
                                                                                                +                user.hashed_password,
                                                                                                +            );
                                                                                                +            if (!isPasswordValid) {
                                                                                                +                throw new Error('Invalid credentials');
                                                                                                +            }
                                                                                                +
                                                                                                +            const token = this.jwtService.sign({
                                                                                                +                sub: user.user_id,
                                                                                                +                email: user.email,
                                                                                                +            });
                                                                                                +            return {
                                                                                                +                __typename: 'AuthSuccess',
                                                                                                +                user,
                                                                                                +                token
                                                                                                +            };
                                                                                                +        } catch (error) {
                                                                                                +            return {
                                                                                                +                __typename: 'AuthError',
                                                                                                +                message: 'Invalid credentials',
                                                                                                +                code: 'INVALID_CREDENTIALS',
                                                                                                +            };
                                                                                                +        }
                                                                                                +    }
                                                                                                +
                                                                                                +    async registerUser(input: RegisterInput) {
                                                                                                +        const existingEmail = await this.prisma.user.findUnique({
                                                                                                +            where: { email: input.email },
                                                                                                +        });
                                                                                                +        if (existingEmail) {
                                                                                                +            return {
                                                                                                +                __typename: 'AuthError',
                                                                                                +                message: 'Email already in use',
                                                                                                +                code: 'EMAIL_TAKEN',
                                                                                                +                field: 'email',
                                                                                                +            };
                                                                                                +        }
                                                                                                +
                                                                                                +        const existingUsername = await this.prisma.user.findUnique({
                                                                                                +            where: { username: input.username },
                                                                                                +        });
                                                                                                +        if (existingUsername) {
                                                                                                +            return {
                                                                                                +                __typename: 'AuthError',
                                                                                                +                message: 'Username already taken',
                                                                                                +                code: 'USERNAME_TAKEN',
                                                                                                +                field: 'username',
                                                                                                +            };
                                                                                                +        }
                                                                                                +
                                                                                                +        try {
                                                                                                +            const hashedPassword = await bcrypt.hash(input.password, 10);
                                                                                                +
                                                                                                +            const newUser = await this.prisma.user.create({
                                                                                                +                data: {
                                                                                                +                    username: input.username,
                                                                                                +                    email: input.email,
                                                                                                +                    hashed_password: hashedPassword,
                                                                                                +                },
                                                                                                +            });
                                                                                                +
                                                                                                +            const token = this.jwtService.sign({
                                                                                                +                sub: newUser.user_id,
                                                                                                +                email: newUser.email,
                                                                                                +            });
                                                                                                +
                                                                                                +            return {
                                                                                                +                __typename: 'RegisterSuccess',
                                                                                                +                user: newUser,
                                                                                                +                token: token,
                                                                                                +            };
                                                                                                +        } catch (error) {
                                                                                                +            if (
                                                                                                +                error instanceof Prisma.PrismaClientKnownRequestError &&
                                                                                                +                error.code === 'P2002'
                                                                                                +            ) {
                                                                                                +                const target = error.meta?.target as string[];
                                                                                                +
                                                                                                +                if (target.includes('email')) {
                                                                                                +                    return {
                                                                                                +                        __typename: 'AuthError',
                                                                                                +                        message: 'Email already in use.',
                                                                                                +                        code: 'EMAIL_TAKEN',
                                                                                                +                        field: 'email',
                                                                                                +                    };
                                                                                                +                }
                                                                                                +
                                                                                                +                if (target.includes('username')) {
                                                                                                +                    return {
                                                                                                +                        __typename: 'AuthError',
                                                                                                +                        message: 'Username already taken',
                                                                                                +                        code: 'USERNAME_TAKEN',
                                                                                                +                        field: 'username',
                                                                                                +                    };
                                                                                                +                }
                                                                                                +            }
                                                                                                +            return {
                                                                                                +                __typename: 'AuthError',
                                                                                                +                message: 'Registration failed',
                                                                                                +                code: 'REGISTRATION_FAILED',
                                                                                                +            };
                                                                                                +        }
                                                                                                +    }
                                                                                                +}
                                                                                                +
                                                                                                +
                                                                                                + +
                                                                                                + + + + + + + + + + + + + +
                                                                                                +
                                                                                                +

                                                                                                results matching ""

                                                                                                +
                                                                                                  +
                                                                                                  +
                                                                                                  +

                                                                                                  No results matching ""

                                                                                                  +
                                                                                                  +
                                                                                                  +
                                                                                                  + +
                                                                                                  +
                                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/injectables/HbsRenderService.html b/backend/documentation/injectables/HbsRenderService.html new file mode 100644 index 0000000..35d0dd5 --- /dev/null +++ b/backend/documentation/injectables/HbsRenderService.html @@ -0,0 +1,753 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                                                                                                  +
                                                                                                  + + +
                                                                                                  +
                                                                                                  + + + + + + + + + + + + + + + + +
                                                                                                  +
                                                                                                  +

                                                                                                  +

                                                                                                  File

                                                                                                  +

                                                                                                  +

                                                                                                  + documentation/template-playground/hbs-render.service.ts +

                                                                                                  + + + + + +
                                                                                                  +

                                                                                                  Index

                                                                                                  + + + + + + + + + + + + + + + + + + + + + +
                                                                                                  +
                                                                                                  Properties
                                                                                                  +
                                                                                                  + +
                                                                                                  +
                                                                                                  Methods
                                                                                                  +
                                                                                                  + +
                                                                                                  +
                                                                                                  + +
                                                                                                  +

                                                                                                  Constructor

                                                                                                  + + + + + + + + + + +
                                                                                                  +constructor() +
                                                                                                  + +
                                                                                                  +
                                                                                                  + +
                                                                                                  + +

                                                                                                  + Methods +

                                                                                                  + + + + + + + + + + + + + + + + + + + +
                                                                                                  + + + getMockData + + +
                                                                                                  +getMockData() +
                                                                                                  + +
                                                                                                  + +
                                                                                                  + Returns : any + +
                                                                                                  +
                                                                                                  + + + + + + + + + + + + + + + + + + + +
                                                                                                  + + + Private + initializeHandlebars + + +
                                                                                                  + + initializeHandlebars() +
                                                                                                  + +
                                                                                                  + +
                                                                                                  + Returns : void + +
                                                                                                  +
                                                                                                  + + + + + + + + + + + + + + + + + + + +
                                                                                                  + + + Private + registerHelpers + + +
                                                                                                  + + registerHelpers() +
                                                                                                  + +
                                                                                                  + +
                                                                                                  + Returns : void + +
                                                                                                  +
                                                                                                  + + + + + + + + + + + + + + + + + + + +
                                                                                                  + + + renderTemplate + + +
                                                                                                  +renderTemplate(templateContent: string, data: any) +
                                                                                                  + +
                                                                                                  + +
                                                                                                  + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                  NameTypeOptional
                                                                                                  templateContent + string + + No +
                                                                                                  data + any + + No +
                                                                                                  +
                                                                                                  +
                                                                                                  + Returns : string + +
                                                                                                  +
                                                                                                  + +
                                                                                                  +
                                                                                                  +
                                                                                                  +
                                                                                                  + +

                                                                                                  + Properties +

                                                                                                  + + + + + + + + + + + + + + +
                                                                                                  + + + Private + handlebarsInstance + + +
                                                                                                  + Type : any + +
                                                                                                  + +
                                                                                                  +
                                                                                                  + +
                                                                                                  + + +
                                                                                                  +
                                                                                                  import { Injectable } from '@angular/core';
                                                                                                  +
                                                                                                  +declare const Handlebars: any;
                                                                                                  +
                                                                                                  +@Injectable({
                                                                                                  +  providedIn: 'root'
                                                                                                  +})
                                                                                                  +export class HbsRenderService {
                                                                                                  +  private handlebarsInstance: any;
                                                                                                  +
                                                                                                  +  constructor() {
                                                                                                  +    this.initializeHandlebars();
                                                                                                  +  }
                                                                                                  +
                                                                                                  +  private initializeHandlebars() {
                                                                                                  +    // Create a new Handlebars instance for the playground
                                                                                                  +    this.handlebarsInstance = Handlebars.create();
                                                                                                  +
                                                                                                  +    // Register common helpers used in Compodoc templates
                                                                                                  +    this.registerHelpers();
                                                                                                  +  }
                                                                                                  +
                                                                                                  +  private registerHelpers() {
                                                                                                  +    // Register the 'compare' helper
                                                                                                  +    this.handlebarsInstance.registerHelper('compare', (left: any, operator: string, right: any, options: any) => {
                                                                                                  +      let result;
                                                                                                  +      switch (operator) {
                                                                                                  +        case '===':
                                                                                                  +          result = left === right;
                                                                                                  +          break;
                                                                                                  +        case '!==':
                                                                                                  +          result = left !== right;
                                                                                                  +          break;
                                                                                                  +        case '<':
                                                                                                  +          result = left < right;
                                                                                                  +          break;
                                                                                                  +        case '>':
                                                                                                  +          result = left > right;
                                                                                                  +          break;
                                                                                                  +        case '<=':
                                                                                                  +          result = left <= right;
                                                                                                  +          break;
                                                                                                  +        case '>=':
                                                                                                  +          result = left >= right;
                                                                                                  +          break;
                                                                                                  +        default:
                                                                                                  +          result = false;
                                                                                                  +      }
                                                                                                  +      return result ? options.fn(this) : options.inverse(this);
                                                                                                  +    });
                                                                                                  +
                                                                                                  +    // Register the 'unless' helper
                                                                                                  +    this.handlebarsInstance.registerHelper('unless', (conditional: any, options: any) => {
                                                                                                  +      return !conditional ? options.fn(this) : options.inverse(this);
                                                                                                  +    });
                                                                                                  +
                                                                                                  +    // Register the 'each' helper with index
                                                                                                  +    this.handlebarsInstance.registerHelper('each', (context: any, options: any) => {
                                                                                                  +      let ret = '';
                                                                                                  +      for (let i = 0; i < context.length; i++) {
                                                                                                  +        ret += options.fn(context[i], { data: { index: i } });
                                                                                                  +      }
                                                                                                  +      return ret;
                                                                                                  +    });
                                                                                                  +
                                                                                                  +    // Register the 'if' helper
                                                                                                  +    this.handlebarsInstance.registerHelper('if', (conditional: any, options: any) => {
                                                                                                  +      return conditional ? options.fn(this) : options.inverse(this);
                                                                                                  +    });
                                                                                                  +
                                                                                                  +    // Register the 'relativeURL' helper
                                                                                                  +    this.handlebarsInstance.registerHelper('relativeURL', (depth: number, page?: string) => {
                                                                                                  +      let url = '';
                                                                                                  +      for (let i = 0; i < depth; i++) {
                                                                                                  +        url += '../';
                                                                                                  +      }
                                                                                                  +      return url + (page || '');
                                                                                                  +    });
                                                                                                  +
                                                                                                  +    // Register the 't' helper for translations
                                                                                                  +    this.handlebarsInstance.registerHelper('t', (key: string) => {
                                                                                                  +      // Simple translation mapping for preview
                                                                                                  +      const translations: { [key: string]: string } = {
                                                                                                  +        'info': 'Information',
                                                                                                  +        'source': 'Source',
                                                                                                  +        'example': 'Example',
                                                                                                  +        'template': 'Template',
                                                                                                  +        'styles': 'Styles',
                                                                                                  +        'component': 'Component',
                                                                                                  +        'module': 'Module',
                                                                                                  +        'overview': 'Overview',
                                                                                                  +        'components': 'Components',
                                                                                                  +        'modules': 'Modules',
                                                                                                  +        'file': 'File',
                                                                                                  +        'description': 'Description',
                                                                                                  +        'selector': 'Selector',
                                                                                                  +        'properties': 'Properties',
                                                                                                  +        'methods': 'Methods',
                                                                                                  +        'inputs': 'Inputs',
                                                                                                  +        'outputs': 'Outputs'
                                                                                                  +      };
                                                                                                  +      return translations[key] || key;
                                                                                                  +    });
                                                                                                  +
                                                                                                  +    // Register the 'orLength' helper
                                                                                                  +    this.handlebarsInstance.registerHelper('orLength', (...args: any[]) => {
                                                                                                  +      const options = args[args.length - 1];
                                                                                                  +      const values = args.slice(0, -1);
                                                                                                  +
                                                                                                  +      for (const value of values) {
                                                                                                  +        if (value && value.length && value.length > 0) {
                                                                                                  +          return options.fn(this);
                                                                                                  +        }
                                                                                                  +      }
                                                                                                  +      return options.inverse(this);
                                                                                                  +    });
                                                                                                  +
                                                                                                  +    // Register the 'isTabEnabled' helper
                                                                                                  +    this.handlebarsInstance.registerHelper('isTabEnabled', (navTabs: any[], tabId: string, options: any) => {
                                                                                                  +      const tab = navTabs && navTabs.find((t: any) => t.id === tabId);
                                                                                                  +      return tab ? options.fn(this) : options.inverse(this);
                                                                                                  +    });
                                                                                                  +
                                                                                                  +    // Register the 'isInitialTab' helper
                                                                                                  +    this.handlebarsInstance.registerHelper('isInitialTab', (navTabs: any[], tabId: string, options: any) => {
                                                                                                  +      const isInitial = navTabs && navTabs.length > 0 && navTabs[0].id === tabId;
                                                                                                  +      return isInitial ? options.fn(this) : options.inverse(this);
                                                                                                  +    });
                                                                                                  +  }
                                                                                                  +
                                                                                                  +  renderTemplate(templateContent: string, data: any): string {
                                                                                                  +    try {
                                                                                                  +      // Create a complete HTML document for preview
                                                                                                  +      const template = this.handlebarsInstance.compile(templateContent);
                                                                                                  +      const rendered = template({ data });
                                                                                                  +
                                                                                                  +      // Wrap in a basic HTML structure for preview
                                                                                                  +      return `
                                                                                                  +        <!DOCTYPE html>
                                                                                                  +        <html>
                                                                                                  +        <head>
                                                                                                  +          <meta charset="utf-8">
                                                                                                  +          <title>Template Preview</title>
                                                                                                  +          <style>
                                                                                                  +            body { font-family: Arial, sans-serif; margin: 20px; }
                                                                                                  +            .preview-wrapper { border: 1px solid #ddd; padding: 20px; }
                                                                                                  +            .preview-notice { background: #f0f8ff; padding: 10px; margin-bottom: 20px; border-left: 4px solid #007bff; }
                                                                                                  +          </style>
                                                                                                  +        </head>
                                                                                                  +        <body>
                                                                                                  +          <div class="preview-notice">
                                                                                                  +            <strong>Template Preview:</strong> This is a live preview of your template with mock data.
                                                                                                  +          </div>
                                                                                                  +          <div class="preview-wrapper">
                                                                                                  +            ${rendered}
                                                                                                  +          </div>
                                                                                                  +        </body>
                                                                                                  +        </html>
                                                                                                  +      `;
                                                                                                  +    } catch (error) {
                                                                                                  +      return `
                                                                                                  +        <!DOCTYPE html>
                                                                                                  +        <html>
                                                                                                  +        <head>
                                                                                                  +          <meta charset="utf-8">
                                                                                                  +          <title>Template Preview - Error</title>
                                                                                                  +          <style>
                                                                                                  +            body { font-family: Arial, sans-serif; margin: 20px; }
                                                                                                  +            .error { color: red; background: #fff5f5; padding: 20px; border: 1px solid #red; }
                                                                                                  +          </style>
                                                                                                  +        </head>
                                                                                                  +        <body>
                                                                                                  +          <div class="error">
                                                                                                  +            <h3>Template Error</h3>
                                                                                                  +            <p><strong>Error:</strong> ${error.message}</p>
                                                                                                  +            <p>Please check your template syntax and try again.</p>
                                                                                                  +          </div>
                                                                                                  +        </body>
                                                                                                  +        </html>
                                                                                                  +      `;
                                                                                                  +    }
                                                                                                  +  }
                                                                                                  +
                                                                                                  +  getMockData(): any {
                                                                                                  +    return {
                                                                                                  +      documentationMainName: 'Sample Documentation',
                                                                                                  +      depth: 0,
                                                                                                  +      context: 'component',
                                                                                                  +      components: [
                                                                                                  +        {
                                                                                                  +          name: 'SampleComponent',
                                                                                                  +          selector: 'app-sample',
                                                                                                  +          file: 'src/app/sample/sample.component.ts',
                                                                                                  +          description: 'A sample component for demonstration',
                                                                                                  +          properties: [
                                                                                                  +            { name: 'title', type: 'string', description: 'The component title' },
                                                                                                  +            { name: 'isVisible', type: 'boolean', description: 'Whether the component is visible' }
                                                                                                  +          ],
                                                                                                  +          methods: [
                                                                                                  +            { name: 'ngOnInit', description: 'Lifecycle hook', signature: 'ngOnInit(): void' },
                                                                                                  +            { name: 'onClick', description: 'Handle click events', signature: 'onClick(event: MouseEvent): void' }
                                                                                                  +          ]
                                                                                                  +        }
                                                                                                  +      ],
                                                                                                  +      navTabs: [
                                                                                                  +        { id: 'info', label: 'Info', href: '#info' },
                                                                                                  +        { id: 'source', label: 'Source', href: '#source' },
                                                                                                  +        { id: 'example', label: 'Example', href: '#example' }
                                                                                                  +      ]
                                                                                                  +    };
                                                                                                  +  }
                                                                                                  +}
                                                                                                  +
                                                                                                  +
                                                                                                  + +
                                                                                                  + + + + + + + + + + + + + +
                                                                                                  +
                                                                                                  +

                                                                                                  results matching ""

                                                                                                  +
                                                                                                    +
                                                                                                    +
                                                                                                    +

                                                                                                    No results matching ""

                                                                                                    +
                                                                                                    +
                                                                                                    +
                                                                                                    + +
                                                                                                    +
                                                                                                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/injectables/PrismaService.html b/backend/documentation/injectables/PrismaService.html new file mode 100644 index 0000000..7730c53 --- /dev/null +++ b/backend/documentation/injectables/PrismaService.html @@ -0,0 +1,325 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                                                                                                    +
                                                                                                    + + +
                                                                                                    +
                                                                                                    + + + + + + + + + + + + + + + + +
                                                                                                    +
                                                                                                    +

                                                                                                    +

                                                                                                    File

                                                                                                    +

                                                                                                    +

                                                                                                    + src/prisma/prisma.service.ts +

                                                                                                    + + + +

                                                                                                    +

                                                                                                    Extends

                                                                                                    +

                                                                                                    +

                                                                                                    + PrismaClient +

                                                                                                    + + +
                                                                                                    +

                                                                                                    Index

                                                                                                    + + + + + + + + + + + + + + + +
                                                                                                    +
                                                                                                    Methods
                                                                                                    +
                                                                                                    + +
                                                                                                    +
                                                                                                    + + +
                                                                                                    + +

                                                                                                    + Methods +

                                                                                                    + + + + + + + + + + + + + + + + + + + +
                                                                                                    + + + Async + onModuleInit + + +
                                                                                                    + + onModuleInit() +
                                                                                                    + +
                                                                                                    + +
                                                                                                    + Returns : any + +
                                                                                                    +
                                                                                                    +
                                                                                                    + +
                                                                                                    + + +
                                                                                                    +
                                                                                                    import { Injectable, OnModuleInit } from '@nestjs/common';
                                                                                                    +import { PrismaClient } from '@prisma/client';
                                                                                                    +
                                                                                                    +@Injectable()
                                                                                                    +export class PrismaService extends PrismaClient implements OnModuleInit {
                                                                                                    +  async onModuleInit() {
                                                                                                    +    await this.$connect();
                                                                                                    +  }
                                                                                                    +}
                                                                                                    +
                                                                                                    +
                                                                                                    + +
                                                                                                    + + + + + + + + + + + + + +
                                                                                                    +
                                                                                                    +

                                                                                                    results matching ""

                                                                                                    +
                                                                                                      +
                                                                                                      +
                                                                                                      +

                                                                                                      No results matching ""

                                                                                                      +
                                                                                                      +
                                                                                                      +
                                                                                                      + +
                                                                                                      +
                                                                                                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/injectables/TemplateEditorService.html b/backend/documentation/injectables/TemplateEditorService.html new file mode 100644 index 0000000..813ec21 --- /dev/null +++ b/backend/documentation/injectables/TemplateEditorService.html @@ -0,0 +1,902 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                                                                                                      +
                                                                                                      + + +
                                                                                                      +
                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                      +
                                                                                                      +

                                                                                                      +

                                                                                                      File

                                                                                                      +

                                                                                                      +

                                                                                                      + documentation/template-playground/template-editor.service.ts +

                                                                                                      + + + + + +
                                                                                                      +

                                                                                                      Index

                                                                                                      + + + + + + + + + + + + + + + + + + + + + +
                                                                                                      +
                                                                                                      Properties
                                                                                                      +
                                                                                                      + +
                                                                                                      +
                                                                                                      Methods
                                                                                                      +
                                                                                                      + +
                                                                                                      +
                                                                                                      + + +
                                                                                                      + +

                                                                                                      + Methods +

                                                                                                      + + + + + + + + + + + + + + + + + + + +
                                                                                                      + + + destroy + + +
                                                                                                      +destroy() +
                                                                                                      + +
                                                                                                      + +
                                                                                                      + Returns : void + +
                                                                                                      +
                                                                                                      + + + + + + + + + + + + + + + + + + + +
                                                                                                      + + + Private + getLanguageFromFileType + + +
                                                                                                      + + getLanguageFromFileType(fileType: string) +
                                                                                                      + +
                                                                                                      + +
                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + + + +
                                                                                                      NameTypeOptional
                                                                                                      fileType + string + + No +
                                                                                                      +
                                                                                                      +
                                                                                                      + Returns : string + +
                                                                                                      +
                                                                                                      + +
                                                                                                      +
                                                                                                      + + + + + + + + + + + + + + + + + + + +
                                                                                                      + + + initializeEditor + + +
                                                                                                      +initializeEditor(container: HTMLElement) +
                                                                                                      + +
                                                                                                      + +
                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + + + +
                                                                                                      NameTypeOptional
                                                                                                      container + HTMLElement + + No +
                                                                                                      +
                                                                                                      +
                                                                                                      + Returns : void + +
                                                                                                      +
                                                                                                      + +
                                                                                                      +
                                                                                                      + + + + + + + + + + + + + + + + + + + +
                                                                                                      + + + Private + registerHandlebarsLanguage + + +
                                                                                                      + + registerHandlebarsLanguage() +
                                                                                                      + +
                                                                                                      + +
                                                                                                      + Returns : void + +
                                                                                                      +
                                                                                                      + + + + + + + + + + + + + + + + + + + +
                                                                                                      + + + setEditorContent + + +
                                                                                                      +setEditorContent(content: string, fileType: string) +
                                                                                                      + +
                                                                                                      + +
                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                      NameTypeOptional
                                                                                                      content + string + + No +
                                                                                                      fileType + string + + No +
                                                                                                      +
                                                                                                      +
                                                                                                      + Returns : void + +
                                                                                                      +
                                                                                                      + +
                                                                                                      +
                                                                                                      + + + + + + + + + + + + + + + + + + + +
                                                                                                      + + + setOnChangeCallback + + +
                                                                                                      +setOnChangeCallback(callback: (value: string) => void) +
                                                                                                      + +
                                                                                                      + +
                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + + + +
                                                                                                      NameTypeOptional
                                                                                                      callback + function + + No +
                                                                                                      +
                                                                                                      +
                                                                                                      + Returns : void + +
                                                                                                      +
                                                                                                      + +
                                                                                                      +
                                                                                                      +
                                                                                                      +
                                                                                                      + +

                                                                                                      + Properties +

                                                                                                      + + + + + + + + + + + + + + +
                                                                                                      + + + Private + editor + + +
                                                                                                      + Type : any + +
                                                                                                      + +
                                                                                                      + + + + + + + + + + + + + + + + + +
                                                                                                      + + + Private + onChangeCallback + + +
                                                                                                      + Type : unknown | null + +
                                                                                                      + Default value : null +
                                                                                                      + +
                                                                                                      +
                                                                                                      + +
                                                                                                      + + +
                                                                                                      +
                                                                                                      import { Injectable } from '@angular/core';
                                                                                                      +
                                                                                                      +declare const monaco: any;
                                                                                                      +
                                                                                                      +@Injectable({
                                                                                                      +  providedIn: 'root'
                                                                                                      +})
                                                                                                      +export class TemplateEditorService {
                                                                                                      +  private editor: any;
                                                                                                      +  private onChangeCallback: ((value: string) => void) | null = null;
                                                                                                      +
                                                                                                      +  initializeEditor(container: HTMLElement) {
                                                                                                      +    // Initialize Monaco Editor
                                                                                                      +    this.editor = monaco.editor.create(container, {
                                                                                                      +      value: '',
                                                                                                      +      language: 'html',
                                                                                                      +      theme: 'vs-dark',
                                                                                                      +      automaticLayout: true,
                                                                                                      +      minimap: {
                                                                                                      +        enabled: true
                                                                                                      +      },
                                                                                                      +      scrollBeyondLastLine: false,
                                                                                                      +      fontSize: 14,
                                                                                                      +      wordWrap: 'on',
                                                                                                      +      lineNumbers: 'on',
                                                                                                      +      roundedSelection: false,
                                                                                                      +      scrollbar: {
                                                                                                      +        horizontal: 'visible',
                                                                                                      +        vertical: 'visible'
                                                                                                      +      },
                                                                                                      +      overviewRulerLanes: 2,
                                                                                                      +      quickSuggestions: {
                                                                                                      +        other: true,
                                                                                                      +        comments: true,
                                                                                                      +        strings: true
                                                                                                      +      },
                                                                                                      +      parameterHints: {
                                                                                                      +        enabled: true
                                                                                                      +      },
                                                                                                      +      autoClosingBrackets: 'always',
                                                                                                      +      autoClosingQuotes: 'always',
                                                                                                      +      suggestOnTriggerCharacters: true,
                                                                                                      +      acceptSuggestionOnEnter: 'on',
                                                                                                      +      tabCompletion: 'on',
                                                                                                      +      wordBasedSuggestions: false
                                                                                                      +    });
                                                                                                      +
                                                                                                      +    // Set up change listener
                                                                                                      +    this.editor.onDidChangeModelContent(() => {
                                                                                                      +      if (this.onChangeCallback) {
                                                                                                      +        this.onChangeCallback(this.editor.getValue());
                                                                                                      +      }
                                                                                                      +    });
                                                                                                      +
                                                                                                      +    // Register custom language definitions
                                                                                                      +    this.registerHandlebarsLanguage();
                                                                                                      +  }
                                                                                                      +
                                                                                                      +  setEditorContent(content: string, fileType: string) {
                                                                                                      +    if (this.editor) {
                                                                                                      +      const language = this.getLanguageFromFileType(fileType);
                                                                                                      +      const model = monaco.editor.createModel(content, language);
                                                                                                      +      this.editor.setModel(model);
                                                                                                      +    }
                                                                                                      +  }
                                                                                                      +
                                                                                                      +  setOnChangeCallback(callback: (value: string) => void) {
                                                                                                      +    this.onChangeCallback = callback;
                                                                                                      +  }
                                                                                                      +
                                                                                                      +  private getLanguageFromFileType(fileType: string): string {
                                                                                                      +    switch (fileType) {
                                                                                                      +      case 'hbs':
                                                                                                      +        return 'handlebars';
                                                                                                      +      case 'css':
                                                                                                      +      case 'scss':
                                                                                                      +        return 'css';
                                                                                                      +      case 'js':
                                                                                                      +        return 'javascript';
                                                                                                      +      case 'ts':
                                                                                                      +        return 'typescript';
                                                                                                      +      default:
                                                                                                      +        return 'html';
                                                                                                      +    }
                                                                                                      +  }
                                                                                                      +
                                                                                                      +  private registerHandlebarsLanguage() {
                                                                                                      +    // Register Handlebars language for Monaco Editor
                                                                                                      +    if (monaco.languages.getLanguages().find((lang: any) => lang.id === 'handlebars')) {
                                                                                                      +      return; // Already registered
                                                                                                      +    }
                                                                                                      +
                                                                                                      +    monaco.languages.register({ id: 'handlebars' });
                                                                                                      +
                                                                                                      +    monaco.languages.setMonarchTokensProvider('handlebars', {
                                                                                                      +      tokenizer: {
                                                                                                      +        root: [
                                                                                                      +          [/\{\{\{/, { token: 'keyword', next: '@handlebars_unescaped' }],
                                                                                                      +          [/\{\{/, { token: 'keyword', next: '@handlebars' }],
                                                                                                      +          [/<!DOCTYPE/, 'metatag', '@doctype'],
                                                                                                      +          [/<!--/, 'comment', '@comment'],
                                                                                                      +          [/(<)(\w+)/, ['delimiter', { token: 'tag', next: '@tag' }]],
                                                                                                      +          [/(<\/)(\w+)/, ['delimiter', { token: 'tag', next: '@tag' }]],
                                                                                                      +          [/</, 'delimiter'],
                                                                                                      +          [/[^<]+/]
                                                                                                      +        ],
                                                                                                      +
                                                                                                      +        handlebars_unescaped: [
                                                                                                      +          [/\}\}\}/, { token: 'keyword', next: '@pop' }],
                                                                                                      +          [/[^}]+/, 'variable']
                                                                                                      +        ],
                                                                                                      +
                                                                                                      +        handlebars: [
                                                                                                      +          [/\}\}/, { token: 'keyword', next: '@pop' }],
                                                                                                      +          [/#if|#unless|#each|#with|\/if|\/unless|\/each|\/with/, 'keyword'],
                                                                                                      +          [/[a-zA-Z_][\w]*/, 'variable'],
                                                                                                      +          [/[^}]+/, 'variable']
                                                                                                      +        ],
                                                                                                      +
                                                                                                      +        comment: [
                                                                                                      +          [/-->/, 'comment', '@pop'],
                                                                                                      +          [/[^-]+/, 'comment'],
                                                                                                      +          [/./, 'comment']
                                                                                                      +        ],
                                                                                                      +
                                                                                                      +        doctype: [
                                                                                                      +          [/[^>]+/, 'metatag.content'],
                                                                                                      +          [/>/, 'metatag', '@pop']
                                                                                                      +        ],
                                                                                                      +
                                                                                                      +        tag: [
                                                                                                      +          [/[ \t\r\n]+/, 'white'],
                                                                                                      +          [/(\w+)(\s*=\s*)("([^"]*)")/, ['attribute.name', 'delimiter', 'attribute.value', 'attribute.value']],
                                                                                                      +          [/(\w+)(\s*=\s*)('([^']*)')/, ['attribute.name', 'delimiter', 'attribute.value', 'attribute.value']],
                                                                                                      +          [/\w+/, 'attribute.name'],
                                                                                                      +          [/>/, 'delimiter', '@pop']
                                                                                                      +        ]
                                                                                                      +      }
                                                                                                      +    });
                                                                                                      +
                                                                                                      +    monaco.languages.setLanguageConfiguration('handlebars', {
                                                                                                      +      comments: {
                                                                                                      +        blockComment: ['<!--', '-->']
                                                                                                      +      },
                                                                                                      +      brackets: [
                                                                                                      +        ['<', '>'],
                                                                                                      +        ['{{', '}}'],
                                                                                                      +        ['{{{', '}}}']
                                                                                                      +      ],
                                                                                                      +      autoClosingPairs: [
                                                                                                      +        { open: '<', close: '>' },
                                                                                                      +        { open: '{{', close: '}}' },
                                                                                                      +        { open: '{{{', close: '}}}' },
                                                                                                      +        { open: '"', close: '"' },
                                                                                                      +        { open: "'", close: "'" }
                                                                                                      +      ],
                                                                                                      +      surroundingPairs: [
                                                                                                      +        { open: '<', close: '>' },
                                                                                                      +        { open: '{{', close: '}}' },
                                                                                                      +        { open: '{{{', close: '}}}' },
                                                                                                      +        { open: '"', close: '"' },
                                                                                                      +        { open: "'", close: "'" }
                                                                                                      +      ]
                                                                                                      +    });
                                                                                                      +  }
                                                                                                      +
                                                                                                      +  destroy() {
                                                                                                      +    if (this.editor) {
                                                                                                      +      this.editor.dispose();
                                                                                                      +      this.editor = null;
                                                                                                      +    }
                                                                                                      +  }
                                                                                                      +}
                                                                                                      +
                                                                                                      +
                                                                                                      + +
                                                                                                      + + + + + + + + + + + + + +
                                                                                                      +
                                                                                                      +

                                                                                                      results matching ""

                                                                                                      +
                                                                                                        +
                                                                                                        +
                                                                                                        +

                                                                                                        No results matching ""

                                                                                                        +
                                                                                                        +
                                                                                                        +
                                                                                                        + +
                                                                                                        +
                                                                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/injectables/WorkspaceService.html b/backend/documentation/injectables/WorkspaceService.html new file mode 100644 index 0000000..f842774 --- /dev/null +++ b/backend/documentation/injectables/WorkspaceService.html @@ -0,0 +1,828 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                                                                                                        +
                                                                                                        + + +
                                                                                                        +
                                                                                                        + + + + + + + + + + + + + + + + +
                                                                                                        +
                                                                                                        +

                                                                                                        +

                                                                                                        File

                                                                                                        +

                                                                                                        +

                                                                                                        + src/workspace/workspace.service.ts +

                                                                                                        + + + + + +
                                                                                                        +

                                                                                                        Index

                                                                                                        + + + + + + + + + + + + + + + +
                                                                                                        +
                                                                                                        Methods
                                                                                                        +
                                                                                                        + +
                                                                                                        +
                                                                                                        + +
                                                                                                        +

                                                                                                        Constructor

                                                                                                        + + + + + + + + + + + + + +
                                                                                                        +constructor(prisma: PrismaService) +
                                                                                                        + +
                                                                                                        +
                                                                                                        + Parameters : + + + + + + + + + + + + + + + + + + +
                                                                                                        NameTypeOptional
                                                                                                        prisma + PrismaService + + No +
                                                                                                        +
                                                                                                        +
                                                                                                        +
                                                                                                        + +
                                                                                                        + +

                                                                                                        + Methods +

                                                                                                        + + + + + + + + + + + + + + + + + + + +
                                                                                                        + + + Async + createWorkspace + + +
                                                                                                        + + createWorkspace(user_id: string, input: CreateWorkspaceInput) +
                                                                                                        + +
                                                                                                        +

                                                                                                        Creates a new workspace with the specified user as owner and admin member.

                                                                                                        +Example :
                                                                                                        const workspace = await createWorkspace('user-123', {
                                                                                                        +  name: 'My Workspace',
                                                                                                        +  description: 'A workspace for my project',
                                                                                                        +  color: '#ff5733'
                                                                                                        +});
                                                                                                        + +
                                                                                                        + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                        NameTypeOptionalDescription
                                                                                                        user_id + string + + No + +
                                                                                                          +
                                                                                                        • The ID of the user who will own the workspace
                                                                                                        • +
                                                                                                        + +
                                                                                                        input + CreateWorkspaceInput + + No + +
                                                                                                          +
                                                                                                        • The workspace creation input containing name, description, and optional color
                                                                                                        • +
                                                                                                        + +
                                                                                                        +
                                                                                                        +
                                                                                                        + Returns : unknown + +
                                                                                                        +
                                                                                                        +

                                                                                                        A promise that resolves to the created workspace object

                                                                                                        + +
                                                                                                        +
                                                                                                        + + + + + + + + + + + + + + + + + + + +
                                                                                                        + + + Async + delete + + +
                                                                                                        + + delete(workspaceId: string, userId: string) +
                                                                                                        + +
                                                                                                        + +
                                                                                                        + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                        NameTypeOptional
                                                                                                        workspaceId + string + + No +
                                                                                                        userId + string + + No +
                                                                                                        +
                                                                                                        +
                                                                                                        + Returns : unknown + +
                                                                                                        +
                                                                                                        + +
                                                                                                        +
                                                                                                        + + + + + + + + + + + + + + + + + + + +
                                                                                                        + + + Async + findAllUserWorkspaces + + +
                                                                                                        + + findAllUserWorkspaces(user_id: string) +
                                                                                                        + +
                                                                                                        + +
                                                                                                        + Parameters : + + + + + + + + + + + + + + + + + + + +
                                                                                                        NameTypeOptional
                                                                                                        user_id + string + + No +
                                                                                                        +
                                                                                                        +
                                                                                                        + Returns : unknown + +
                                                                                                        +
                                                                                                        + +
                                                                                                        +
                                                                                                        + + + + + + + + + + + + + + + + + + + +
                                                                                                        + + + Async + findWorkspace + + +
                                                                                                        + + findWorkspace(workspace_id: string) +
                                                                                                        + +
                                                                                                        + +
                                                                                                        + Parameters : + + + + + + + + + + + + + + + + + + + +
                                                                                                        NameTypeOptional
                                                                                                        workspace_id + string + + No +
                                                                                                        +
                                                                                                        +
                                                                                                        + Returns : unknown + +
                                                                                                        +
                                                                                                        + +
                                                                                                        +
                                                                                                        + + + + + + + + + + + + + + + + + + + +
                                                                                                        + + + Async + updateWorkspace + + +
                                                                                                        + + updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput) +
                                                                                                        + +
                                                                                                        + +
                                                                                                        + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                        NameTypeOptional
                                                                                                        workspace_id + string + + No +
                                                                                                        input + UpdateWorkspaceInput + + No +
                                                                                                        +
                                                                                                        +
                                                                                                        + Returns : unknown + +
                                                                                                        +
                                                                                                        + +
                                                                                                        +
                                                                                                        +
                                                                                                        + +
                                                                                                        + + +
                                                                                                        +
                                                                                                        import { Injectable, ForbiddenException } from '@nestjs/common';
                                                                                                        +import { PrismaService } from '../prisma/prisma.service';
                                                                                                        +import { CreateWorkspaceInput, UpdateWorkspaceInput } from '../graphql/graphql';
                                                                                                        +import { Role } from '@prisma/client';
                                                                                                        +
                                                                                                        +@Injectable()
                                                                                                        +export class WorkspaceService {
                                                                                                        +    constructor(private prisma: PrismaService) {}
                                                                                                        +
                                                                                                        +    /**
                                                                                                        +     * Creates a new workspace with the specified user as owner and admin member.
                                                                                                        +     * 
                                                                                                        +     * @param user_id - The ID of the user who will own the workspace
                                                                                                        +     * @param input - The workspace creation input containing name, description, and optional color
                                                                                                        +     * @returns A promise that resolves to the created workspace object
                                                                                                        +     * @throws {PrismaClientKnownRequestError} When workspace creation fails due to database constraints
                                                                                                        +     * @throws {PrismaClientValidationError} When input validation fails
                                                                                                        +     * 
                                                                                                        +     * @example
                                                                                                        +     * ```typescript
                                                                                                        +     * const workspace = await createWorkspace('user-123', {
                                                                                                        +     *   name: 'My Workspace',
                                                                                                        +     *   description: 'A workspace for my project',
                                                                                                        +     *   color: '#ff5733'
                                                                                                        +     * });
                                                                                                        +     * ```
                                                                                                        +     */
                                                                                                        +    async createWorkspace(user_id: string, input: CreateWorkspaceInput) {
                                                                                                        +        return this.prisma.workspace.create({
                                                                                                        +            data: {
                                                                                                        +                name: input.name,
                                                                                                        +                description: input.description,
                                                                                                        +                color: input.color || '#007cefff',
                                                                                                        +                owner_id: user_id,
                                                                                                        +                members: {
                                                                                                        +                    create: {
                                                                                                        +                        user_id: user_id,
                                                                                                        +                        role: Role.Admin,
                                                                                                        +                    },
                                                                                                        +                },
                                                                                                        +            },
                                                                                                        +        });
                                                                                                        +    }
                                                                                                        +
                                                                                                        +    async findAllUserWorkspaces(user_id: string) {
                                                                                                        +        return this.prisma.workspace.findMany({
                                                                                                        +            where: {
                                                                                                        +                members: {
                                                                                                        +                    some: {
                                                                                                        +                        user_id: user_id,
                                                                                                        +                    },
                                                                                                        +                },
                                                                                                        +            },
                                                                                                        +            orderBy: {
                                                                                                        +                name: 'asc',
                                                                                                        +            },
                                                                                                        +        });
                                                                                                        +    }
                                                                                                        +
                                                                                                        +    async findWorkspace(workspace_id: string) {
                                                                                                        +        return this.prisma.workspace.findUniqueOrThrow({
                                                                                                        +            where: { workspace_id },
                                                                                                        +        });
                                                                                                        +    }
                                                                                                        +
                                                                                                        +    async updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput) {
                                                                                                        +        return this.prisma.workspace.update({
                                                                                                        +            where: { workspace_id },
                                                                                                        +            data: {
                                                                                                        +                name: input.name ?? undefined,
                                                                                                        +                description: input.description ?? undefined,
                                                                                                        +                color: input.color ?? undefined,
                                                                                                        +            },
                                                                                                        +        });
                                                                                                        +    }
                                                                                                        +
                                                                                                        +    async delete(workspaceId: string, userId: string) {
                                                                                                        +        const workspace = await this.findWorkspace(workspaceId);
                                                                                                        +
                                                                                                        +        if (workspace.owner_id !== userId) {
                                                                                                        +            throw new ForbiddenException(
                                                                                                        +                'Only the workspace owner can delete it',
                                                                                                        +            );
                                                                                                        +        }
                                                                                                        +
                                                                                                        +        await this.prisma.workspace.delete({
                                                                                                        +            where: { workspace_id: workspaceId },
                                                                                                        +        });
                                                                                                        +
                                                                                                        +        return { success: true, message: 'Workspace deleted' };
                                                                                                        +    }
                                                                                                        +}
                                                                                                        +
                                                                                                        +
                                                                                                        + +
                                                                                                        + + + + + + + + + + + + + +
                                                                                                        +
                                                                                                        +

                                                                                                        results matching ""

                                                                                                        +
                                                                                                          +
                                                                                                          +
                                                                                                          +

                                                                                                          No results matching ""

                                                                                                          +
                                                                                                          +
                                                                                                          +
                                                                                                          + +
                                                                                                          +
                                                                                                          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/injectables/ZipExportService.html b/backend/documentation/injectables/ZipExportService.html new file mode 100644 index 0000000..9e06877 --- /dev/null +++ b/backend/documentation/injectables/ZipExportService.html @@ -0,0 +1,551 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                                                                                                          +
                                                                                                          + + +
                                                                                                          +
                                                                                                          + + + + + + + + + + + + + + + + +
                                                                                                          +
                                                                                                          +

                                                                                                          +

                                                                                                          File

                                                                                                          +

                                                                                                          +

                                                                                                          + documentation/template-playground/zip-export.service.ts +

                                                                                                          + + + + + +
                                                                                                          +

                                                                                                          Index

                                                                                                          + + + + + + + + + + + + + + + +
                                                                                                          +
                                                                                                          Methods
                                                                                                          +
                                                                                                          + +
                                                                                                          +
                                                                                                          + + +
                                                                                                          + +

                                                                                                          + Methods +

                                                                                                          + + + + + + + + + + + + + + + + + + + +
                                                                                                          + + + Private + downloadBlob + + +
                                                                                                          + + downloadBlob(blob: Blob, filename: string) +
                                                                                                          + +
                                                                                                          + +
                                                                                                          + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                          NameTypeOptional
                                                                                                          blob + Blob + + No +
                                                                                                          filename + string + + No +
                                                                                                          +
                                                                                                          +
                                                                                                          + Returns : void + +
                                                                                                          +
                                                                                                          + +
                                                                                                          +
                                                                                                          + + + + + + + + + + + + + + + + + + + +
                                                                                                          + + + exportTemplates + + +
                                                                                                          +exportTemplates(files: any[]) +
                                                                                                          + +
                                                                                                          + +
                                                                                                          + Parameters : + + + + + + + + + + + + + + + + + + + +
                                                                                                          NameTypeOptional
                                                                                                          files + any[] + + No +
                                                                                                          +
                                                                                                          +
                                                                                                          + Returns : void + +
                                                                                                          +
                                                                                                          + +
                                                                                                          +
                                                                                                          + + + + + + + + + + + + + + + + + + + +
                                                                                                          + + + Private + generateReadme + + +
                                                                                                          + + generateReadme() +
                                                                                                          + +
                                                                                                          + +
                                                                                                          + Returns : string + +
                                                                                                          +
                                                                                                          +
                                                                                                          + +
                                                                                                          + + +
                                                                                                          +
                                                                                                          import { Injectable } from '@angular/core';
                                                                                                          +
                                                                                                          +declare const JSZip: any;
                                                                                                          +
                                                                                                          +@Injectable({
                                                                                                          +  providedIn: 'root'
                                                                                                          +})
                                                                                                          +export class ZipExportService {
                                                                                                          +
                                                                                                          +  exportTemplates(files: any[]) {
                                                                                                          +    const zip = new JSZip();
                                                                                                          +
                                                                                                          +    // Add all template files to the ZIP
                                                                                                          +    files.forEach(file => {
                                                                                                          +      zip.file(file.path, file.content);
                                                                                                          +    });
                                                                                                          +
                                                                                                          +    // Add a README with instructions
                                                                                                          +    const readme = this.generateReadme();
                                                                                                          +    zip.file('README.md', readme);
                                                                                                          +
                                                                                                          +    // Generate and download the ZIP file
                                                                                                          +    zip.generateAsync({ type: 'blob' })
                                                                                                          +      .then((content: Blob) => {
                                                                                                          +        this.downloadBlob(content, 'compodoc-templates.zip');
                                                                                                          +      });
                                                                                                          +  }
                                                                                                          +
                                                                                                          +  private generateReadme(): string {
                                                                                                          +    return `# Compodoc Custom Templates
                                                                                                          +
                                                                                                          +This ZIP file contains customized templates for Compodoc documentation generation.
                                                                                                          +
                                                                                                          +## Contents
                                                                                                          +
                                                                                                          +- **Templates** (\`.hbs\` files): Handlebars templates for generating documentation pages
                                                                                                          +- **Styles** (\`.css\` files): Stylesheets for customizing the appearance
                                                                                                          +- **Scripts** (\`.js\` files): JavaScript files for additional functionality
                                                                                                          +
                                                                                                          +## Usage
                                                                                                          +
                                                                                                          +1. Extract this ZIP file to a directory on your system
                                                                                                          +2. Use the \`--templates\` flag when running Compodoc to specify the path to your custom templates:
                                                                                                          +
                                                                                                          +   \`\`\`bash
                                                                                                          +   compodoc -p tsconfig.json --templates ./path/to/custom/templates/
                                                                                                          +   \`\`\`
                                                                                                          +
                                                                                                          +## Template Structure
                                                                                                          +
                                                                                                          +- \`page.hbs\` - Main page template
                                                                                                          +- \`partials/\` - Directory containing partial templates
                                                                                                          +- \`styles/\` - Directory containing CSS files
                                                                                                          +- \`js/\` - Directory containing JavaScript files
                                                                                                          +
                                                                                                          +## Customization Tips
                                                                                                          +
                                                                                                          +1. **Templates**: Use Handlebars syntax to customize the HTML structure
                                                                                                          +2. **Styles**: Modify CSS to change colors, fonts, layout, etc.
                                                                                                          +3. **Scripts**: Add custom JavaScript functionality
                                                                                                          +
                                                                                                          +## Backup
                                                                                                          +
                                                                                                          +Always keep a backup of your original templates before making changes.
                                                                                                          +
                                                                                                          +## Documentation
                                                                                                          +
                                                                                                          +For more information about customizing Compodoc templates, visit:
                                                                                                          +https://compodoc.app/guides/template-customization.html
                                                                                                          +
                                                                                                          +Generated by Compodoc Template Playground
                                                                                                          +`;
                                                                                                          +  }
                                                                                                          +
                                                                                                          +  private downloadBlob(blob: Blob, filename: string) {
                                                                                                          +    const url = window.URL.createObjectURL(blob);
                                                                                                          +    const a = document.createElement('a');
                                                                                                          +    a.href = url;
                                                                                                          +    a.download = filename;
                                                                                                          +    a.style.display = 'none';
                                                                                                          +    document.body.appendChild(a);
                                                                                                          +    a.click();
                                                                                                          +    document.body.removeChild(a);
                                                                                                          +    window.URL.revokeObjectURL(url);
                                                                                                          +  }
                                                                                                          +}
                                                                                                          +
                                                                                                          +
                                                                                                          + +
                                                                                                          + + + + + + + + + + + + + +
                                                                                                          +
                                                                                                          +

                                                                                                          results matching ""

                                                                                                          +
                                                                                                            +
                                                                                                            +
                                                                                                            +

                                                                                                            No results matching ""

                                                                                                            +
                                                                                                            +
                                                                                                            +
                                                                                                            + +
                                                                                                            +
                                                                                                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/interfaces/CompoDocConfig.html b/backend/documentation/interfaces/CompoDocConfig.html new file mode 100644 index 0000000..1df3e65 --- /dev/null +++ b/backend/documentation/interfaces/CompoDocConfig.html @@ -0,0 +1,1952 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                                                                                                            +
                                                                                                            + + +
                                                                                                            +
                                                                                                            + + + + + + + + + + + + + + + + + + + + + +
                                                                                                            +
                                                                                                            +

                                                                                                            +

                                                                                                            File

                                                                                                            +

                                                                                                            +

                                                                                                            + documentation/template-playground/template-playground.component.ts +

                                                                                                            + + + + +
                                                                                                            +

                                                                                                            Index

                                                                                                            + + + + + + + + + +
                                                                                                            +
                                                                                                            Properties
                                                                                                            +
                                                                                                            + +
                                                                                                            +
                                                                                                            + + + +
                                                                                                            +

                                                                                                            Properties

                                                                                                            + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                            + + customFavicon + + + + +
                                                                                                            + customFavicon: string + +
                                                                                                            + Type : string + +
                                                                                                            + Optional +
                                                                                                            + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                            + + disableConstructors + + + + +
                                                                                                            + disableConstructors: boolean + +
                                                                                                            + Type : boolean + +
                                                                                                            + Optional +
                                                                                                            + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                            + + disableCoverage + + + + +
                                                                                                            + disableCoverage: boolean + +
                                                                                                            + Type : boolean + +
                                                                                                            + Optional +
                                                                                                            + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                            + + disableDependencies + + + + +
                                                                                                            + disableDependencies: boolean + +
                                                                                                            + Type : boolean + +
                                                                                                            + Optional +
                                                                                                            + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                            + + disableDomTree + + + + +
                                                                                                            + disableDomTree: boolean + +
                                                                                                            + Type : boolean + +
                                                                                                            + Optional +
                                                                                                            + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                            + + disableFilePath + + + + +
                                                                                                            + disableFilePath: boolean + +
                                                                                                            + Type : boolean + +
                                                                                                            + Optional +
                                                                                                            + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                            + + disableGraph + + + + +
                                                                                                            + disableGraph: boolean + +
                                                                                                            + Type : boolean + +
                                                                                                            + Optional +
                                                                                                            + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                            + + disableInternal + + + + +
                                                                                                            + disableInternal: boolean + +
                                                                                                            + Type : boolean + +
                                                                                                            + Optional +
                                                                                                            + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                            + + disableLifeCycleHooks + + + + +
                                                                                                            + disableLifeCycleHooks: boolean + +
                                                                                                            + Type : boolean + +
                                                                                                            + Optional +
                                                                                                            + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                            + + disableMainGraph + + + + +
                                                                                                            + disableMainGraph: boolean + +
                                                                                                            + Type : boolean + +
                                                                                                            + Optional +
                                                                                                            + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                            + + disableOverview + + + + +
                                                                                                            + disableOverview: boolean + +
                                                                                                            + Type : boolean + +
                                                                                                            + Optional +
                                                                                                            + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                            + + disablePrivate + + + + +
                                                                                                            + disablePrivate: boolean + +
                                                                                                            + Type : boolean + +
                                                                                                            + Optional +
                                                                                                            + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                            + + disableProperties + + + + +
                                                                                                            + disableProperties: boolean + +
                                                                                                            + Type : boolean + +
                                                                                                            + Optional +
                                                                                                            + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                            + + disableProtected + + + + +
                                                                                                            + disableProtected: boolean + +
                                                                                                            + Type : boolean + +
                                                                                                            + Optional +
                                                                                                            + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                            + + disableRoutesGraph + + + + +
                                                                                                            + disableRoutesGraph: boolean + +
                                                                                                            + Type : boolean + +
                                                                                                            + Optional +
                                                                                                            + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                            + + disableSearch + + + + +
                                                                                                            + disableSearch: boolean + +
                                                                                                            + Type : boolean + +
                                                                                                            + Optional +
                                                                                                            + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                            + + disableSourceCode + + + + +
                                                                                                            + disableSourceCode: boolean + +
                                                                                                            + Type : boolean + +
                                                                                                            + Optional +
                                                                                                            + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                            + + disableStyleTab + + + + +
                                                                                                            + disableStyleTab: boolean + +
                                                                                                            + Type : boolean + +
                                                                                                            + Optional +
                                                                                                            + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                            + + disableTemplateTab + + + + +
                                                                                                            + disableTemplateTab: boolean + +
                                                                                                            + Type : boolean + +
                                                                                                            + Optional +
                                                                                                            + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                            + + hideDarkModeToggle + + + + +
                                                                                                            + hideDarkModeToggle: boolean + +
                                                                                                            + Type : boolean + +
                                                                                                            + Optional +
                                                                                                            + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                            + + hideGenerator + + + + +
                                                                                                            + hideGenerator: boolean + +
                                                                                                            + Type : boolean + +
                                                                                                            + Optional +
                                                                                                            + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                            + + includes + + + + +
                                                                                                            + includes: string + +
                                                                                                            + Type : string + +
                                                                                                            + Optional +
                                                                                                            + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                            + + includesName + + + + +
                                                                                                            + includesName: string + +
                                                                                                            + Type : string + +
                                                                                                            + Optional +
                                                                                                            + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                            + + minimal + + + + +
                                                                                                            + minimal: boolean + +
                                                                                                            + Type : boolean + +
                                                                                                            + Optional +
                                                                                                            +
                                                                                                            +
                                                                                                            + + +
                                                                                                            +
                                                                                                            import { Component, OnInit, ViewChild, ElementRef, OnDestroy } from '@angular/core';
                                                                                                            +import { HttpClient } from '@angular/common/http';
                                                                                                            +import { TemplateEditorService } from './template-editor.service';
                                                                                                            +import { ZipExportService } from './zip-export.service';
                                                                                                            +import { HbsRenderService } from './hbs-render.service';
                                                                                                            +
                                                                                                            +interface Template {
                                                                                                            +  name: string;
                                                                                                            +  path: string;
                                                                                                            +  type: 'template' | 'partial';
                                                                                                            +}
                                                                                                            +
                                                                                                            +interface Session {
                                                                                                            +  sessionId: string;
                                                                                                            +  success: boolean;
                                                                                                            +  message: string;
                                                                                                            +}
                                                                                                            +
                                                                                                            +interface CompoDocConfig {
                                                                                                            +  hideGenerator?: boolean;
                                                                                                            +  disableSourceCode?: boolean;
                                                                                                            +  disableGraph?: boolean;
                                                                                                            +  disableCoverage?: boolean;
                                                                                                            +  disablePrivate?: boolean;
                                                                                                            +  disableProtected?: boolean;
                                                                                                            +  disableInternal?: boolean;
                                                                                                            +  disableLifeCycleHooks?: boolean;
                                                                                                            +  disableConstructors?: boolean;
                                                                                                            +  disableRoutesGraph?: boolean;
                                                                                                            +  disableSearch?: boolean;
                                                                                                            +  disableDependencies?: boolean;
                                                                                                            +  disableProperties?: boolean;
                                                                                                            +  disableDomTree?: boolean;
                                                                                                            +  disableTemplateTab?: boolean;
                                                                                                            +  disableStyleTab?: boolean;
                                                                                                            +  disableMainGraph?: boolean;
                                                                                                            +  disableFilePath?: boolean;
                                                                                                            +  disableOverview?: boolean;
                                                                                                            +  hideDarkModeToggle?: boolean;
                                                                                                            +  minimal?: boolean;
                                                                                                            +  customFavicon?: string;
                                                                                                            +  includes?: string;
                                                                                                            +  includesName?: string;
                                                                                                            +}
                                                                                                            +
                                                                                                            +@Component({
                                                                                                            +  selector: 'template-playground-root',
                                                                                                            +  template: `
                                                                                                            +    <div class="template-playground">
                                                                                                            +      <div class="template-playground-header">
                                                                                                            +        <h2>Template Playground</h2>
                                                                                                            +        <div class="template-playground-status">
                                                                                                            +          <span *ngIf="sessionId" class="session-info">Session: {{sessionId.substring(0, 8)}}...</span>
                                                                                                            +          <span *ngIf="saving" class="saving-indicator">Saving...</span>
                                                                                                            +          <span *ngIf="lastSaved" class="last-saved">Last saved: {{lastSaved | date:'short'}}</span>
                                                                                                            +        </div>
                                                                                                            +        <div class="template-playground-actions">
                                                                                                            +          <button class="btn btn-secondary" (click)="toggleConfigPanel()">⚙️ Config</button>
                                                                                                            +          <button class="btn btn-primary" (click)="resetToDefault()">Reset to Default</button>
                                                                                                            +          <button class="btn btn-success" (click)="exportZip()">Download Templates</button>
                                                                                                            +        </div>
                                                                                                            +      </div>
                                                                                                            +
                                                                                                            +      <!-- Configuration Panel -->
                                                                                                            +      <div class="config-panel" [class.collapsed]="!showConfigPanel">
                                                                                                            +        <h3>CompoDoc Configuration</h3>
                                                                                                            +        <div class="config-options">
                                                                                                            +          <label><input type="checkbox" [(ngModel)]="config.hideGenerator" (change)="updateConfig()"> Hide Generator</label>
                                                                                                            +          <label><input type="checkbox" [(ngModel)]="config.hideDarkModeToggle" (change)="updateConfig()"> Hide Dark Mode Toggle</label>
                                                                                                            +          <label><input type="checkbox" [(ngModel)]="config.minimal" (change)="updateConfig()"> Minimal Mode</label>
                                                                                                            +          <label><input type="checkbox" [(ngModel)]="config.disableOverview" (change)="updateConfig()"> Disable Overview</label>
                                                                                                            +          <label><input type="checkbox" [(ngModel)]="config.disableFilePath" (change)="updateConfig()"> Disable File Path</label>
                                                                                                            +          <label><input type="checkbox" [(ngModel)]="config.disableSourceCode" (change)="updateConfig()"> Disable Source Code</label>
                                                                                                            +          <label><input type="checkbox" [(ngModel)]="config.disableGraph" (change)="updateConfig()"> Disable Graph</label>
                                                                                                            +          <label><input type="checkbox" [(ngModel)]="config.disableMainGraph" (change)="updateConfig()"> Disable Main Graph</label>
                                                                                                            +          <label><input type="checkbox" [(ngModel)]="config.disableRoutesGraph" (change)="updateConfig()"> Disable Routes Graph</label>
                                                                                                            +          <label><input type="checkbox" [(ngModel)]="config.disableCoverage" (change)="updateConfig()"> Disable Coverage</label>
                                                                                                            +          <label><input type="checkbox" [(ngModel)]="config.disableSearch" (change)="updateConfig()"> Disable Search</label>
                                                                                                            +          <label><input type="checkbox" [(ngModel)]="config.disableDependencies" (change)="updateConfig()"> Disable Dependencies</label>
                                                                                                            +          <label><input type="checkbox" [(ngModel)]="config.disablePrivate" (change)="updateConfig()"> Disable Private</label>
                                                                                                            +          <label><input type="checkbox" [(ngModel)]="config.disableProtected" (change)="updateConfig()"> Disable Protected</label>
                                                                                                            +          <label><input type="checkbox" [(ngModel)]="config.disableInternal" (change)="updateConfig()"> Disable Internal</label>
                                                                                                            +          <label><input type="checkbox" [(ngModel)]="config.disableLifeCycleHooks" (change)="updateConfig()"> Disable Lifecycle Hooks</label>
                                                                                                            +          <label><input type="checkbox" [(ngModel)]="config.disableConstructors" (change)="updateConfig()"> Disable Constructors</label>
                                                                                                            +          <label><input type="checkbox" [(ngModel)]="config.disableProperties" (change)="updateConfig()"> Disable Properties</label>
                                                                                                            +          <label><input type="checkbox" [(ngModel)]="config.disableDomTree" (change)="updateConfig()"> Disable DOM Tree</label>
                                                                                                            +          <label><input type="checkbox" [(ngModel)]="config.disableTemplateTab" (change)="updateConfig()"> Disable Template Tab</label>
                                                                                                            +          <label><input type="checkbox" [(ngModel)]="config.disableStyleTab" (change)="updateConfig()"> Disable Style Tab</label>
                                                                                                            +        </div>
                                                                                                            +      </div>
                                                                                                            +
                                                                                                            +      <div class="template-playground-body">
                                                                                                            +        <div class="template-playground-sidebar">
                                                                                                            +          <div class="template-file-list">
                                                                                                            +            <h3>Templates</h3>
                                                                                                            +            <ul class="file-list">
                                                                                                            +              <li *ngFor="let template of templates; trackBy: trackByName"
                                                                                                            +                  [class.active]="selectedFile === template"
                                                                                                            +                  (click)="selectFile(template)">
                                                                                                            +                <i class="file-icon ion-document-text"></i>
                                                                                                            +                {{template.name}}
                                                                                                            +                <span class="file-type">{{template.type}}</span>
                                                                                                            +              </li>
                                                                                                            +            </ul>
                                                                                                            +
                                                                                                            +            <div *ngIf="templates.length === 0" class="loading-templates">
                                                                                                            +              Loading templates...
                                                                                                            +            </div>
                                                                                                            +          </div>
                                                                                                            +        </div>
                                                                                                            +
                                                                                                            +        <div class="template-playground-main">
                                                                                                            +          <div class="template-playground-editor">
                                                                                                            +            <div class="editor-header" *ngIf="selectedFile">
                                                                                                            +              <h4>{{selectedFile.path}}</h4>
                                                                                                            +              <span class="file-type-badge">{{selectedFile.type}}</span>
                                                                                                            +            </div>
                                                                                                            +            <div #editorContainer class="editor-container"></div>
                                                                                                            +          </div>
                                                                                                            +
                                                                                                            +          <div class="template-playground-preview">
                                                                                                            +            <div class="preview-header">
                                                                                                            +              <h4>Live Preview</h4>
                                                                                                            +              <button class="btn btn-sm btn-secondary" (click)="refreshPreview()">🔄 Refresh</button>
                                                                                                            +            </div>
                                                                                                            +            <iframe #previewFrame class="preview-frame" [src]="previewUrl"></iframe>
                                                                                                            +          </div>
                                                                                                            +        </div>
                                                                                                            +      </div>
                                                                                                            +    </div>
                                                                                                            +  `,
                                                                                                            +  styles: [`
                                                                                                            +    .template-playground {
                                                                                                            +      display: flex;
                                                                                                            +      flex-direction: column;
                                                                                                            +      height: 100vh;
                                                                                                            +      font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
                                                                                                            +    }
                                                                                                            +
                                                                                                            +    .template-playground-header {
                                                                                                            +      display: flex;
                                                                                                            +      justify-content: space-between;
                                                                                                            +      align-items: center;
                                                                                                            +      padding: 1rem 2rem;
                                                                                                            +      background: #f8f9fa;
                                                                                                            +      border-bottom: 1px solid #dee2e6;
                                                                                                            +    }
                                                                                                            +
                                                                                                            +    .template-playground-status {
                                                                                                            +      display: flex;
                                                                                                            +      align-items: center;
                                                                                                            +      gap: 1rem;
                                                                                                            +      font-size: 0.875rem;
                                                                                                            +    }
                                                                                                            +
                                                                                                            +    .session-info {
                                                                                                            +      color: #6c757d;
                                                                                                            +      font-family: monospace;
                                                                                                            +    }
                                                                                                            +
                                                                                                            +    .saving-indicator {
                                                                                                            +      color: #ffc107;
                                                                                                            +      font-weight: bold;
                                                                                                            +    }
                                                                                                            +
                                                                                                            +    .last-saved {
                                                                                                            +      color: #28a745;
                                                                                                            +    }
                                                                                                            +
                                                                                                            +    .template-playground-actions {
                                                                                                            +      display: flex;
                                                                                                            +      gap: 0.5rem;
                                                                                                            +    }
                                                                                                            +
                                                                                                            +    .config-panel {
                                                                                                            +      background: #e9ecef;
                                                                                                            +      padding: 1rem 2rem;
                                                                                                            +      border-bottom: 1px solid #dee2e6;
                                                                                                            +      transition: all 0.3s ease;
                                                                                                            +      max-height: 200px;
                                                                                                            +      overflow: hidden;
                                                                                                            +    }
                                                                                                            +
                                                                                                            +    .config-panel.collapsed {
                                                                                                            +      max-height: 0;
                                                                                                            +      padding: 0 2rem;
                                                                                                            +    }
                                                                                                            +
                                                                                                            +    .config-options {
                                                                                                            +      display: grid;
                                                                                                            +      grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
                                                                                                            +      gap: 0.5rem;
                                                                                                            +      margin-top: 0.5rem;
                                                                                                            +    }
                                                                                                            +
                                                                                                            +    .config-options label {
                                                                                                            +      display: flex;
                                                                                                            +      align-items: center;
                                                                                                            +      gap: 0.5rem;
                                                                                                            +      font-size: 0.875rem;
                                                                                                            +    }
                                                                                                            +
                                                                                                            +    .template-playground-body {
                                                                                                            +      display: flex;
                                                                                                            +      flex: 1;
                                                                                                            +      overflow: hidden;
                                                                                                            +    }
                                                                                                            +
                                                                                                            +    .template-playground-sidebar {
                                                                                                            +      width: 250px;
                                                                                                            +      background: #f8f9fa;
                                                                                                            +      border-right: 1px solid #dee2e6;
                                                                                                            +      overflow-y: auto;
                                                                                                            +    }
                                                                                                            +
                                                                                                            +    .template-file-list {
                                                                                                            +      padding: 1rem;
                                                                                                            +    }
                                                                                                            +
                                                                                                            +    .template-file-list h3 {
                                                                                                            +      margin: 0 0 0.5rem 0;
                                                                                                            +      font-size: 0.875rem;
                                                                                                            +      font-weight: 600;
                                                                                                            +      color: #495057;
                                                                                                            +      text-transform: uppercase;
                                                                                                            +      letter-spacing: 0.5px;
                                                                                                            +    }
                                                                                                            +
                                                                                                            +    .file-list {
                                                                                                            +      list-style: none;
                                                                                                            +      padding: 0;
                                                                                                            +      margin: 0 0 1.5rem 0;
                                                                                                            +    }
                                                                                                            +
                                                                                                            +    .file-list li {
                                                                                                            +      display: flex;
                                                                                                            +      align-items: center;
                                                                                                            +      padding: 0.5rem;
                                                                                                            +      cursor: pointer;
                                                                                                            +      border-radius: 4px;
                                                                                                            +      font-size: 0.875rem;
                                                                                                            +      transition: background-color 0.15s ease;
                                                                                                            +    }
                                                                                                            +
                                                                                                            +    .file-list li:hover {
                                                                                                            +      background: #e9ecef;
                                                                                                            +    }
                                                                                                            +
                                                                                                            +    .file-list li.active {
                                                                                                            +      background: #007bff;
                                                                                                            +      color: white;
                                                                                                            +    }
                                                                                                            +
                                                                                                            +    .file-icon {
                                                                                                            +      margin-right: 0.5rem;
                                                                                                            +      opacity: 0.7;
                                                                                                            +    }
                                                                                                            +
                                                                                                            +    .file-type {
                                                                                                            +      margin-left: auto;
                                                                                                            +      font-size: 0.75rem;
                                                                                                            +      opacity: 0.7;
                                                                                                            +      text-transform: uppercase;
                                                                                                            +    }
                                                                                                            +
                                                                                                            +    .loading-templates {
                                                                                                            +      text-align: center;
                                                                                                            +      color: #6c757d;
                                                                                                            +      font-style: italic;
                                                                                                            +      padding: 2rem;
                                                                                                            +    }
                                                                                                            +
                                                                                                            +    .template-playground-main {
                                                                                                            +      flex: 1;
                                                                                                            +      display: flex;
                                                                                                            +      overflow: hidden;
                                                                                                            +    }
                                                                                                            +
                                                                                                            +    .template-playground-editor {
                                                                                                            +      width: 50%;
                                                                                                            +      display: flex;
                                                                                                            +      flex-direction: column;
                                                                                                            +      border-right: 1px solid #dee2e6;
                                                                                                            +    }
                                                                                                            +
                                                                                                            +    .editor-header {
                                                                                                            +      display: flex;
                                                                                                            +      justify-content: space-between;
                                                                                                            +      align-items: center;
                                                                                                            +      padding: 0.75rem 1rem;
                                                                                                            +      background: #f8f9fa;
                                                                                                            +      border-bottom: 1px solid #dee2e6;
                                                                                                            +    }
                                                                                                            +
                                                                                                            +    .editor-header h4 {
                                                                                                            +      margin: 0;
                                                                                                            +      font-size: 0.875rem;
                                                                                                            +      font-weight: 600;
                                                                                                            +    }
                                                                                                            +
                                                                                                            +    .file-type-badge {
                                                                                                            +      background: #6c757d;
                                                                                                            +      color: white;
                                                                                                            +      padding: 0.125rem 0.5rem;
                                                                                                            +      border-radius: 12px;
                                                                                                            +      font-size: 0.75rem;
                                                                                                            +      text-transform: uppercase;
                                                                                                            +    }
                                                                                                            +
                                                                                                            +    .editor-container {
                                                                                                            +      flex: 1;
                                                                                                            +      position: relative;
                                                                                                            +    }
                                                                                                            +
                                                                                                            +    .template-playground-preview {
                                                                                                            +      width: 50%;
                                                                                                            +      display: flex;
                                                                                                            +      flex-direction: column;
                                                                                                            +    }
                                                                                                            +
                                                                                                            +    .preview-header {
                                                                                                            +      display: flex;
                                                                                                            +      justify-content: space-between;
                                                                                                            +      align-items: center;
                                                                                                            +      padding: 0.75rem 1rem;
                                                                                                            +      background: #f8f9fa;
                                                                                                            +      border-bottom: 1px solid #dee2e6;
                                                                                                            +    }
                                                                                                            +
                                                                                                            +    .preview-header h4 {
                                                                                                            +      margin: 0;
                                                                                                            +      font-size: 0.875rem;
                                                                                                            +      font-weight: 600;
                                                                                                            +    }
                                                                                                            +
                                                                                                            +    .preview-frame {
                                                                                                            +      flex: 1;
                                                                                                            +      border: none;
                                                                                                            +      background: white;
                                                                                                            +    }
                                                                                                            +
                                                                                                            +    .btn {
                                                                                                            +      padding: 0.375rem 0.75rem;
                                                                                                            +      border: 1px solid transparent;
                                                                                                            +      border-radius: 0.25rem;
                                                                                                            +      font-size: 0.875rem;
                                                                                                            +      font-weight: 500;
                                                                                                            +      text-decoration: none;
                                                                                                            +      cursor: pointer;
                                                                                                            +      transition: all 0.15s ease;
                                                                                                            +    }
                                                                                                            +
                                                                                                            +    .btn-primary {
                                                                                                            +      background: #007bff;
                                                                                                            +      border-color: #007bff;
                                                                                                            +      color: white;
                                                                                                            +    }
                                                                                                            +
                                                                                                            +    .btn-primary:hover {
                                                                                                            +      background: #0056b3;
                                                                                                            +      border-color: #004085;
                                                                                                            +    }
                                                                                                            +
                                                                                                            +    .btn-secondary {
                                                                                                            +      background: #6c757d;
                                                                                                            +      border-color: #6c757d;
                                                                                                            +      color: white;
                                                                                                            +    }
                                                                                                            +
                                                                                                            +    .btn-secondary:hover {
                                                                                                            +      background: #545b62;
                                                                                                            +      border-color: #4e555b;
                                                                                                            +    }
                                                                                                            +
                                                                                                            +    .btn-success {
                                                                                                            +      background: #28a745;
                                                                                                            +      border-color: #28a745;
                                                                                                            +      color: white;
                                                                                                            +    }
                                                                                                            +
                                                                                                            +    .btn-success:hover {
                                                                                                            +      background: #1e7e34;
                                                                                                            +      border-color: #1c7430;
                                                                                                            +    }
                                                                                                            +
                                                                                                            +    .btn-sm {
                                                                                                            +      padding: 0.25rem 0.5rem;
                                                                                                            +      font-size: 0.75rem;
                                                                                                            +    }
                                                                                                            +  `]
                                                                                                            +})
                                                                                                            +export class TemplatePlaygroundComponent implements OnInit, OnDestroy {
                                                                                                            +  @ViewChild('editorContainer', { static: true }) editorContainer!: ElementRef;
                                                                                                            +  @ViewChild('previewFrame', { static: true }) previewFrame!: ElementRef;
                                                                                                            +
                                                                                                            +  sessionId: string = '';
                                                                                                            +  templates: Template[] = [];
                                                                                                            +  selectedFile: Template | null = null;
                                                                                                            +  config: CompoDocConfig = {};
                                                                                                            +  showConfigPanel: boolean = false;
                                                                                                            +  saving: boolean = false;
                                                                                                            +  lastSaved: Date | null = null;
                                                                                                            +
                                                                                                            +  private saveTimeout?: number;
                                                                                                            +  private readonly SAVE_DELAY = 300; // 300ms debounce
                                                                                                            +
                                                                                                            +  get previewUrl(): string {
                                                                                                            +    return this.sessionId ? `/api/session/${this.sessionId}/docs/` : '';
                                                                                                            +  }
                                                                                                            +
                                                                                                            +  constructor(
                                                                                                            +    private http: HttpClient,
                                                                                                            +    private editorService: TemplateEditorService,
                                                                                                            +    private zipService: ZipExportService,
                                                                                                            +    private hbsService: HbsRenderService
                                                                                                            +  ) {}
                                                                                                            +
                                                                                                            +  async ngOnInit() {
                                                                                                            +    try {
                                                                                                            +      await this.createSession();
                                                                                                            +      await this.loadSessionTemplates();
                                                                                                            +      await this.loadSessionConfig();
                                                                                                            +      this.initializeEditor();
                                                                                                            +    } catch (error) {
                                                                                                            +      console.error('Error initializing template playground:', error);
                                                                                                            +    }
                                                                                                            +  }
                                                                                                            +
                                                                                                            +  ngOnDestroy() {
                                                                                                            +    if (this.saveTimeout) {
                                                                                                            +      clearTimeout(this.saveTimeout);
                                                                                                            +    }
                                                                                                            +  }
                                                                                                            +
                                                                                                            +  private async createSession(): Promise<void> {
                                                                                                            +    const response = await this.http.post<Session>('/api/session/create', {}).toPromise();
                                                                                                            +    if (response && response.success) {
                                                                                                            +      this.sessionId = response.sessionId;
                                                                                                            +      console.log('Session created:', this.sessionId);
                                                                                                            +    } else {
                                                                                                            +      throw new Error('Failed to create session');
                                                                                                            +    }
                                                                                                            +  }
                                                                                                            +
                                                                                                            +  private async loadSessionTemplates(): Promise<void> {
                                                                                                            +    if (!this.sessionId) return;
                                                                                                            +
                                                                                                            +    const response = await this.http.get<{templates: Template[], success: boolean}>(`/api/session/${this.sessionId}/templates`).toPromise();
                                                                                                            +    if (response && response.success) {
                                                                                                            +      this.templates = response.templates;
                                                                                                            +
                                                                                                            +      // Auto-select the first template
                                                                                                            +      if (this.templates.length > 0 && !this.selectedFile) {
                                                                                                            +        this.selectFile(this.templates[0]);
                                                                                                            +      }
                                                                                                            +    }
                                                                                                            +  }
                                                                                                            +
                                                                                                            +  private async loadSessionConfig(): Promise<void> {
                                                                                                            +    if (!this.sessionId) return;
                                                                                                            +
                                                                                                            +    const response = await this.http.get<{config: CompoDocConfig, success: boolean}>(`/api/session/${this.sessionId}/config`).toPromise();
                                                                                                            +    if (response && response.success) {
                                                                                                            +      this.config = response.config;
                                                                                                            +    }
                                                                                                            +  }
                                                                                                            +
                                                                                                            +  initializeEditor() {
                                                                                                            +    this.editorService.initializeEditor(this.editorContainer.nativeElement);
                                                                                                            +
                                                                                                            +    // Set up debounced save on content change
                                                                                                            +    this.editorService.setOnChangeCallback((content: string) => {
                                                                                                            +      this.scheduleAutoSave(content);
                                                                                                            +    });
                                                                                                            +  }
                                                                                                            +
                                                                                                            +  async selectFile(template: Template) {
                                                                                                            +    this.selectedFile = template;
                                                                                                            +
                                                                                                            +    if (!this.sessionId) return;
                                                                                                            +
                                                                                                            +    try {
                                                                                                            +      const response = await this.http.get<{content: string, success: boolean}>(`/api/session/${this.sessionId}/template/${template.path}`).toPromise();
                                                                                                            +      if (response && response.success) {
                                                                                                            +        this.editorService.setEditorContent(response.content, template.type === 'template' ? 'handlebars' : 'handlebars');
                                                                                                            +      }
                                                                                                            +    } catch (error) {
                                                                                                            +      console.error('Error loading template:', error);
                                                                                                            +    }
                                                                                                            +  }
                                                                                                            +
                                                                                                            +  private scheduleAutoSave(content: string): void {
                                                                                                            +    if (!this.selectedFile || !this.sessionId) return;
                                                                                                            +
                                                                                                            +    // Clear existing timeout
                                                                                                            +    if (this.saveTimeout) {
                                                                                                            +      clearTimeout(this.saveTimeout);
                                                                                                            +    }
                                                                                                            +
                                                                                                            +    // Set saving indicator
                                                                                                            +    this.saving = true;
                                                                                                            +
                                                                                                            +    // Schedule new save
                                                                                                            +    this.saveTimeout = window.setTimeout(async () => {
                                                                                                            +      try {
                                                                                                            +        await this.saveTemplate(content);
                                                                                                            +        this.saving = false;
                                                                                                            +        this.lastSaved = new Date();
                                                                                                            +      } catch (error) {
                                                                                                            +        console.error('Error saving template:', error);
                                                                                                            +        this.saving = false;
                                                                                                            +      }
                                                                                                            +    }, this.SAVE_DELAY);
                                                                                                            +  }
                                                                                                            +
                                                                                                            +  private async saveTemplate(content: string): Promise<void> {
                                                                                                            +    if (!this.selectedFile || !this.sessionId) return;
                                                                                                            +
                                                                                                            +    const response = await this.http.post<{success: boolean}>(`/api/session/${this.sessionId}/template/${this.selectedFile.path}`, {
                                                                                                            +      content
                                                                                                            +    }).toPromise();
                                                                                                            +
                                                                                                            +    if (!response || !response.success) {
                                                                                                            +      throw new Error('Failed to save template');
                                                                                                            +    }
                                                                                                            +  }
                                                                                                            +
                                                                                                            +  async updateConfig(): Promise<void> {
                                                                                                            +    if (!this.sessionId) return;
                                                                                                            +
                                                                                                            +    try {
                                                                                                            +      const response = await this.http.post<{success: boolean}>(`/api/session/${this.sessionId}/config`, {
                                                                                                            +        config: this.config
                                                                                                            +      }).toPromise();
                                                                                                            +
                                                                                                            +      if (response && response.success) {
                                                                                                            +        // Config updated, documentation will be regenerated automatically
                                                                                                            +      }
                                                                                                            +    } catch (error) {
                                                                                                            +      console.error('Error updating config:', error);
                                                                                                            +    }
                                                                                                            +  }
                                                                                                            +
                                                                                                            +  toggleConfigPanel(): void {
                                                                                                            +    this.showConfigPanel = !this.showConfigPanel;
                                                                                                            +  }
                                                                                                            +
                                                                                                            +  refreshPreview(): void {
                                                                                                            +    if (this.previewFrame?.nativeElement) {
                                                                                                            +      this.previewFrame.nativeElement.src = this.previewFrame.nativeElement.src;
                                                                                                            +    }
                                                                                                            +  }
                                                                                                            +
                                                                                                            +  resetToDefault(): void {
                                                                                                            +    // Implementation for resetting to default templates
                                                                                                            +    if (confirm('Are you sure you want to reset all templates to their default values? This action cannot be undone.')) {
                                                                                                            +      // TODO: Implement reset functionality
                                                                                                            +      console.log('Reset to default templates');
                                                                                                            +    }
                                                                                                            +  }
                                                                                                            +
                                                                                                            +  async exportZip(): Promise<void> {
                                                                                                            +    try {
                                                                                                            +      if (!this.sessionId) {
                                                                                                            +        console.error('No active session. Please refresh the page and try again.');
                                                                                                            +        return;
                                                                                                            +      }
                                                                                                            +
                                                                                                            +      console.log('Creating template package...');
                                                                                                            +
                                                                                                            +      // Call server-side ZIP creation endpoint for all templates
                                                                                                            +      const response = await this.http.post(`/api/session/${this.sessionId}/download-all-templates`, {}, {
                                                                                                            +        responseType: 'blob',
                                                                                                            +        observe: 'response'
                                                                                                            +      }).toPromise();
                                                                                                            +
                                                                                                            +      if (!response || !response.body) {
                                                                                                            +        throw new Error('Failed to create template package');
                                                                                                            +      }
                                                                                                            +
                                                                                                            +      // Get the ZIP file as a blob
                                                                                                            +      const zipBlob = response.body;
                                                                                                            +
                                                                                                            +      // Get filename from response headers or construct it
                                                                                                            +      const contentDisposition = response.headers.get('Content-Disposition');
                                                                                                            +      let filename = `compodoc-templates-${this.sessionId}.zip`;
                                                                                                            +
                                                                                                            +      if (contentDisposition) {
                                                                                                            +        const filenameMatch = contentDisposition.match(/filename="([^"]+)"/);
                                                                                                            +        if (filenameMatch) {
                                                                                                            +          filename = filenameMatch[1];
                                                                                                            +        }
                                                                                                            +      }
                                                                                                            +
                                                                                                            +      // Create download link and trigger download
                                                                                                            +      const url = URL.createObjectURL(zipBlob);
                                                                                                            +      const a = document.createElement('a');
                                                                                                            +      a.href = url;
                                                                                                            +      a.download = filename;
                                                                                                            +      document.body.appendChild(a);
                                                                                                            +      a.click();
                                                                                                            +      document.body.removeChild(a);
                                                                                                            +      URL.revokeObjectURL(url);
                                                                                                            +
                                                                                                            +      console.log('Template package downloaded successfully!');
                                                                                                            +    } catch (error) {
                                                                                                            +      console.error('Error downloading template package:', error);
                                                                                                            +    }
                                                                                                            +  }
                                                                                                            +
                                                                                                            +  trackByName(index: number, item: Template): string {
                                                                                                            +    return item.name;
                                                                                                            +  }
                                                                                                            +}
                                                                                                            +
                                                                                                            +
                                                                                                            +
                                                                                                            + + + + + + + + +
                                                                                                            +
                                                                                                            +

                                                                                                            results matching ""

                                                                                                            +
                                                                                                              +
                                                                                                              +
                                                                                                              +

                                                                                                              No results matching ""

                                                                                                              +
                                                                                                              +
                                                                                                              +
                                                                                                              + +
                                                                                                              +
                                                                                                              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/interfaces/Session.html b/backend/documentation/interfaces/Session.html new file mode 100644 index 0000000..f63ce4b --- /dev/null +++ b/backend/documentation/interfaces/Session.html @@ -0,0 +1,989 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                                                                                                              +
                                                                                                              + + +
                                                                                                              +
                                                                                                              + + + + + + + + + + + + + + + + + + + + + +
                                                                                                              +
                                                                                                              +

                                                                                                              +

                                                                                                              File

                                                                                                              +

                                                                                                              +

                                                                                                              + documentation/template-playground/template-playground.component.ts +

                                                                                                              + + + + +
                                                                                                              +

                                                                                                              Index

                                                                                                              + + + + + + + + + +
                                                                                                              +
                                                                                                              Properties
                                                                                                              +
                                                                                                              + +
                                                                                                              +
                                                                                                              + + + +
                                                                                                              +

                                                                                                              Properties

                                                                                                              + + + + + + + + + + + + + + + + + + + +
                                                                                                              + + message + + + + +
                                                                                                              + message: string + +
                                                                                                              + Type : string + +
                                                                                                              + + + + + + + + + + + + + + + + + + + +
                                                                                                              + + sessionId + + + + +
                                                                                                              + sessionId: string + +
                                                                                                              + Type : string + +
                                                                                                              + + + + + + + + + + + + + + + + + + + +
                                                                                                              + + success + + + + +
                                                                                                              + success: boolean + +
                                                                                                              + Type : boolean + +
                                                                                                              +
                                                                                                              +
                                                                                                              + + +
                                                                                                              +
                                                                                                              import { Component, OnInit, ViewChild, ElementRef, OnDestroy } from '@angular/core';
                                                                                                              +import { HttpClient } from '@angular/common/http';
                                                                                                              +import { TemplateEditorService } from './template-editor.service';
                                                                                                              +import { ZipExportService } from './zip-export.service';
                                                                                                              +import { HbsRenderService } from './hbs-render.service';
                                                                                                              +
                                                                                                              +interface Template {
                                                                                                              +  name: string;
                                                                                                              +  path: string;
                                                                                                              +  type: 'template' | 'partial';
                                                                                                              +}
                                                                                                              +
                                                                                                              +interface Session {
                                                                                                              +  sessionId: string;
                                                                                                              +  success: boolean;
                                                                                                              +  message: string;
                                                                                                              +}
                                                                                                              +
                                                                                                              +interface CompoDocConfig {
                                                                                                              +  hideGenerator?: boolean;
                                                                                                              +  disableSourceCode?: boolean;
                                                                                                              +  disableGraph?: boolean;
                                                                                                              +  disableCoverage?: boolean;
                                                                                                              +  disablePrivate?: boolean;
                                                                                                              +  disableProtected?: boolean;
                                                                                                              +  disableInternal?: boolean;
                                                                                                              +  disableLifeCycleHooks?: boolean;
                                                                                                              +  disableConstructors?: boolean;
                                                                                                              +  disableRoutesGraph?: boolean;
                                                                                                              +  disableSearch?: boolean;
                                                                                                              +  disableDependencies?: boolean;
                                                                                                              +  disableProperties?: boolean;
                                                                                                              +  disableDomTree?: boolean;
                                                                                                              +  disableTemplateTab?: boolean;
                                                                                                              +  disableStyleTab?: boolean;
                                                                                                              +  disableMainGraph?: boolean;
                                                                                                              +  disableFilePath?: boolean;
                                                                                                              +  disableOverview?: boolean;
                                                                                                              +  hideDarkModeToggle?: boolean;
                                                                                                              +  minimal?: boolean;
                                                                                                              +  customFavicon?: string;
                                                                                                              +  includes?: string;
                                                                                                              +  includesName?: string;
                                                                                                              +}
                                                                                                              +
                                                                                                              +@Component({
                                                                                                              +  selector: 'template-playground-root',
                                                                                                              +  template: `
                                                                                                              +    <div class="template-playground">
                                                                                                              +      <div class="template-playground-header">
                                                                                                              +        <h2>Template Playground</h2>
                                                                                                              +        <div class="template-playground-status">
                                                                                                              +          <span *ngIf="sessionId" class="session-info">Session: {{sessionId.substring(0, 8)}}...</span>
                                                                                                              +          <span *ngIf="saving" class="saving-indicator">Saving...</span>
                                                                                                              +          <span *ngIf="lastSaved" class="last-saved">Last saved: {{lastSaved | date:'short'}}</span>
                                                                                                              +        </div>
                                                                                                              +        <div class="template-playground-actions">
                                                                                                              +          <button class="btn btn-secondary" (click)="toggleConfigPanel()">⚙️ Config</button>
                                                                                                              +          <button class="btn btn-primary" (click)="resetToDefault()">Reset to Default</button>
                                                                                                              +          <button class="btn btn-success" (click)="exportZip()">Download Templates</button>
                                                                                                              +        </div>
                                                                                                              +      </div>
                                                                                                              +
                                                                                                              +      <!-- Configuration Panel -->
                                                                                                              +      <div class="config-panel" [class.collapsed]="!showConfigPanel">
                                                                                                              +        <h3>CompoDoc Configuration</h3>
                                                                                                              +        <div class="config-options">
                                                                                                              +          <label><input type="checkbox" [(ngModel)]="config.hideGenerator" (change)="updateConfig()"> Hide Generator</label>
                                                                                                              +          <label><input type="checkbox" [(ngModel)]="config.hideDarkModeToggle" (change)="updateConfig()"> Hide Dark Mode Toggle</label>
                                                                                                              +          <label><input type="checkbox" [(ngModel)]="config.minimal" (change)="updateConfig()"> Minimal Mode</label>
                                                                                                              +          <label><input type="checkbox" [(ngModel)]="config.disableOverview" (change)="updateConfig()"> Disable Overview</label>
                                                                                                              +          <label><input type="checkbox" [(ngModel)]="config.disableFilePath" (change)="updateConfig()"> Disable File Path</label>
                                                                                                              +          <label><input type="checkbox" [(ngModel)]="config.disableSourceCode" (change)="updateConfig()"> Disable Source Code</label>
                                                                                                              +          <label><input type="checkbox" [(ngModel)]="config.disableGraph" (change)="updateConfig()"> Disable Graph</label>
                                                                                                              +          <label><input type="checkbox" [(ngModel)]="config.disableMainGraph" (change)="updateConfig()"> Disable Main Graph</label>
                                                                                                              +          <label><input type="checkbox" [(ngModel)]="config.disableRoutesGraph" (change)="updateConfig()"> Disable Routes Graph</label>
                                                                                                              +          <label><input type="checkbox" [(ngModel)]="config.disableCoverage" (change)="updateConfig()"> Disable Coverage</label>
                                                                                                              +          <label><input type="checkbox" [(ngModel)]="config.disableSearch" (change)="updateConfig()"> Disable Search</label>
                                                                                                              +          <label><input type="checkbox" [(ngModel)]="config.disableDependencies" (change)="updateConfig()"> Disable Dependencies</label>
                                                                                                              +          <label><input type="checkbox" [(ngModel)]="config.disablePrivate" (change)="updateConfig()"> Disable Private</label>
                                                                                                              +          <label><input type="checkbox" [(ngModel)]="config.disableProtected" (change)="updateConfig()"> Disable Protected</label>
                                                                                                              +          <label><input type="checkbox" [(ngModel)]="config.disableInternal" (change)="updateConfig()"> Disable Internal</label>
                                                                                                              +          <label><input type="checkbox" [(ngModel)]="config.disableLifeCycleHooks" (change)="updateConfig()"> Disable Lifecycle Hooks</label>
                                                                                                              +          <label><input type="checkbox" [(ngModel)]="config.disableConstructors" (change)="updateConfig()"> Disable Constructors</label>
                                                                                                              +          <label><input type="checkbox" [(ngModel)]="config.disableProperties" (change)="updateConfig()"> Disable Properties</label>
                                                                                                              +          <label><input type="checkbox" [(ngModel)]="config.disableDomTree" (change)="updateConfig()"> Disable DOM Tree</label>
                                                                                                              +          <label><input type="checkbox" [(ngModel)]="config.disableTemplateTab" (change)="updateConfig()"> Disable Template Tab</label>
                                                                                                              +          <label><input type="checkbox" [(ngModel)]="config.disableStyleTab" (change)="updateConfig()"> Disable Style Tab</label>
                                                                                                              +        </div>
                                                                                                              +      </div>
                                                                                                              +
                                                                                                              +      <div class="template-playground-body">
                                                                                                              +        <div class="template-playground-sidebar">
                                                                                                              +          <div class="template-file-list">
                                                                                                              +            <h3>Templates</h3>
                                                                                                              +            <ul class="file-list">
                                                                                                              +              <li *ngFor="let template of templates; trackBy: trackByName"
                                                                                                              +                  [class.active]="selectedFile === template"
                                                                                                              +                  (click)="selectFile(template)">
                                                                                                              +                <i class="file-icon ion-document-text"></i>
                                                                                                              +                {{template.name}}
                                                                                                              +                <span class="file-type">{{template.type}}</span>
                                                                                                              +              </li>
                                                                                                              +            </ul>
                                                                                                              +
                                                                                                              +            <div *ngIf="templates.length === 0" class="loading-templates">
                                                                                                              +              Loading templates...
                                                                                                              +            </div>
                                                                                                              +          </div>
                                                                                                              +        </div>
                                                                                                              +
                                                                                                              +        <div class="template-playground-main">
                                                                                                              +          <div class="template-playground-editor">
                                                                                                              +            <div class="editor-header" *ngIf="selectedFile">
                                                                                                              +              <h4>{{selectedFile.path}}</h4>
                                                                                                              +              <span class="file-type-badge">{{selectedFile.type}}</span>
                                                                                                              +            </div>
                                                                                                              +            <div #editorContainer class="editor-container"></div>
                                                                                                              +          </div>
                                                                                                              +
                                                                                                              +          <div class="template-playground-preview">
                                                                                                              +            <div class="preview-header">
                                                                                                              +              <h4>Live Preview</h4>
                                                                                                              +              <button class="btn btn-sm btn-secondary" (click)="refreshPreview()">🔄 Refresh</button>
                                                                                                              +            </div>
                                                                                                              +            <iframe #previewFrame class="preview-frame" [src]="previewUrl"></iframe>
                                                                                                              +          </div>
                                                                                                              +        </div>
                                                                                                              +      </div>
                                                                                                              +    </div>
                                                                                                              +  `,
                                                                                                              +  styles: [`
                                                                                                              +    .template-playground {
                                                                                                              +      display: flex;
                                                                                                              +      flex-direction: column;
                                                                                                              +      height: 100vh;
                                                                                                              +      font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
                                                                                                              +    }
                                                                                                              +
                                                                                                              +    .template-playground-header {
                                                                                                              +      display: flex;
                                                                                                              +      justify-content: space-between;
                                                                                                              +      align-items: center;
                                                                                                              +      padding: 1rem 2rem;
                                                                                                              +      background: #f8f9fa;
                                                                                                              +      border-bottom: 1px solid #dee2e6;
                                                                                                              +    }
                                                                                                              +
                                                                                                              +    .template-playground-status {
                                                                                                              +      display: flex;
                                                                                                              +      align-items: center;
                                                                                                              +      gap: 1rem;
                                                                                                              +      font-size: 0.875rem;
                                                                                                              +    }
                                                                                                              +
                                                                                                              +    .session-info {
                                                                                                              +      color: #6c757d;
                                                                                                              +      font-family: monospace;
                                                                                                              +    }
                                                                                                              +
                                                                                                              +    .saving-indicator {
                                                                                                              +      color: #ffc107;
                                                                                                              +      font-weight: bold;
                                                                                                              +    }
                                                                                                              +
                                                                                                              +    .last-saved {
                                                                                                              +      color: #28a745;
                                                                                                              +    }
                                                                                                              +
                                                                                                              +    .template-playground-actions {
                                                                                                              +      display: flex;
                                                                                                              +      gap: 0.5rem;
                                                                                                              +    }
                                                                                                              +
                                                                                                              +    .config-panel {
                                                                                                              +      background: #e9ecef;
                                                                                                              +      padding: 1rem 2rem;
                                                                                                              +      border-bottom: 1px solid #dee2e6;
                                                                                                              +      transition: all 0.3s ease;
                                                                                                              +      max-height: 200px;
                                                                                                              +      overflow: hidden;
                                                                                                              +    }
                                                                                                              +
                                                                                                              +    .config-panel.collapsed {
                                                                                                              +      max-height: 0;
                                                                                                              +      padding: 0 2rem;
                                                                                                              +    }
                                                                                                              +
                                                                                                              +    .config-options {
                                                                                                              +      display: grid;
                                                                                                              +      grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
                                                                                                              +      gap: 0.5rem;
                                                                                                              +      margin-top: 0.5rem;
                                                                                                              +    }
                                                                                                              +
                                                                                                              +    .config-options label {
                                                                                                              +      display: flex;
                                                                                                              +      align-items: center;
                                                                                                              +      gap: 0.5rem;
                                                                                                              +      font-size: 0.875rem;
                                                                                                              +    }
                                                                                                              +
                                                                                                              +    .template-playground-body {
                                                                                                              +      display: flex;
                                                                                                              +      flex: 1;
                                                                                                              +      overflow: hidden;
                                                                                                              +    }
                                                                                                              +
                                                                                                              +    .template-playground-sidebar {
                                                                                                              +      width: 250px;
                                                                                                              +      background: #f8f9fa;
                                                                                                              +      border-right: 1px solid #dee2e6;
                                                                                                              +      overflow-y: auto;
                                                                                                              +    }
                                                                                                              +
                                                                                                              +    .template-file-list {
                                                                                                              +      padding: 1rem;
                                                                                                              +    }
                                                                                                              +
                                                                                                              +    .template-file-list h3 {
                                                                                                              +      margin: 0 0 0.5rem 0;
                                                                                                              +      font-size: 0.875rem;
                                                                                                              +      font-weight: 600;
                                                                                                              +      color: #495057;
                                                                                                              +      text-transform: uppercase;
                                                                                                              +      letter-spacing: 0.5px;
                                                                                                              +    }
                                                                                                              +
                                                                                                              +    .file-list {
                                                                                                              +      list-style: none;
                                                                                                              +      padding: 0;
                                                                                                              +      margin: 0 0 1.5rem 0;
                                                                                                              +    }
                                                                                                              +
                                                                                                              +    .file-list li {
                                                                                                              +      display: flex;
                                                                                                              +      align-items: center;
                                                                                                              +      padding: 0.5rem;
                                                                                                              +      cursor: pointer;
                                                                                                              +      border-radius: 4px;
                                                                                                              +      font-size: 0.875rem;
                                                                                                              +      transition: background-color 0.15s ease;
                                                                                                              +    }
                                                                                                              +
                                                                                                              +    .file-list li:hover {
                                                                                                              +      background: #e9ecef;
                                                                                                              +    }
                                                                                                              +
                                                                                                              +    .file-list li.active {
                                                                                                              +      background: #007bff;
                                                                                                              +      color: white;
                                                                                                              +    }
                                                                                                              +
                                                                                                              +    .file-icon {
                                                                                                              +      margin-right: 0.5rem;
                                                                                                              +      opacity: 0.7;
                                                                                                              +    }
                                                                                                              +
                                                                                                              +    .file-type {
                                                                                                              +      margin-left: auto;
                                                                                                              +      font-size: 0.75rem;
                                                                                                              +      opacity: 0.7;
                                                                                                              +      text-transform: uppercase;
                                                                                                              +    }
                                                                                                              +
                                                                                                              +    .loading-templates {
                                                                                                              +      text-align: center;
                                                                                                              +      color: #6c757d;
                                                                                                              +      font-style: italic;
                                                                                                              +      padding: 2rem;
                                                                                                              +    }
                                                                                                              +
                                                                                                              +    .template-playground-main {
                                                                                                              +      flex: 1;
                                                                                                              +      display: flex;
                                                                                                              +      overflow: hidden;
                                                                                                              +    }
                                                                                                              +
                                                                                                              +    .template-playground-editor {
                                                                                                              +      width: 50%;
                                                                                                              +      display: flex;
                                                                                                              +      flex-direction: column;
                                                                                                              +      border-right: 1px solid #dee2e6;
                                                                                                              +    }
                                                                                                              +
                                                                                                              +    .editor-header {
                                                                                                              +      display: flex;
                                                                                                              +      justify-content: space-between;
                                                                                                              +      align-items: center;
                                                                                                              +      padding: 0.75rem 1rem;
                                                                                                              +      background: #f8f9fa;
                                                                                                              +      border-bottom: 1px solid #dee2e6;
                                                                                                              +    }
                                                                                                              +
                                                                                                              +    .editor-header h4 {
                                                                                                              +      margin: 0;
                                                                                                              +      font-size: 0.875rem;
                                                                                                              +      font-weight: 600;
                                                                                                              +    }
                                                                                                              +
                                                                                                              +    .file-type-badge {
                                                                                                              +      background: #6c757d;
                                                                                                              +      color: white;
                                                                                                              +      padding: 0.125rem 0.5rem;
                                                                                                              +      border-radius: 12px;
                                                                                                              +      font-size: 0.75rem;
                                                                                                              +      text-transform: uppercase;
                                                                                                              +    }
                                                                                                              +
                                                                                                              +    .editor-container {
                                                                                                              +      flex: 1;
                                                                                                              +      position: relative;
                                                                                                              +    }
                                                                                                              +
                                                                                                              +    .template-playground-preview {
                                                                                                              +      width: 50%;
                                                                                                              +      display: flex;
                                                                                                              +      flex-direction: column;
                                                                                                              +    }
                                                                                                              +
                                                                                                              +    .preview-header {
                                                                                                              +      display: flex;
                                                                                                              +      justify-content: space-between;
                                                                                                              +      align-items: center;
                                                                                                              +      padding: 0.75rem 1rem;
                                                                                                              +      background: #f8f9fa;
                                                                                                              +      border-bottom: 1px solid #dee2e6;
                                                                                                              +    }
                                                                                                              +
                                                                                                              +    .preview-header h4 {
                                                                                                              +      margin: 0;
                                                                                                              +      font-size: 0.875rem;
                                                                                                              +      font-weight: 600;
                                                                                                              +    }
                                                                                                              +
                                                                                                              +    .preview-frame {
                                                                                                              +      flex: 1;
                                                                                                              +      border: none;
                                                                                                              +      background: white;
                                                                                                              +    }
                                                                                                              +
                                                                                                              +    .btn {
                                                                                                              +      padding: 0.375rem 0.75rem;
                                                                                                              +      border: 1px solid transparent;
                                                                                                              +      border-radius: 0.25rem;
                                                                                                              +      font-size: 0.875rem;
                                                                                                              +      font-weight: 500;
                                                                                                              +      text-decoration: none;
                                                                                                              +      cursor: pointer;
                                                                                                              +      transition: all 0.15s ease;
                                                                                                              +    }
                                                                                                              +
                                                                                                              +    .btn-primary {
                                                                                                              +      background: #007bff;
                                                                                                              +      border-color: #007bff;
                                                                                                              +      color: white;
                                                                                                              +    }
                                                                                                              +
                                                                                                              +    .btn-primary:hover {
                                                                                                              +      background: #0056b3;
                                                                                                              +      border-color: #004085;
                                                                                                              +    }
                                                                                                              +
                                                                                                              +    .btn-secondary {
                                                                                                              +      background: #6c757d;
                                                                                                              +      border-color: #6c757d;
                                                                                                              +      color: white;
                                                                                                              +    }
                                                                                                              +
                                                                                                              +    .btn-secondary:hover {
                                                                                                              +      background: #545b62;
                                                                                                              +      border-color: #4e555b;
                                                                                                              +    }
                                                                                                              +
                                                                                                              +    .btn-success {
                                                                                                              +      background: #28a745;
                                                                                                              +      border-color: #28a745;
                                                                                                              +      color: white;
                                                                                                              +    }
                                                                                                              +
                                                                                                              +    .btn-success:hover {
                                                                                                              +      background: #1e7e34;
                                                                                                              +      border-color: #1c7430;
                                                                                                              +    }
                                                                                                              +
                                                                                                              +    .btn-sm {
                                                                                                              +      padding: 0.25rem 0.5rem;
                                                                                                              +      font-size: 0.75rem;
                                                                                                              +    }
                                                                                                              +  `]
                                                                                                              +})
                                                                                                              +export class TemplatePlaygroundComponent implements OnInit, OnDestroy {
                                                                                                              +  @ViewChild('editorContainer', { static: true }) editorContainer!: ElementRef;
                                                                                                              +  @ViewChild('previewFrame', { static: true }) previewFrame!: ElementRef;
                                                                                                              +
                                                                                                              +  sessionId: string = '';
                                                                                                              +  templates: Template[] = [];
                                                                                                              +  selectedFile: Template | null = null;
                                                                                                              +  config: CompoDocConfig = {};
                                                                                                              +  showConfigPanel: boolean = false;
                                                                                                              +  saving: boolean = false;
                                                                                                              +  lastSaved: Date | null = null;
                                                                                                              +
                                                                                                              +  private saveTimeout?: number;
                                                                                                              +  private readonly SAVE_DELAY = 300; // 300ms debounce
                                                                                                              +
                                                                                                              +  get previewUrl(): string {
                                                                                                              +    return this.sessionId ? `/api/session/${this.sessionId}/docs/` : '';
                                                                                                              +  }
                                                                                                              +
                                                                                                              +  constructor(
                                                                                                              +    private http: HttpClient,
                                                                                                              +    private editorService: TemplateEditorService,
                                                                                                              +    private zipService: ZipExportService,
                                                                                                              +    private hbsService: HbsRenderService
                                                                                                              +  ) {}
                                                                                                              +
                                                                                                              +  async ngOnInit() {
                                                                                                              +    try {
                                                                                                              +      await this.createSession();
                                                                                                              +      await this.loadSessionTemplates();
                                                                                                              +      await this.loadSessionConfig();
                                                                                                              +      this.initializeEditor();
                                                                                                              +    } catch (error) {
                                                                                                              +      console.error('Error initializing template playground:', error);
                                                                                                              +    }
                                                                                                              +  }
                                                                                                              +
                                                                                                              +  ngOnDestroy() {
                                                                                                              +    if (this.saveTimeout) {
                                                                                                              +      clearTimeout(this.saveTimeout);
                                                                                                              +    }
                                                                                                              +  }
                                                                                                              +
                                                                                                              +  private async createSession(): Promise<void> {
                                                                                                              +    const response = await this.http.post<Session>('/api/session/create', {}).toPromise();
                                                                                                              +    if (response && response.success) {
                                                                                                              +      this.sessionId = response.sessionId;
                                                                                                              +      console.log('Session created:', this.sessionId);
                                                                                                              +    } else {
                                                                                                              +      throw new Error('Failed to create session');
                                                                                                              +    }
                                                                                                              +  }
                                                                                                              +
                                                                                                              +  private async loadSessionTemplates(): Promise<void> {
                                                                                                              +    if (!this.sessionId) return;
                                                                                                              +
                                                                                                              +    const response = await this.http.get<{templates: Template[], success: boolean}>(`/api/session/${this.sessionId}/templates`).toPromise();
                                                                                                              +    if (response && response.success) {
                                                                                                              +      this.templates = response.templates;
                                                                                                              +
                                                                                                              +      // Auto-select the first template
                                                                                                              +      if (this.templates.length > 0 && !this.selectedFile) {
                                                                                                              +        this.selectFile(this.templates[0]);
                                                                                                              +      }
                                                                                                              +    }
                                                                                                              +  }
                                                                                                              +
                                                                                                              +  private async loadSessionConfig(): Promise<void> {
                                                                                                              +    if (!this.sessionId) return;
                                                                                                              +
                                                                                                              +    const response = await this.http.get<{config: CompoDocConfig, success: boolean}>(`/api/session/${this.sessionId}/config`).toPromise();
                                                                                                              +    if (response && response.success) {
                                                                                                              +      this.config = response.config;
                                                                                                              +    }
                                                                                                              +  }
                                                                                                              +
                                                                                                              +  initializeEditor() {
                                                                                                              +    this.editorService.initializeEditor(this.editorContainer.nativeElement);
                                                                                                              +
                                                                                                              +    // Set up debounced save on content change
                                                                                                              +    this.editorService.setOnChangeCallback((content: string) => {
                                                                                                              +      this.scheduleAutoSave(content);
                                                                                                              +    });
                                                                                                              +  }
                                                                                                              +
                                                                                                              +  async selectFile(template: Template) {
                                                                                                              +    this.selectedFile = template;
                                                                                                              +
                                                                                                              +    if (!this.sessionId) return;
                                                                                                              +
                                                                                                              +    try {
                                                                                                              +      const response = await this.http.get<{content: string, success: boolean}>(`/api/session/${this.sessionId}/template/${template.path}`).toPromise();
                                                                                                              +      if (response && response.success) {
                                                                                                              +        this.editorService.setEditorContent(response.content, template.type === 'template' ? 'handlebars' : 'handlebars');
                                                                                                              +      }
                                                                                                              +    } catch (error) {
                                                                                                              +      console.error('Error loading template:', error);
                                                                                                              +    }
                                                                                                              +  }
                                                                                                              +
                                                                                                              +  private scheduleAutoSave(content: string): void {
                                                                                                              +    if (!this.selectedFile || !this.sessionId) return;
                                                                                                              +
                                                                                                              +    // Clear existing timeout
                                                                                                              +    if (this.saveTimeout) {
                                                                                                              +      clearTimeout(this.saveTimeout);
                                                                                                              +    }
                                                                                                              +
                                                                                                              +    // Set saving indicator
                                                                                                              +    this.saving = true;
                                                                                                              +
                                                                                                              +    // Schedule new save
                                                                                                              +    this.saveTimeout = window.setTimeout(async () => {
                                                                                                              +      try {
                                                                                                              +        await this.saveTemplate(content);
                                                                                                              +        this.saving = false;
                                                                                                              +        this.lastSaved = new Date();
                                                                                                              +      } catch (error) {
                                                                                                              +        console.error('Error saving template:', error);
                                                                                                              +        this.saving = false;
                                                                                                              +      }
                                                                                                              +    }, this.SAVE_DELAY);
                                                                                                              +  }
                                                                                                              +
                                                                                                              +  private async saveTemplate(content: string): Promise<void> {
                                                                                                              +    if (!this.selectedFile || !this.sessionId) return;
                                                                                                              +
                                                                                                              +    const response = await this.http.post<{success: boolean}>(`/api/session/${this.sessionId}/template/${this.selectedFile.path}`, {
                                                                                                              +      content
                                                                                                              +    }).toPromise();
                                                                                                              +
                                                                                                              +    if (!response || !response.success) {
                                                                                                              +      throw new Error('Failed to save template');
                                                                                                              +    }
                                                                                                              +  }
                                                                                                              +
                                                                                                              +  async updateConfig(): Promise<void> {
                                                                                                              +    if (!this.sessionId) return;
                                                                                                              +
                                                                                                              +    try {
                                                                                                              +      const response = await this.http.post<{success: boolean}>(`/api/session/${this.sessionId}/config`, {
                                                                                                              +        config: this.config
                                                                                                              +      }).toPromise();
                                                                                                              +
                                                                                                              +      if (response && response.success) {
                                                                                                              +        // Config updated, documentation will be regenerated automatically
                                                                                                              +      }
                                                                                                              +    } catch (error) {
                                                                                                              +      console.error('Error updating config:', error);
                                                                                                              +    }
                                                                                                              +  }
                                                                                                              +
                                                                                                              +  toggleConfigPanel(): void {
                                                                                                              +    this.showConfigPanel = !this.showConfigPanel;
                                                                                                              +  }
                                                                                                              +
                                                                                                              +  refreshPreview(): void {
                                                                                                              +    if (this.previewFrame?.nativeElement) {
                                                                                                              +      this.previewFrame.nativeElement.src = this.previewFrame.nativeElement.src;
                                                                                                              +    }
                                                                                                              +  }
                                                                                                              +
                                                                                                              +  resetToDefault(): void {
                                                                                                              +    // Implementation for resetting to default templates
                                                                                                              +    if (confirm('Are you sure you want to reset all templates to their default values? This action cannot be undone.')) {
                                                                                                              +      // TODO: Implement reset functionality
                                                                                                              +      console.log('Reset to default templates');
                                                                                                              +    }
                                                                                                              +  }
                                                                                                              +
                                                                                                              +  async exportZip(): Promise<void> {
                                                                                                              +    try {
                                                                                                              +      if (!this.sessionId) {
                                                                                                              +        console.error('No active session. Please refresh the page and try again.');
                                                                                                              +        return;
                                                                                                              +      }
                                                                                                              +
                                                                                                              +      console.log('Creating template package...');
                                                                                                              +
                                                                                                              +      // Call server-side ZIP creation endpoint for all templates
                                                                                                              +      const response = await this.http.post(`/api/session/${this.sessionId}/download-all-templates`, {}, {
                                                                                                              +        responseType: 'blob',
                                                                                                              +        observe: 'response'
                                                                                                              +      }).toPromise();
                                                                                                              +
                                                                                                              +      if (!response || !response.body) {
                                                                                                              +        throw new Error('Failed to create template package');
                                                                                                              +      }
                                                                                                              +
                                                                                                              +      // Get the ZIP file as a blob
                                                                                                              +      const zipBlob = response.body;
                                                                                                              +
                                                                                                              +      // Get filename from response headers or construct it
                                                                                                              +      const contentDisposition = response.headers.get('Content-Disposition');
                                                                                                              +      let filename = `compodoc-templates-${this.sessionId}.zip`;
                                                                                                              +
                                                                                                              +      if (contentDisposition) {
                                                                                                              +        const filenameMatch = contentDisposition.match(/filename="([^"]+)"/);
                                                                                                              +        if (filenameMatch) {
                                                                                                              +          filename = filenameMatch[1];
                                                                                                              +        }
                                                                                                              +      }
                                                                                                              +
                                                                                                              +      // Create download link and trigger download
                                                                                                              +      const url = URL.createObjectURL(zipBlob);
                                                                                                              +      const a = document.createElement('a');
                                                                                                              +      a.href = url;
                                                                                                              +      a.download = filename;
                                                                                                              +      document.body.appendChild(a);
                                                                                                              +      a.click();
                                                                                                              +      document.body.removeChild(a);
                                                                                                              +      URL.revokeObjectURL(url);
                                                                                                              +
                                                                                                              +      console.log('Template package downloaded successfully!');
                                                                                                              +    } catch (error) {
                                                                                                              +      console.error('Error downloading template package:', error);
                                                                                                              +    }
                                                                                                              +  }
                                                                                                              +
                                                                                                              +  trackByName(index: number, item: Template): string {
                                                                                                              +    return item.name;
                                                                                                              +  }
                                                                                                              +}
                                                                                                              +
                                                                                                              +
                                                                                                              +
                                                                                                              + + + + + + + + +
                                                                                                              +
                                                                                                              +

                                                                                                              results matching ""

                                                                                                              +
                                                                                                                +
                                                                                                                +
                                                                                                                +

                                                                                                                No results matching ""

                                                                                                                +
                                                                                                                +
                                                                                                                +
                                                                                                                + +
                                                                                                                +
                                                                                                                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/interfaces/Template.html b/backend/documentation/interfaces/Template.html new file mode 100644 index 0000000..2729677 --- /dev/null +++ b/backend/documentation/interfaces/Template.html @@ -0,0 +1,989 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                                                                                                                +
                                                                                                                + + +
                                                                                                                +
                                                                                                                + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                +
                                                                                                                +

                                                                                                                +

                                                                                                                File

                                                                                                                +

                                                                                                                +

                                                                                                                + documentation/template-playground/template-playground.component.ts +

                                                                                                                + + + + +
                                                                                                                +

                                                                                                                Index

                                                                                                                + + + + + + + + + +
                                                                                                                +
                                                                                                                Properties
                                                                                                                +
                                                                                                                + +
                                                                                                                +
                                                                                                                + + + +
                                                                                                                +

                                                                                                                Properties

                                                                                                                + + + + + + + + + + + + + + + + + + + +
                                                                                                                + + name + + + + +
                                                                                                                + name: string + +
                                                                                                                + Type : string + +
                                                                                                                + + + + + + + + + + + + + + + + + + + +
                                                                                                                + + path + + + + +
                                                                                                                + path: string + +
                                                                                                                + Type : string + +
                                                                                                                + + + + + + + + + + + + + + + + + + + +
                                                                                                                + + type + + + + +
                                                                                                                + type: "template" | "partial" + +
                                                                                                                + Type : "template" | "partial" + +
                                                                                                                +
                                                                                                                +
                                                                                                                + + +
                                                                                                                +
                                                                                                                import { Component, OnInit, ViewChild, ElementRef, OnDestroy } from '@angular/core';
                                                                                                                +import { HttpClient } from '@angular/common/http';
                                                                                                                +import { TemplateEditorService } from './template-editor.service';
                                                                                                                +import { ZipExportService } from './zip-export.service';
                                                                                                                +import { HbsRenderService } from './hbs-render.service';
                                                                                                                +
                                                                                                                +interface Template {
                                                                                                                +  name: string;
                                                                                                                +  path: string;
                                                                                                                +  type: 'template' | 'partial';
                                                                                                                +}
                                                                                                                +
                                                                                                                +interface Session {
                                                                                                                +  sessionId: string;
                                                                                                                +  success: boolean;
                                                                                                                +  message: string;
                                                                                                                +}
                                                                                                                +
                                                                                                                +interface CompoDocConfig {
                                                                                                                +  hideGenerator?: boolean;
                                                                                                                +  disableSourceCode?: boolean;
                                                                                                                +  disableGraph?: boolean;
                                                                                                                +  disableCoverage?: boolean;
                                                                                                                +  disablePrivate?: boolean;
                                                                                                                +  disableProtected?: boolean;
                                                                                                                +  disableInternal?: boolean;
                                                                                                                +  disableLifeCycleHooks?: boolean;
                                                                                                                +  disableConstructors?: boolean;
                                                                                                                +  disableRoutesGraph?: boolean;
                                                                                                                +  disableSearch?: boolean;
                                                                                                                +  disableDependencies?: boolean;
                                                                                                                +  disableProperties?: boolean;
                                                                                                                +  disableDomTree?: boolean;
                                                                                                                +  disableTemplateTab?: boolean;
                                                                                                                +  disableStyleTab?: boolean;
                                                                                                                +  disableMainGraph?: boolean;
                                                                                                                +  disableFilePath?: boolean;
                                                                                                                +  disableOverview?: boolean;
                                                                                                                +  hideDarkModeToggle?: boolean;
                                                                                                                +  minimal?: boolean;
                                                                                                                +  customFavicon?: string;
                                                                                                                +  includes?: string;
                                                                                                                +  includesName?: string;
                                                                                                                +}
                                                                                                                +
                                                                                                                +@Component({
                                                                                                                +  selector: 'template-playground-root',
                                                                                                                +  template: `
                                                                                                                +    <div class="template-playground">
                                                                                                                +      <div class="template-playground-header">
                                                                                                                +        <h2>Template Playground</h2>
                                                                                                                +        <div class="template-playground-status">
                                                                                                                +          <span *ngIf="sessionId" class="session-info">Session: {{sessionId.substring(0, 8)}}...</span>
                                                                                                                +          <span *ngIf="saving" class="saving-indicator">Saving...</span>
                                                                                                                +          <span *ngIf="lastSaved" class="last-saved">Last saved: {{lastSaved | date:'short'}}</span>
                                                                                                                +        </div>
                                                                                                                +        <div class="template-playground-actions">
                                                                                                                +          <button class="btn btn-secondary" (click)="toggleConfigPanel()">⚙️ Config</button>
                                                                                                                +          <button class="btn btn-primary" (click)="resetToDefault()">Reset to Default</button>
                                                                                                                +          <button class="btn btn-success" (click)="exportZip()">Download Templates</button>
                                                                                                                +        </div>
                                                                                                                +      </div>
                                                                                                                +
                                                                                                                +      <!-- Configuration Panel -->
                                                                                                                +      <div class="config-panel" [class.collapsed]="!showConfigPanel">
                                                                                                                +        <h3>CompoDoc Configuration</h3>
                                                                                                                +        <div class="config-options">
                                                                                                                +          <label><input type="checkbox" [(ngModel)]="config.hideGenerator" (change)="updateConfig()"> Hide Generator</label>
                                                                                                                +          <label><input type="checkbox" [(ngModel)]="config.hideDarkModeToggle" (change)="updateConfig()"> Hide Dark Mode Toggle</label>
                                                                                                                +          <label><input type="checkbox" [(ngModel)]="config.minimal" (change)="updateConfig()"> Minimal Mode</label>
                                                                                                                +          <label><input type="checkbox" [(ngModel)]="config.disableOverview" (change)="updateConfig()"> Disable Overview</label>
                                                                                                                +          <label><input type="checkbox" [(ngModel)]="config.disableFilePath" (change)="updateConfig()"> Disable File Path</label>
                                                                                                                +          <label><input type="checkbox" [(ngModel)]="config.disableSourceCode" (change)="updateConfig()"> Disable Source Code</label>
                                                                                                                +          <label><input type="checkbox" [(ngModel)]="config.disableGraph" (change)="updateConfig()"> Disable Graph</label>
                                                                                                                +          <label><input type="checkbox" [(ngModel)]="config.disableMainGraph" (change)="updateConfig()"> Disable Main Graph</label>
                                                                                                                +          <label><input type="checkbox" [(ngModel)]="config.disableRoutesGraph" (change)="updateConfig()"> Disable Routes Graph</label>
                                                                                                                +          <label><input type="checkbox" [(ngModel)]="config.disableCoverage" (change)="updateConfig()"> Disable Coverage</label>
                                                                                                                +          <label><input type="checkbox" [(ngModel)]="config.disableSearch" (change)="updateConfig()"> Disable Search</label>
                                                                                                                +          <label><input type="checkbox" [(ngModel)]="config.disableDependencies" (change)="updateConfig()"> Disable Dependencies</label>
                                                                                                                +          <label><input type="checkbox" [(ngModel)]="config.disablePrivate" (change)="updateConfig()"> Disable Private</label>
                                                                                                                +          <label><input type="checkbox" [(ngModel)]="config.disableProtected" (change)="updateConfig()"> Disable Protected</label>
                                                                                                                +          <label><input type="checkbox" [(ngModel)]="config.disableInternal" (change)="updateConfig()"> Disable Internal</label>
                                                                                                                +          <label><input type="checkbox" [(ngModel)]="config.disableLifeCycleHooks" (change)="updateConfig()"> Disable Lifecycle Hooks</label>
                                                                                                                +          <label><input type="checkbox" [(ngModel)]="config.disableConstructors" (change)="updateConfig()"> Disable Constructors</label>
                                                                                                                +          <label><input type="checkbox" [(ngModel)]="config.disableProperties" (change)="updateConfig()"> Disable Properties</label>
                                                                                                                +          <label><input type="checkbox" [(ngModel)]="config.disableDomTree" (change)="updateConfig()"> Disable DOM Tree</label>
                                                                                                                +          <label><input type="checkbox" [(ngModel)]="config.disableTemplateTab" (change)="updateConfig()"> Disable Template Tab</label>
                                                                                                                +          <label><input type="checkbox" [(ngModel)]="config.disableStyleTab" (change)="updateConfig()"> Disable Style Tab</label>
                                                                                                                +        </div>
                                                                                                                +      </div>
                                                                                                                +
                                                                                                                +      <div class="template-playground-body">
                                                                                                                +        <div class="template-playground-sidebar">
                                                                                                                +          <div class="template-file-list">
                                                                                                                +            <h3>Templates</h3>
                                                                                                                +            <ul class="file-list">
                                                                                                                +              <li *ngFor="let template of templates; trackBy: trackByName"
                                                                                                                +                  [class.active]="selectedFile === template"
                                                                                                                +                  (click)="selectFile(template)">
                                                                                                                +                <i class="file-icon ion-document-text"></i>
                                                                                                                +                {{template.name}}
                                                                                                                +                <span class="file-type">{{template.type}}</span>
                                                                                                                +              </li>
                                                                                                                +            </ul>
                                                                                                                +
                                                                                                                +            <div *ngIf="templates.length === 0" class="loading-templates">
                                                                                                                +              Loading templates...
                                                                                                                +            </div>
                                                                                                                +          </div>
                                                                                                                +        </div>
                                                                                                                +
                                                                                                                +        <div class="template-playground-main">
                                                                                                                +          <div class="template-playground-editor">
                                                                                                                +            <div class="editor-header" *ngIf="selectedFile">
                                                                                                                +              <h4>{{selectedFile.path}}</h4>
                                                                                                                +              <span class="file-type-badge">{{selectedFile.type}}</span>
                                                                                                                +            </div>
                                                                                                                +            <div #editorContainer class="editor-container"></div>
                                                                                                                +          </div>
                                                                                                                +
                                                                                                                +          <div class="template-playground-preview">
                                                                                                                +            <div class="preview-header">
                                                                                                                +              <h4>Live Preview</h4>
                                                                                                                +              <button class="btn btn-sm btn-secondary" (click)="refreshPreview()">🔄 Refresh</button>
                                                                                                                +            </div>
                                                                                                                +            <iframe #previewFrame class="preview-frame" [src]="previewUrl"></iframe>
                                                                                                                +          </div>
                                                                                                                +        </div>
                                                                                                                +      </div>
                                                                                                                +    </div>
                                                                                                                +  `,
                                                                                                                +  styles: [`
                                                                                                                +    .template-playground {
                                                                                                                +      display: flex;
                                                                                                                +      flex-direction: column;
                                                                                                                +      height: 100vh;
                                                                                                                +      font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
                                                                                                                +    }
                                                                                                                +
                                                                                                                +    .template-playground-header {
                                                                                                                +      display: flex;
                                                                                                                +      justify-content: space-between;
                                                                                                                +      align-items: center;
                                                                                                                +      padding: 1rem 2rem;
                                                                                                                +      background: #f8f9fa;
                                                                                                                +      border-bottom: 1px solid #dee2e6;
                                                                                                                +    }
                                                                                                                +
                                                                                                                +    .template-playground-status {
                                                                                                                +      display: flex;
                                                                                                                +      align-items: center;
                                                                                                                +      gap: 1rem;
                                                                                                                +      font-size: 0.875rem;
                                                                                                                +    }
                                                                                                                +
                                                                                                                +    .session-info {
                                                                                                                +      color: #6c757d;
                                                                                                                +      font-family: monospace;
                                                                                                                +    }
                                                                                                                +
                                                                                                                +    .saving-indicator {
                                                                                                                +      color: #ffc107;
                                                                                                                +      font-weight: bold;
                                                                                                                +    }
                                                                                                                +
                                                                                                                +    .last-saved {
                                                                                                                +      color: #28a745;
                                                                                                                +    }
                                                                                                                +
                                                                                                                +    .template-playground-actions {
                                                                                                                +      display: flex;
                                                                                                                +      gap: 0.5rem;
                                                                                                                +    }
                                                                                                                +
                                                                                                                +    .config-panel {
                                                                                                                +      background: #e9ecef;
                                                                                                                +      padding: 1rem 2rem;
                                                                                                                +      border-bottom: 1px solid #dee2e6;
                                                                                                                +      transition: all 0.3s ease;
                                                                                                                +      max-height: 200px;
                                                                                                                +      overflow: hidden;
                                                                                                                +    }
                                                                                                                +
                                                                                                                +    .config-panel.collapsed {
                                                                                                                +      max-height: 0;
                                                                                                                +      padding: 0 2rem;
                                                                                                                +    }
                                                                                                                +
                                                                                                                +    .config-options {
                                                                                                                +      display: grid;
                                                                                                                +      grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
                                                                                                                +      gap: 0.5rem;
                                                                                                                +      margin-top: 0.5rem;
                                                                                                                +    }
                                                                                                                +
                                                                                                                +    .config-options label {
                                                                                                                +      display: flex;
                                                                                                                +      align-items: center;
                                                                                                                +      gap: 0.5rem;
                                                                                                                +      font-size: 0.875rem;
                                                                                                                +    }
                                                                                                                +
                                                                                                                +    .template-playground-body {
                                                                                                                +      display: flex;
                                                                                                                +      flex: 1;
                                                                                                                +      overflow: hidden;
                                                                                                                +    }
                                                                                                                +
                                                                                                                +    .template-playground-sidebar {
                                                                                                                +      width: 250px;
                                                                                                                +      background: #f8f9fa;
                                                                                                                +      border-right: 1px solid #dee2e6;
                                                                                                                +      overflow-y: auto;
                                                                                                                +    }
                                                                                                                +
                                                                                                                +    .template-file-list {
                                                                                                                +      padding: 1rem;
                                                                                                                +    }
                                                                                                                +
                                                                                                                +    .template-file-list h3 {
                                                                                                                +      margin: 0 0 0.5rem 0;
                                                                                                                +      font-size: 0.875rem;
                                                                                                                +      font-weight: 600;
                                                                                                                +      color: #495057;
                                                                                                                +      text-transform: uppercase;
                                                                                                                +      letter-spacing: 0.5px;
                                                                                                                +    }
                                                                                                                +
                                                                                                                +    .file-list {
                                                                                                                +      list-style: none;
                                                                                                                +      padding: 0;
                                                                                                                +      margin: 0 0 1.5rem 0;
                                                                                                                +    }
                                                                                                                +
                                                                                                                +    .file-list li {
                                                                                                                +      display: flex;
                                                                                                                +      align-items: center;
                                                                                                                +      padding: 0.5rem;
                                                                                                                +      cursor: pointer;
                                                                                                                +      border-radius: 4px;
                                                                                                                +      font-size: 0.875rem;
                                                                                                                +      transition: background-color 0.15s ease;
                                                                                                                +    }
                                                                                                                +
                                                                                                                +    .file-list li:hover {
                                                                                                                +      background: #e9ecef;
                                                                                                                +    }
                                                                                                                +
                                                                                                                +    .file-list li.active {
                                                                                                                +      background: #007bff;
                                                                                                                +      color: white;
                                                                                                                +    }
                                                                                                                +
                                                                                                                +    .file-icon {
                                                                                                                +      margin-right: 0.5rem;
                                                                                                                +      opacity: 0.7;
                                                                                                                +    }
                                                                                                                +
                                                                                                                +    .file-type {
                                                                                                                +      margin-left: auto;
                                                                                                                +      font-size: 0.75rem;
                                                                                                                +      opacity: 0.7;
                                                                                                                +      text-transform: uppercase;
                                                                                                                +    }
                                                                                                                +
                                                                                                                +    .loading-templates {
                                                                                                                +      text-align: center;
                                                                                                                +      color: #6c757d;
                                                                                                                +      font-style: italic;
                                                                                                                +      padding: 2rem;
                                                                                                                +    }
                                                                                                                +
                                                                                                                +    .template-playground-main {
                                                                                                                +      flex: 1;
                                                                                                                +      display: flex;
                                                                                                                +      overflow: hidden;
                                                                                                                +    }
                                                                                                                +
                                                                                                                +    .template-playground-editor {
                                                                                                                +      width: 50%;
                                                                                                                +      display: flex;
                                                                                                                +      flex-direction: column;
                                                                                                                +      border-right: 1px solid #dee2e6;
                                                                                                                +    }
                                                                                                                +
                                                                                                                +    .editor-header {
                                                                                                                +      display: flex;
                                                                                                                +      justify-content: space-between;
                                                                                                                +      align-items: center;
                                                                                                                +      padding: 0.75rem 1rem;
                                                                                                                +      background: #f8f9fa;
                                                                                                                +      border-bottom: 1px solid #dee2e6;
                                                                                                                +    }
                                                                                                                +
                                                                                                                +    .editor-header h4 {
                                                                                                                +      margin: 0;
                                                                                                                +      font-size: 0.875rem;
                                                                                                                +      font-weight: 600;
                                                                                                                +    }
                                                                                                                +
                                                                                                                +    .file-type-badge {
                                                                                                                +      background: #6c757d;
                                                                                                                +      color: white;
                                                                                                                +      padding: 0.125rem 0.5rem;
                                                                                                                +      border-radius: 12px;
                                                                                                                +      font-size: 0.75rem;
                                                                                                                +      text-transform: uppercase;
                                                                                                                +    }
                                                                                                                +
                                                                                                                +    .editor-container {
                                                                                                                +      flex: 1;
                                                                                                                +      position: relative;
                                                                                                                +    }
                                                                                                                +
                                                                                                                +    .template-playground-preview {
                                                                                                                +      width: 50%;
                                                                                                                +      display: flex;
                                                                                                                +      flex-direction: column;
                                                                                                                +    }
                                                                                                                +
                                                                                                                +    .preview-header {
                                                                                                                +      display: flex;
                                                                                                                +      justify-content: space-between;
                                                                                                                +      align-items: center;
                                                                                                                +      padding: 0.75rem 1rem;
                                                                                                                +      background: #f8f9fa;
                                                                                                                +      border-bottom: 1px solid #dee2e6;
                                                                                                                +    }
                                                                                                                +
                                                                                                                +    .preview-header h4 {
                                                                                                                +      margin: 0;
                                                                                                                +      font-size: 0.875rem;
                                                                                                                +      font-weight: 600;
                                                                                                                +    }
                                                                                                                +
                                                                                                                +    .preview-frame {
                                                                                                                +      flex: 1;
                                                                                                                +      border: none;
                                                                                                                +      background: white;
                                                                                                                +    }
                                                                                                                +
                                                                                                                +    .btn {
                                                                                                                +      padding: 0.375rem 0.75rem;
                                                                                                                +      border: 1px solid transparent;
                                                                                                                +      border-radius: 0.25rem;
                                                                                                                +      font-size: 0.875rem;
                                                                                                                +      font-weight: 500;
                                                                                                                +      text-decoration: none;
                                                                                                                +      cursor: pointer;
                                                                                                                +      transition: all 0.15s ease;
                                                                                                                +    }
                                                                                                                +
                                                                                                                +    .btn-primary {
                                                                                                                +      background: #007bff;
                                                                                                                +      border-color: #007bff;
                                                                                                                +      color: white;
                                                                                                                +    }
                                                                                                                +
                                                                                                                +    .btn-primary:hover {
                                                                                                                +      background: #0056b3;
                                                                                                                +      border-color: #004085;
                                                                                                                +    }
                                                                                                                +
                                                                                                                +    .btn-secondary {
                                                                                                                +      background: #6c757d;
                                                                                                                +      border-color: #6c757d;
                                                                                                                +      color: white;
                                                                                                                +    }
                                                                                                                +
                                                                                                                +    .btn-secondary:hover {
                                                                                                                +      background: #545b62;
                                                                                                                +      border-color: #4e555b;
                                                                                                                +    }
                                                                                                                +
                                                                                                                +    .btn-success {
                                                                                                                +      background: #28a745;
                                                                                                                +      border-color: #28a745;
                                                                                                                +      color: white;
                                                                                                                +    }
                                                                                                                +
                                                                                                                +    .btn-success:hover {
                                                                                                                +      background: #1e7e34;
                                                                                                                +      border-color: #1c7430;
                                                                                                                +    }
                                                                                                                +
                                                                                                                +    .btn-sm {
                                                                                                                +      padding: 0.25rem 0.5rem;
                                                                                                                +      font-size: 0.75rem;
                                                                                                                +    }
                                                                                                                +  `]
                                                                                                                +})
                                                                                                                +export class TemplatePlaygroundComponent implements OnInit, OnDestroy {
                                                                                                                +  @ViewChild('editorContainer', { static: true }) editorContainer!: ElementRef;
                                                                                                                +  @ViewChild('previewFrame', { static: true }) previewFrame!: ElementRef;
                                                                                                                +
                                                                                                                +  sessionId: string = '';
                                                                                                                +  templates: Template[] = [];
                                                                                                                +  selectedFile: Template | null = null;
                                                                                                                +  config: CompoDocConfig = {};
                                                                                                                +  showConfigPanel: boolean = false;
                                                                                                                +  saving: boolean = false;
                                                                                                                +  lastSaved: Date | null = null;
                                                                                                                +
                                                                                                                +  private saveTimeout?: number;
                                                                                                                +  private readonly SAVE_DELAY = 300; // 300ms debounce
                                                                                                                +
                                                                                                                +  get previewUrl(): string {
                                                                                                                +    return this.sessionId ? `/api/session/${this.sessionId}/docs/` : '';
                                                                                                                +  }
                                                                                                                +
                                                                                                                +  constructor(
                                                                                                                +    private http: HttpClient,
                                                                                                                +    private editorService: TemplateEditorService,
                                                                                                                +    private zipService: ZipExportService,
                                                                                                                +    private hbsService: HbsRenderService
                                                                                                                +  ) {}
                                                                                                                +
                                                                                                                +  async ngOnInit() {
                                                                                                                +    try {
                                                                                                                +      await this.createSession();
                                                                                                                +      await this.loadSessionTemplates();
                                                                                                                +      await this.loadSessionConfig();
                                                                                                                +      this.initializeEditor();
                                                                                                                +    } catch (error) {
                                                                                                                +      console.error('Error initializing template playground:', error);
                                                                                                                +    }
                                                                                                                +  }
                                                                                                                +
                                                                                                                +  ngOnDestroy() {
                                                                                                                +    if (this.saveTimeout) {
                                                                                                                +      clearTimeout(this.saveTimeout);
                                                                                                                +    }
                                                                                                                +  }
                                                                                                                +
                                                                                                                +  private async createSession(): Promise<void> {
                                                                                                                +    const response = await this.http.post<Session>('/api/session/create', {}).toPromise();
                                                                                                                +    if (response && response.success) {
                                                                                                                +      this.sessionId = response.sessionId;
                                                                                                                +      console.log('Session created:', this.sessionId);
                                                                                                                +    } else {
                                                                                                                +      throw new Error('Failed to create session');
                                                                                                                +    }
                                                                                                                +  }
                                                                                                                +
                                                                                                                +  private async loadSessionTemplates(): Promise<void> {
                                                                                                                +    if (!this.sessionId) return;
                                                                                                                +
                                                                                                                +    const response = await this.http.get<{templates: Template[], success: boolean}>(`/api/session/${this.sessionId}/templates`).toPromise();
                                                                                                                +    if (response && response.success) {
                                                                                                                +      this.templates = response.templates;
                                                                                                                +
                                                                                                                +      // Auto-select the first template
                                                                                                                +      if (this.templates.length > 0 && !this.selectedFile) {
                                                                                                                +        this.selectFile(this.templates[0]);
                                                                                                                +      }
                                                                                                                +    }
                                                                                                                +  }
                                                                                                                +
                                                                                                                +  private async loadSessionConfig(): Promise<void> {
                                                                                                                +    if (!this.sessionId) return;
                                                                                                                +
                                                                                                                +    const response = await this.http.get<{config: CompoDocConfig, success: boolean}>(`/api/session/${this.sessionId}/config`).toPromise();
                                                                                                                +    if (response && response.success) {
                                                                                                                +      this.config = response.config;
                                                                                                                +    }
                                                                                                                +  }
                                                                                                                +
                                                                                                                +  initializeEditor() {
                                                                                                                +    this.editorService.initializeEditor(this.editorContainer.nativeElement);
                                                                                                                +
                                                                                                                +    // Set up debounced save on content change
                                                                                                                +    this.editorService.setOnChangeCallback((content: string) => {
                                                                                                                +      this.scheduleAutoSave(content);
                                                                                                                +    });
                                                                                                                +  }
                                                                                                                +
                                                                                                                +  async selectFile(template: Template) {
                                                                                                                +    this.selectedFile = template;
                                                                                                                +
                                                                                                                +    if (!this.sessionId) return;
                                                                                                                +
                                                                                                                +    try {
                                                                                                                +      const response = await this.http.get<{content: string, success: boolean}>(`/api/session/${this.sessionId}/template/${template.path}`).toPromise();
                                                                                                                +      if (response && response.success) {
                                                                                                                +        this.editorService.setEditorContent(response.content, template.type === 'template' ? 'handlebars' : 'handlebars');
                                                                                                                +      }
                                                                                                                +    } catch (error) {
                                                                                                                +      console.error('Error loading template:', error);
                                                                                                                +    }
                                                                                                                +  }
                                                                                                                +
                                                                                                                +  private scheduleAutoSave(content: string): void {
                                                                                                                +    if (!this.selectedFile || !this.sessionId) return;
                                                                                                                +
                                                                                                                +    // Clear existing timeout
                                                                                                                +    if (this.saveTimeout) {
                                                                                                                +      clearTimeout(this.saveTimeout);
                                                                                                                +    }
                                                                                                                +
                                                                                                                +    // Set saving indicator
                                                                                                                +    this.saving = true;
                                                                                                                +
                                                                                                                +    // Schedule new save
                                                                                                                +    this.saveTimeout = window.setTimeout(async () => {
                                                                                                                +      try {
                                                                                                                +        await this.saveTemplate(content);
                                                                                                                +        this.saving = false;
                                                                                                                +        this.lastSaved = new Date();
                                                                                                                +      } catch (error) {
                                                                                                                +        console.error('Error saving template:', error);
                                                                                                                +        this.saving = false;
                                                                                                                +      }
                                                                                                                +    }, this.SAVE_DELAY);
                                                                                                                +  }
                                                                                                                +
                                                                                                                +  private async saveTemplate(content: string): Promise<void> {
                                                                                                                +    if (!this.selectedFile || !this.sessionId) return;
                                                                                                                +
                                                                                                                +    const response = await this.http.post<{success: boolean}>(`/api/session/${this.sessionId}/template/${this.selectedFile.path}`, {
                                                                                                                +      content
                                                                                                                +    }).toPromise();
                                                                                                                +
                                                                                                                +    if (!response || !response.success) {
                                                                                                                +      throw new Error('Failed to save template');
                                                                                                                +    }
                                                                                                                +  }
                                                                                                                +
                                                                                                                +  async updateConfig(): Promise<void> {
                                                                                                                +    if (!this.sessionId) return;
                                                                                                                +
                                                                                                                +    try {
                                                                                                                +      const response = await this.http.post<{success: boolean}>(`/api/session/${this.sessionId}/config`, {
                                                                                                                +        config: this.config
                                                                                                                +      }).toPromise();
                                                                                                                +
                                                                                                                +      if (response && response.success) {
                                                                                                                +        // Config updated, documentation will be regenerated automatically
                                                                                                                +      }
                                                                                                                +    } catch (error) {
                                                                                                                +      console.error('Error updating config:', error);
                                                                                                                +    }
                                                                                                                +  }
                                                                                                                +
                                                                                                                +  toggleConfigPanel(): void {
                                                                                                                +    this.showConfigPanel = !this.showConfigPanel;
                                                                                                                +  }
                                                                                                                +
                                                                                                                +  refreshPreview(): void {
                                                                                                                +    if (this.previewFrame?.nativeElement) {
                                                                                                                +      this.previewFrame.nativeElement.src = this.previewFrame.nativeElement.src;
                                                                                                                +    }
                                                                                                                +  }
                                                                                                                +
                                                                                                                +  resetToDefault(): void {
                                                                                                                +    // Implementation for resetting to default templates
                                                                                                                +    if (confirm('Are you sure you want to reset all templates to their default values? This action cannot be undone.')) {
                                                                                                                +      // TODO: Implement reset functionality
                                                                                                                +      console.log('Reset to default templates');
                                                                                                                +    }
                                                                                                                +  }
                                                                                                                +
                                                                                                                +  async exportZip(): Promise<void> {
                                                                                                                +    try {
                                                                                                                +      if (!this.sessionId) {
                                                                                                                +        console.error('No active session. Please refresh the page and try again.');
                                                                                                                +        return;
                                                                                                                +      }
                                                                                                                +
                                                                                                                +      console.log('Creating template package...');
                                                                                                                +
                                                                                                                +      // Call server-side ZIP creation endpoint for all templates
                                                                                                                +      const response = await this.http.post(`/api/session/${this.sessionId}/download-all-templates`, {}, {
                                                                                                                +        responseType: 'blob',
                                                                                                                +        observe: 'response'
                                                                                                                +      }).toPromise();
                                                                                                                +
                                                                                                                +      if (!response || !response.body) {
                                                                                                                +        throw new Error('Failed to create template package');
                                                                                                                +      }
                                                                                                                +
                                                                                                                +      // Get the ZIP file as a blob
                                                                                                                +      const zipBlob = response.body;
                                                                                                                +
                                                                                                                +      // Get filename from response headers or construct it
                                                                                                                +      const contentDisposition = response.headers.get('Content-Disposition');
                                                                                                                +      let filename = `compodoc-templates-${this.sessionId}.zip`;
                                                                                                                +
                                                                                                                +      if (contentDisposition) {
                                                                                                                +        const filenameMatch = contentDisposition.match(/filename="([^"]+)"/);
                                                                                                                +        if (filenameMatch) {
                                                                                                                +          filename = filenameMatch[1];
                                                                                                                +        }
                                                                                                                +      }
                                                                                                                +
                                                                                                                +      // Create download link and trigger download
                                                                                                                +      const url = URL.createObjectURL(zipBlob);
                                                                                                                +      const a = document.createElement('a');
                                                                                                                +      a.href = url;
                                                                                                                +      a.download = filename;
                                                                                                                +      document.body.appendChild(a);
                                                                                                                +      a.click();
                                                                                                                +      document.body.removeChild(a);
                                                                                                                +      URL.revokeObjectURL(url);
                                                                                                                +
                                                                                                                +      console.log('Template package downloaded successfully!');
                                                                                                                +    } catch (error) {
                                                                                                                +      console.error('Error downloading template package:', error);
                                                                                                                +    }
                                                                                                                +  }
                                                                                                                +
                                                                                                                +  trackByName(index: number, item: Template): string {
                                                                                                                +    return item.name;
                                                                                                                +  }
                                                                                                                +}
                                                                                                                +
                                                                                                                +
                                                                                                                +
                                                                                                                + + + + + + + + +
                                                                                                                +
                                                                                                                +

                                                                                                                results matching ""

                                                                                                                +
                                                                                                                  +
                                                                                                                  +
                                                                                                                  +

                                                                                                                  No results matching ""

                                                                                                                  +
                                                                                                                  +
                                                                                                                  +
                                                                                                                  + +
                                                                                                                  +
                                                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/js/compodoc.js b/backend/documentation/js/compodoc.js new file mode 100644 index 0000000..8cc41d3 --- /dev/null +++ b/backend/documentation/js/compodoc.js @@ -0,0 +1,14 @@ +var compodoc = { + EVENTS: { + READY: 'compodoc.ready', + SEARCH_READY: 'compodoc.search.ready' + } +}; + +Object.assign( compodoc, EventDispatcher.prototype ); + +document.addEventListener('DOMContentLoaded', function() { + compodoc.dispatchEvent({ + type: compodoc.EVENTS.READY + }); +}); diff --git a/backend/documentation/js/lazy-load-graphs.js b/backend/documentation/js/lazy-load-graphs.js new file mode 100644 index 0000000..2ef47ca --- /dev/null +++ b/backend/documentation/js/lazy-load-graphs.js @@ -0,0 +1,44 @@ +document.addEventListener('DOMContentLoaded', function() { + var lazyGraphs = [].slice.call(document.querySelectorAll('[lazy]')); + var active = false; + + var lazyLoad = function() { + if (active === false) { + active = true; + + setTimeout(function() { + lazyGraphs.forEach(function(lazyGraph) { + if ( + lazyGraph.getBoundingClientRect().top <= window.innerHeight && + lazyGraph.getBoundingClientRect().bottom >= 0 && + getComputedStyle(lazyGraph).display !== 'none' + ) { + lazyGraph.data = lazyGraph.getAttribute('lazy'); + lazyGraph.removeAttribute('lazy'); + + lazyGraphs = lazyGraphs.filter(function(image) { return image !== lazyGraph}); + + if (lazyGraphs.length === 0) { + document.removeEventListener('scroll', lazyLoad); + window.removeEventListener('resize', lazyLoad); + window.removeEventListener('orientationchange', lazyLoad); + } + } + }); + + active = false; + }, 200); + } + }; + + // initial load + lazyLoad(); + + var container = document.querySelector('.container-fluid.modules'); + if (container) { + container.addEventListener('scroll', lazyLoad); + window.addEventListener('resize', lazyLoad); + window.addEventListener('orientationchange', lazyLoad); + } + +}); diff --git a/backend/documentation/js/libs/EventDispatcher.js b/backend/documentation/js/libs/EventDispatcher.js new file mode 100644 index 0000000..f112877 --- /dev/null +++ b/backend/documentation/js/libs/EventDispatcher.js @@ -0,0 +1,5 @@ +/** + * @author mrdoob / http://mrdoob.com/ + */ + +var EventDispatcher=function(){};Object.assign(EventDispatcher.prototype,{addEventListener:function(i,t){void 0===this._listeners&&(this._listeners={});var e=this._listeners;void 0===e[i]&&(e[i]=[]),-1===e[i].indexOf(t)&&e[i].push(t)},hasEventListener:function(i,t){if(void 0===this._listeners)return!1;var e=this._listeners;return void 0!==e[i]&&-1!==e[i].indexOf(t)},removeEventListener:function(i,t){if(void 0!==this._listeners){var e=this._listeners[i];if(void 0!==e){var s=e.indexOf(t);-1!==s&&e.splice(s,1)}}},dispatchEvent:function(i){if(void 0!==this._listeners){var t=this._listeners[i.type];if(void 0!==t){i.target=this;var e=[],s=0,n=t.length;for(s=0;s{const e=/iPhone|iPad|iPod|Android/i;return navigator?.userAgentData?.brands.some(t=>e.test(t.brand))||e.test(navigator?.userAgent)||!1},Yo=()=>{const e=/(iPhone|iPod|iPad)/;return navigator?.userAgentData?.brands.some(t=>e.test(t.brand))||e.test(navigator?.userAgent)||!1},be=()=>{},Zo=(e,t,s,n)=>{e.addEventListener(t,s,!1)},Qo=(e,t,s,n)=>{e.removeEventListener(t,s,!1)},U=(e,t)=>e.getAttribute(t),Ut=(e,t)=>e.hasAttribute(t),I=(e,t,s)=>e.setAttribute(t,s),yt=(e,t)=>e.removeAttribute(t),d=(e,...t)=>{e.classList.add(...t)},v=(e,...t)=>{e.classList.remove(...t)},h=(e,t)=>e.classList.contains(t),Yt=e=>e!=null&&typeof e=="object"||!1,P=e=>Yt(e)&&typeof e.nodeType=="number"&&[1,2,3,4,5,6,7,8,9,10,11].some(t=>e.nodeType===t)||!1,j=e=>P(e)&&e.nodeType===1||!1,Rt=new Map,Ct={data:Rt,set:(e,t,s)=>{j(e)&&(Rt.has(t)||Rt.set(t,new Map),Rt.get(t).set(e,s))},getAllFor:e=>Rt.get(e)||null,get:(e,t)=>{if(!j(e)||!t)return null;const s=Ct.getAllFor(t);return e&&s&&s.get(e)||null},remove:(e,t)=>{const s=Ct.getAllFor(t);!s||!j(e)||(s.delete(e),s.size===0&&Rt.delete(t))}},R=(e,t)=>Ct.get(e,t),Xs=e=>e?.trim().replace(/(?:^\w|[A-Z]|\b\w)/g,(t,s)=>s===0?t.toLowerCase():t.toUpperCase()).replace(/\s+/g,""),Zt=e=>typeof e=="string"||!1,qs=e=>Yt(e)&&e.constructor.name==="Window"||!1,Us=e=>P(e)&&e.nodeType===9||!1,b=e=>Us(e)?e:P(e)?e.ownerDocument:qs(e)?e.document:globalThis.document,rt=(e,...t)=>Object.assign(e,...t),ut=e=>{if(!e)return;if(Zt(e))return b().createElement(e);const{tagName:t}=e,s=ut(t);if(!s)return;const n={...e};return delete n.tagName,rt(s,n)},w=(e,t)=>e.dispatchEvent(t),F=(e,t,s)=>{const n=getComputedStyle(e,s),o=t.replace("webkit","Webkit").replace(/([A-Z])/g,"-$1").toLowerCase();return n.getPropertyValue(o)},Go=e=>{const t=F(e,Ks),s=F(e,Uo),n=s.includes("ms")?1:1e3,o=t&&t!=="none"?parseFloat(s)*n:0;return Number.isNaN(o)?0:o},Qt=e=>{const t=F(e,Ks),s=F(e,qo),n=s.includes("ms")?1:1e3,o=t&&t!=="none"?parseFloat(s)*n:0;return Number.isNaN(o)?0:o},_=(e,t)=>{let s=0;const n=new Event(Fe),o=Qt(e),i=Go(e);if(o){const r=a=>{a.target===e&&(t.apply(e,[a]),e.removeEventListener(Fe,r),s=1)};e.addEventListener(Fe,r),setTimeout(()=>{s||w(e,n)},o+i+17)}else t.apply(e,[n])},at=(e,t)=>e.focus(t),Ys=e=>["true",!0].includes(e)?!0:["false",!1].includes(e)?!1:["null","",null,void 0].includes(e)?null:e!==""&&!Number.isNaN(+e)?+e:e,we=e=>Object.entries(e),Jo=(e,t,s,n)=>{if(!j(e))return t;const o={...s},i={...e.dataset},r={...t},a={},c="title";return we(i).forEach(([l,f])=>{const p=typeof l=="string"&&l.includes(n)?Xs(l.replace(n,"")):Xs(l);a[p]=Ys(f)}),we(o).forEach(([l,f])=>{o[l]=Ys(f)}),we(t).forEach(([l,f])=>{l in o?r[l]=o[l]:l in a?r[l]=a[l]:r[l]=l===c?U(e,c):f}),r},Zs=e=>Object.keys(e),E=(e,t)=>{const s=new CustomEvent(e,{cancelable:!0,bubbles:!0});return Yt(t)&&rt(s,t),s},Gt={passive:!0},_t=e=>e.offsetHeight,S=(e,t)=>{we(t).forEach(([s,n])=>{if(n&&Zt(s)&&s.includes("--"))e.style.setProperty(s,n);else{const o={};o[s]=n,rt(e.style,o)}})},We=e=>Yt(e)&&e.constructor.name==="Map"||!1,ti=e=>typeof e=="number"||!1,gt=new Map,u={set:(e,t,s,n)=>{j(e)&&(n&&n.length?(gt.has(e)||gt.set(e,new Map),gt.get(e).set(n,setTimeout(t,s))):gt.set(e,setTimeout(t,s)))},get:(e,t)=>{if(!j(e))return null;const s=gt.get(e);return t&&s&&We(s)?s.get(t)||null:ti(s)?s:null},clear:(e,t)=>{if(!j(e))return;const s=gt.get(e);t&&t.length&&We(s)?(clearTimeout(s.get(t)),s.delete(t),s.size===0&>.delete(e)):(clearTimeout(s),gt.delete(e))}},Jt=e=>e.toLowerCase(),Y=(e,t)=>(P(t)?t:b()).querySelectorAll(e),je=new Map;function Qs(e){const{shiftKey:t,code:s}=e,n=b(this),o=[...Y(Xo,this)].filter(a=>!Ut(a,"disabled")&&!U(a,qt));if(!o.length)return;const i=o[0],r=o[o.length-1];s==="Tab"&&(t&&n.activeElement===i?(r.focus(),e.preventDefault()):!t&&n.activeElement===r&&(i.focus(),e.preventDefault()))}const ze=e=>je.has(e)===!0,ei=e=>{ze(e)||(Zo(e,"keydown",Qs),je.set(e,!0))},si=e=>{ze(e)&&(Qo(e,"keydown",Qs),je.delete(e))},Ee=e=>{ze(e)?si(e):ei(e)},H=e=>j(e)&&"offsetWidth"in e||!1,St=(e,t)=>{const{width:s,height:n,top:o,right:i,bottom:r,left:a}=e.getBoundingClientRect();let c=1,l=1;if(t&&H(e)){const{offsetWidth:f,offsetHeight:p}=e;c=f>0?Math.round(s)/f:1,l=p>0?Math.round(n)/p:1}return{width:s/c,height:n/l,top:o/l,right:i/c,bottom:r/l,left:a/c,x:a/c,y:o/l}},At=e=>b(e).body,ct=e=>b(e).documentElement,ni=e=>{const t=qs(e),s=t?e.scrollX:e.scrollLeft,n=t?e.scrollY:e.scrollTop;return{x:s,y:n}},Gs=e=>P(e)&&e.constructor.name==="ShadowRoot"||!1,oi=e=>e.nodeName==="HTML"?e:j(e)&&e.assignedSlot||P(e)&&e.parentNode||Gs(e)&&e.host||ct(e),Js=e=>e?Us(e)?e.defaultView:P(e)?e?.ownerDocument?.defaultView:e:window,ii=e=>P(e)&&["TABLE","TD","TH"].includes(e.nodeName)||!1,tn=(e,t)=>e.matches(t),ri=e=>{if(!H(e))return!1;const{width:t,height:s}=St(e),{offsetWidth:n,offsetHeight:o}=e;return Math.round(t)!==n||Math.round(s)!==o},ai=(e,t,s)=>{const n=H(t),o=St(e,n&&ri(t)),i={x:0,y:0};if(n){const r=St(t,!0);i.x=r.x+t.clientLeft,i.y=r.y+t.clientTop}return{x:o.left+s.x-i.x,y:o.top+s.y-i.y,width:o.width,height:o.height}};let en=0,sn=0;const Ft=new Map,nn=(e,t)=>{let s=t?en:sn;if(t){const n=nn(e),o=Ft.get(n)||new Map;Ft.has(n)||Ft.set(n,o),We(o)&&!o.has(t)?(o.set(t,s),en+=1):s=o.get(t)}else{const n=e.id||e;Ft.has(n)?s=Ft.get(n):(Ft.set(n,s),sn+=1)}return s},ci=e=>Array.isArray(e)||!1,on=e=>{if(!P(e))return!1;const{top:t,bottom:s}=St(e),{clientHeight:n}=ct(e);return t<=n&&s>=0},rn=e=>typeof e=="function"||!1,li=e=>Yt(e)&&e.constructor.name==="NodeList"||!1,pt=e=>ct(e).dir==="rtl",M=(e,t)=>!e||!t?null:e.closest(t)||M(e.getRootNode().host,t)||null,A=(e,t)=>j(e)?e:(j(t)?t:b()).querySelector(e),Ke=(e,t)=>(P(t)?t:b()).getElementsByTagName(e),di=(e,t)=>b(t).getElementById(e),lt=(e,t)=>(t&&P(t)?t:b()).getElementsByClassName(e),Wt={},an=e=>{const{type:t,currentTarget:s}=e;Wt[t].forEach((n,o)=>{s===o&&n.forEach((i,r)=>{r.apply(o,[e]),typeof i=="object"&&i.once&&O(o,t,r,i)})})},L=(e,t,s,n)=>{Wt[t]||(Wt[t]=new Map);const o=Wt[t];o.has(e)||o.set(e,new Map);const i=o.get(e),{size:r}=i;i.set(s,n),r||e.addEventListener(t,an,n)},O=(e,t,s,n)=>{const o=Wt[t],i=o&&o.get(e),r=i&&i.get(s),a=r!==void 0?r:n;i&&i.has(s)&&i.delete(s),o&&(!i||!i.size)&&o.delete(e),(!o||!o.size)&&delete Wt[t],(!i||!i.size)&&e.removeEventListener(t,an,a)},k="fade",g="show",Te="data-bs-dismiss",$e="alert",cn="Alert",ot=e=>h(e,"disabled")||U(e,"disabled")==="true",hi="5.1.6";class J{constructor(t,s){let n;try{if(j(t))n=t;else if(Zt(t)){if(n=A(t),!n)throw Error(`"${t}" is not a valid selector.`)}else throw Error("your target is not an instance of HTMLElement.")}catch(i){throw Error(`${this.name} Error: ${i.message}`)}const o=Ct.get(n,this.name);o&&o._toggleEventListeners(),this.element=n,this.options=this.defaults&&Zs(this.defaults).length?Jo(n,this.defaults,s||{},"bs"):{},Ct.set(n,this.name,this)}get version(){return hi}get name(){return"BaseComponent"}get defaults(){return{}}_toggleEventListeners=()=>{};dispose(){Ct.remove(this.element,this.name),Zs(this).forEach(t=>{delete this[t]})}}const fi=`.${$e}`,ui=`[${Te}="${$e}"]`,gi=e=>R(e,cn),pi=e=>new Ve(e),ln=E(`close.bs.${$e}`),mi=E(`closed.bs.${$e}`),dn=e=>{const{element:t}=e;w(t,mi),e._toggleEventListeners(),e.dispose(),t.remove()};class Ve extends J{static selector=fi;static init=pi;static getInstance=gi;dismiss;constructor(t){super(t),this.dismiss=A(ui,this.element),this._toggleEventListeners(!0)}get name(){return cn}close=t=>{const{element:s,dismiss:n}=this;!s||!h(s,g)||t&&n&&ot(n)||(w(s,ln),!ln.defaultPrevented&&(v(s,g),h(s,k)?_(s,()=>dn(this)):dn(this)))};_toggleEventListeners=t=>{const s=t?L:O,{dismiss:n,close:o}=this;n&&s(n,D,o)};dispose(){this._toggleEventListeners(),super.dispose()}}const T="active",it="data-bs-toggle",vi="button",hn="Button",bi=`[${it}="${vi}"]`,wi=e=>R(e,hn),Ei=e=>new Xe(e);class Xe extends J{static selector=bi;static init=Ei;static getInstance=wi;constructor(t){super(t);const{element:s}=this;this.isActive=h(s,T),I(s,Bs,String(!!this.isActive)),this._toggleEventListeners(!0)}get name(){return hn}toggle=t=>{t&&t.preventDefault();const{element:s,isActive:n}=this;if(ot(s))return;(n?v:d)(s,T),I(s,Bs,n?"false":"true"),this.isActive=h(s,T)};_toggleEventListeners=t=>{(t?L:O)(this.element,D,this.toggle)};dispose(){this._toggleEventListeners(),super.dispose()}}const qe="data-bs-target",Pt="carousel",fn="Carousel",un="data-bs-parent",Ti="data-bs-container",z=e=>{const t=[qe,un,Ti,"href"],s=b(e);return t.map(n=>{const o=U(e,n);return o?n===un?M(e,o):A(o,s):null}).filter(n=>n)[0]},te=`[data-bs-ride="${Pt}"]`,tt=`${Pt}-item`,Ue="data-bs-slide-to",mt="data-bs-slide",vt="paused",$i=Vs()?ve:Ws;console.log({isMobile:Vs(),touchEvent:$i});const gn={pause:"hover",keyboard:!1,touch:!0,interval:5e3},dt=e=>R(e,fn),yi=e=>new ts(e);let ee=0,ye=0,Ye=0;const Ze=E(`slide.bs.${Pt}`),Qe=E(`slid.bs.${Pt}`),pn=e=>{const{index:t,direction:s,element:n,slides:o,options:i}=e;if(e.isAnimating){const r=Je(e),a=s==="left"?"next":"prev",c=s==="left"?"start":"end";d(o[t],T),v(o[t],`${tt}-${a}`),v(o[t],`${tt}-${c}`),v(o[r],T),v(o[r],`${tt}-${c}`),w(n,Qe),u.clear(n,mt),e.cycle&&!b(n).hidden&&i.interval&&!e.isPaused&&e.cycle()}};function Ci(){const e=dt(this);e&&!e.isPaused&&!u.get(this,vt)&&d(this,vt)}function _i(){const e=dt(this);e&&e.isPaused&&!u.get(this,vt)&&e.cycle()}function Si(e){e.preventDefault();const t=M(this,te)||z(this),s=t&&dt(t);if(ot(this)||!s||s.isAnimating)return;const n=+(U(this,Ue)||0);this&&!h(this,T)&&!Number.isNaN(n)&&s.to(n)}function Ai(e){e.preventDefault();const t=M(this,te)||z(this),s=t&&dt(t);if(ot(this)||!s||s.isAnimating)return;const n=U(this,mt);n==="next"?s.next():n==="prev"&&s.prev()}const Pi=({code:e,target:t})=>{const s=b(t),[n]=[...Y(te,s)].filter(c=>on(c)),o=dt(n);if(!o||o.isAnimating||/textarea|input|select/i.test(t.nodeName))return;const i=pt(n);e===(i?zs:js)?o.prev():e===(i?js:zs)&&o.next()};function mn(e){const{target:t}=e,s=dt(this);s&&s.isTouch&&!s.controls.includes(t)&&!s.controls.includes(t?.parentElement)&&(!s.indicator||!s.indicator.contains(t))&&e.preventDefault()}function Hi(e){const{target:t}=e,s=dt(this);if(!s||s.isAnimating||s.isTouch)return;const{controls:n,indicator:o}=s;![...n,o].every(i=>i&&(i===t||i.contains(t)))&&this.contains(t)&&(ee=e.pageX,s.isTouch=!0,vn(s,!0))}const xi=e=>{ye=e.pageX},Di=e=>{const{target:t}=e,s=b(t),n=[...Y(te,s)].map(a=>dt(a)).find(a=>a.isTouch);if(!n)return;const{element:o,index:i}=n,r=pt(o);Ye=e.pageX,n.isTouch=!1,vn(n),!s.getSelection()?.toString().length&&o.contains(t)&&Math.abs(ee-Ye)>120&&(yeee&&n.to(i+(r?1:-1))),ee=0,ye=0,Ye=0},Ge=(e,t)=>{const{indicators:s}=e;[...s].forEach(n=>v(n,T)),e.indicators[t]&&d(s[t],T)},vn=(e,t)=>{const{element:s}=e,n=t?L:O;n(b(s),zo,xi,Gt),n(b(s),Ko,Di,Gt)},Je=e=>{const{slides:t,element:s}=e,n=A(`.${tt}.${T}`,s);return n?[...t].indexOf(n):-1};class ts extends J{static selector=te;static init=yi;static getInstance=dt;constructor(t,s){super(t,s);const{element:n}=this;this.direction=pt(n)?"right":"left",this.isTouch=!1,this.slides=lt(tt,n);const{slides:o}=this;if(o.length<2)return;const i=Je(this),r=[...o].find(l=>tn(l,`.${tt}-next`));this.index=i;const a=b(n);this.controls=[...Y(`[${mt}]`,n),...Y(`[${mt}][${qe}="#${n.id}"]`,a)].filter((l,f,p)=>f===p.indexOf(l)),this.indicator=A(`.${Pt}-indicators`,n),this.indicators=[...this.indicator?Y(`[${Ue}]`,this.indicator):[],...Y(`[${Ue}][${qe}="#${n.id}"]`,a)].filter((l,f,p)=>f===p.indexOf(l));const{options:c}=this;this.options.interval=c.interval===!0?gn.interval:c.interval,r?this.index=[...o].indexOf(r):i<0&&(this.index=0,d(o[0],T),this.indicators.length&&Ge(this,0)),this.indicators.length&&Ge(this,this.index),this._toggleEventListeners(!0),c.interval&&this.cycle()}get name(){return fn}get defaults(){return gn}get isPaused(){return h(this.element,vt)}get isAnimating(){return A(`.${tt}-next,.${tt}-prev`,this.element)!==null}cycle(){const{element:t,options:s,isPaused:n,index:o}=this;u.clear(t,Pt),n&&(u.clear(t,vt),v(t,vt)),u.set(t,()=>{this.element&&!this.isPaused&&!this.isTouch&&on(t)&&this.to(o+1)},s.interval,Pt)}pause(){const{element:t,options:s}=this;this.isPaused||!s.interval||(d(t,vt),u.set(t,()=>{},1,vt))}next(){this.isAnimating||this.to(this.index+1)}prev(){this.isAnimating||this.to(this.index-1)}to(t){const{element:s,slides:n,options:o}=this,i=Je(this),r=pt(s);let a=t;if(this.isAnimating||i===a||u.get(s,mt))return;ia||i===n.length-1&&a===0)&&(this.direction=r?"left":"right");const{direction:c}=this;a<0?a=n.length-1:a>=n.length&&(a=0);const l=c==="left"?"next":"prev",f=c==="left"?"start":"end",p={relatedTarget:n[a],from:i,to:a,direction:c};rt(Ze,p),rt(Qe,p),w(s,Ze),!Ze.defaultPrevented&&(this.index=a,Ge(this,a),Qt(n[a])&&h(s,"slide")?u.set(s,()=>{d(n[a],`${tt}-${l}`),_t(n[a]),d(n[a],`${tt}-${f}`),d(n[i],`${tt}-${f}`),_(n[a],()=>this.slides&&this.slides.length&&pn(this))},0,mt):(d(n[a],T),v(n[i],T),u.set(s,()=>{u.clear(s,mt),s&&o.interval&&!this.isPaused&&this.cycle(),w(s,Qe)},0,mt)))}_toggleEventListeners=t=>{const{element:s,options:n,slides:o,controls:i,indicators:r}=this,{touch:a,pause:c,interval:l,keyboard:f}=n,p=t?L:O;c&&l&&(p(s,me,Ci),p(s,Ne,_i)),a&&o.length>2&&(p(s,Ws,Hi,Gt),p(s,ve,mn,{passive:!1}),p(s,Vo,mn,{passive:!1})),i.length&&i.forEach(y=>{p(y,D,Ai)}),r.length&&r.forEach(y=>{p(y,D,Si)}),f&&p(b(s),pe,Pi)};dispose(){const{isAnimating:t}=this,s={...this,isAnimating:t};this._toggleEventListeners(),super.dispose(),s.isAnimating&&_(s.slides[s.index],()=>{pn(s)})}}const Ht="collapsing",K="collapse",bn="Collapse",Ii=`.${K}`,wn=`[${it}="${K}"]`,Li={parent:null},Ce=e=>R(e,bn),Oi=e=>new es(e),En=E(`show.bs.${K}`),ki=E(`shown.bs.${K}`),Tn=E(`hide.bs.${K}`),Ni=E(`hidden.bs.${K}`),Mi=e=>{const{element:t,parent:s,triggers:n}=e;w(t,En),En.defaultPrevented||(u.set(t,be,17),s&&u.set(s,be,17),d(t,Ht),v(t,K),S(t,{height:`${t.scrollHeight}px`}),_(t,()=>{u.clear(t),s&&u.clear(s),n.forEach(o=>I(o,ue,"true")),v(t,Ht),d(t,K),d(t,g),S(t,{height:""}),w(t,ki)}))},$n=e=>{const{element:t,parent:s,triggers:n}=e;w(t,Tn),Tn.defaultPrevented||(u.set(t,be,17),s&&u.set(s,be,17),S(t,{height:`${t.scrollHeight}px`}),v(t,K),v(t,g),d(t,Ht),_t(t),S(t,{height:"0px"}),_(t,()=>{u.clear(t),s&&u.clear(s),n.forEach(o=>I(o,ue,"false")),v(t,Ht),d(t,K),S(t,{height:""}),w(t,Ni)}))},Bi=e=>{const{target:t}=e,s=t&&M(t,wn),n=s&&z(s),o=n&&Ce(n);s&&ot(s)||o&&(o.toggle(),s?.tagName==="A"&&e.preventDefault())};class es extends J{static selector=Ii;static init=Oi;static getInstance=Ce;constructor(t,s){super(t,s);const{element:n,options:o}=this,i=b(n);this.triggers=[...Y(wn,i)].filter(r=>z(r)===n),this.parent=H(o.parent)?o.parent:Zt(o.parent)?z(n)||A(o.parent,i):null,this._toggleEventListeners(!0)}get name(){return bn}get defaults(){return Li}hide(){const{triggers:t,element:s}=this;u.get(s)||($n(this),t.length&&t.forEach(n=>d(n,`${K}d`)))}show(){const{element:t,parent:s,triggers:n}=this;let o,i;s&&(o=[...Y(`.${K}.${g}`,s)].find(r=>Ce(r)),i=o&&Ce(o)),(!s||!u.get(s))&&!u.get(t)&&(i&&o!==t&&($n(i),i.triggers.forEach(r=>{d(r,`${K}d`)})),Mi(this),n.length&&n.forEach(r=>v(r,`${K}d`)))}toggle(){h(this.element,g)?this.hide():this.show()}_toggleEventListeners=t=>{const s=t?L:O,{triggers:n}=this;n.length&&n.forEach(o=>{s(o,D,Bi)})};dispose(){this._toggleEventListeners(),super.dispose()}}var Ri="1.1.0";const Fi=["all","intersecting","update"],yn="PositionObserver Error";var ss=class{entries;static version=Ri;_t;_r;_cm;_w;_h;_rm;_th;_c;constructor(e,t){if(!rn(e))throw new Error(`${yn}: ${e} is not a function.`);this.entries=new Map,this._c=e,this._t=0;const s=j(t?.root)?t.root:document?.documentElement;this._r=s,this._rm=t?.rootMargin,this._th=t?.threshold;this._cm=Fi.indexOf(t?.callbackMode||"intersecting"),this._w=s.clientWidth,this._h=s.clientHeight}observe=e=>{if(!j(e))throw new Error(`${yn}: ${e} is not an instance of Element.`);this._r.contains(e)&&this._n(e).then(t=>{t.boundingClientRect&&!this.getEntry(e)&&this.entries.set(e,t);this._t||(this._t=requestAnimationFrame(this._rc))})};unobserve=e=>{this.entries.has(e)&&this.entries.delete(e)};_rc=()=>{if(!this.entries.size){this._t=0;return}const{clientWidth:e,clientHeight:t}=this._r,s=new Promise(n=>{const o=[];this.entries.forEach(({target:i,boundingClientRect:r,isIntersecting:a})=>{this._r.contains(i)&&this._n(i).then(c=>{if(!c.isIntersecting){if(this._cm===1)return;if(this._cm===2){a&&(this.entries.set(i,c),o.push(c));return}}const{left:l,top:f}=c.boundingClientRect;(r.top!==f||r.left!==l||this._w!==e||this._h!==t)&&(this.entries.set(i,c),o.push(c))})}),this._w=e,this._h=t,n(o)});this._t=requestAnimationFrame(async()=>{const n=await s;n.length&&this._c(n,this),this._rc()})};_n=e=>new Promise(t=>{new IntersectionObserver(([n],o)=>{o.disconnect(),t(n)},{threshold:this._th,rootMargin:this._rm}).observe(e)});getEntry=e=>this.entries.get(e);disconnect=()=>{cancelAnimationFrame(this._t),this.entries.clear(),this._t=0}};const xt=["dropdown","dropup","dropstart","dropend"],Cn="Dropdown",_n="dropdown-menu",Sn=e=>{const t=M(e,"A");return e.tagName==="A"&&Ut(e,"href")&&U(e,"href")?.slice(-1)==="#"||t&&Ut(t,"href")&&U(t,"href")?.slice(-1)==="#"},[et,ns,os,is]=xt,Wi=`[${it}="${et}"]`,se=e=>R(e,Cn),ji=e=>new ls(e),zi=`${_n}-end`,An=[et,ns],Pn=[os,is],Hn=["A","BUTTON"],Ki={offset:5,display:"dynamic"},rs=E(`show.bs.${et}`),xn=E(`shown.bs.${et}`),as=E(`hide.bs.${et}`),Dn=E(`hidden.bs.${et}`),In=E(`updated.bs.${et}`),Ln=e=>{const{element:t,menu:s,parentElement:n,options:o}=e,{offset:i}=o;if(F(s,"position")==="static")return;const r=pt(t),a=h(s,zi);["margin","top","bottom","left","right"].forEach(W=>{const Nt={};Nt[W]="",S(s,Nt)});let l=xt.find(W=>h(n,W))||et;const f={dropdown:[i,0,0],dropup:[0,0,i],dropstart:r?[-1,0,0,i]:[-1,i,0],dropend:r?[-1,i,0]:[-1,0,0,i]},p={dropdown:{top:"100%"},dropup:{top:"auto",bottom:"100%"},dropstart:r?{left:"100%",right:"auto"}:{left:"auto",right:"100%"},dropend:r?{left:"auto",right:"100%"}:{left:"100%",right:"auto"},menuStart:r?{right:"0",left:"auto"}:{right:"auto",left:"0"},menuEnd:r?{right:"auto",left:"0"}:{right:"0",left:"auto"}},{offsetWidth:y,offsetHeight:B}=s,{clientWidth:G,clientHeight:st}=ct(t),{left:m,top:q,width:Ot,height:kt}=St(t),C=m-y-i<0,Et=m+y+Ot+i>=G,ft=q+B+i>=st,nt=q+B+kt+i>=st,zt=q-B-i<0,$=(!r&&a||r&&!a)&&m+Ot-y<0,V=(r&&a||!r&&!a)&&m+y>=G;if(Pn.includes(l)&&C&&Et&&(l=et),l===os&&(r?Et:C)&&(l=is),l===is&&(r?C:Et)&&(l=os),l===ns&&zt&&!nt&&(l=et),l===et&&nt&&!zt&&(l=ns),Pn.includes(l)&&ft&&rt(p[l],{top:"auto",bottom:0}),An.includes(l)&&($||V)){let W={left:"auto",right:"auto"};!$&&V&&!r&&(W={left:"auto",right:0}),$&&!V&&r&&(W={left:0,right:"auto"}),W&&rt(p[l],W)}const Kt=f[l];S(s,{...p[l],margin:`${Kt.map(W=>W&&`${W}px`).join(" ")}`}),An.includes(l)&&a&&a&&S(s,p[!r&&$||r&&V?"menuStart":"menuEnd"]),w(n,In)},Vi=e=>Array.from(e.children).map(t=>{if(t&&Hn.includes(t.tagName))return t;const{firstElementChild:s}=t;return s&&Hn.includes(s.tagName)?s:null}).filter(t=>t),On=e=>{const{element:t,options:s,menu:n}=e,o=e.open?L:O,i=b(t);o(i,D,kn),o(i,Oe,kn),o(i,pe,qi),o(i,Wo,Ui),s.display==="dynamic"&&(e.open?e._observer.observe(n):e._observer.disconnect())},cs=e=>{const t=[...xt,"btn-group","input-group"].map(s=>lt(`${s} ${g}`,b(e))).find(s=>s.length);if(t&&t.length)return[...t[0].children].find(s=>xt.some(n=>n===U(s,it)))},kn=e=>{const{target:t,type:s}=e;if(!H(t))return;const n=cs(t),o=n&&se(n);if(!o)return;const{parentElement:i,menu:r}=o,a=i&&i.contains(t)&&(t.tagName==="form"||M(t,"form")!==null);[D,Fs].includes(s)&&Sn(t)&&e.preventDefault(),!a&&s!==Oe&&t!==n&&t!==r&&o.hide()};function Xi(e){const t=se(this);ot(this)||t&&(e.stopPropagation(),t.toggle(),Sn(this)&&e.preventDefault())}const qi=e=>{[Me,Be].includes(e.code)&&e.preventDefault()};function Ui(e){const{code:t}=e,s=cs(this);if(!s)return;const n=se(s),{activeElement:o}=b(s);if(!n||!o)return;const{menu:i,open:r}=n,a=Vi(i);if(a&&a.length&&[Me,Be].includes(t)){let c=a.indexOf(o);o===s?c=0:t===Be?c=c>1?c-1:0:t===Me&&(c=cLn(this)),this._toggleEventListeners(!0))}get name(){return Cn}get defaults(){return Ki}toggle(){this.open?this.hide():this.show()}show(){const{element:t,open:s,menu:n,parentElement:o}=this;if(s)return;const i=cs(t),r=i&&se(i);r&&r.hide(),[rs,xn,In].forEach(a=>{a.relatedTarget=t}),w(o,rs),!rs.defaultPrevented&&(d(n,g),d(o,g),I(t,ue,"true"),Ln(this),this.open=!s,at(t),On(this),w(o,xn))}hide(){const{element:t,open:s,menu:n,parentElement:o}=this;s&&([as,Dn].forEach(i=>{i.relatedTarget=t}),w(o,as),!as.defaultPrevented&&(v(n,g),v(o,g),I(t,ue,"false"),this.open=!s,On(this),w(o,Dn)))}_toggleEventListeners=t=>{(t?L:O)(this.element,D,Xi)};dispose(){this.open&&this.hide(),this._toggleEventListeners(),super.dispose()}}const X="modal",ds="Modal",hs="Offcanvas",Yi="fixed-top",Zi="fixed-bottom",Nn="sticky-top",Mn="position-sticky",Bn=e=>[...lt(Yi,e),...lt(Zi,e),...lt(Nn,e),...lt(Mn,e),...lt("is-fixed",e)],Qi=e=>{const t=At(e);S(t,{paddingRight:"",overflow:""});const s=Bn(t);s.length&&s.forEach(n=>{S(n,{paddingRight:"",marginRight:""})})},Rn=e=>{const{clientWidth:t}=ct(e),{innerWidth:s}=Js(e);return Math.abs(s-t)},Fn=(e,t)=>{const s=At(e),n=parseInt(F(s,"paddingRight"),10),i=F(s,"overflow")==="hidden"&&n?0:Rn(e),r=Bn(s);t&&(S(s,{overflow:"hidden",paddingRight:`${n+i}px`}),r.length&&r.forEach(a=>{const c=F(a,"paddingRight");if(a.style.paddingRight=`${parseInt(c,10)+i}px`,[Nn,Mn].some(l=>h(a,l))){const l=F(a,"marginRight");a.style.marginRight=`${parseInt(l,10)-i}px`}}))},Z="offcanvas",bt=ut({tagName:"div",className:"popup-container"}),Wn=(e,t)=>{const s=P(t)&&t.nodeName==="BODY",n=P(t)&&!s?t:bt,o=s?t:At(e);P(e)&&(n===bt&&o.append(bt),n.append(e))},jn=(e,t)=>{const s=P(t)&&t.nodeName==="BODY",n=P(t)&&!s?t:bt;P(e)&&(e.remove(),n===bt&&!bt.children.length&&bt.remove())},fs=(e,t)=>{const s=P(t)&&t.nodeName!=="BODY"?t:bt;return P(e)&&s.contains(e)},zn="backdrop",Kn=`${X}-${zn}`,Vn=`${Z}-${zn}`,Xn=`.${X}.${g}`,us=`.${Z}.${g}`,x=ut("div"),Dt=e=>A(`${Xn},${us}`,b(e)),gs=e=>{const t=e?Kn:Vn;[Kn,Vn].forEach(s=>{v(x,s)}),d(x,t)},qn=(e,t,s)=>{gs(s),Wn(x,At(e)),t&&d(x,k)},Un=()=>{h(x,g)||(d(x,g),_t(x))},_e=()=>{v(x,g)},Yn=e=>{Dt(e)||(v(x,k),jn(x,At(e)),Qi(e))},Zn=e=>H(e)&&F(e,"visibility")!=="hidden"&&e.offsetParent!==null,Gi=`.${X}`,Ji=`[${it}="${X}"]`,tr=`[${Te}="${X}"]`,Qn=`${X}-static`,er={backdrop:!0,keyboard:!0},ne=e=>R(e,ds),sr=e=>new ms(e),Se=E(`show.bs.${X}`),Gn=E(`shown.bs.${X}`),ps=E(`hide.bs.${X}`),Jn=E(`hidden.bs.${X}`),to=e=>{const{element:t}=e,s=Rn(t),{clientHeight:n,scrollHeight:o}=ct(t),{clientHeight:i,scrollHeight:r}=t,a=i!==r;if(!a&&s){const l={[pt(t)?"paddingLeft":"paddingRight"]:`${s}px`};S(t,l)}Fn(t,a||n!==o)},eo=(e,t)=>{const s=t?L:O,{element:n}=e;s(n,D,ir),s(b(n),pe,or),t?e._observer.observe(n):e._observer.disconnect()},so=e=>{const{triggers:t,element:s,relatedTarget:n}=e;Yn(s),S(s,{paddingRight:"",display:""}),eo(e);const o=Se.relatedTarget||t.find(Zn);o&&at(o),Jn.relatedTarget=n||void 0,w(s,Jn),Ee(s)},no=e=>{const{element:t,relatedTarget:s}=e;at(t),eo(e,!0),Gn.relatedTarget=s||void 0,w(t,Gn),Ee(t)},oo=e=>{const{element:t,hasFade:s}=e;S(t,{display:"block"}),to(e),Dt(t)||S(At(t),{overflow:"hidden"}),d(t,g),yt(t,qt),I(t,ge,"true"),s?_(t,()=>no(e)):no(e)},io=e=>{const{element:t,options:s,hasFade:n}=e;s.backdrop&&n&&h(x,g)&&!Dt(t)?(_e(),_(x,()=>so(e))):so(e)};function nr(e){const t=z(this),s=t&&ne(t);ot(this)||s&&(this.tagName==="A"&&e.preventDefault(),s.relatedTarget=this,s.toggle())}const or=({code:e,target:t})=>{const s=A(Xn,b(t)),n=s&&ne(s);if(!n)return;const{options:o}=n;o.keyboard&&e===Re&&h(s,g)&&(n.relatedTarget=null,n.hide())},ir=e=>{const{currentTarget:t}=e,s=t&&ne(t);if(!s||!t||u.get(t))return;const{options:n,isStatic:o,modalDialog:i}=s,{backdrop:r}=n,{target:a}=e,c=b(t)?.getSelection()?.toString().length,l=i.contains(a),f=a&&M(a,tr);o&&!l?u.set(t,()=>{d(t,Qn),_(i,()=>rr(s))},17):(f||!c&&!o&&!l&&r)&&(s.relatedTarget=f||null,s.hide(),e.preventDefault())},rr=e=>{const{element:t,modalDialog:s}=e,n=(Qt(s)||0)+17;v(t,Qn),u.set(t,()=>u.clear(t),n)};class ms extends J{static selector=Gi;static init=sr;static getInstance=ne;constructor(t,s){super(t,s);const{element:n}=this,o=A(`.${X}-dialog`,n);o&&(this.modalDialog=o,this.triggers=[...Y(Ji,b(n))].filter(i=>z(i)===n),this.isStatic=this.options.backdrop==="static",this.hasFade=h(n,k),this.relatedTarget=null,this._observer=new ResizeObserver(()=>this.update()),this._toggleEventListeners(!0))}get name(){return ds}get defaults(){return er}toggle(){h(this.element,g)?this.hide():this.show()}show(){const{element:t,options:s,hasFade:n,relatedTarget:o}=this,{backdrop:i}=s;let r=0;if(h(t,g)||(Se.relatedTarget=o||void 0,w(t,Se),Se.defaultPrevented))return;const a=Dt(t);if(a&&a!==t){const c=ne(a)||R(a,hs);c&&c.hide()}i?(fs(x)?gs(!0):qn(t,n,!0),r=Qt(x),Un(),setTimeout(()=>oo(this),r)):(oo(this),a&&h(x,g)&&_e())}hide(){const{element:t,hasFade:s,relatedTarget:n}=this;h(t,g)&&(ps.relatedTarget=n||void 0,w(t,ps),!ps.defaultPrevented&&(v(t,g),I(t,qt,"true"),yt(t,ge),s?_(t,()=>io(this)):io(this)))}update=()=>{h(this.element,g)&&to(this)};_toggleEventListeners=t=>{const s=t?L:O,{triggers:n}=this;n.length&&n.forEach(o=>{s(o,D,nr)})};dispose(){const t={...this},{modalDialog:s,hasFade:n}=t,o=()=>setTimeout(()=>super.dispose(),17);this.hide(),this._toggleEventListeners(),n?_(s,o):o()}}const ar=`.${Z}`,ro=`[${it}="${Z}"]`,cr=`[${Te}="${Z}"]`,Ae=`${Z}-toggling`,lr={backdrop:!0,keyboard:!0,scroll:!1},oe=e=>R(e,hs),dr=e=>new bs(e),Pe=E(`show.bs.${Z}`),ao=E(`shown.bs.${Z}`),vs=E(`hide.bs.${Z}`),co=E(`hidden.bs.${Z}`),hr=e=>{const{element:t}=e,{clientHeight:s,scrollHeight:n}=ct(t);Fn(t,s!==n)},lo=(e,t)=>{const s=t?L:O,n=b(e.element);s(n,pe,pr),s(n,D,gr)},ho=e=>{const{element:t,options:s}=e;s.scroll||(hr(e),S(At(t),{overflow:"hidden"})),d(t,Ae),d(t,g),S(t,{visibility:"visible"}),_(t,()=>mr(e))},fr=e=>{const{element:t,options:s}=e,n=Dt(t);t.blur(),!n&&s.backdrop&&h(x,g)&&_e(),_(t,()=>vr(e))};function ur(e){const t=z(this),s=t&&oe(t);ot(this)||s&&(s.relatedTarget=this,s.toggle(),this.tagName==="A"&&e.preventDefault())}const gr=e=>{const{target:t}=e,s=A(us,b(t));if(!s)return;const n=A(cr,s),o=oe(s);if(!o)return;const{options:i,triggers:r}=o,{backdrop:a}=i,c=M(t,ro),l=b(s).getSelection();x.contains(t)&&a==="static"||(!(l&&l.toString().length)&&(!s.contains(t)&&a&&(!c||r.includes(t))||n&&n.contains(t))&&(o.relatedTarget=n&&n.contains(t)?n:void 0,o.hide()),c&&c.tagName==="A"&&e.preventDefault())},pr=({code:e,target:t})=>{const s=A(us,b(t)),n=s&&oe(s);n&&n.options.keyboard&&e===Re&&(n.relatedTarget=void 0,n.hide())},mr=e=>{const{element:t}=e;v(t,Ae),yt(t,qt),I(t,ge,"true"),I(t,"role","dialog"),w(t,ao),lo(e,!0),at(t),Ee(t)},vr=e=>{const{element:t,triggers:s}=e;I(t,qt,"true"),yt(t,ge),yt(t,"role"),S(t,{visibility:""});const n=Pe.relatedTarget||s.find(Zn);n&&at(n),Yn(t),w(t,co),v(t,Ae),Ee(t),Dt(t)||lo(e)};class bs extends J{static selector=ar;static init=dr;static getInstance=oe;constructor(t,s){super(t,s);const{element:n}=this;this.triggers=[...Y(ro,b(n))].filter(o=>z(o)===n),this.relatedTarget=void 0,this._toggleEventListeners(!0)}get name(){return hs}get defaults(){return lr}toggle(){h(this.element,g)?this.hide():this.show()}show(){const{element:t,options:s,relatedTarget:n}=this;let o=0;if(h(t,g)||(Pe.relatedTarget=n||void 0,ao.relatedTarget=n||void 0,w(t,Pe),Pe.defaultPrevented))return;const i=Dt(t);if(i&&i!==t){const r=oe(i)||R(i,ds);r&&r.hide()}s.backdrop?(fs(x)?gs():qn(t,!0),o=Qt(x),Un(),setTimeout(()=>ho(this),o)):(ho(this),i&&h(x,g)&&_e())}hide(){const{element:t,relatedTarget:s}=this;h(t,g)&&(vs.relatedTarget=s||void 0,co.relatedTarget=s||void 0,w(t,vs),!vs.defaultPrevented&&(d(t,Ae),v(t,g),fr(this)))}_toggleEventListeners=t=>{const s=t?L:O;this.triggers.forEach(n=>{s(n,D,ur)})};dispose(){const{element:t}=this,s=h(t,g),n=()=>setTimeout(()=>super.dispose(),1);this.hide(),this._toggleEventListeners(),s?_(t,n):n()}}const It="popover",ws="Popover",ht="tooltip",fo=e=>{const t=e===ht,s=t?`${e}-inner`:`${e}-body`,n=t?"":`

                                                                                                                  `,o=`
                                                                                                                  `,i=`
                                                                                                                  `;return`
                                                                                                                  ${n+o+i}
                                                                                                                  `},uo={top:"top",bottom:"bottom",left:"start",right:"end"},Es=e=>{requestAnimationFrame(()=>{const t=/\b(top|bottom|start|end)+/,{element:s,tooltip:n,container:o,offsetParent:i,options:r,arrow:a}=e;if(!n)return;const c=pt(s),{x:l,y:f}=ni(i);S(n,{top:"",left:"",right:"",bottom:""});const{offsetWidth:p,offsetHeight:y}=n,{clientWidth:B,clientHeight:G,offsetWidth:st}=ct(s);let{placement:m}=r;const{clientWidth:q,offsetWidth:Ot}=o,C=F(o,"position")==="fixed",Et=Math.abs(C?q-Ot:B-st),ft=c&&C?Et:0,nt=B-(c?0:Et)-1,zt=e._observer.getEntry(s),{width:$,height:V,left:Kt,right:W,top:Nt}=zt?.boundingClientRect||St(s,!0),{x:xe,y:Vt}=ai(s,i,{x:l,y:f});S(a,{top:"",left:"",right:"",bottom:""});let Mt=0,ce="",Tt=0,Ls="",Xt="",De="",Os="";const Bt=a.offsetWidth||0,$t=a.offsetHeight||0,ks=Bt/2;let le=Nt-y-$t<0,de=Nt+y+V+$t>=G,he=Kt-p-Bt=nt;const Ie=["left","right"],Ns=["top","bottom"];le=Ie.includes(m)?Nt+V/2-y/2-$t<0:le,de=Ie.includes(m)?Nt+y/2+V/2+$t>=G:de,he=Ns.includes(m)?Kt+$/2-p/2=nt:fe,m=Ie.includes(m)&&he&&fe?"top":m,m=m==="top"&&le?"bottom":m,m=m==="bottom"&&de?"top":m,m=m==="left"&&he?"right":m,m=m==="right"&&fe?"left":m,n.className.includes(m)||(n.className=n.className.replace(t,uo[m])),Ie.includes(m)?(m==="left"?Tt=xe-p-Bt:Tt=xe+$+Bt,le&&de?(Mt=0,ce=0,Xt=Vt+V/2-$t/2):le?(Mt=Vt,ce="",Xt=V/2-Bt):de?(Mt=Vt-y+V,ce="",Xt=y-V/2-Bt):(Mt=Vt-y/2+V/2,Xt=y/2-$t/2)):Ns.includes(m)&&(m==="top"?Mt=Vt-y-$t:Mt=Vt+V+$t,he?(Tt=0,De=xe+$/2-ks):fe?(Tt="auto",Ls=0,Os=$/2+nt-W-ks):(Tt=xe-p/2+$/2,De=p/2-ks)),S(n,{top:`${Mt}px`,bottom:ce===""?"":`${ce}px`,left:Tt==="auto"?Tt:`${Tt}px`,right:Ls!==""?`${Ls}px`:""}),H(a)&&(Xt!==""&&(a.style.top=`${Xt}px`),De!==""?a.style.left=`${De}px`:Os!==""&&(a.style.right=`${Os}px`));const Qr=E(`updated.bs.${Jt(e.name)}`);w(s,Qr)})},Ts={template:fo(ht),title:"",customClass:"",trigger:"hover focus",placement:"top",sanitizeFn:void 0,animation:!0,delay:200,container:document.body,content:"",dismissible:!1,btnClose:""},go="data-original-title",Lt="Tooltip",wt=(e,t,s)=>{if(Zt(t)&&t.length){let n=t.trim();rn(s)&&(n=s(n));const i=new DOMParser().parseFromString(n,"text/html");e.append(...i.body.childNodes)}else H(t)?e.append(t):(li(t)||ci(t)&&t.every(P))&&e.append(...t)},br=e=>{const t=e.name===Lt,{id:s,element:n,options:o}=e,{title:i,placement:r,template:a,animation:c,customClass:l,sanitizeFn:f,dismissible:p,content:y,btnClose:B}=o,G=t?ht:It,st={...uo};let m=[],q=[];pt(n)&&(st.left="end",st.right="start");const Ot=`bs-${G}-${st[r]}`;let kt;if(H(a))kt=a;else{const $=ut("div");wt($,a,f),kt=$.firstChild}if(!H(kt))return;e.tooltip=kt.cloneNode(!0);const{tooltip:C}=e;I(C,"id",s),I(C,"role",ht);const Et=t?`${ht}-inner`:`${It}-body`,ft=t?null:A(`.${It}-header`,C),nt=A(`.${Et}`,C);e.arrow=A(`.${G}-arrow`,C);const{arrow:zt}=e;if(H(i))m=[i.cloneNode(!0)];else{const $=ut("div");wt($,i,f),m=[...$.childNodes]}if(H(y))q=[y.cloneNode(!0)];else{const $=ut("div");wt($,y,f),q=[...$.childNodes]}if(p)if(i)if(H(B))m=[...m,B.cloneNode(!0)];else{const $=ut("div");wt($,B,f),m=[...m,$.firstChild]}else if(ft&&ft.remove(),H(B))q=[...q,B.cloneNode(!0)];else{const $=ut("div");wt($,B,f),q=[...q,$.firstChild]}t?i&&nt&&wt(nt,i,f):(i&&ft&&wt(ft,m,f),y&&nt&&wt(nt,q,f),e.btn=A(".btn-close",C)||void 0),d(C,"position-absolute"),d(zt,"position-absolute"),h(C,G)||d(C,G),c&&!h(C,k)&&d(C,k),l&&!h(C,l)&&d(C,l),h(C,Ot)||d(C,Ot)},wr=e=>{const t=["HTML","BODY"],s=[];let{parentNode:n}=e;for(;n&&!t.includes(n.nodeName);)n=oi(n),Gs(n)||ii(n)||s.push(n);return s.find((o,i)=>(F(o,"position")!=="relative"||F(o,"position")==="relative"&&o.offsetHeight!==o.scrollHeight)&&s.slice(i+1).every(r=>F(r,"position")==="static")?o:null)||b(e).body},Er=`[${it}="${ht}"],[data-tip="${ht}"]`,po="title";let mo=e=>R(e,Lt);const Tr=e=>new He(e),$r=e=>{const{element:t,tooltip:s,container:n}=e;yt(t,Ms),jn(s,n)},ie=e=>{const{tooltip:t,container:s}=e;return t&&fs(t,s)},yr=(e,t)=>{const{element:s}=e;e._toggleEventListeners(),Ut(s,go)&&e.name===Lt&&To(e),t&&t()},vo=(e,t)=>{const s=t?L:O,{element:n}=e;s(b(n),ve,e.handleTouch,Gt)},bo=e=>{const{element:t}=e,s=E(`shown.bs.${Jt(e.name)}`);vo(e,!0),w(t,s),u.clear(t,"in")},wo=e=>{const{element:t}=e,s=E(`hidden.bs.${Jt(e.name)}`);vo(e),$r(e),w(t,s),u.clear(t,"out")},Eo=(e,t)=>{const s=t?L:O,{element:n,tooltip:o}=e,i=M(n,`.${X}`),r=M(n,`.${Z}`);t?[n,o].forEach(a=>e._observer.observe(a)):e._observer.disconnect(),i&&s(i,`hide.bs.${X}`,e.handleHide),r&&s(r,`hide.bs.${Z}`,e.handleHide)},To=(e,t)=>{const s=[go,po],{element:n}=e;I(n,s[t?0:1],t||U(n,s[0])||""),yt(n,s[t?1:0])};class He extends J{static selector=Er;static init=Tr;static getInstance=mo;static styleTip=Es;constructor(t,s){super(t,s);const{element:n}=this,o=this.name===Lt,i=o?ht:It,r=o?Lt:ws;mo=f=>R(f,r),this.enabled=!0,this.id=`${i}-${nn(n,i)}`;const{options:a}=this;if(!a.title&&o||!o&&!a.content)return;rt(Ts,{titleAttr:""}),Ut(n,po)&&o&&typeof a.title=="string"&&To(this,a.title);const c=wr(n),l=["sticky","fixed","relative"].some(f=>F(c,"position")===f)?c:Js(n);this.container=c,this.offsetParent=l,br(this),this.tooltip&&(this._observer=new ss(()=>this.update()),this._toggleEventListeners(!0))}get name(){return Lt}get defaults(){return Ts}handleFocus=()=>at(this.element);handleShow=()=>this.show();show(){const{options:t,tooltip:s,element:n,container:o,id:i}=this,{animation:r}=t,a=u.get(n,"out");u.clear(n,"out"),s&&!a&&!ie(this)&&u.set(n,()=>{const c=E(`show.bs.${Jt(this.name)}`);w(n,c),c.defaultPrevented||(Wn(s,o),I(n,Ms,`#${i}`),this.update(),Eo(this,!0),h(s,g)||d(s,g),r?_(s,()=>bo(this)):bo(this))},17,"in")}handleHide=()=>this.hide();hide(){const{options:t,tooltip:s,element:n}=this,{animation:o,delay:i}=t;u.clear(n,"in"),s&&ie(this)&&u.set(n,()=>{const r=E(`hide.bs.${Jt(this.name)}`);w(n,r),r.defaultPrevented||(this.update(),v(s,g),Eo(this),o?_(s,()=>wo(this)):wo(this))},i+17,"out")}update=()=>{Es(this)};toggle=()=>{const{tooltip:t}=this;t&&!ie(this)?this.show():this.hide()};enable(){const{enabled:t}=this;t||(this._toggleEventListeners(!0),this.enabled=!t)}disable(){const{tooltip:t,enabled:s}=this;s&&(t&&ie(this)&&this.hide(),this._toggleEventListeners(),this.enabled=!s)}toggleEnabled(){this.enabled?this.disable():this.enable()}handleTouch=({target:t})=>{const{tooltip:s,element:n}=this;s&&s.contains(t)||t===n||t&&n.contains(t)||this.hide()};_toggleEventListeners=t=>{const s=t?L:O,{element:n,options:o,btn:i}=this,{trigger:r}=o,c=!!(this.name!==Lt&&o.dismissible);r.includes("manual")||(this.enabled=!!t,r.split(" ").forEach(f=>{f===jo?(s(n,Fs,this.handleShow),s(n,me,this.handleShow),c||(s(n,Ne,this.handleHide),s(b(n),ve,this.handleTouch,Gt))):f===D?s(n,f,c?this.handleShow:this.toggle):f===Oe&&(s(n,ke,this.handleShow),c||s(n,Rs,this.handleHide),Yo()&&s(n,D,this.handleFocus)),c&&i&&s(i,D,this.handleHide)}))};dispose(){const{tooltip:t,options:s}=this,n={...this,name:this.name},o=()=>setTimeout(()=>yr(n,()=>super.dispose()),17);s.animation&&ie(n)?(this.options.delay=0,this.hide(),_(t,o)):o()}}const Cr=`[${it}="${It}"],[data-tip="${It}"]`,_r=rt({},Ts,{template:fo(It),content:"",dismissible:!1,btnClose:''}),Sr=e=>R(e,ws),Ar=e=>new $s(e);class $s extends He{static selector=Cr;static init=Ar;static getInstance=Sr;static styleTip=Es;constructor(t,s){super(t,s)}get name(){return ws}get defaults(){return _r}show=()=>{super.show();const{options:t,btn:s}=this;t.dismissible&&s&&setTimeout(()=>at(s),17)}}const Pr="scrollspy",$o="ScrollSpy",Hr='[data-bs-spy="scroll"]',xr="[href]",Dr={offset:10,target:void 0},Ir=e=>R(e,$o),Lr=e=>new Cs(e),yo=E(`activate.bs.${Pr}`),Or=e=>{const{target:t,_itemsLength:s,_observables:n}=e,o=Ke("A",t),i=b(t);!o.length||s===n.size||(n.clear(),Array.from(o).forEach(r=>{const a=U(r,"href")?.slice(1),c=a?.length?i.getElementById(a):null;c&&!ot(r)&&e._observables.set(c,r)}),e._itemsLength=e._observables.size)},Co=e=>{Array.from(Ke("A",e)).forEach(t=>{h(t,T)&&v(t,T)})},_o=(e,t)=>{const{target:s,element:n}=e;Co(s),e._activeItem=t,d(t,T);let o=t;for(;o!==s;)if(o=o.parentElement,["nav","dropdown-menu","list-group"].some(i=>h(o,i))){const i=o.previousElementSibling;i&&!h(i,T)&&d(i,T)}yo.relatedTarget=t,w(n,yo)},ys=(e,t)=>{const{scrollTarget:s,element:n,options:o}=e;return(s!==n?St(t).top+s.scrollTop:t.offsetTop)-(o.offset||10)};class Cs extends J{static selector=Hr;static init=Lr;static getInstance=Ir;constructor(t,s){super(t,s);const{element:n,options:o}=this,i=A(o.target,b(n));i&&(this.target=i,this.scrollTarget=n.clientHeight{requestAnimationFrame(()=>this.refresh())},{root:this.scrollTarget}),this._toggleEventListeners(!0))}get name(){return $o}get defaults(){return Dr}refresh=()=>{const{target:t,scrollTarget:s}=this;if(!t||t.offsetHeight===0)return;Or(this);const{_itemsLength:n,_observables:o,_activeItem:i}=this;if(!n)return;const r=o.entries().toArray(),{scrollTop:a,scrollHeight:c,clientHeight:l}=s;if(a>=c-l){const p=r[n-1]?.[1];i!==p&&_o(this,p);return}const f=r[0]?.[0]?ys(this,r[0][0]):null;if(f!==null&&a0){this._activeItem=null,Co(t);return}for(let p=0;p=G&&(m===null||a{const s=M(t.target,xr),n=s&&U(s,"href")?.slice(1),o=n&&di(n,this.target);o&&(this.scrollTarget.scrollTo({top:o.offsetTop,behavior:"smooth"}),t.preventDefault())};_toggleEventListeners=t=>{const{target:s,_observables:n,_observer:o,_scrollTo:i}=this;(t?L:O)(s,D,i),t?n?.forEach((a,c)=>o.observe(c)):o.disconnect()};dispose(){this._toggleEventListeners(),super.dispose()}}const re="tab",So="Tab",_s=`[${it}="${re}"]`,Ao=e=>R(e,So),kr=e=>new Ps(e),Ss=E(`show.bs.${re}`),Po=E(`shown.bs.${re}`),As=E(`hide.bs.${re}`),Ho=E(`hidden.bs.${re}`),ae=new Map,xo=e=>{const{tabContent:t,nav:s}=e;t&&h(t,Ht)&&(t.style.height="",v(t,Ht)),s&&u.clear(s)},Do=e=>{const{element:t,tabContent:s,content:n,nav:o}=e,{tab:i}=H(o)&&ae.get(o)||{tab:null};if(s&&n&&h(n,k)){const{currentHeight:r,nextHeight:a}=ae.get(t)||{currentHeight:0,nextHeight:0};r!==a?setTimeout(()=>{s.style.height=`${a}px`,_t(s),_(s,()=>xo(e))},50):xo(e)}else o&&u.clear(o);Po.relatedTarget=i,w(t,Po)},Io=e=>{const{element:t,content:s,tabContent:n,nav:o}=e,{tab:i,content:r}=o&&ae.get(o)||{tab:null,content:null};let a=0;if(n&&s&&h(s,k)&&([r,s].forEach(c=>{c&&d(c,"overflow-hidden")}),a=r?r.scrollHeight:0),Ss.relatedTarget=i,Ho.relatedTarget=t,w(t,Ss),!Ss.defaultPrevented){if(s&&d(s,T),r&&v(r,T),n&&s&&h(s,k)){const c=s.scrollHeight;ae.set(t,{currentHeight:a,nextHeight:c,tab:null,content:null}),d(n,Ht),n.style.height=`${a}px`,_t(n),[r,s].forEach(l=>{l&&v(l,"overflow-hidden")})}s&&s&&h(s,k)?setTimeout(()=>{d(s,g),_(s,()=>{Do(e)})},1):(s&&d(s,g),Do(e)),i&&w(i,Ho)}},Lo=e=>{const{nav:t}=e;if(!H(t))return{tab:null,content:null};const s=lt(T,t);let n=null;s.length===1&&!xt.some(i=>h(s[0].parentElement,i))?[n]=s:s.length>1&&(n=s[s.length-1]);const o=H(n)?z(n):null;return{tab:n,content:o}},Oo=e=>{if(!H(e))return null;const t=M(e,`.${xt.join(",.")}`);return t?A(`.${xt[0]}-toggle`,t):null},Nr=e=>{const t=M(e.target,_s),s=t&&Ao(t);s&&(e.preventDefault(),s.show())};class Ps extends J{static selector=_s;static init=kr;static getInstance=Ao;constructor(t){super(t);const{element:s}=this,n=z(s);if(!n)return;const o=M(s,".nav"),i=M(n,".tab-content");this.nav=o,this.content=n,this.tabContent=i,this.dropdown=Oo(s);const{tab:r}=Lo(this);if(o&&!r){const a=A(_s,o),c=a&&z(a);c&&(d(a,T),d(c,g),d(c,T),I(s,Le,"true"))}this._toggleEventListeners(!0)}get name(){return So}show(){const{element:t,content:s,nav:n,dropdown:o}=this;if(n&&u.get(n)||h(t,T))return;const{tab:i,content:r}=Lo(this);if(n&&i&&ae.set(n,{tab:i,content:r,currentHeight:0,nextHeight:0}),As.relatedTarget=t,!H(i)||(w(i,As),As.defaultPrevented))return;d(t,T),I(t,Le,"true");const a=H(i)&&Oo(i);if(a&&h(a,T)&&v(a,T),n){const c=()=>{i&&(v(i,T),I(i,Le,"false")),o&&!h(o,T)&&d(o,T)};r&&(h(r,k)||s&&h(s,k))?u.set(n,c,1):c()}r&&(v(r,g),h(r,k)?_(r,()=>Io(this)):Io(this))}_toggleEventListeners=t=>{(t?L:O)(this.element,D,Nr)};dispose(){this._toggleEventListeners(),super.dispose()}}const Q="toast",ko="Toast",Mr=`.${Q}`,Br=`[${Te}="${Q}"]`,Rr=`[${it}="${Q}"]`,jt="showing",No="hide",Fr={animation:!0,autohide:!0,delay:5e3},Hs=e=>R(e,ko),Wr=e=>new xs(e),Mo=E(`show.bs.${Q}`),jr=E(`shown.bs.${Q}`),Bo=E(`hide.bs.${Q}`),zr=E(`hidden.bs.${Q}`),Ro=e=>{const{element:t,options:s}=e;v(t,jt),u.clear(t,jt),w(t,jr),s.autohide&&u.set(t,()=>e.hide(),s.delay,Q)},Fo=e=>{const{element:t}=e;v(t,jt),v(t,g),d(t,No),u.clear(t,Q),w(t,zr)},Kr=e=>{const{element:t,options:s}=e;d(t,jt),s.animation?(_t(t),_(t,()=>Fo(e))):Fo(e)},Vr=e=>{const{element:t,options:s}=e;u.set(t,()=>{v(t,No),_t(t),d(t,g),d(t,jt),s.animation?_(t,()=>Ro(e)):Ro(e)},17,jt)};function Xr(e){const t=z(this),s=t&&Hs(t);ot(this)||s&&(this.tagName==="A"&&e.preventDefault(),s.relatedTarget=this,s.show())}const qr=e=>{const t=e.target,s=Hs(t),{type:n,relatedTarget:o}=e;!s||t===o||t.contains(o)||([me,ke].includes(n)?u.clear(t,Q):u.set(t,()=>s.hide(),s.options.delay,Q))};class xs extends J{static selector=Mr;static init=Wr;static getInstance=Hs;constructor(t,s){super(t,s);const{element:n,options:o}=this;o.animation&&!h(n,k)?d(n,k):!o.animation&&h(n,k)&&v(n,k),this.dismiss=A(Br,n),this.triggers=[...Y(Rr,b(n))].filter(i=>z(i)===n),this._toggleEventListeners(!0)}get name(){return ko}get defaults(){return Fr}get isShown(){return h(this.element,g)}show=()=>{const{element:t,isShown:s}=this;!t||s||(w(t,Mo),Mo.defaultPrevented||Vr(this))};hide=()=>{const{element:t,isShown:s}=this;!t||!s||(w(t,Bo),Bo.defaultPrevented||Kr(this))};_toggleEventListeners=t=>{const s=t?L:O,{element:n,triggers:o,dismiss:i,options:r,hide:a}=this;i&&s(i,D,a),r.autohide&&[ke,Rs,me,Ne].forEach(c=>s(n,c,qr)),o.length&&o.forEach(c=>{s(c,D,Xr)})};dispose(){const{element:t,isShown:s}=this;this._toggleEventListeners(),u.clear(t,Q),s&&v(t,g),super.dispose()}}const Ds=new Map;[Ve,Xe,ts,es,ls,ms,bs,$s,Cs,Ps,xs,He].forEach(e=>Ds.set(e.prototype.name,e));const Ur=(e,t)=>{[...t].forEach(s=>e(s))},Yr=(e,t)=>{const s=Ct.getAllFor(e);s&&[...s].forEach(([n,o])=>{t.contains(n)&&o.dispose()})},Is=e=>{const t=e&&e.nodeName?e:document,s=[...Ke("*",t)];Ds.forEach(n=>{const{init:o,selector:i}=n;Ur(o,s.filter(r=>tn(r,i)))})},Zr=e=>{const t=e&&e.nodeName?e:document;Ds.forEach(s=>{Yr(s.prototype.name,t)})};return document.body?Is():L(document,"DOMContentLoaded",()=>Is(),{once:!0}),N.Alert=Ve,N.Button=Xe,N.Carousel=ts,N.Collapse=es,N.Dropdown=ls,N.Modal=ms,N.Offcanvas=bs,N.Popover=$s,N.ScrollSpy=Cs,N.Tab=Ps,N.Toast=xs,N.Tooltip=He,N.initCallback=Is,N.removeDataAPI=Zr,Object.defineProperty(N,Symbol.toStringTag,{value:"Module"}),N})({}); +//# sourceMappingURL=bootstrap-native.js.map diff --git a/backend/documentation/js/libs/clipboard.min.js b/backend/documentation/js/libs/clipboard.min.js new file mode 100644 index 0000000..b00ee51 --- /dev/null +++ b/backend/documentation/js/libs/clipboard.min.js @@ -0,0 +1,7 @@ +/*! + * clipboard.js v2.0.0 + * https://zenorocha.github.io/clipboard.js + * + * Licensed MIT © Zeno Rocha + */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return function(t){function e(o){if(n[o])return n[o].exports;var r=n[o]={i:o,l:!1,exports:{}};return t[o].call(r.exports,r,r.exports,e),r.l=!0,r.exports}var n={};return e.m=t,e.c=n,e.i=function(t){return t},e.d=function(t,n,o){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:o})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=3)}([function(t,e,n){var o,r,i;!function(a,c){r=[t,n(7)],o=c,void 0!==(i="function"==typeof o?o.apply(e,r):o)&&(t.exports=i)}(0,function(t,e){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var o=function(t){return t&&t.__esModule?t:{default:t}}(e),r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i=function(){function t(t,e){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{};this.action=t.action,this.container=t.container,this.emitter=t.emitter,this.target=t.target,this.text=t.text,this.trigger=t.trigger,this.selectedText=""}},{key:"initSelection",value:function(){this.text?this.selectFake():this.target&&this.selectTarget()}},{key:"selectFake",value:function(){var t=this,e="rtl"==document.documentElement.getAttribute("dir");this.removeFake(),this.fakeHandlerCallback=function(){return t.removeFake()},this.fakeHandler=this.container.addEventListener("click",this.fakeHandlerCallback)||!0,this.fakeElem=document.createElement("textarea"),this.fakeElem.style.fontSize="12pt",this.fakeElem.style.border="0",this.fakeElem.style.padding="0",this.fakeElem.style.margin="0",this.fakeElem.style.position="absolute",this.fakeElem.style[e?"right":"left"]="-9999px";var n=window.pageYOffset||document.documentElement.scrollTop;this.fakeElem.style.top=n+"px",this.fakeElem.setAttribute("readonly",""),this.fakeElem.value=this.text,this.container.appendChild(this.fakeElem),this.selectedText=(0,o.default)(this.fakeElem),this.copyText()}},{key:"removeFake",value:function(){this.fakeHandler&&(this.container.removeEventListener("click",this.fakeHandlerCallback),this.fakeHandler=null,this.fakeHandlerCallback=null),this.fakeElem&&(this.container.removeChild(this.fakeElem),this.fakeElem=null)}},{key:"selectTarget",value:function(){this.selectedText=(0,o.default)(this.target),this.copyText()}},{key:"copyText",value:function(){var t=void 0;try{t=document.execCommand(this.action)}catch(e){t=!1}this.handleResult(t)}},{key:"handleResult",value:function(t){this.emitter.emit(t?"success":"error",{action:this.action,text:this.selectedText,trigger:this.trigger,clearSelection:this.clearSelection.bind(this)})}},{key:"clearSelection",value:function(){this.trigger&&this.trigger.focus(),window.getSelection().removeAllRanges()}},{key:"destroy",value:function(){this.removeFake()}},{key:"action",set:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"copy";if(this._action=t,"copy"!==this._action&&"cut"!==this._action)throw new Error('Invalid "action" value, use either "copy" or "cut"')},get:function(){return this._action}},{key:"target",set:function(t){if(void 0!==t){if(!t||"object"!==(void 0===t?"undefined":r(t))||1!==t.nodeType)throw new Error('Invalid "target" value, use a valid Element');if("copy"===this.action&&t.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if("cut"===this.action&&(t.hasAttribute("readonly")||t.hasAttribute("disabled")))throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes');this._target=t}},get:function(){return this._target}}]),t}();t.exports=a})},function(t,e,n){function o(t,e,n){if(!t&&!e&&!n)throw new Error("Missing required arguments");if(!c.string(e))throw new TypeError("Second argument must be a String");if(!c.fn(n))throw new TypeError("Third argument must be a Function");if(c.node(t))return r(t,e,n);if(c.nodeList(t))return i(t,e,n);if(c.string(t))return a(t,e,n);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function r(t,e,n){return t.addEventListener(e,n),{destroy:function(){t.removeEventListener(e,n)}}}function i(t,e,n){return Array.prototype.forEach.call(t,function(t){t.addEventListener(e,n)}),{destroy:function(){Array.prototype.forEach.call(t,function(t){t.removeEventListener(e,n)})}}}function a(t,e,n){return u(document.body,t,e,n)}var c=n(6),u=n(5);t.exports=o},function(t,e){function n(){}n.prototype={on:function(t,e,n){var o=this.e||(this.e={});return(o[t]||(o[t]=[])).push({fn:e,ctx:n}),this},once:function(t,e,n){function o(){r.off(t,o),e.apply(n,arguments)}var r=this;return o._=e,this.on(t,o,n)},emit:function(t){var e=[].slice.call(arguments,1),n=((this.e||(this.e={}))[t]||[]).slice(),o=0,r=n.length;for(o;o0&&void 0!==arguments[0]?arguments[0]:{};this.action="function"==typeof t.action?t.action:this.defaultAction,this.target="function"==typeof t.target?t.target:this.defaultTarget,this.text="function"==typeof t.text?t.text:this.defaultText,this.container="object"===d(t.container)?t.container:document.body}},{key:"listenClick",value:function(t){var e=this;this.listener=(0,f.default)(t,"click",function(t){return e.onClick(t)})}},{key:"onClick",value:function(t){var e=t.delegateTarget||t.currentTarget;this.clipboardAction&&(this.clipboardAction=null),this.clipboardAction=new l.default({action:this.action(e),target:this.target(e),text:this.text(e),container:this.container,trigger:e,emitter:this})}},{key:"defaultAction",value:function(t){return u("action",t)}},{key:"defaultTarget",value:function(t){var e=u("target",t);if(e)return document.querySelector(e)}},{key:"defaultText",value:function(t){return u("text",t)}},{key:"destroy",value:function(){this.listener.destroy(),this.clipboardAction&&(this.clipboardAction.destroy(),this.clipboardAction=null)}}],[{key:"isSupported",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["copy","cut"],e="string"==typeof t?[t]:t,n=!!document.queryCommandSupported;return e.forEach(function(t){n=n&&!!document.queryCommandSupported(t)}),n}}]),e}(s.default);t.exports=p})},function(t,e){function n(t,e){for(;t&&t.nodeType!==o;){if("function"==typeof t.matches&&t.matches(e))return t;t=t.parentNode}}var o=9;if("undefined"!=typeof Element&&!Element.prototype.matches){var r=Element.prototype;r.matches=r.matchesSelector||r.mozMatchesSelector||r.msMatchesSelector||r.oMatchesSelector||r.webkitMatchesSelector}t.exports=n},function(t,e,n){function o(t,e,n,o,r){var a=i.apply(this,arguments);return t.addEventListener(n,a,r),{destroy:function(){t.removeEventListener(n,a,r)}}}function r(t,e,n,r,i){return"function"==typeof t.addEventListener?o.apply(null,arguments):"function"==typeof n?o.bind(null,document).apply(null,arguments):("string"==typeof t&&(t=document.querySelectorAll(t)),Array.prototype.map.call(t,function(t){return o(t,e,n,r,i)}))}function i(t,e,n,o){return function(n){n.delegateTarget=a(n.target,e),n.delegateTarget&&o.call(t,n)}}var a=n(4);t.exports=r},function(t,e){e.node=function(t){return void 0!==t&&t instanceof HTMLElement&&1===t.nodeType},e.nodeList=function(t){var n=Object.prototype.toString.call(t);return void 0!==t&&("[object NodeList]"===n||"[object HTMLCollection]"===n)&&"length"in t&&(0===t.length||e.node(t[0]))},e.string=function(t){return"string"==typeof t||t instanceof String},e.fn=function(t){return"[object Function]"===Object.prototype.toString.call(t)}},function(t,e){function n(t){var e;if("SELECT"===t.nodeName)t.focus(),e=t.value;else if("INPUT"===t.nodeName||"TEXTAREA"===t.nodeName){var n=t.hasAttribute("readonly");n||t.setAttribute("readonly",""),t.select(),t.setSelectionRange(0,t.value.length),n||t.removeAttribute("readonly"),e=t.value}else{t.hasAttribute("contenteditable")&&t.focus();var o=window.getSelection(),r=document.createRange();r.selectNodeContents(t),o.removeAllRanges(),o.addRange(r),e=o.toString()}return e}t.exports=n}])}); \ No newline at end of file diff --git a/backend/documentation/js/libs/custom-elements-es5-adapter.js b/backend/documentation/js/libs/custom-elements-es5-adapter.js new file mode 100644 index 0000000..3a694b8 --- /dev/null +++ b/backend/documentation/js/libs/custom-elements-es5-adapter.js @@ -0,0 +1,15 @@ +/** +@license @nocompile +Copyright (c) 2018 The Polymer Project Authors. All rights reserved. +This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt +The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt +The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt +Code distributed by Google as part of the polymer project is also +subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt +*/ +(function () { + 'use strict'; + + (function(){if(void 0===window.Reflect||void 0===window.customElements||window.customElements.hasOwnProperty('polyfillWrapFlushCallback'))return;const a=HTMLElement;window.HTMLElement=function(){return Reflect.construct(a,[],this.constructor)},HTMLElement.prototype=a.prototype,HTMLElement.prototype.constructor=HTMLElement,Object.setPrototypeOf(HTMLElement,a);})(); + +}()); diff --git a/backend/documentation/js/libs/custom-elements.min.js b/backend/documentation/js/libs/custom-elements.min.js new file mode 100644 index 0000000..9b64a23 --- /dev/null +++ b/backend/documentation/js/libs/custom-elements.min.js @@ -0,0 +1,38 @@ +(function(){ + 'use strict';var h=new function(){};var aa=new Set("annotation-xml color-profile font-face font-face-src font-face-uri font-face-format font-face-name missing-glyph".split(" "));function m(b){var a=aa.has(b);b=/^[a-z][.0-9_a-z]*-[\-.0-9_a-z]*$/.test(b);return!a&&b}function n(b){var a=b.isConnected;if(void 0!==a)return a;for(;b&&!(b.__CE_isImportDocument||b instanceof Document);)b=b.parentNode||(window.ShadowRoot&&b instanceof ShadowRoot?b.host:void 0);return!(!b||!(b.__CE_isImportDocument||b instanceof Document))} + function p(b,a){for(;a&&a!==b&&!a.nextSibling;)a=a.parentNode;return a&&a!==b?a.nextSibling:null} + function t(b,a,c){c=c?c:new Set;for(var d=b;d;){if(d.nodeType===Node.ELEMENT_NODE){var e=d;a(e);var f=e.localName;if("link"===f&&"import"===e.getAttribute("rel")){d=e.import;if(d instanceof Node&&!c.has(d))for(c.add(d),d=d.firstChild;d;d=d.nextSibling)t(d,a,c);d=p(b,e);continue}else if("template"===f){d=p(b,e);continue}if(e=e.__CE_shadowRoot)for(e=e.firstChild;e;e=e.nextSibling)t(e,a,c)}d=d.firstChild?d.firstChild:p(b,d)}}function u(b,a,c){b[a]=c};function v(){this.a=new Map;this.s=new Map;this.f=[];this.b=!1}function ba(b,a,c){b.a.set(a,c);b.s.set(c.constructor,c)}function w(b,a){b.b=!0;b.f.push(a)}function x(b,a){b.b&&t(a,function(a){return y(b,a)})}function y(b,a){if(b.b&&!a.__CE_patched){a.__CE_patched=!0;for(var c=0;ct?1:n>=t?0:NaN}function r(n){return null===n?NaN:+n}function i(n){return!isNaN(n)}function u(n){return{left:function(t,e,r,i){for(arguments.length<3&&(r=0),arguments.length<4&&(i=t.length);r>>1;n(t[u],e)<0?r=u+1:i=u}return r},right:function(t,e,r,i){for(arguments.length<3&&(r=0),arguments.length<4&&(i=t.length);r>>1;n(t[u],e)>0?i=u:r=u+1}return r}}}function o(n){return n.length}function a(n){for(var t=1;n*t%1;)t*=10;return t}function l(n,t){for(var e in t)Object.defineProperty(n.prototype,e,{value:t[e],enumerable:!1})}function c(){this._=Object.create(null)}function f(n){return(n+="")===ho||n[0]===po?po+n:n}function s(n){return(n+="")[0]===po?n.slice(1):n}function h(n){return f(n)in this._}function p(n){return(n=f(n))in this._&&delete this._[n]}function g(){var n=[];for(var t in this._)n.push(s(t));return n}function d(){var n=0;for(var t in this._)++n;return n}function v(){for(var n in this._)return!1;return!0}function y(){this._=Object.create(null)}function m(n){return n}function x(n,t,e){return function(){var r=e.apply(t,arguments);return r===t?n:r}}function M(n,t){if(t in n)return t;t=t.charAt(0).toUpperCase()+t.slice(1);for(var e=0,r=go.length;e=t&&(t=i+1);!(o=a[t])&&++t0&&(n=n.slice(0,a));var c=ko.get(n);return c&&(n=c,l=B),a?t?i:r:t?_:u}function $(n,t){return function(e){var r=to.event;to.event=e,t[0]=this.__data__;try{n.apply(this,t)}finally{to.event=r}}}function B(n,t){var e=$(n,t);return function(n){var t=this,r=n.relatedTarget;r&&(r===t||8&r.compareDocumentPosition(t))||e.call(t,n)}}function W(e){var r=".dragsuppress-"+ ++Eo,i="click"+r,u=to.select(t(e)).on("touchmove"+r,S).on("dragstart"+r,S).on("selectstart"+r,S);if(null==No&&(No=!("onselectstart"in e)&&M(e.style,"userSelect")),No){var o=n(e).style,a=o[No];o[No]="none"}return function(n){if(u.on(r,null),No&&(o[No]=a),n){var t=function(){u.on(i,null)};u.on(i,function(){S(),t()},!0),setTimeout(t,0)}}}function J(n,e){e.changedTouches&&(e=e.changedTouches[0]);var r=n.ownerSVGElement||n;if(r.createSVGPoint){var i=r.createSVGPoint();if(Ao<0){var u=t(n);if(u.scrollX||u.scrollY){var o=(r=to.select("body").append("svg").style({position:"absolute",top:0,left:0,margin:0,padding:0,border:"none"},"important"))[0][0].getScreenCTM();Ao=!(o.f||o.e),r.remove()}}return Ao?(i.x=e.pageX,i.y=e.pageY):(i.x=e.clientX,i.y=e.clientY),i=i.matrixTransform(n.getScreenCTM().inverse()),[i.x,i.y]}var a=n.getBoundingClientRect();return[e.clientX-a.left-n.clientLeft,e.clientY-a.top-n.clientTop]}function G(){return to.event.changedTouches[0].identifier}function K(n){return n>0?1:n<0?-1:0}function Q(n,t,e){return(t[0]-n[0])*(e[1]-n[1])-(t[1]-n[1])*(e[0]-n[0])}function nn(n){return n>1?0:n<-1?Lo:Math.acos(n)}function tn(n){return n>1?Ro:n<-1?-Ro:Math.asin(n)}function en(n){return((n=Math.exp(n))-1/n)/2}function rn(n){return((n=Math.exp(n))+1/n)/2}function un(n){return((n=Math.exp(2*n))-1)/(n+1)}function on(n){return(n=Math.sin(n/2))*n}function an(){}function ln(n,t,e){return this instanceof ln?(this.h=+n,this.s=+t,void(this.l=+e)):arguments.length<2?n instanceof ln?new ln(n.h,n.s,n.l):bn(""+n,wn,ln):new ln(n,t,e)}function cn(n,t,e){function r(n){return n>360?n-=360:n<0&&(n+=360),n<60?u+(o-u)*n/60:n<180?o:n<240?u+(o-u)*(240-n)/60:u}function i(n){return Math.round(255*r(n))}var u,o;return n=isNaN(n)?0:(n%=360)<0?n+360:n,t=isNaN(t)?0:t<0?0:t>1?1:t,e=e<0?0:e>1?1:e,o=e<=.5?e*(1+t):e+t-e*t,u=2*e-o,new mn(i(n+120),i(n),i(n-120))}function fn(n,t,e){return this instanceof fn?(this.h=+n,this.c=+t,void(this.l=+e)):arguments.length<2?n instanceof fn?new fn(n.h,n.c,n.l):n instanceof hn?gn(n.l,n.a,n.b):gn((n=Sn((n=to.rgb(n)).r,n.g,n.b)).l,n.a,n.b):new fn(n,t,e)}function sn(n,t,e){return isNaN(n)&&(n=0),isNaN(t)&&(t=0),new hn(e,Math.cos(n*=Do)*t,Math.sin(n)*t)}function hn(n,t,e){return this instanceof hn?(this.l=+n,this.a=+t,void(this.b=+e)):arguments.length<2?n instanceof hn?new hn(n.l,n.a,n.b):n instanceof fn?sn(n.h,n.c,n.l):Sn((n=mn(n)).r,n.g,n.b):new hn(n,t,e)}function pn(n,t,e){var r=(n+16)/116,i=r+t/500,u=r-e/200;return i=dn(i)*Zo,r=dn(r)*Vo,u=dn(u)*Xo,new mn(yn(3.2404542*i-1.5371385*r-.4985314*u),yn(-.969266*i+1.8760108*r+.041556*u),yn(.0556434*i-.2040259*r+1.0572252*u))}function gn(n,t,e){return n>0?new fn(Math.atan2(e,t)*Po,Math.sqrt(t*t+e*e),n):new fn(NaN,NaN,n)}function dn(n){return n>.206893034?n*n*n:(n-4/29)/7.787037}function vn(n){return n>.008856?Math.pow(n,1/3):7.787037*n+4/29}function yn(n){return Math.round(255*(n<=.00304?12.92*n:1.055*Math.pow(n,1/2.4)-.055))}function mn(n,t,e){return this instanceof mn?(this.r=~~n,this.g=~~t,void(this.b=~~e)):arguments.length<2?n instanceof mn?new mn(n.r,n.g,n.b):bn(""+n,mn,cn):new mn(n,t,e)}function xn(n){return new mn(n>>16,n>>8&255,255&n)}function Mn(n){return xn(n)+""}function _n(n){return n<16?"0"+Math.max(0,n).toString(16):Math.min(255,n).toString(16)}function bn(n,t,e){var r,i,u,o=0,a=0,l=0;if(r=/([a-z]+)\((.*)\)/.exec(n=n.toLowerCase()))switch(i=r[2].split(","),r[1]){case"hsl":return e(parseFloat(i[0]),parseFloat(i[1])/100,parseFloat(i[2])/100);case"rgb":return t(Nn(i[0]),Nn(i[1]),Nn(i[2]))}return(u=Wo.get(n))?t(u.r,u.g,u.b):(null==n||"#"!==n.charAt(0)||isNaN(u=parseInt(n.slice(1),16))||(4===n.length?(o=(3840&u)>>4,o|=o>>4,a=240&u,a|=a>>4,l=15&u,l|=l<<4):7===n.length&&(o=(16711680&u)>>16,a=(65280&u)>>8,l=255&u)),t(o,a,l))}function wn(n,t,e){var r,i,u=Math.min(n/=255,t/=255,e/=255),o=Math.max(n,t,e),a=o-u,l=(o+u)/2;return a?(i=l<.5?a/(o+u):a/(2-o-u),r=n==o?(t-e)/a+(t0&&l<1?0:r),new ln(r,i,l)}function Sn(n,t,e){var r=vn((.4124564*(n=kn(n))+.3575761*(t=kn(t))+.1804375*(e=kn(e)))/Zo),i=vn((.2126729*n+.7151522*t+.072175*e)/Vo);return hn(116*i-16,500*(r-i),200*(i-vn((.0193339*n+.119192*t+.9503041*e)/Xo)))}function kn(n){return(n/=255)<=.04045?n/12.92:Math.pow((n+.055)/1.055,2.4)}function Nn(n){var t=parseFloat(n);return"%"===n.charAt(n.length-1)?Math.round(2.55*t):t}function En(n){return"function"==typeof n?n:function(){return n}}function An(n){return function(t,e,r){return 2===arguments.length&&"function"==typeof e&&(r=e,e=null),Cn(t,e,n,r)}}function Cn(n,t,e,r){function i(){var n,t=l.status;if(!t&&Ln(l)||t>=200&&t<300||304===t){try{n=e.call(u,l)}catch(n){return void o.error.call(u,n)}o.load.call(u,n)}else o.error.call(u,l)}var u={},o=to.dispatch("beforesend","progress","load","error"),a={},l=new XMLHttpRequest,c=null;return!this.XDomainRequest||"withCredentials"in l||!/^(http(s)?:)?\/\//.test(n)||(l=new XDomainRequest),"onload"in l?l.onload=l.onerror=i:l.onreadystatechange=function(){l.readyState>3&&i()},l.onprogress=function(n){var t=to.event;to.event=n;try{o.progress.call(u,l)}finally{to.event=t}},u.header=function(n,t){return n=(n+"").toLowerCase(),arguments.length<2?a[n]:(null==t?delete a[n]:a[n]=t+"",u)},u.mimeType=function(n){return arguments.length?(t=null==n?null:n+"",u):t},u.responseType=function(n){return arguments.length?(c=n,u):c},u.response=function(n){return e=n,u},["get","post"].forEach(function(n){u[n]=function(){return u.send.apply(u,[n].concat(ro(arguments)))}}),u.send=function(e,r,i){if(2===arguments.length&&"function"==typeof r&&(i=r,r=null),l.open(e,n,!0),null==t||"accept"in a||(a.accept=t+",*/*"),l.setRequestHeader)for(var f in a)l.setRequestHeader(f,a[f]);return null!=t&&l.overrideMimeType&&l.overrideMimeType(t),null!=c&&(l.responseType=c),null!=i&&u.on("error",i).on("load",function(n){i(null,n)}),o.beforesend.call(u,l),l.send(null==r?null:r),u},u.abort=function(){return l.abort(),u},to.rebind(u,o,"on"),null==r?u:u.get(zn(r))}function zn(n){return 1===n.length?function(t,e){n(null==t?e:null)}:n}function Ln(n){var t=n.responseType;return t&&"text"!==t?n.response:n.responseText}function qn(n,t,e){var r=arguments.length;r<2&&(t=0),r<3&&(e=Date.now());var i={c:n,t:e+t,n:null};return Go?Go.n=i:Jo=i,Go=i,Ko||(Qo=clearTimeout(Qo),Ko=1,na(Tn)),i}function Tn(){var n=Rn(),t=Dn()-n;t>24?(isFinite(t)&&(clearTimeout(Qo),Qo=setTimeout(Tn,t)),Ko=0):(Ko=1,na(Tn))}function Rn(){for(var n=Date.now(),t=Jo;t;)n>=t.t&&t.c(n-t.t)&&(t.c=null),t=t.n;return n}function Dn(){for(var n,t=Jo,e=1/0;t;)t.c?(t.t8?function(n){return n/e}:function(n){return n*e},symbol:n}}function Un(n){var t=n.decimal,e=n.thousands,r=n.grouping,i=n.currency,u=r&&e?function(n,t){for(var i=n.length,u=[],o=0,a=r[0],l=0;i>0&&a>0&&(l+a+1>t&&(a=Math.max(1,t-l)),u.push(n.substring(i-=a,i+a)),!((l+=a+1)>t));)a=r[o=(o+1)%r.length];return u.reverse().join(e)}:m;return function(n){var e=ea.exec(n),r=e[1]||" ",o=e[2]||">",a=e[3]||"-",l=e[4]||"",c=e[5],f=+e[6],s=e[7],h=e[8],p=e[9],g=1,d="",v="",y=!1,m=!0;switch(h&&(h=+h.substring(1)),(c||"0"===r&&"="===o)&&(c=r="0",o="="),p){case"n":s=!0,p="g";break;case"%":g=100,v="%",p="f";break;case"p":g=100,v="%",p="r";break;case"b":case"o":case"x":case"X":"#"===l&&(d="0"+p.toLowerCase());case"c":m=!1;case"d":y=!0,h=0;break;case"s":g=-1,p="r"}"$"===l&&(d=i[0],v=i[1]),"r"!=p||h||(p="g"),null!=h&&("g"==p?h=Math.max(1,Math.min(21,h)):"e"!=p&&"f"!=p||(h=Math.max(0,Math.min(20,h)))),p=ra.get(p)||Fn;var x=c&&s;return function(n){var e=v;if(y&&n%1)return"";var i=n<0||0===n&&1/n<0?(n=-n,"-"):"-"===a?"":a;if(g<0){var l=to.formatPrefix(n,h);n=l.scale(n),e=l.symbol+v}else n*=g;var M,_,b=(n=p(n,h)).lastIndexOf(".");if(b<0){var w=m?n.lastIndexOf("e"):-1;w<0?(M=n,_=""):(M=n.substring(0,w),_=n.substring(w))}else M=n.substring(0,b),_=t+n.substring(b+1);!c&&s&&(M=u(M,1/0));var S=d.length+M.length+_.length+(x?0:i.length),k=S"===o?k+i+n:"^"===o?k.substring(0,S>>=1)+i+n+k.substring(S):i+(x?n:k+n))+e}}}function Fn(n){return n+""}function Hn(){this._=new Date(arguments.length>1?Date.UTC.apply(this,arguments):arguments[0])}function On(n,t,e){function r(t){var e=n(t),r=u(e,1);return t-e1)for(;o=c)return-1;if(37===(i=t.charCodeAt(a++))){if(o=t.charAt(a++),!(u=C[o in aa?t.charAt(a++):o])||(r=u(n,e,r))<0)return-1}else if(i!=e.charCodeAt(r++))return-1}return r}function r(n,t,e){b.lastIndex=0;var r=b.exec(t.slice(e));return r?(n.w=w.get(r[0].toLowerCase()),e+r[0].length):-1}function i(n,t,e){M.lastIndex=0;var r=M.exec(t.slice(e));return r?(n.w=_.get(r[0].toLowerCase()),e+r[0].length):-1}function u(n,t,e){N.lastIndex=0;var r=N.exec(t.slice(e));return r?(n.m=E.get(r[0].toLowerCase()),e+r[0].length):-1}function o(n,t,e){S.lastIndex=0;var r=S.exec(t.slice(e));return r?(n.m=k.get(r[0].toLowerCase()),e+r[0].length):-1}function a(n,t,r){return e(n,A.c.toString(),t,r)}function l(n,t,r){return e(n,A.x.toString(),t,r)}function c(n,t,r){return e(n,A.X.toString(),t,r)}function f(n,t,e){var r=x.get(t.slice(e,e+=2).toLowerCase());return null==r?-1:(n.p=r,e)}var s=n.dateTime,h=n.date,p=n.time,g=n.periods,d=n.days,v=n.shortDays,y=n.months,m=n.shortMonths;t.utc=function(n){function e(n){try{var t=new(ua=Hn);return t._=n,r(t)}finally{ua=Date}}var r=t(n);return e.parse=function(n){try{ua=Hn;var t=r.parse(n);return t&&t._}finally{ua=Date}},e.toString=r.toString,e},t.multi=t.utc.multi=ct;var x=to.map(),M=Vn(d),_=Xn(d),b=Vn(v),w=Xn(v),S=Vn(y),k=Xn(y),N=Vn(m),E=Xn(m);g.forEach(function(n,t){x.set(n.toLowerCase(),t)});var A={a:function(n){return v[n.getDay()]},A:function(n){return d[n.getDay()]},b:function(n){return m[n.getMonth()]},B:function(n){return y[n.getMonth()]},c:t(s),d:function(n,t){return Zn(n.getDate(),t,2)},e:function(n,t){return Zn(n.getDate(),t,2)},H:function(n,t){return Zn(n.getHours(),t,2)},I:function(n,t){return Zn(n.getHours()%12||12,t,2)},j:function(n,t){return Zn(1+ia.dayOfYear(n),t,3)},L:function(n,t){return Zn(n.getMilliseconds(),t,3)},m:function(n,t){return Zn(n.getMonth()+1,t,2)},M:function(n,t){return Zn(n.getMinutes(),t,2)},p:function(n){return g[+(n.getHours()>=12)]},S:function(n,t){return Zn(n.getSeconds(),t,2)},U:function(n,t){return Zn(ia.sundayOfYear(n),t,2)},w:function(n){return n.getDay()},W:function(n,t){return Zn(ia.mondayOfYear(n),t,2)},x:t(h),X:t(p),y:function(n,t){return Zn(n.getFullYear()%100,t,2)},Y:function(n,t){return Zn(n.getFullYear()%1e4,t,4)},Z:at,"%":function(){return"%"}},C={a:r,A:i,b:u,B:o,c:a,d:tt,e:tt,H:rt,I:rt,j:et,L:ot,m:nt,M:it,p:f,S:ut,U:Bn,w:$n,W:Wn,x:l,X:c,y:Gn,Y:Jn,Z:Kn,"%":lt};return t}function Zn(n,t,e){var r=n<0?"-":"",i=(r?-n:n)+"",u=i.length;return r+(u68?1900:2e3)}function nt(n,t,e){la.lastIndex=0;var r=la.exec(t.slice(e,e+2));return r?(n.m=r[0]-1,e+r[0].length):-1}function tt(n,t,e){la.lastIndex=0;var r=la.exec(t.slice(e,e+2));return r?(n.d=+r[0],e+r[0].length):-1}function et(n,t,e){la.lastIndex=0;var r=la.exec(t.slice(e,e+3));return r?(n.j=+r[0],e+r[0].length):-1}function rt(n,t,e){la.lastIndex=0;var r=la.exec(t.slice(e,e+2));return r?(n.H=+r[0],e+r[0].length):-1}function it(n,t,e){la.lastIndex=0;var r=la.exec(t.slice(e,e+2));return r?(n.M=+r[0],e+r[0].length):-1}function ut(n,t,e){la.lastIndex=0;var r=la.exec(t.slice(e,e+2));return r?(n.S=+r[0],e+r[0].length):-1}function ot(n,t,e){la.lastIndex=0;var r=la.exec(t.slice(e,e+3));return r?(n.L=+r[0],e+r[0].length):-1}function at(n){var t=n.getTimezoneOffset(),e=t>0?"-":"+",r=so(t)/60|0,i=so(t)%60;return e+Zn(r,"0",2)+Zn(i,"0",2)}function lt(n,t,e){ca.lastIndex=0;var r=ca.exec(t.slice(e,e+1));return r?e+r[0].length:-1}function ct(n){for(var t=n.length,e=-1;++e=0?1:-1,a=o*e,l=Math.cos(t),c=Math.sin(t),f=u*c,s=i*l+f*Math.cos(a),h=f*o*Math.sin(a);da.add(Math.atan2(h,s)),r=n,i=l,u=c}var t,e,r,i,u;va.point=function(o,a){va.point=n,r=(t=o)*Do,i=Math.cos(a=(e=a)*Do/2+Lo/4),u=Math.sin(a)},va.lineEnd=function(){n(t,e)}}function vt(n){var t=n[0],e=n[1],r=Math.cos(e);return[r*Math.cos(t),r*Math.sin(t),Math.sin(e)]}function yt(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]}function mt(n,t){return[n[1]*t[2]-n[2]*t[1],n[2]*t[0]-n[0]*t[2],n[0]*t[1]-n[1]*t[0]]}function xt(n,t){n[0]+=t[0],n[1]+=t[1],n[2]+=t[2]}function Mt(n,t){return[n[0]*t,n[1]*t,n[2]*t]}function _t(n){var t=Math.sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]);n[0]/=t,n[1]/=t,n[2]/=t}function bt(n){return[Math.atan2(n[1],n[0]),tn(n[2])]}function wt(n,t){return so(n[0]-t[0])=0;--a)i.point((s=f[a])[0],s[1]);else r(p.x,p.p.x,-1,i);p=p.p}f=(p=p.o).z,g=!g}while(!p.v);i.lineEnd()}}}function qt(n){if(t=n.length){for(var t,e,r=0,i=n[0];++r0){for(_||(u.polygonStart(),_=!0),u.lineStart();++o1&&2&t&&e.push(e.pop().concat(e.shift())),p.push(e.filter(Dt))}var p,g,d,v=t(u),y=i.invert(r[0],r[1]),m={point:o,lineStart:l,lineEnd:c,polygonStart:function(){m.point=f,m.lineStart=s,m.lineEnd=h,p=[],g=[]},polygonEnd:function(){m.point=o,m.lineStart=l,m.lineEnd=c,p=to.merge(p);var n=Ot(y,g);p.length?(_||(u.polygonStart(),_=!0),Lt(p,jt,n,e,u)):n&&(_||(u.polygonStart(),_=!0),u.lineStart(),e(null,null,1,u),u.lineEnd()),_&&(u.polygonEnd(),_=!1),p=g=null},sphere:function(){u.polygonStart(),u.lineStart(),e(null,null,1,u),u.lineEnd(),u.polygonEnd()}},x=Pt(),M=t(x),_=!1;return m}}function Dt(n){return n.length>1}function Pt(){var n,t=[];return{lineStart:function(){t.push(n=[])},point:function(t,e){n.push([t,e])},lineEnd:_,buffer:function(){var e=t;return t=[],n=null,e},rejoin:function(){t.length>1&&t.push(t.pop().concat(t.shift()))}}}function jt(n,t){return((n=n.x)[0]<0?n[1]-Ro-Co:Ro-n[1])-((t=t.x)[0]<0?t[1]-Ro-Co:Ro-t[1])}function Ut(n){var t,e=NaN,r=NaN,i=NaN;return{lineStart:function(){n.lineStart(),t=1},point:function(u,o){var a=u>0?Lo:-Lo,l=so(u-e);so(l-Lo)0?Ro:-Ro),n.point(i,r),n.lineEnd(),n.lineStart(),n.point(a,r),n.point(u,r),t=0):i!==a&&l>=Lo&&(so(e-i)Co?Math.atan((Math.sin(t)*(u=Math.cos(r))*Math.sin(e)-Math.sin(r)*(i=Math.cos(t))*Math.sin(n))/(i*u*o)):(t+r)/2}function Ht(n,t,e,r){var i;if(null==n)i=e*Ro,r.point(-Lo,i),r.point(0,i),r.point(Lo,i),r.point(Lo,0),r.point(Lo,-i),r.point(0,-i),r.point(-Lo,-i),r.point(-Lo,0),r.point(-Lo,i);else if(so(n[0]-t[0])>Co){var u=n[0]=0?1:-1,w=b*_,S=w>Lo,k=g*x;if(da.add(Math.atan2(k*b*Math.sin(w),d*M+k*Math.cos(w))),u+=S?_+b*qo:_,S^h>=e^y>=e){var N=mt(vt(s),vt(n));_t(N);var E=mt(i,N);_t(E);var A=(S^_>=0?-1:1)*tn(E[2]);(r>A||r===A&&(N[0]||N[1]))&&(o+=S^_>=0?1:-1)}if(!v++)break;h=y,g=x,d=M,s=n}}return(u<-Co||uu}function e(n){var e,u,l,c,f;return{lineStart:function(){c=l=!1,f=1},point:function(s,h){var p,g=[s,h],d=t(s,h),v=o?d?0:i(s,h):d?i(s+(s<0?Lo:-Lo),h):0;if(!e&&(c=l=d)&&n.lineStart(),d!==l&&(p=r(e,g),(wt(e,p)||wt(g,p))&&(g[0]+=Co,g[1]+=Co,d=t(g[0],g[1]))),d!==l)f=0,d?(n.lineStart(),p=r(g,e),n.point(p[0],p[1])):(p=r(e,g),n.point(p[0],p[1]),n.lineEnd()),e=p;else if(a&&e&&o^d){var y;v&u||!(y=r(g,e,!0))||(f=0,o?(n.lineStart(),n.point(y[0][0],y[0][1]),n.point(y[1][0],y[1][1]),n.lineEnd()):(n.point(y[1][0],y[1][1]),n.lineEnd(),n.lineStart(),n.point(y[0][0],y[0][1])))}!d||e&&wt(e,g)||n.point(g[0],g[1]),e=g,l=d,u=v},lineEnd:function(){l&&n.lineEnd(),e=null},clean:function(){return f|(c&&l)<<1}}}function r(n,t,e){var r=[1,0,0],i=mt(vt(n),vt(t)),o=yt(i,i),a=i[0],l=o-a*a;if(!l)return!e&&n;var c=u*o/l,f=-u*a/l,s=mt(r,i),h=Mt(r,c);xt(h,Mt(i,f));var p=s,g=yt(h,p),d=yt(p,p),v=g*g-d*(yt(h,h)-1);if(!(v<0)){var y=Math.sqrt(v),m=Mt(p,(-g-y)/d);if(xt(m,h),m=bt(m),!e)return m;var x,M=n[0],_=t[0],b=n[1],w=t[1];_0^m[1]<(so(m[0]-M)Lo^(M<=m[0]&&m[0]<=_)){var E=Mt(p,(-g+y)/d);return xt(E,h),[m,bt(E)]}}}function i(t,e){var r=o?n:Lo-n,i=0;return t<-r?i|=1:t>r&&(i|=2),e<-r?i|=4:e>r&&(i|=8),i}var u=Math.cos(n),o=u>0,a=so(u)>Co;return Rt(t,e,de(n,6*Do),o?[0,-n]:[-Lo,n-Lo])}function It(n,t,e,r){return function(i){var u,o=i.a,a=i.b,l=o.x,c=o.y,f=0,s=1,h=a.x-l,p=a.y-c;if(u=n-l,h||!(u>0)){if(u/=h,h<0){if(u0){if(u>s)return;u>f&&(f=u)}if(u=e-l,h||!(u<0)){if(u/=h,h<0){if(u>s)return;u>f&&(f=u)}else if(h>0){if(u0)){if(u/=p,p<0){if(u0){if(u>s)return;u>f&&(f=u)}if(u=r-c,p||!(u<0)){if(u/=p,p<0){if(u>s)return;u>f&&(f=u)}else if(p>0){if(u0&&(i.a={x:l+f*h,y:c+f*p}),s<1&&(i.b={x:l+s*h,y:c+s*p}),i}}}}}}function Zt(n,t,e,r){function i(r,i){return so(r[0]-n)0?0:3:so(r[0]-e)0?2:1:so(r[1]-t)0?1:0:i>0?3:2}function u(n,t){return o(n.x,t.x)}function o(n,t){var e=i(n,1),r=i(t,1);return e!==r?e-r:0===e?t[1]-n[1]:1===e?n[0]-t[0]:2===e?n[1]-t[1]:t[0]-n[0]}return function(a){function l(n){for(var t=0,e=v.length,r=n[1],i=0;ir&&Q(c,u,n)>0&&++t:u[1]<=r&&Q(c,u,n)<0&&--t,c=u;return 0!==t}function c(u,a,l,c){var f=0,s=0;if(null==u||(f=i(u,l))!==(s=i(a,l))||o(u,a)<0^l>0)do{c.point(0===f||3===f?n:e,f>1?r:t)}while((f=(f+l+4)%4)!==s);else c.point(a[0],a[1])}function f(i,u){return n<=i&&i<=e&&t<=u&&u<=r}function s(n,t){f(n,t)&&a.point(n,t)}function h(){C.point=g,v&&v.push(y=[]),S=!0,w=!1,_=b=NaN}function p(){d&&(g(m,x),M&&w&&E.rejoin(),d.push(E.buffer())),C.point=s,w&&a.lineEnd()}function g(n,t){var e=f(n=Math.max(-za,Math.min(za,n)),t=Math.max(-za,Math.min(za,t)));if(v&&y.push([n,t]),S)m=n,x=t,M=e,S=!1,e&&(a.lineStart(),a.point(n,t));else if(e&&w)a.point(n,t);else{var r={a:{x:_,y:b},b:{x:n,y:t}};A(r)?(w||(a.lineStart(),a.point(r.a.x,r.a.y)),a.point(r.b.x,r.b.y),e||a.lineEnd(),k=!1):e&&(a.lineStart(),a.point(n,t),k=!1)}_=n,b=t,w=e}var d,v,y,m,x,M,_,b,w,S,k,N=a,E=Pt(),A=It(n,t,e,r),C={point:s,lineStart:h,lineEnd:p,polygonStart:function(){a=E,d=[],v=[],k=!0},polygonEnd:function(){a=N,d=to.merge(d);var t=l([n,r]),e=k&&t,i=d.length;(e||i)&&(a.polygonStart(),e&&(a.lineStart(),c(null,null,1,a),a.lineEnd()),i&&Lt(d,u,t,c,a),a.polygonEnd()),d=v=y=null}};return C}}function Vt(n){var t=0,e=Lo/3,r=ae(n),i=r(t,e);return i.parallels=function(n){return arguments.length?r(t=n[0]*Lo/180,e=n[1]*Lo/180):[t/Lo*180,e/Lo*180]},i}function Xt(n,t){function e(n,t){var e=Math.sqrt(u-2*i*Math.sin(t))/i;return[e*Math.sin(n*=i),o-e*Math.cos(n)]}var r=Math.sin(n),i=(r+Math.sin(t))/2,u=1+r*(2*i-r),o=Math.sqrt(u)/i;return e.invert=function(n,t){var e=o-t;return[Math.atan2(n,e)/i,tn((u-(n*n+e*e)*i*i)/(2*i))]},e}function $t(){function n(n,t){qa+=i*n-r*t,r=n,i=t}var t,e,r,i;ja.point=function(u,o){ja.point=n,t=r=u,e=i=o},ja.lineEnd=function(){n(t,e)}}function Bt(n,t){nDa&&(Da=n),tPa&&(Pa=t)}function Wt(){function n(n,t){o.push("M",n,",",t,u)}function t(n,t){o.push("M",n,",",t),a.point=e}function e(n,t){o.push("L",n,",",t)}function r(){a.point=n}function i(){o.push("Z")}var u=Jt(4.5),o=[],a={point:n,lineStart:function(){a.point=t},lineEnd:r,polygonStart:function(){a.lineEnd=i},polygonEnd:function(){a.lineEnd=r,a.point=n},pointRadius:function(n){return u=Jt(n),a},result:function(){if(o.length){var n=o.join("");return o=[],n}}};return a}function Jt(n){return"m0,"+n+"a"+n+","+n+" 0 1,1 0,"+-2*n+"a"+n+","+n+" 0 1,1 0,"+2*n+"z"}function Gt(n,t){xa+=n,Ma+=t,++_a}function Kt(){function n(n,r){var i=n-t,u=r-e,o=Math.sqrt(i*i+u*u);ba+=o*(t+n)/2,wa+=o*(e+r)/2,Sa+=o,Gt(t=n,e=r)}var t,e;Fa.point=function(r,i){Fa.point=n,Gt(t=r,e=i)}}function Qt(){Fa.point=Gt}function ne(){function n(n,t){var e=n-r,u=t-i,o=Math.sqrt(e*e+u*u);ba+=o*(r+n)/2,wa+=o*(i+t)/2,Sa+=o,ka+=(o=i*n-r*t)*(r+n),Na+=o*(i+t),Ea+=3*o,Gt(r=n,i=t)}var t,e,r,i;Fa.point=function(u,o){Fa.point=n,Gt(t=r=u,e=i=o)},Fa.lineEnd=function(){n(t,e)}}function te(n){function t(t,e){n.moveTo(t+o,e),n.arc(t,e,o,0,qo)}function e(t,e){n.moveTo(t,e),a.point=r}function r(t,e){n.lineTo(t,e)}function i(){a.point=t}function u(){n.closePath()}var o=4.5,a={point:t,lineStart:function(){a.point=e},lineEnd:i,polygonStart:function(){a.lineEnd=u},polygonEnd:function(){a.lineEnd=i,a.point=t},pointRadius:function(n){return o=n,a},result:_};return a}function ee(n){function t(n){return(a?r:e)(n)}function e(t){return ue(t,function(e,r){e=n(e,r),t.point(e[0],e[1])})}function r(t){function e(e,r){e=n(e,r),t.point(e[0],e[1])}function r(){x=NaN,S.point=u,t.lineStart()}function u(e,r){var u=vt([e,r]),o=n(e,r);i(x,M,m,_,b,w,x=o[0],M=o[1],m=e,_=u[0],b=u[1],w=u[2],a,t),t.point(x,M)}function o(){S.point=e,t.lineEnd()}function l(){r(),S.point=c,S.lineEnd=f}function c(n,t){u(s=n,h=t),p=x,g=M,d=_,v=b,y=w,S.point=u}function f(){i(x,M,m,_,b,w,p,g,s,d,v,y,a,t),S.lineEnd=o,o()}var s,h,p,g,d,v,y,m,x,M,_,b,w,S={point:e,lineStart:r,lineEnd:o,polygonStart:function(){t.polygonStart(),S.lineStart=l},polygonEnd:function(){t.polygonEnd(),S.lineStart=r}};return S}function i(t,e,r,a,l,c,f,s,h,p,g,d,v,y){var m=f-t,x=s-e,M=m*m+x*x;if(M>4*u&&v--){var _=a+p,b=l+g,w=c+d,S=Math.sqrt(_*_+b*b+w*w),k=Math.asin(w/=S),N=so(so(w)-1)u||so((m*z+x*L)/M-.5)>.3||a*p+l*g+c*d0&&16,t):Math.sqrt(u)},t}function re(n){var t=ee(function(t,e){return n([t*Po,e*Po])});return function(n){return le(t(n))}}function ie(n){this.stream=n}function ue(n,t){return{point:t,sphere:function(){n.sphere()},lineStart:function(){n.lineStart()},lineEnd:function(){n.lineEnd()},polygonStart:function(){n.polygonStart()},polygonEnd:function(){n.polygonEnd()}}}function oe(n){return ae(function(){return n})()}function ae(n){function t(n){return n=a(n[0]*Do,n[1]*Do),[n[0]*h+l,c-n[1]*h]}function e(n){return(n=a.invert((n[0]-l)/h,(c-n[1])/h))&&[n[0]*Po,n[1]*Po]}function r(){a=Ct(o=se(y,x,M),u);var n=u(d,v);return l=p-n[0]*h,c=g+n[1]*h,i()}function i(){return f&&(f.valid=!1,f=null),t}var u,o,a,l,c,f,s=ee(function(n,t){return n=u(n,t),[n[0]*h+l,c-n[1]*h]}),h=150,p=480,g=250,d=0,v=0,y=0,x=0,M=0,_=Ca,b=m,w=null,S=null;return t.stream=function(n){return f&&(f.valid=!1),f=le(_(o,s(b(n)))),f.valid=!0,f},t.clipAngle=function(n){return arguments.length?(_=null==n?(w=n,Ca):Yt((w=+n)*Do),i()):w},t.clipExtent=function(n){return arguments.length?(S=n,b=n?Zt(n[0][0],n[0][1],n[1][0],n[1][1]):m,i()):S},t.scale=function(n){return arguments.length?(h=+n,r()):h},t.translate=function(n){return arguments.length?(p=+n[0],g=+n[1],r()):[p,g]},t.center=function(n){return arguments.length?(d=n[0]%360*Do,v=n[1]%360*Do,r()):[d*Po,v*Po]},t.rotate=function(n){return arguments.length?(y=n[0]%360*Do,x=n[1]%360*Do,M=n.length>2?n[2]%360*Do:0,r()):[y*Po,x*Po,M*Po]},to.rebind(t,s,"precision"),function(){return u=n.apply(this,arguments),t.invert=u.invert&&e,r()}}function le(n){return ue(n,function(t,e){n.point(t*Do,e*Do)})}function ce(n,t){return[n,t]}function fe(n,t){return[n>Lo?n-qo:n<-Lo?n+qo:n,t]}function se(n,t,e){return n?t||e?Ct(pe(n),ge(t,e)):pe(n):t||e?ge(t,e):fe}function he(n){return function(t,e){return t+=n,[t>Lo?t-qo:t<-Lo?t+qo:t,e]}}function pe(n){var t=he(n);return t.invert=he(-n),t}function ge(n,t){function e(n,t){var e=Math.cos(t),a=Math.cos(n)*e,l=Math.sin(n)*e,c=Math.sin(t),f=c*r+a*i;return[Math.atan2(l*u-f*o,a*r-c*i),tn(f*u+l*o)]}var r=Math.cos(n),i=Math.sin(n),u=Math.cos(t),o=Math.sin(t);return e.invert=function(n,t){var e=Math.cos(t),a=Math.cos(n)*e,l=Math.sin(n)*e,c=Math.sin(t),f=c*u-l*o;return[Math.atan2(l*u+c*o,a*r+f*i),tn(f*r-a*i)]},e}function de(n,t){var e=Math.cos(n),r=Math.sin(n);return function(i,u,o,a){var l=o*t;null!=i?(i=ve(e,i),u=ve(e,u),(o>0?iu)&&(i+=o*qo)):(i=n+o*qo,u=n-.5*l);for(var c,f=i;o>0?f>u:f0?t<-Ro+Co&&(t=-Ro+Co):t>Ro-Co&&(t=Ro-Co);var e=o/Math.pow(i(t),u);return[e*Math.sin(u*n),o-e*Math.cos(u*n)]}var r=Math.cos(n),i=function(n){return Math.tan(Lo/4+n/2)},u=n===t?Math.sin(n):Math.log(r/Math.cos(t))/Math.log(i(t)/i(n)),o=r*Math.pow(i(n),u)/u;return u?(e.invert=function(n,t){var e=o-t,r=K(u)*Math.sqrt(n*n+e*e);return[Math.atan2(n,e)/u,2*Math.atan(Math.pow(o/r,1/u))-Ro]},e):Ne}function ke(n,t){function e(n,t){var e=u-t;return[e*Math.sin(i*n),u-e*Math.cos(i*n)]}var r=Math.cos(n),i=n===t?Math.sin(n):(r-Math.cos(t))/(t-n),u=r/i+n;return so(i)1&&Q(n[e[r-2]],n[e[r-1]],n[i])<=0;)--r;e[r++]=i}return e.slice(0,r)}function qe(n,t){return n[0]-t[0]||n[1]-t[1]}function Te(n,t,e){return(e[0]-t[0])*(n[1]-t[1])<(e[1]-t[1])*(n[0]-t[0])}function Re(n,t,e,r){var i=n[0],u=e[0],o=t[0]-i,a=r[0]-u,l=n[1],c=e[1],f=t[1]-l,s=r[1]-c,h=(a*(l-c)-s*(i-u))/(s*o-a*f);return[i+h*o,l+h*f]}function De(n){var t=n[0],e=n[n.length-1];return!(t[0]-e[0]||t[1]-e[1])}function Pe(){rr(this),this.edge=this.site=this.circle=null}function je(n){var t=Qa.pop()||new Pe;return t.site=n,t}function Ue(n){Be(n),Ja.remove(n),Qa.push(n),rr(n)}function Fe(n){var t=n.circle,e=t.x,r=t.cy,i={x:e,y:r},u=n.P,o=n.N,a=[n];Ue(n);for(var l=u;l.circle&&so(e-l.circle.x)Co)a=a.L;else{if(!((i=u-Ye(a,o))>Co)){r>-Co?(t=a.P,e=a):i>-Co?(t=a,e=a.N):t=e=a;break}if(!a.R){t=a;break}a=a.R}var l=je(n);if(Ja.insert(t,l),t||e){if(t===e)return Be(t),e=je(t.site),Ja.insert(l,e),l.edge=e.edge=Ke(t.site,l.site),$e(t),void $e(e);if(e){Be(t),Be(e);var c=t.site,f=c.x,s=c.y,h=n.x-f,p=n.y-s,g=e.site,d=g.x-f,v=g.y-s,y=2*(h*v-p*d),m=h*h+p*p,x=d*d+v*v,M={x:(v*m-p*x)/y+f,y:(h*x-d*m)/y+s};nr(e.edge,c,g,M),l.edge=Ke(c,n,null,M),e.edge=Ke(n,g,null,M),$e(t),$e(e)}else l.edge=Ke(t.site,l.site)}}function Oe(n,t){var e=n.site,r=e.x,i=e.y,u=i-t;if(!u)return r;var o=n.P;if(!o)return-1/0;var a=(e=o.site).x,l=e.y,c=l-t;if(!c)return a;var f=a-r,s=1/u-1/c,h=f/c;return s?(-h+Math.sqrt(h*h-2*s*(f*f/(-2*c)-l+c/2+i-u/2)))/s+r:(r+a)/2}function Ye(n,t){var e=n.N;if(e)return Oe(e,t);var r=n.site;return r.y===t?r.x:1/0}function Ie(n){this.site=n,this.edges=[]}function Ze(n){for(var t,e,r,i,u,o,a,l,c,f,s=n[0][0],h=n[1][0],p=n[0][1],g=n[1][1],d=Wa,v=d.length;v--;)if((u=d[v])&&u.prepare())for(l=(a=u.edges).length,o=0;oCo||so(i-e)>Co)&&(a.splice(o,0,new tr(Qe(u.site,f,so(r-s)Co?{x:s,y:so(t-s)Co?{x:so(e-g)Co?{x:h,y:so(t-h)Co?{x:so(e-p)=-zo)){var h=l*l+c*c,p=f*f+v*v,g=(v*h-c*p)/s,d=(l*p-f*h)/s,v=d+a,y=nl.pop()||new Xe;y.arc=n,y.site=i,y.x=g+o,y.y=v+Math.sqrt(g*g+d*d),y.cy=v,n.circle=y;for(var m=null,x=Ka._;x;)if(y.y=a)return;if(h>g){if(u){if(u.y>=c)return}else u={x:v,y:l};e={x:v,y:c}}else{if(u){if(u.y1)if(h>g){if(u){if(u.y>=c)return}else u={x:(l-i)/r,y:l};e={x:(c-i)/r,y:c}}else{if(u){if(u.y=a)return}else u={x:o,y:r*o+i};e={x:a,y:r*a+i}}else{if(u){if(u.xu||s>o||h=_)<<1|t>=M,w=b+4;bu&&(i=t.slice(u,i),a[o]?a[o]+=i:a[++o]=i),(e=e[0])===(r=r[0])?a[o]?a[o]+=r:a[++o]=r:(a[++o]=null,l.push({i:o,x:vr(e,r)})),u=rl.lastIndex;return u=0&&!(e=to.interpolators[r](n,t)););return e}function xr(n,t){var e,r=[],i=[],u=n.length,o=t.length,a=Math.min(n.length,t.length);for(e=0;e=1?1:n(t)}}function _r(n){return function(t){return 1-n(1-t)}}function br(n){return function(t){return.5*(t<.5?n(2*t):2-n(2-2*t))}}function wr(n){return n*n}function Sr(n){return n*n*n}function kr(n){if(n<=0)return 0;if(n>=1)return 1;var t=n*n,e=t*n;return 4*(n<.5?e:3*(n-t)+e-.75)}function Nr(n){return function(t){return Math.pow(t,n)}}function Er(n){return 1-Math.cos(n*Ro)}function Ar(n){return Math.pow(2,10*(n-1))}function Cr(n){return 1-Math.sqrt(1-n*n)}function zr(n,t){var e;return arguments.length<2&&(t=.45),arguments.length?e=t/qo*Math.asin(1/n):(n=1,e=t/4),function(r){return 1+n*Math.pow(2,-10*r)*Math.sin((r-e)*qo/t)}}function Lr(n){return n||(n=1.70158),function(t){return t*t*((n+1)*t-n)}}function qr(n){return n<1/2.75?7.5625*n*n:n<2/2.75?7.5625*(n-=1.5/2.75)*n+.75:n<2.5/2.75?7.5625*(n-=2.25/2.75)*n+.9375:7.5625*(n-=2.625/2.75)*n+.984375}function Tr(n,t){n=to.hcl(n),t=to.hcl(t);var e=n.h,r=n.c,i=n.l,u=t.h-e,o=t.c-r,a=t.l-i;return isNaN(o)&&(o=0,r=isNaN(r)?t.c:r),isNaN(u)?(u=0,e=isNaN(e)?t.h:e):u>180?u-=360:u<-180&&(u+=360),function(n){return sn(e+u*n,r+o*n,i+a*n)+""}}function Rr(n,t){n=to.hsl(n),t=to.hsl(t);var e=n.h,r=n.s,i=n.l,u=t.h-e,o=t.s-r,a=t.l-i;return isNaN(o)&&(o=0,r=isNaN(r)?t.s:r),isNaN(u)?(u=0,e=isNaN(e)?t.h:e):u>180?u-=360:u<-180&&(u+=360),function(n){return cn(e+u*n,r+o*n,i+a*n)+""}}function Dr(n,t){n=to.lab(n),t=to.lab(t);var e=n.l,r=n.a,i=n.b,u=t.l-e,o=t.a-r,a=t.b-i;return function(n){return pn(e+u*n,r+o*n,i+a*n)+""}}function Pr(n,t){return t-=n,function(e){return Math.round(n+t*e)}}function jr(n){var t=[n.a,n.b],e=[n.c,n.d],r=Fr(t),i=Ur(t,e),u=Fr(Hr(e,t,-i))||0;t[0]*e[1]180?t+=360:t-n>180&&(n+=360),r.push({i:e.push(Or(e)+"rotate(",null,")")-2,x:vr(n,t)})):t&&e.push(Or(e)+"rotate("+t+")")}function Zr(n,t,e,r){n!==t?r.push({i:e.push(Or(e)+"skewX(",null,")")-2,x:vr(n,t)}):t&&e.push(Or(e)+"skewX("+t+")")}function Vr(n,t,e,r){if(n[0]!==t[0]||n[1]!==t[1]){var i=e.push(Or(e)+"scale(",null,",",null,")");r.push({i:i-4,x:vr(n[0],t[0])},{i:i-2,x:vr(n[1],t[1])})}else 1===t[0]&&1===t[1]||e.push(Or(e)+"scale("+t+")")}function Xr(n,t){var e=[],r=[];return n=to.transform(n),t=to.transform(t),Yr(n.translate,t.translate,e,r),Ir(n.rotate,t.rotate,e,r),Zr(n.skew,t.skew,e,r),Vr(n.scale,t.scale,e,r),n=t=null,function(n){for(var t,i=-1,u=r.length;++i=0;)e.push(i[r])}function ui(n,t){for(var e=[n],r=[];null!=(n=e.pop());)if(r.push(n),(u=n.children)&&(i=u.length))for(var i,u,o=-1;++oi&&(r=e,i=t);return r}function vi(n){return n.reduce(yi,0)}function yi(n,t){return n+t[1]}function mi(n,t){return xi(n,Math.ceil(Math.log(t.length)/Math.LN2+1))}function xi(n,t){for(var e=-1,r=+n[0],i=(n[1]-r)/t,u=[];++e<=t;)u[e]=i*e+r;return u}function Mi(n){return[to.min(n),to.max(n)]}function _i(n,t){return n.value-t.value}function bi(n,t){var e=n._pack_next;n._pack_next=t,t._pack_prev=n,t._pack_next=e,e._pack_prev=t}function wi(n,t){n._pack_next=t,t._pack_prev=n}function Si(n,t){var e=t.x-n.x,r=t.y-n.y,i=n.r+t.r;return.999*i*i>e*e+r*r}function ki(n){function t(n){f=Math.min(n.x-n.r,f),s=Math.max(n.x+n.r,s),h=Math.min(n.y-n.r,h),p=Math.max(n.y+n.r,p)}if((e=n.children)&&(c=e.length)){var e,r,i,u,o,a,l,c,f=1/0,s=-1/0,h=1/0,p=-1/0;if(e.forEach(Ni),r=e[0],r.x=-r.r,r.y=0,t(r),c>1&&(i=e[1],i.x=i.r,i.y=0,t(i),c>2))for(Ci(r,i,u=e[2]),t(u),bi(r,u),r._pack_prev=u,bi(u,i),i=r._pack_next,o=3;o2?Yi:Fi,l=r?Br:$r;return o=i(n,t,l,e),a=i(t,n,l,mr),u}function u(n){return o(n)}var o,a;return u.invert=function(n){return a(n)},u.domain=function(t){return arguments.length?(n=t.map(Number),i()):n},u.range=function(n){return arguments.length?(t=n,i()):t},u.rangeRound=function(n){return u.range(n).interpolate(Pr)},u.clamp=function(n){return arguments.length?(r=n,i()):r},u.interpolate=function(n){return arguments.length?(e=n,i()):e},u.ticks=function(t){return $i(n,t)},u.tickFormat=function(t,e){return Bi(n,t,e)},u.nice=function(t){return Vi(n,t),i()},u.copy=function(){return Ii(n,t,e,r)},i()}function Zi(n,t){return to.rebind(n,t,"range","rangeRound","interpolate","clamp")}function Vi(n,t){return Hi(n,Oi(Xi(n,t)[2])),Hi(n,Oi(Xi(n,t)[2])),n}function Xi(n,t){null==t&&(t=10);var e=ji(n),r=e[1]-e[0],i=Math.pow(10,Math.floor(Math.log(r/t)/Math.LN10)),u=t/r*i;return u<=.15?i*=10:u<=.35?i*=5:u<=.75&&(i*=2),e[0]=Math.ceil(e[0]/i)*i,e[1]=Math.floor(e[1]/i)*i+.5*i,e[2]=i,e}function $i(n,t){return to.range.apply(to,Xi(n,t))}function Bi(n,t,e){var r=Xi(n,t);if(e){var i=ea.exec(e);if(i.shift(),"s"===i[8]){var u=to.formatPrefix(Math.max(so(r[0]),so(r[1])));return i[7]||(i[7]="."+Wi(u.scale(r[2]))),i[8]="f",e=to.format(i.join("")),function(n){return e(u.scale(n))+u.symbol}}i[7]||(i[7]="."+Ji(i[8],r)),e=i.join("")}else e=",."+Wi(r[2])+"f";return to.format(e)}function Wi(n){return-Math.floor(Math.log(n)/Math.LN10+.01)}function Ji(n,t){var e=Wi(t[2]);return n in dl?Math.abs(e-Wi(Math.max(so(t[0]),so(t[1]))))+ +("e"!==n):e-2*("%"===n)}function Gi(n,t,e,r){function i(n){return(e?Math.log(n<0?0:n):-Math.log(n>0?0:-n))/Math.log(t)}function u(n){return e?Math.pow(t,n):-Math.pow(t,-n)}function o(t){return n(i(t))}return o.invert=function(t){return u(n.invert(t))},o.domain=function(t){return arguments.length?(e=t[0]>=0,n.domain((r=t.map(Number)).map(i)),o):r},o.base=function(e){return arguments.length?(t=+e,n.domain(r.map(i)),o):t},o.nice=function(){var t=Hi(r.map(i),e?Math:yl);return n.domain(t),r=t.map(u),o},o.ticks=function(){var n=ji(r),o=[],a=n[0],l=n[1],c=Math.floor(i(a)),f=Math.ceil(i(l)),s=t%1?2:t;if(isFinite(f-c)){if(e){for(;c0;h--)o.push(u(c)*h);for(c=0;o[c]l;f--);o=o.slice(c,f)}return o},o.tickFormat=function(n,e){if(!arguments.length)return vl;arguments.length<2?e=vl:"function"!=typeof e&&(e=to.format(e));var r=Math.max(1,t*n/o.ticks().length);return function(n){var o=n/u(Math.round(i(n)));return o*t0?a[e-1]:n[0],e0?0:1}function hu(n,t,e,r,i){var u=n[0]-t[0],o=n[1]-t[1],a=(i?r:-r)/Math.sqrt(u*u+o*o),l=a*o,c=-a*u,f=n[0]+l,s=n[1]+c,h=t[0]+l,p=t[1]+c,g=(f+h)/2,d=(s+p)/2,v=h-f,y=p-s,m=v*v+y*y,x=e-r,M=f*p-h*s,_=(y<0?-1:1)*Math.sqrt(Math.max(0,x*x*m-M*M)),b=(M*y-v*_)/m,w=(-M*v-y*_)/m,S=(M*y+v*_)/m,k=(-M*v+y*_)/m,N=b-g,E=w-d,A=S-g,C=k-d;return N*N+E*E>A*A+C*C&&(b=S,w=k),[[b-l,w-c],[b*e/x,w*e/x]]}function pu(n){function t(t){function o(){c.push("M",u(n(f),a))}for(var l,c=[],f=[],s=-1,h=t.length,p=En(e),g=En(r);++s1?n.join("L"):n+"Z"}function du(n){return n.join("L")+"Z"}function vu(n){for(var t=0,e=n.length,r=n[0],i=[r[0],",",r[1]];++t1&&i.push("H",r[0]),i.join("")}function yu(n){for(var t=0,e=n.length,r=n[0],i=[r[0],",",r[1]];++t1){a=t[1],u=n[l],l++,r+="C"+(i[0]+o[0])+","+(i[1]+o[1])+","+(u[0]-a[0])+","+(u[1]-a[1])+","+u[0]+","+u[1];for(var c=2;c9&&(i=3*t/Math.sqrt(i),o[a]=i*e,o[a+1]=i*r);for(a=-1;++a<=l;)i=(n[Math.min(l,a+1)][0]-n[Math.max(0,a-1)][0])/(6*(1+o[a]*o[a])),u.push([i||0,o[a]*i||0]);return u}function Tu(n){return n.length<3?gu(n):n[0]+bu(n,qu(n))}function Ru(n){for(var t,e,r,i=-1,u=n.length;++i0;)p[--a].call(n,o);if(u>=1)return d.event&&d.event.end.call(n,n.__data__,t),--g.count?delete g[r]:delete n[e],1}var l,f,s,h,p,g=n[e]||(n[e]={active:0,count:0}),d=g[r];d||(l=i.time,f=qn(u,0,l),d=g[r]={tween:new c,time:l,timer:f,delay:i.delay,duration:i.duration,ease:i.ease,index:t},i=null,++g.count)}function Bu(n,t,e){n.attr("transform",function(n){var r=t(n);return"translate("+(isFinite(r)?r:e(n))+",0)"})}function Wu(n,t,e){n.attr("transform",function(n){var r=t(n);return"translate(0,"+(isFinite(r)?r:e(n))+")"})}function Ju(n){return n.toISOString()}function Gu(n,t,e){function r(t){return n(t)}function i(n,e){var r=(n[1]-n[0])/e,i=to.bisect(Yl,r);return i==Yl.length?[t.year,Xi(n.map(function(n){return n/31536e6}),e)[2]]:i?t[r/Yl[i-1]1?{floor:function(t){for(;e(t=n.floor(t));)t=Ku(t-1);return t},ceil:function(t){for(;e(t=n.ceil(t));)t=Ku(+t+1);return t}}:n))},r.ticks=function(n,t){var e=ji(r.domain()),u=null==n?i(e,10):"number"==typeof n?i(e,n):!n.range&&[{range:n},t];return u&&(n=u[0],t=u[1]),n.range(e[0],Ku(+e[1]+1),t<1?1:t)},r.tickFormat=function(){return e},r.copy=function(){return Gu(n.copy(),t,e)},Zi(r,n)}function Ku(n){return new Date(n)}function Qu(n){return JSON.parse(n.responseText)}function no(n){var t=io.createRange();return t.selectNode(io.body),t.createContextualFragment(n.responseText)}var to={version:"3.5.17"},eo=[].slice,ro=function(n){return eo.call(n)},io=this.document;if(io)try{ro(io.documentElement.childNodes)[0].nodeType}catch(n){ro=function(n){for(var t=n.length,e=new Array(t);t--;)e[t]=n[t];return e}}if(Date.now||(Date.now=function(){return+new Date}),io)try{io.createElement("DIV").style.setProperty("opacity",0,"")}catch(n){var uo=this.Element.prototype,oo=uo.setAttribute,ao=uo.setAttributeNS,lo=this.CSSStyleDeclaration.prototype,co=lo.setProperty;uo.setAttribute=function(n,t){oo.call(this,n,t+"")},uo.setAttributeNS=function(n,t,e){ao.call(this,n,t,e+"")},lo.setProperty=function(n,t,e){co.call(this,n,t+"",e)}}to.ascending=e,to.descending=function(n,t){return tn?1:t>=n?0:NaN},to.min=function(n,t){var e,r,i=-1,u=n.length;if(1===arguments.length){for(;++i=r){e=r;break}for(;++ir&&(e=r)}else{for(;++i=r){e=r;break}for(;++ir&&(e=r)}return e},to.max=function(n,t){var e,r,i=-1,u=n.length;if(1===arguments.length){for(;++i=r){e=r;break}for(;++ie&&(e=r)}else{for(;++i=r){e=r;break}for(;++ie&&(e=r)}return e},to.extent=function(n,t){var e,r,i,u=-1,o=n.length;if(1===arguments.length){for(;++u=r){e=i=r;break}for(;++ur&&(e=r),i=r){e=i=r;break}for(;++ur&&(e=r),i1)return l/(f-1)},to.deviation=function(){var n=to.variance.apply(this,arguments);return n?Math.sqrt(n):n};var fo=u(e);to.bisectLeft=fo.left,to.bisect=to.bisectRight=fo.right,to.bisector=function(n){return u(1===n.length?function(t,r){return e(n(t),r)}:n)},to.shuffle=function(n,t,e){(u=arguments.length)<3&&(e=n.length,u<2&&(t=0));for(var r,i,u=e-t;u;)i=Math.random()*u--|0,r=n[u+t],n[u+t]=n[i+t],n[i+t]=r;return n},to.permute=function(n,t){for(var e=t.length,r=new Array(e);e--;)r[e]=n[t[e]];return r},to.pairs=function(n){for(var t=0,e=n.length-1,r=n[0],i=new Array(e<0?0:e);t=0;)for(t=(r=n[i]).length;--t>=0;)e[--o]=r[t];return e};var so=Math.abs;to.range=function(n,t,e){if(arguments.length<3&&(e=1,arguments.length<2&&(t=n,n=0)),(t-n)/e==1/0)throw new Error("infinite range");var r,i=[],u=a(so(e)),o=-1;if(n*=u,t*=u,(e*=u)<0)for(;(r=n+e*++o)>t;)i.push(r/u);else for(;(r=n+e*++o)=u.length)return r?r.call(i,o):e?o.sort(e):o;for(var l,f,s,h,p=-1,g=o.length,d=u[a++],v=new c;++p=u.length)return n;var r=[],i=o[e++];return n.forEach(function(n,i){r.push({key:n,values:t(i,e)})}),i?r.sort(function(n,t){return i(n.key,t.key)}):r}var e,r,i={},u=[],o=[];return i.map=function(t,e){return n(e,t,0)},i.entries=function(e){return t(n(to.map,e,0),0)},i.key=function(n){return u.push(n),i},i.sortKeys=function(n){return o[u.length-1]=n,i},i.sortValues=function(n){return e=n,i},i.rollup=function(n){return r=n,i},i},to.set=function(n){var t=new y;if(n)for(var e=0,r=n.length;e=0&&(r=n.slice(e+1),n=n.slice(0,e)),n)return arguments.length<2?this[n].on(r):this[n].on(r,t);if(2===arguments.length){if(null==t)for(n in this)this.hasOwnProperty(n)&&this[n].on(r,null);return this}},to.event=null,to.requote=function(n){return n.replace(vo,"\\$&")};var vo=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g,yo={}.__proto__?function(n,t){n.__proto__=t}:function(n,t){for(var e in t)n[e]=t[e]},mo=function(n,t){return t.querySelector(n)},xo=function(n,t){return t.querySelectorAll(n)},Mo=function(n,t){var e=n.matches||n[M(n,"matchesSelector")];return(Mo=function(n,t){return e.call(n,t)})(n,t)};"function"==typeof Sizzle&&(mo=function(n,t){return Sizzle(n,t)[0]||null},xo=Sizzle,Mo=Sizzle.matchesSelector),to.selection=function(){return to.select(io.documentElement)};var _o=to.selection.prototype=[];_o.select=function(n){var t,e,r,i,u=[];n=A(n);for(var o=-1,a=this.length;++o=0&&"xmlns"!==(e=n.slice(0,t))&&(n=n.slice(t+1)),wo.hasOwnProperty(e)?{space:wo[e],local:n}:n}},_o.attr=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node();return n=to.ns.qualify(n),n.local?e.getAttributeNS(n.space,n.local):e.getAttribute(n)}for(t in n)this.each(z(t,n[t]));return this}return this.each(z(n,t))},_o.classed=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node(),r=(n=T(n)).length,i=-1;if(t=e.classList){for(;++i=0;)(e=r[i])&&(u&&u!==e.nextSibling&&u.parentNode.insertBefore(e,u),u=e);return this},_o.sort=function(n){n=Y.apply(this,arguments);for(var t=-1,e=this.length;++t0&&(t=t.transition().duration(C)),t.call(n.event)}function a(){_&&_.domain(M.range().map(function(n){return(n-k.x)/k.k}).map(M.invert)),w&&w.domain(b.range().map(function(n){return(n-k.y)/k.k}).map(b.invert))}function l(n){z++||n({type:"zoomstart"})}function c(n){a(),n({type:"zoom",scale:k.k,translate:[k.x,k.y]})}function f(n){--z||(n({type:"zoomend"}),v=null)}function s(){function n(){a=1,u(to.mouse(i),h),c(o)}function r(){s.on(q,null).on(T,null),p(a),f(o)}var i=this,o=D.of(i,arguments),a=0,s=to.select(t(i)).on(q,n).on(T,r),h=e(to.mouse(i)),p=W(i);ql.call(i),l(o)}function h(){function n(){var n=to.touches(g);return p=k.k,n.forEach(function(n){n.identifier in v&&(v[n.identifier]=e(n))}),n}function t(){var t=to.event.target;to.select(t).on(M,r).on(_,a),b.push(t);for(var e=to.event.changedTouches,i=0,u=e.length;i1){var f=l[0],s=l[1],h=f[0]-s[0],p=f[1]-s[1];y=h*h+p*p}}function r(){var n,t,e,r,o=to.touches(g);ql.call(g);for(var a=0,l=o.length;a=c)return o;if(i)return i=!1,u;var t=f;if(34===n.charCodeAt(t)){for(var e=t;e++=^]))?([+\- ])?([$#])?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i,ra=to.map({b:function(n){return n.toString(2)},c:function(n){return String.fromCharCode(n)},o:function(n){return n.toString(8)},x:function(n){return n.toString(16)},X:function(n){return n.toString(16).toUpperCase()},g:function(n,t){return n.toPrecision(t)},e:function(n,t){return n.toExponential(t)},f:function(n,t){return n.toFixed(t)},r:function(n,t){return(n=to.round(n,Pn(n,t))).toFixed(Math.max(0,Math.min(20,Pn(n*(1+1e-15),t))))}}),ia=to.time={},ua=Date;Hn.prototype={getDate:function(){return this._.getUTCDate()},getDay:function(){return this._.getUTCDay()},getFullYear:function(){return this._.getUTCFullYear()},getHours:function(){return this._.getUTCHours()},getMilliseconds:function(){return this._.getUTCMilliseconds()},getMinutes:function(){return this._.getUTCMinutes()},getMonth:function(){return this._.getUTCMonth()},getSeconds:function(){return this._.getUTCSeconds()},getTime:function(){return this._.getTime()},getTimezoneOffset:function(){return 0},valueOf:function(){return this._.valueOf()},setDate:function(){oa.setUTCDate.apply(this._,arguments)},setDay:function(){oa.setUTCDay.apply(this._,arguments)},setFullYear:function(){oa.setUTCFullYear.apply(this._,arguments)},setHours:function(){oa.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){oa.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){oa.setUTCMinutes.apply(this._,arguments)},setMonth:function(){oa.setUTCMonth.apply(this._,arguments)},setSeconds:function(){oa.setUTCSeconds.apply(this._,arguments)},setTime:function(){oa.setTime.apply(this._,arguments)}};var oa=Date.prototype;ia.year=On(function(n){return(n=ia.day(n)).setMonth(0,1),n},function(n,t){n.setFullYear(n.getFullYear()+t)},function(n){return n.getFullYear()}),ia.years=ia.year.range,ia.years.utc=ia.year.utc.range,ia.day=On(function(n){var t=new ua(2e3,0);return t.setFullYear(n.getFullYear(),n.getMonth(),n.getDate()),t},function(n,t){n.setDate(n.getDate()+t)},function(n){return n.getDate()-1}),ia.days=ia.day.range,ia.days.utc=ia.day.utc.range,ia.dayOfYear=function(n){var t=ia.year(n);return Math.floor((n-t-6e4*(n.getTimezoneOffset()-t.getTimezoneOffset()))/864e5)},["sunday","monday","tuesday","wednesday","thursday","friday","saturday"].forEach(function(n,t){t=7-t;var e=ia[n]=On(function(n){return(n=ia.day(n)).setDate(n.getDate()-(n.getDay()+t)%7),n},function(n,t){n.setDate(n.getDate()+7*Math.floor(t))},function(n){var e=ia.year(n).getDay();return Math.floor((ia.dayOfYear(n)+(e+t)%7)/7)-(e!==t)});ia[n+"s"]=e.range,ia[n+"s"].utc=e.utc.range,ia[n+"OfYear"]=function(n){var e=ia.year(n).getDay();return Math.floor((ia.dayOfYear(n)+(e+t)%7)/7)}}),ia.week=ia.sunday,ia.weeks=ia.sunday.range,ia.weeks.utc=ia.sunday.utc.range,ia.weekOfYear=ia.sundayOfYear;var aa={"-":"",_:" ",0:"0"},la=/^\s*\d+/,ca=/^%/;to.locale=function(n){return{numberFormat:Un(n),timeFormat:In(n)}};var fa=to.locale({decimal:".",thousands:",",grouping:[3],currency:["$",""],dateTime:"%a %b %e %X %Y",date:"%m/%d/%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});to.format=fa.numberFormat,to.geo={},ft.prototype={s:0,t:0,add:function(n){st(n,this.t,sa),st(sa.s,this.s,this),this.s?this.t+=sa.t:this.s=sa.t},reset:function(){this.s=this.t=0},valueOf:function(){return this.s}};var sa=new ft;to.geo.stream=function(n,t){n&&ha.hasOwnProperty(n.type)?ha[n.type](n,t):ht(n,t)};var ha={Feature:function(n,t){ht(n.geometry,t)},FeatureCollection:function(n,t){for(var e=n.features,r=-1,i=e.length;++rp&&(p=t)}function t(t,e){var r=vt([t*Do,e*Do]);if(y){var i=mt(y,r),u=mt([i[1],-i[0],0],i);_t(u),u=bt(u);var o=t-g,l=o>0?1:-1,c=u[0]*Po*l,d=so(o)>180;if(d^(l*gp&&(p=v);else if(c=(c+360)%360-180,d^(l*gp&&(p=e);d?ta(f,h)&&(h=t):a(t,h)>a(f,h)&&(f=t):h>=f?(th&&(h=t)):t>g?a(f,t)>a(f,h)&&(h=t):a(t,h)>a(f,h)&&(f=t)}else n(t,e);y=r,g=t}function e(){_.point=t}function r(){M[0]=f,M[1]=h,_.point=n,y=null}function i(n,e){if(y){var r=n-g;m+=so(r)>180?r+(r>0?360:-360):r}else d=n,v=e;va.point(n,e),t(n,e)}function u(){va.lineStart()}function o(){i(d,v),va.lineEnd(),so(m)>Co&&(f=-(h=180)),M[0]=f,M[1]=h,y=null}function a(n,t){return(t-=n)<0?t+360:t}function l(n,t){return n[0]-t[0]}function c(n,t){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:nCo?p=90:m<-Co&&(s=-90),M[0]=f,M[1]=h}};return function(n){p=h=-(f=s=1/0),x=[],to.geo.stream(n,_);var t=x.length;if(t){x.sort(l);for(var e=1,r=[g=x[0]];ea(g[0],g[1])&&(g[1]=u[1]),a(u[0],g[1])>a(g[0],g[1])&&(g[0]=u[0])):r.push(g=u);for(var i,u,o=-1/0,e=0,g=r[t=r.length-1];e<=t;g=u,++e)u=r[e],(i=a(g[1],u[0]))>o&&(o=i,f=u[0],h=g[1])}return x=M=null,f===1/0||s===1/0?[[NaN,NaN],[NaN,NaN]]:[[f,s],[h,p]]}}(),to.geo.centroid=function(n){ya=ma=xa=Ma=_a=ba=wa=Sa=ka=Na=Ea=0,to.geo.stream(n,Aa);var t=ka,e=Na,r=Ea,i=t*t+e*e+r*r;return i=.12&&i<.234&&r>=-.425&&r<-.214?o:i>=.166&&i<.234&&r>=-.214&&r<-.115?a:u).invert(n)},n.stream=function(n){var t=u.stream(n),e=o.stream(n),r=a.stream(n);return{point:function(n,i){t.point(n,i),e.point(n,i),r.point(n,i)},sphere:function(){t.sphere(),e.sphere(),r.sphere()},lineStart:function(){t.lineStart(),e.lineStart(),r.lineStart()},lineEnd:function(){t.lineEnd(),e.lineEnd(),r.lineEnd()},polygonStart:function(){t.polygonStart(),e.polygonStart(),r.polygonStart()},polygonEnd:function(){t.polygonEnd(),e.polygonEnd(),r.polygonEnd()}}},n.precision=function(t){return arguments.length?(u.precision(t),o.precision(t),a.precision(t),n):u.precision()},n.scale=function(t){return arguments.length?(u.scale(t),o.scale(.35*t),a.scale(t),n.translate(u.translate())):u.scale()},n.translate=function(t){if(!arguments.length)return u.translate();var c=u.scale(),f=+t[0],s=+t[1];return e=u.translate(t).clipExtent([[f-.455*c,s-.238*c],[f+.455*c,s+.238*c]]).stream(l).point,r=o.translate([f-.307*c,s+.201*c]).clipExtent([[f-.425*c+Co,s+.12*c+Co],[f-.214*c-Co,s+.234*c-Co]]).stream(l).point,i=a.translate([f-.205*c,s+.212*c]).clipExtent([[f-.214*c+Co,s+.166*c+Co],[f-.115*c-Co,s+.234*c-Co]]).stream(l).point,n},n.scale(1070)};var La,qa,Ta,Ra,Da,Pa,ja={point:_,lineStart:_,lineEnd:_,polygonStart:function(){qa=0,ja.lineStart=$t},polygonEnd:function(){ja.lineStart=ja.lineEnd=ja.point=_,La+=so(qa/2)}},Ua={point:Bt,lineStart:_,lineEnd:_,polygonStart:_,polygonEnd:_},Fa={point:Gt,lineStart:Kt,lineEnd:Qt,polygonStart:function(){Fa.lineStart=ne},polygonEnd:function(){Fa.point=Gt,Fa.lineStart=Kt,Fa.lineEnd=Qt}};to.geo.path=function(){function n(n){return n&&("function"==typeof a&&u.pointRadius(+a.apply(this,arguments)),o&&o.valid||(o=i(u)),to.geo.stream(n,o)),u.result()}function t(){return o=null,n}var e,r,i,u,o,a=4.5;return n.area=function(n){return La=0,to.geo.stream(n,i(ja)),La},n.centroid=function(n){return xa=Ma=_a=ba=wa=Sa=ka=Na=Ea=0,to.geo.stream(n,i(Fa)),Ea?[ka/Ea,Na/Ea]:Sa?[ba/Sa,wa/Sa]:_a?[xa/_a,Ma/_a]:[NaN,NaN]},n.bounds=function(n){return Da=Pa=-(Ta=Ra=1/0),to.geo.stream(n,i(Ua)),[[Ta,Ra],[Da,Pa]]},n.projection=function(n){return arguments.length?(i=(e=n)?n.stream||re(n):m,t()):e},n.context=function(n){return arguments.length?(u=null==(r=n)?new Wt:new te(n),"function"!=typeof a&&u.pointRadius(a),t()):r},n.pointRadius=function(t){return arguments.length?(a="function"==typeof t?t:(u.pointRadius(+t),+t),n):a},n.projection(to.geo.albersUsa()).context(null)},to.geo.transform=function(n){return{stream:function(t){var e=new ie(t);for(var r in n)e[r]=n[r];return e}}},ie.prototype={point:function(n,t){this.stream.point(n,t)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}},to.geo.projection=oe,to.geo.projectionMutator=ae,(to.geo.equirectangular=function(){return oe(ce)}).raw=ce.invert=ce,to.geo.rotation=function(n){function t(t){return t=n(t[0]*Do,t[1]*Do),t[0]*=Po,t[1]*=Po,t}return n=se(n[0]%360*Do,n[1]*Do,n.length>2?n[2]*Do:0),t.invert=function(t){return t=n.invert(t[0]*Do,t[1]*Do),t[0]*=Po,t[1]*=Po,t},t},fe.invert=ce,to.geo.circle=function(){function n(){var n="function"==typeof r?r.apply(this,arguments):r,t=se(-n[0]*Do,-n[1]*Do,0).invert,i=[];return e(null,null,1,{point:function(n,e){i.push(n=t(n,e)),n[0]*=Po,n[1]*=Po}}),{type:"Polygon",coordinates:[i]}}var t,e,r=[0,0],i=6;return n.origin=function(t){return arguments.length?(r=t,n):r},n.angle=function(r){return arguments.length?(e=de((t=+r)*Do,i*Do),n):t},n.precision=function(r){return arguments.length?(e=de(t*Do,(i=+r)*Do),n):i},n.angle(90)},to.geo.distance=function(n,t){var e,r=(t[0]-n[0])*Do,i=n[1]*Do,u=t[1]*Do,o=Math.sin(r),a=Math.cos(r),l=Math.sin(i),c=Math.cos(i),f=Math.sin(u),s=Math.cos(u);return Math.atan2(Math.sqrt((e=s*o)*e+(e=c*f-l*s*a)*e),l*f+c*s*a)},to.geo.graticule=function(){function n(){return{type:"MultiLineString",coordinates:t()}}function t(){return to.range(Math.ceil(u/v)*v,i,v).map(h).concat(to.range(Math.ceil(c/y)*y,l,y).map(p)).concat(to.range(Math.ceil(r/g)*g,e,g).filter(function(n){return so(n%v)>Co}).map(f)).concat(to.range(Math.ceil(a/d)*d,o,d).filter(function(n){return so(n%y)>Co}).map(s))}var e,r,i,u,o,a,l,c,f,s,h,p,g=10,d=g,v=90,y=360,m=2.5;return n.lines=function(){return t().map(function(n){return{type:"LineString",coordinates:n}})},n.outline=function(){return{type:"Polygon",coordinates:[h(u).concat(p(l).slice(1),h(i).reverse().slice(1),p(c).reverse().slice(1))]}},n.extent=function(t){return arguments.length?n.majorExtent(t).minorExtent(t):n.minorExtent()},n.majorExtent=function(t){return arguments.length?(u=+t[0][0],i=+t[1][0],c=+t[0][1],l=+t[1][1],u>i&&(t=u,u=i,i=t),c>l&&(t=c,c=l,l=t),n.precision(m)):[[u,c],[i,l]]},n.minorExtent=function(t){return arguments.length?(r=+t[0][0],e=+t[1][0],a=+t[0][1],o=+t[1][1],r>e&&(t=r,r=e,e=t),a>o&&(t=a,a=o,o=t),n.precision(m)):[[r,a],[e,o]]},n.step=function(t){return arguments.length?n.majorStep(t).minorStep(t):n.minorStep()},n.majorStep=function(t){return arguments.length?(v=+t[0],y=+t[1],n):[v,y]},n.minorStep=function(t){return arguments.length?(g=+t[0],d=+t[1],n):[g,d]},n.precision=function(t){return arguments.length?(m=+t,f=ye(a,o,90),s=me(r,e,m),h=ye(c,l,90),p=me(u,i,m),n):m},n.majorExtent([[-180,-90+Co],[180,90-Co]]).minorExtent([[-180,-80-Co],[180,80+Co]])},to.geo.greatArc=function(){function n(){return{type:"LineString",coordinates:[t||r.apply(this,arguments),e||i.apply(this,arguments)]}}var t,e,r=xe,i=Me;return n.distance=function(){return to.geo.distance(t||r.apply(this,arguments),e||i.apply(this,arguments))},n.source=function(e){return arguments.length?(r=e,t="function"==typeof e?null:e,n):r},n.target=function(t){return arguments.length?(i=t,e="function"==typeof t?null:t,n):i},n.precision=function(){return arguments.length?n:0},n},to.geo.interpolate=function(n,t){return _e(n[0]*Do,n[1]*Do,t[0]*Do,t[1]*Do)},to.geo.length=function(n){return Ha=0,to.geo.stream(n,Oa),Ha};var Ha,Oa={sphere:_,point:_,lineStart:be,lineEnd:_,polygonStart:_,polygonEnd:_},Ya=we(function(n){return Math.sqrt(2/(1+n))},function(n){return 2*Math.asin(n/2)});(to.geo.azimuthalEqualArea=function(){return oe(Ya)}).raw=Ya;var Ia=we(function(n){var t=Math.acos(n);return t&&t/Math.sin(t)},m);(to.geo.azimuthalEquidistant=function(){return oe(Ia)}).raw=Ia,(to.geo.conicConformal=function(){return Vt(Se)}).raw=Se,(to.geo.conicEquidistant=function(){return Vt(ke)}).raw=ke;var Za=we(function(n){return 1/n},Math.atan);(to.geo.gnomonic=function(){return oe(Za)}).raw=Za,Ne.invert=function(n,t){return[n,2*Math.atan(Math.exp(t))-Ro]},(to.geo.mercator=function(){return Ee(Ne)}).raw=Ne;var Va=we(function(){return 1},Math.asin);(to.geo.orthographic=function(){return oe(Va)}).raw=Va;var Xa=we(function(n){return 1/(1+n)},function(n){return 2*Math.atan(n)});(to.geo.stereographic=function(){return oe(Xa)}).raw=Xa,Ae.invert=function(n,t){return[-t,2*Math.atan(Math.exp(n))-Ro]},(to.geo.transverseMercator=function(){var n=Ee(Ae),t=n.center,e=n.rotate;return n.center=function(n){return n?t([-n[1],n[0]]):(n=t(),[n[1],-n[0]])},n.rotate=function(n){return n?e([n[0],n[1],n.length>2?n[2]+90:90]):(n=e(),[n[0],n[1],n[2]-90])},e([0,0,90])}).raw=Ae,to.geom={},to.geom.hull=function(n){function t(n){if(n.length<3)return[];var t,i=En(e),u=En(r),o=n.length,a=[],l=[];for(t=0;t=0;--t)p.push(n[a[c[t]][2]]);for(t=+s;t=r&&c.x<=u&&c.y>=i&&c.y<=o?[[r,o],[u,o],[u,i],[r,i]]:[]).point=n[a]}),t}function e(n){return n.map(function(n,t){return{x:Math.round(u(n,t)/Co)*Co,y:Math.round(o(n,t)/Co)*Co,i:t}})}var r=Ce,i=ze,u=r,o=i,a=tl;return n?t(n):(t.links=function(n){return ar(e(n)).edges.filter(function(n){return n.l&&n.r}).map(function(t){return{source:n[t.l.i],target:n[t.r.i]}})},t.triangles=function(n){var t=[];return ar(e(n)).cells.forEach(function(e,r){for(var i,u=e.site,o=e.edges.sort(Ve),a=-1,l=o.length,c=o[l-1].edge,f=c.l===u?c.r:c.l;++a=c,h=r>=f,p=h<<1|s;n.leaf=!1,n=n.nodes[p]||(n.nodes[p]={leaf:!0,nodes:[],point:null,x:null,y:null}),s?i=c:a=c,h?o=f:l=f,u(n,t,e,r,i,o,a,l)}var f,s,h,p,g,d,v,y,m,x=En(a),M=En(l);if(null!=t)d=t,v=e,y=r,m=i;else if(y=m=-(d=v=1/0),s=[],h=[],g=n.length,o)for(p=0;py&&(y=f.x),f.y>m&&(m=f.y),s.push(f.x),h.push(f.y);else for(p=0;py&&(y=_),b>m&&(m=b),s.push(_),h.push(b)}var w=y-d,S=m-v;w>S?m=v+w:y=d+S;var k={leaf:!0,nodes:[],point:null,x:null,y:null};if(k.add=function(n){u(k,n,+x(n,++p),+M(n,p),d,v,y,m)},k.visit=function(n){hr(n,k,d,v,y,m)},k.find=function(n){return pr(k,n[0],n[1],d,v,y,m)},p=-1,null==t){for(;++p=0?n.slice(0,t):n,r=t>=0?n.slice(t+1):"in";return e=ul.get(e)||il,r=ol.get(r)||m,Mr(r(e.apply(null,eo.call(arguments,1))))},to.interpolateHcl=Tr,to.interpolateHsl=Rr,to.interpolateLab=Dr,to.interpolateRound=Pr,to.transform=function(n){var t=io.createElementNS(to.ns.prefix.svg,"g");return(to.transform=function(n){if(null!=n){t.setAttribute("transform",n);var e=t.transform.baseVal.consolidate()}return new jr(e?e.matrix:al)})(n)},jr.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var al={a:1,b:0,c:0,d:1,e:0,f:0};to.interpolateTransform=Xr,to.layout={},to.layout.bundle=function(){return function(n){for(var t=[],e=-1,r=n.length;++e0?i=n:(e.c=null,e.t=NaN,e=null,c.end({type:"end",alpha:i=0})):n>0&&(c.start({type:"start",alpha:i=n}),e=qn(l.tick)),l):i},l.start=function(){function n(n,r){if(!e){for(e=new Array(i),l=0;l=0;)o.push(f=c[l]),f.parent=u,f.depth=u.depth+1;r&&(u.value=0),u.children=c}else r&&(u.value=+r.call(n,u,u.depth)||0),delete u.children;return ui(i,function(n){var e,i;t&&(e=n.children)&&e.sort(t),r&&(i=n.parent)&&(i.value+=n.value)}),a}var t=li,e=oi,r=ai;return n.sort=function(e){return arguments.length?(t=e,n):t},n.children=function(t){return arguments.length?(e=t,n):e},n.value=function(t){return arguments.length?(r=t,n):r},n.revalue=function(t){return r&&(ii(t,function(n){n.children&&(n.value=0)}),ui(t,function(t){var e;t.children||(t.value=+r.call(n,t,t.depth)||0),(e=t.parent)&&(e.value+=t.value)})),t},n},to.layout.partition=function(){function n(t,e,r,i){var u=t.children;if(t.x=e,t.y=t.depth*i,t.dx=r,t.dy=i,u&&(o=u.length)){var o,a,l,c=-1;for(r=t.value?r/t.value:0;++ca&&(a=r),o.push(r)}for(e=0;e0)for(u=-1;++u=f[0]&&a<=f[1]&&((o=l[to.bisect(s,a,1,p)-1]).y+=g,o.push(n[u]));return l}var t=!0,e=Number,r=Mi,i=mi;return n.value=function(t){return arguments.length?(e=t,n):e},n.range=function(t){return arguments.length?(r=En(t),n):r},n.bins=function(t){return arguments.length?(i="number"==typeof t?function(n){return xi(n,t)}:En(t),n):i},n.frequency=function(e){return arguments.length?(t=!!e,n):t},n},to.layout.pack=function(){function n(n,u){var o=e.call(this,n,u),a=o[0],l=i[0],c=i[1],f=null==t?Math.sqrt:"function"==typeof t?t:function(){return t};if(a.x=a.y=0,ui(a,function(n){n.r=+f(n.value)}),ui(a,ki),r){var s=r*(t?1:Math.max(2*a.r/l,2*a.r/c))/2;ui(a,function(n){n.r+=s}),ui(a,ki),ui(a,function(n){n.r-=s})}return Ai(a,l/2,c/2,t?1:1/Math.max(2*a.r/l,2*a.r/c)),o}var t,e=to.layout.hierarchy().sort(_i),r=0,i=[1,1];return n.size=function(t){return arguments.length?(i=t,n):i},n.radius=function(e){return arguments.length?(t=null==e||"function"==typeof e?e:+e,n):t},n.padding=function(t){return arguments.length?(r=+t,n):r},ri(n,e)},to.layout.tree=function(){function n(n,r){var u=M.call(this,n,r),o=t(u[0]);return N=o,e(o,0),i(o),g(o,0),m(o),u}function t(n){var e={t:n,prelim:0,mod:0,shift:0,change:0,msel:0,mser:0};if(n.x=0,n.y=0,w)e.x_size=1,e.y_size=1;else if("object"==typeof S)e.x_size=S[0],e.y_size=S[1];else{var r=S(n);e.x_size=r[0],e.y_size=r[1]}k&&(n.x_size=e.x_size,n.y_size=e.y_size);for(var i=[],u=n.children?n.children.length:0,o=0;oe.lowY&&(e=e.nxt);var p=i+r.prelim-(o+u.prelim);null!=_?p+=_(r.t,u.t)*N.x_size:null!=b&&(p+=r.x_size/2+u.x_size/2+b(r.t,u.t)),p>0?(o+=p,a(n,t,e.index,p)):1===t&&0===o&&0===r.num_children&&u.num_children>1&&p<0&&(o+=p,a(n,t,e.index,p));var g=f(r),d=f(u);g<=d&&null!=(r=c(r))&&(i+=r.mod),g>=d&&null!=(u=l(u))&&(o+=u.mod)}null==r&&null!=u?s(n,t,u,o):null!=r&&null==u&&h(n,t,r,i)}function a(n,t,e,r){n.children[t].mod+=r,n.children[t].msel+=r,n.children[t].mser+=r,d(n,t,e,r)}function l(n){return 0==n.num_children?n.tl:n.children[0]}function c(n){return 0==n.num_children?n.tr:n.children[n.num_children-1]}function f(n){return n.t.y+n.y_size}function s(n,t,e,r){var i=n.children[0].el;i.tl=e;var u=r-e.mod-n.children[0].msel;i.mod+=u,i.prelim-=u,n.children[0].el=n.children[t].el,n.children[0].msel=n.children[t].msel}function h(n,t,e,r){var i=n.children[t].er;i.tr=e;var u=r-e.mod-n.children[t].mser;i.mod+=u,i.prelim-=u,n.children[t].er=n.children[t-1].er,n.children[t].mser=n.children[t-1].mser}function p(n){n.prelim=(n.children[0].prelim+n.children[0].mod-n.children[0].x_size/2+n.children[n.num_children-1].mod+n.children[n.num_children-1].prelim+n.children[n.num_children-1].x_size/2)/2}function g(n,t){t+=n.mod,n.t.x=n.prelim+t,v(n);for(var e=0;e=e.lowY;)e=e.nxt;return{lowY:n,index:t,nxt:e}}function m(n){if(null!=w){for(var t,e=n,r=n,i=n,u=[n];t=u.pop();)(f=t.t).xr.t.x&&(r=t),f.depth>i.t.depth&&(i=t),t.children&&(u=u.concat(t.children));var o=null==_?.5:_(e.t,r.t)/2,a=o-e.t.x,l=w[0]/(r.t.x+o+a),c=w[1]/(i.t.depth>0?i.t.depth:1);for(u=[n];t=u.pop();){var f=t.t;f.x=(f.x+a)*l,f.y=f.depth*c,k&&(f.x_size*=l,f.y_size*=c),t.children&&(u=u.concat(t.children))}}else x(n,-n.t.x)}function x(n,t){n.t.x+=t;for(var e=0;e0;)f.push(o=h[l-1]),f.area+=o.area,"squarify"!==p||(a=r(f,d))<=g?(h.pop(),g=a):(f.area-=f.pop().area,i(f,d,c,!1),d=Math.min(c.dx,c.dy),f.length=f.area=0,g=1/0);f.length&&(i(f,d,c,!0),f.length=f.area=0),u.forEach(t)}}function e(t){var r=t.children;if(r&&r.length){var u,o=s(t),a=r.slice(),l=[];for(n(a,o.dx*o.dy/t.value),l.area=0;u=a.pop();)l.push(u),l.area+=u.area,null!=u.z&&(i(l,u.z?o.dx:o.dy,o,!a.length),l.length=l.area=0);r.forEach(e)}}function r(n,t){for(var e,r=n.area,i=0,u=1/0,o=-1,a=n.length;++oi&&(i=e));return r*=r,t*=t,r?Math.max(t*i*g/r,r/(t*u*g)):1/0}function i(n,t,e,r){var i,u=-1,o=n.length,a=e.x,c=e.y,f=t?l(n.area/t):0;if(t==e.dx){for((r||f>e.dy)&&(f=e.dy);++ue.dx)&&(f=e.dx);++u1);return n+t*e*Math.sqrt(-2*Math.log(i)/i)}},logNormal:function(){var n=to.random.normal.apply(to,arguments);return function(){return Math.exp(n())}},bates:function(n){var t=to.random.irwinHall(n);return function(){return t()/n}},irwinHall:function(n){return function(){for(var t=0,e=0;es?0:1;if(c=To)return t(c,p)+(n?t(n,1-p):"")+"Z";var g,d,v,y,m,x,M,_,b,w,S,k,N=0,E=0,A=[];if((y=(+l.apply(this,arguments)||0)/2)&&(v=u===bl?Math.sqrt(n*n+c*c):+u.apply(this,arguments),p||(E*=-1),c&&(E=tn(v/c*Math.sin(y))),n&&(N=tn(v/n*Math.sin(y)))),c){m=c*Math.cos(f+E),x=c*Math.sin(f+E),M=c*Math.cos(s-E),_=c*Math.sin(s-E);var C=Math.abs(s-f-2*E)<=Lo?0:1;if(E&&su(m,x,M,_)===p^C){var z=(f+s)/2;m=c*Math.cos(z),x=c*Math.sin(z),M=_=null}}else m=x=0;if(n){b=n*Math.cos(s-N),w=n*Math.sin(s-N),S=n*Math.cos(f+N),k=n*Math.sin(f+N);var L=Math.abs(f-s+2*N)<=Lo?0:1;if(N&&su(b,w,S,k)===1-p^L){var q=(f+s)/2;b=n*Math.cos(q),w=n*Math.sin(q),S=k=null}}else b=w=0;if(h>Co&&(g=Math.min(Math.abs(c-n)/2,+i.apply(this,arguments)))>.001){d=nLo)+",1 "+t}function i(n,t,e,r){return"Q 0,0 "+r}var u=xe,o=Me,a=Pu,l=lu,c=cu;return n.radius=function(t){return arguments.length?(a=En(t),n):a},n.source=function(t){return arguments.length?(u=En(t),n):u},n.target=function(t){return arguments.length?(o=En(t),n):o},n.startAngle=function(t){return arguments.length?(l=En(t),n):l},n.endAngle=function(t){return arguments.length?(c=En(t),n):c},n},to.svg.diagonal=function(){function n(n,i){var u=t.call(this,n,i),o=e.call(this,n,i),a=(u.y+o.y)/2,l=[u,{x:u.x,y:a},{x:o.x,y:a},o];return"M"+(l=l.map(r))[0]+"C"+l[1]+" "+l[2]+" "+l[3]}var t=xe,e=Me,r=ju;return n.source=function(e){return arguments.length?(t=En(e),n):t},n.target=function(t){return arguments.length?(e=En(t),n):e},n.projection=function(t){return arguments.length?(r=t,n):r},n},to.svg.diagonal.radial=function(){var n=to.svg.diagonal(),t=ju,e=n.projection;return n.projection=function(n){return arguments.length?e(Uu(t=n)):t},n},to.svg.symbol=function(){function n(n,r){return(El.get(t.call(this,n,r))||Ou)(e.call(this,n,r))}var t=Hu,e=Fu;return n.type=function(e){return arguments.length?(t=En(e),n):t},n.size=function(t){return arguments.length?(e=En(t),n):e},n};var El=to.map({circle:Ou,cross:function(n){var t=Math.sqrt(n/5)/2;return"M"+-3*t+","+-t+"H"+-t+"V"+-3*t+"H"+t+"V"+-t+"H"+3*t+"V"+t+"H"+t+"V"+3*t+"H"+-t+"V"+t+"H"+-3*t+"Z"},diamond:function(n){var t=Math.sqrt(n/(2*Cl)),e=t*Cl;return"M0,"+-t+"L"+e+",0 0,"+t+" "+-e+",0Z"},square:function(n){var t=Math.sqrt(n)/2;return"M"+-t+","+-t+"L"+t+","+-t+" "+t+","+t+" "+-t+","+t+"Z"},"triangle-down":function(n){var t=Math.sqrt(n/Al),e=t*Al/2;return"M0,"+e+"L"+t+","+-e+" "+-t+","+-e+"Z"},"triangle-up":function(n){var t=Math.sqrt(n/Al),e=t*Al/2;return"M0,"+-e+"L"+t+","+e+" "+-t+","+e+"Z"}});to.svg.symbolTypes=El.keys();var Al=Math.sqrt(3),Cl=Math.tan(30*Do);_o.transition=function(n){for(var t,e,r=zl||++Rl,i=Xu(n),u=[],o=Ll||{time:Date.now(),ease:kr,delay:0,duration:250},a=-1,l=this.length;++arect,.s>rect").attr("width",s[1]-s[0])}function i(n){n.select(".extent").attr("y",h[0]),n.selectAll(".extent,.e>rect,.w>rect").attr("height",h[1]-h[0])}function u(){function u(){32==to.event.keyCode&&(C||(x=null,L[0]-=s[1],L[1]-=h[1],C=2),S())}function d(){32==to.event.keyCode&&2==C&&(L[0]+=s[1],L[1]+=h[1],C=0,S())}function v(){var n=to.mouse(_),t=!1;M&&(n[0]+=M[0],n[1]+=M[1]),C||(to.event.altKey?(x||(x=[(s[0]+s[1])/2,(h[0]+h[1])/2]),L[0]=s[+(n[0]1)for(var r=1;r1&&void 0!==arguments[1]?arguments[1]:{};return u.default.wrap(function(i){for(;;)switch(i.prev=i.next){case 0:if(t={onlyLeaves:!1,circularReference:"leaf",search:"dfsPreOrder",iterateOverObject:!0,skipIteration:function(){return!1}},void 0!==o.onlyLeaves&&(t.onlyLeaves=o.onlyLeaves),void 0!==o.circularReference&&(t.circularReference=o.circularReference),void 0!==o.iterateOverObject&&(t.iterateOverObject=o.iterateOverObject),void 0!==o.skipIteration&&(t.skipIteration=o.skipIteration),void 0===o.search){i.next=9;break}if(o.search in s){i.next=8;break}throw new Error("The search algorithm "+o.search+" is incorrect.");case 8:t.search=o.search;case 9:return r=new l.default(e,t),n=(0,d.default)(t.circularReference),i.delegateYield(s[t.search](r,t.onlyLeaves,n),"t0",12);case 12:case"end":return i.stop()}},_[0],this)}Object.defineProperty(r,"__esModule",{value:!0});var a=e("babel-runtime/regenerator"),u=o(a);r.default=i;var c=e("./search"),s=n(c),f=e("./root-node"),l=o(f),p=e("./seen"),d=o(p),_=[i].map(u.default.mark)},{"./root-node":5,"./search":6,"./seen":7,"babel-runtime/regenerator":115}],3:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function o(e){var t;return l.default.wrap(function(r){for(;;)switch(r.prev=r.next){case 0:r.t0=l.default.keys(e);case 1:if((r.t1=r.t0()).done){r.next=7;break}return t=r.t1.value,r.next=5,[t,e[t]];case 5:r.next=1;break;case 7:case"end":return r.stop()}},p[0],this)}function i(e){var t;return l.default.wrap(function(r){for(;;)switch(r.prev=r.next){case 0:t=0;case 1:if(!(tf;)if(u=c[f++],u!=u)return!0}else for(;s>f;f++)if((e||f in c)&&c[f]===r)return e||f||0;return!e&&-1}}},{"./_to-index":88,"./_to-iobject":90,"./_to-length":91}],39:[function(e,t,r){var n=e("./_cof"),o=e("./_wks")("toStringTag"),i="Arguments"==n(function(){return arguments}()),a=function(e,t){try{return e[t]}catch(e){}};t.exports=function(e){var t,r,u;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(r=a(t=Object(e),o))?r:i?n(t):"Object"==(u=n(t))&&"function"==typeof t.callee?"Arguments":u}},{"./_cof":40,"./_wks":97}],40:[function(e,t,r){var n={}.toString;t.exports=function(e){return n.call(e).slice(8,-1)}},{}],41:[function(e,t,r){var n=t.exports={version:"2.4.0"};"number"==typeof __e&&(__e=n)},{}],42:[function(e,t,r){"use strict";var n=e("./_object-dp"),o=e("./_property-desc");t.exports=function(e,t,r){t in e?n.f(e,t,o(0,r)):e[t]=r}},{"./_object-dp":70,"./_property-desc":81}],43:[function(e,t,r){var n=e("./_a-function");t.exports=function(e,t,r){if(n(e),void 0===t)return e;switch(r){case 1:return function(r){return e.call(t,r)};case 2:return function(r,n){return e.call(t,r,n)};case 3:return function(r,n,o){return e.call(t,r,n,o)}}return function(){return e.apply(t,arguments)}}},{"./_a-function":35}],44:[function(e,t,r){t.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},{}],45:[function(e,t,r){t.exports=!e("./_fails")(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},{"./_fails":50}],46:[function(e,t,r){var n=e("./_is-object"),o=e("./_global").document,i=n(o)&&n(o.createElement);t.exports=function(e){return i?o.createElement(e):{}}},{"./_global":51,"./_is-object":59}],47:[function(e,t,r){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},{}],48:[function(e,t,r){var n=e("./_object-keys"),o=e("./_object-gops"),i=e("./_object-pie");t.exports=function(e){var t=n(e),r=o.f;if(r)for(var a,u=r(e),c=i.f,s=0;u.length>s;)c.call(e,a=u[s++])&&t.push(a);return t}},{"./_object-gops":75,"./_object-keys":78,"./_object-pie":79}],49:[function(e,t,r){var n=e("./_global"),o=e("./_core"),i=e("./_ctx"),a=e("./_hide"),u="prototype",c=function(e,t,r){var s,f,l,p=e&c.F,d=e&c.G,_=e&c.S,b=e&c.P,h=e&c.B,y=e&c.W,v=d?o:o[t]||(o[t]={}),m=v[u],g=d?n:_?n[t]:(n[t]||{})[u];d&&(r=t);for(s in r)f=!p&&g&&void 0!==g[s],f&&s in v||(l=f?g[s]:r[s],v[s]=d&&"function"!=typeof g[s]?r[s]:h&&f?i(l,n):y&&g[s]==l?function(e){var t=function(t,r,n){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,r)}return new e(t,r,n)}return e.apply(this,arguments)};return t[u]=e[u],t}(l):b&&"function"==typeof l?i(Function.call,l):l,b&&((v.virtual||(v.virtual={}))[s]=l,e&c.R&&m&&!m[s]&&a(m,s,l)))};c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,t.exports=c},{"./_core":41,"./_ctx":43,"./_global":51,"./_hide":53}],50:[function(e,t,r){t.exports=function(e){try{return!!e()}catch(e){return!0}}},{}],51:[function(e,t,r){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},{}],52:[function(e,t,r){var n={}.hasOwnProperty;t.exports=function(e,t){return n.call(e,t)}},{}],53:[function(e,t,r){var n=e("./_object-dp"),o=e("./_property-desc");t.exports=e("./_descriptors")?function(e,t,r){return n.f(e,t,o(1,r))}:function(e,t,r){return e[t]=r,e}},{"./_descriptors":45,"./_object-dp":70,"./_property-desc":81}],54:[function(e,t,r){t.exports=e("./_global").document&&document.documentElement},{"./_global":51}],55:[function(e,t,r){t.exports=!e("./_descriptors")&&!e("./_fails")(function(){return 7!=Object.defineProperty(e("./_dom-create")("div"),"a",{get:function(){return 7}}).a})},{"./_descriptors":45,"./_dom-create":46,"./_fails":50}],56:[function(e,t,r){var n=e("./_cof");t.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==n(e)?e.split(""):Object(e)}},{"./_cof":40}],57:[function(e,t,r){var n=e("./_iterators"),o=e("./_wks")("iterator"),i=Array.prototype;t.exports=function(e){return void 0!==e&&(n.Array===e||i[o]===e)}},{"./_iterators":65,"./_wks":97}],58:[function(e,t,r){var n=e("./_cof");t.exports=Array.isArray||function(e){return"Array"==n(e)}},{"./_cof":40}],59:[function(e,t,r){t.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},{}],60:[function(e,t,r){var n=e("./_an-object");t.exports=function(e,t,r,o){try{return o?t(n(r)[0],r[1]):t(r)}catch(t){var i=e.return;throw void 0!==i&&n(i.call(e)),t}}},{"./_an-object":37}],61:[function(e,t,r){"use strict";var n=e("./_object-create"),o=e("./_property-desc"),i=e("./_set-to-string-tag"),a={};e("./_hide")(a,e("./_wks")("iterator"),function(){return this}),t.exports=function(e,t,r){e.prototype=n(a,{next:o(1,r)}),i(e,t+" Iterator")}},{"./_hide":53,"./_object-create":69,"./_property-desc":81,"./_set-to-string-tag":84,"./_wks":97}],62:[function(e,t,r){"use strict";var n=e("./_library"),o=e("./_export"),i=e("./_redefine"),a=e("./_hide"),u=e("./_has"),c=e("./_iterators"),s=e("./_iter-create"),f=e("./_set-to-string-tag"),l=e("./_object-gpo"),p=e("./_wks")("iterator"),d=!([].keys&&"next"in[].keys()),_="@@iterator",b="keys",h="values",y=function(){return this};t.exports=function(e,t,r,v,m,g,j){s(r,t,v);var w,x,k,O=function(e){if(!d&&e in M)return M[e];switch(e){case b:return function(){return new r(this,e)};case h:return function(){return new r(this,e)}}return function(){return new r(this,e)}},E=t+" Iterator",S=m==h,L=!1,M=e.prototype,A=M[p]||M[_]||m&&M[m],P=A||O(m),T=m?S?O("entries"):P:void 0,F="Array"==t?M.entries||A:A;if(F&&(k=l(F.call(new e)),k!==Object.prototype&&(f(k,E,!0),n||u(k,p)||a(k,p,y))),S&&A&&A.name!==h&&(L=!0,P=function(){return A.call(this)}),n&&!j||!d&&!L&&M[p]||a(M,p,P),c[t]=P,c[E]=y,m)if(w={values:S?P:O(h),keys:g?P:O(b),entries:T},j)for(x in w)x in M||i(M,x,w[x]);else o(o.P+o.F*(d||L),t,w);return w}},{"./_export":49,"./_has":52,"./_hide":53,"./_iter-create":61,"./_iterators":65,"./_library":67,"./_object-gpo":76,"./_redefine":82,"./_set-to-string-tag":84,"./_wks":97}],63:[function(e,t,r){var n=e("./_wks")("iterator"),o=!1;try{var i=[7][n]();i.return=function(){o=!0},Array.from(i,function(){throw 2})}catch(e){}t.exports=function(e,t){if(!t&&!o)return!1;var r=!1;try{var i=[7],a=i[n]();a.next=function(){return{done:r=!0}},i[n]=function(){return a},e(i)}catch(e){}return r}},{"./_wks":97}],64:[function(e,t,r){t.exports=function(e,t){return{value:t,done:!!e}}},{}],65:[function(e,t,r){t.exports={}},{}],66:[function(e,t,r){var n=e("./_object-keys"),o=e("./_to-iobject");t.exports=function(e,t){for(var r,i=o(e),a=n(i),u=a.length,c=0;u>c;)if(i[r=a[c++]]===t)return r}},{"./_object-keys":78,"./_to-iobject":90}],67:[function(e,t,r){t.exports=!0},{}],68:[function(e,t,r){var n=e("./_uid")("meta"),o=e("./_is-object"),i=e("./_has"),a=e("./_object-dp").f,u=0,c=Object.isExtensible||function(){return!0},s=!e("./_fails")(function(){return c(Object.preventExtensions({}))}),f=function(e){a(e,n,{value:{i:"O"+ ++u,w:{}}})},l=function(e,t){if(!o(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!i(e,n)){if(!c(e))return"F";if(!t)return"E";f(e)}return e[n].i},p=function(e,t){if(!i(e,n)){if(!c(e))return!0;if(!t)return!1;f(e)}return e[n].w},d=function(e){return s&&_.NEED&&c(e)&&!i(e,n)&&f(e),e},_=t.exports={KEY:n,NEED:!1,fastKey:l,getWeak:p,onFreeze:d}},{"./_fails":50,"./_has":52,"./_is-object":59,"./_object-dp":70,"./_uid":94}],69:[function(e,t,r){var n=e("./_an-object"),o=e("./_object-dps"),i=e("./_enum-bug-keys"),a=e("./_shared-key")("IE_PROTO"),u=function(){},c="prototype",s=function(){var t,r=e("./_dom-create")("iframe"),n=i.length,o="<",a=">";for(r.style.display="none",e("./_html").appendChild(r),r.src="javascript:",t=r.contentWindow.document,t.open(),t.write(o+"script"+a+"document.F=Object"+o+"/script"+a),t.close(),s=t.F;n--;)delete s[c][i[n]];return s()};t.exports=Object.create||function(e,t){var r;return null!==e?(u[c]=n(e),r=new u,u[c]=null,r[a]=e):r=s(),void 0===t?r:o(r,t)}},{"./_an-object":37,"./_dom-create":46,"./_enum-bug-keys":47,"./_html":54,"./_object-dps":71,"./_shared-key":85}],70:[function(e,t,r){var n=e("./_an-object"),o=e("./_ie8-dom-define"),i=e("./_to-primitive"),a=Object.defineProperty;r.f=e("./_descriptors")?Object.defineProperty:function(e,t,r){if(n(e),t=i(t,!0),n(r),o)try{return a(e,t,r)}catch(e){}if("get"in r||"set"in r)throw TypeError("Accessors not supported!");return"value"in r&&(e[t]=r.value),e}},{"./_an-object":37,"./_descriptors":45,"./_ie8-dom-define":55,"./_to-primitive":93}],71:[function(e,t,r){var n=e("./_object-dp"),o=e("./_an-object"),i=e("./_object-keys");t.exports=e("./_descriptors")?Object.defineProperties:function(e,t){o(e);for(var r,a=i(t),u=a.length,c=0;u>c;)n.f(e,r=a[c++],t[r]);return e}},{"./_an-object":37,"./_descriptors":45,"./_object-dp":70,"./_object-keys":78}],72:[function(e,t,r){ +var n=e("./_object-pie"),o=e("./_property-desc"),i=e("./_to-iobject"),a=e("./_to-primitive"),u=e("./_has"),c=e("./_ie8-dom-define"),s=Object.getOwnPropertyDescriptor;r.f=e("./_descriptors")?s:function(e,t){if(e=i(e),t=a(t,!0),c)try{return s(e,t)}catch(e){}if(u(e,t))return o(!n.f.call(e,t),e[t])}},{"./_descriptors":45,"./_has":52,"./_ie8-dom-define":55,"./_object-pie":79,"./_property-desc":81,"./_to-iobject":90,"./_to-primitive":93}],73:[function(e,t,r){var n=e("./_to-iobject"),o=e("./_object-gopn").f,i={}.toString,a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],u=function(e){try{return o(e)}catch(e){return a.slice()}};t.exports.f=function(e){return a&&"[object Window]"==i.call(e)?u(e):o(n(e))}},{"./_object-gopn":74,"./_to-iobject":90}],74:[function(e,t,r){var n=e("./_object-keys-internal"),o=e("./_enum-bug-keys").concat("length","prototype");r.f=Object.getOwnPropertyNames||function(e){return n(e,o)}},{"./_enum-bug-keys":47,"./_object-keys-internal":77}],75:[function(e,t,r){r.f=Object.getOwnPropertySymbols},{}],76:[function(e,t,r){var n=e("./_has"),o=e("./_to-object"),i=e("./_shared-key")("IE_PROTO"),a=Object.prototype;t.exports=Object.getPrototypeOf||function(e){return e=o(e),n(e,i)?e[i]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?a:null}},{"./_has":52,"./_shared-key":85,"./_to-object":92}],77:[function(e,t,r){var n=e("./_has"),o=e("./_to-iobject"),i=e("./_array-includes")(!1),a=e("./_shared-key")("IE_PROTO");t.exports=function(e,t){var r,u=o(e),c=0,s=[];for(r in u)r!=a&&n(u,r)&&s.push(r);for(;t.length>c;)n(u,r=t[c++])&&(~i(s,r)||s.push(r));return s}},{"./_array-includes":38,"./_has":52,"./_shared-key":85,"./_to-iobject":90}],78:[function(e,t,r){var n=e("./_object-keys-internal"),o=e("./_enum-bug-keys");t.exports=Object.keys||function(e){return n(e,o)}},{"./_enum-bug-keys":47,"./_object-keys-internal":77}],79:[function(e,t,r){r.f={}.propertyIsEnumerable},{}],80:[function(e,t,r){var n=e("./_export"),o=e("./_core"),i=e("./_fails");t.exports=function(e,t){var r=(o.Object||{})[e]||Object[e],a={};a[e]=t(r),n(n.S+n.F*i(function(){r(1)}),"Object",a)}},{"./_core":41,"./_export":49,"./_fails":50}],81:[function(e,t,r){t.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},{}],82:[function(e,t,r){t.exports=e("./_hide")},{"./_hide":53}],83:[function(e,t,r){var n=e("./_is-object"),o=e("./_an-object"),i=function(e,t){if(o(e),!n(t)&&null!==t)throw TypeError(t+": can't set as prototype!")};t.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(t,r,n){try{n=e("./_ctx")(Function.call,e("./_object-gopd").f(Object.prototype,"__proto__").set,2),n(t,[]),r=!(t instanceof Array)}catch(e){r=!0}return function(e,t){return i(e,t),r?e.__proto__=t:n(e,t),e}}({},!1):void 0),check:i}},{"./_an-object":37,"./_ctx":43,"./_is-object":59,"./_object-gopd":72}],84:[function(e,t,r){var n=e("./_object-dp").f,o=e("./_has"),i=e("./_wks")("toStringTag");t.exports=function(e,t,r){e&&!o(e=r?e:e.prototype,i)&&n(e,i,{configurable:!0,value:t})}},{"./_has":52,"./_object-dp":70,"./_wks":97}],85:[function(e,t,r){var n=e("./_shared")("keys"),o=e("./_uid");t.exports=function(e){return n[e]||(n[e]=o(e))}},{"./_shared":86,"./_uid":94}],86:[function(e,t,r){var n=e("./_global"),o="__core-js_shared__",i=n[o]||(n[o]={});t.exports=function(e){return i[e]||(i[e]={})}},{"./_global":51}],87:[function(e,t,r){var n=e("./_to-integer"),o=e("./_defined");t.exports=function(e){return function(t,r){var i,a,u=String(o(t)),c=n(r),s=u.length;return c<0||c>=s?e?"":void 0:(i=u.charCodeAt(c),i<55296||i>56319||c+1===s||(a=u.charCodeAt(c+1))<56320||a>57343?e?u.charAt(c):i:e?u.slice(c,c+2):(i-55296<<10)+(a-56320)+65536)}}},{"./_defined":44,"./_to-integer":89}],88:[function(e,t,r){var n=e("./_to-integer"),o=Math.max,i=Math.min;t.exports=function(e,t){return e=n(e),e<0?o(e+t,0):i(e,t)}},{"./_to-integer":89}],89:[function(e,t,r){var n=Math.ceil,o=Math.floor;t.exports=function(e){return isNaN(e=+e)?0:(e>0?o:n)(e)}},{}],90:[function(e,t,r){var n=e("./_iobject"),o=e("./_defined");t.exports=function(e){return n(o(e))}},{"./_defined":44,"./_iobject":56}],91:[function(e,t,r){var n=e("./_to-integer"),o=Math.min;t.exports=function(e){return e>0?o(n(e),9007199254740991):0}},{"./_to-integer":89}],92:[function(e,t,r){var n=e("./_defined");t.exports=function(e){return Object(n(e))}},{"./_defined":44}],93:[function(e,t,r){var n=e("./_is-object");t.exports=function(e,t){if(!n(e))return e;var r,o;if(t&&"function"==typeof(r=e.toString)&&!n(o=r.call(e)))return o;if("function"==typeof(r=e.valueOf)&&!n(o=r.call(e)))return o;if(!t&&"function"==typeof(r=e.toString)&&!n(o=r.call(e)))return o;throw TypeError("Can't convert object to primitive value")}},{"./_is-object":59}],94:[function(e,t,r){var n=0,o=Math.random();t.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++n+o).toString(36))}},{}],95:[function(e,t,r){var n=e("./_global"),o=e("./_core"),i=e("./_library"),a=e("./_wks-ext"),u=e("./_object-dp").f;t.exports=function(e){var t=o.Symbol||(o.Symbol=i?{}:n.Symbol||{});"_"==e.charAt(0)||e in t||u(t,e,{value:a.f(e)})}},{"./_core":41,"./_global":51,"./_library":67,"./_object-dp":70,"./_wks-ext":96}],96:[function(e,t,r){r.f=e("./_wks")},{"./_wks":97}],97:[function(e,t,r){var n=e("./_shared")("wks"),o=e("./_uid"),i=e("./_global").Symbol,a="function"==typeof i,u=t.exports=function(e){return n[e]||(n[e]=a&&i[e]||(a?i:o)("Symbol."+e))};u.store=n},{"./_global":51,"./_shared":86,"./_uid":94}],98:[function(e,t,r){var n=e("./_classof"),o=e("./_wks")("iterator"),i=e("./_iterators");t.exports=e("./_core").getIteratorMethod=function(e){if(void 0!=e)return e[o]||e["@@iterator"]||i[n(e)]}},{"./_classof":39,"./_core":41,"./_iterators":65,"./_wks":97}],99:[function(e,t,r){var n=e("./_an-object"),o=e("./core.get-iterator-method");t.exports=e("./_core").getIterator=function(e){var t=o(e);if("function"!=typeof t)throw TypeError(e+" is not iterable!");return n(t.call(e))}},{"./_an-object":37,"./_core":41,"./core.get-iterator-method":98}],100:[function(e,t,r){var n=e("./_classof"),o=e("./_wks")("iterator"),i=e("./_iterators");t.exports=e("./_core").isIterable=function(e){var t=Object(e);return void 0!==t[o]||"@@iterator"in t||i.hasOwnProperty(n(t))}},{"./_classof":39,"./_core":41,"./_iterators":65,"./_wks":97}],101:[function(e,t,r){"use strict";var n=e("./_ctx"),o=e("./_export"),i=e("./_to-object"),a=e("./_iter-call"),u=e("./_is-array-iter"),c=e("./_to-length"),s=e("./_create-property"),f=e("./core.get-iterator-method");o(o.S+o.F*!e("./_iter-detect")(function(e){Array.from(e)}),"Array",{from:function(e){var t,r,o,l,p=i(e),d="function"==typeof this?this:Array,_=arguments.length,b=_>1?arguments[1]:void 0,h=void 0!==b,y=0,v=f(p);if(h&&(b=n(b,_>2?arguments[2]:void 0,2)),void 0==v||d==Array&&u(v))for(t=c(p.length),r=new d(t);t>y;y++)s(r,y,h?b(p[y],y):p[y]);else for(l=v.call(p),r=new d;!(o=l.next()).done;y++)s(r,y,h?a(l,b,[o.value,y],!0):o.value);return r.length=y,r}})},{"./_create-property":42,"./_ctx":43,"./_export":49,"./_is-array-iter":57,"./_iter-call":60,"./_iter-detect":63,"./_to-length":91,"./_to-object":92,"./core.get-iterator-method":98}],102:[function(e,t,r){"use strict";var n=e("./_add-to-unscopables"),o=e("./_iter-step"),i=e("./_iterators"),a=e("./_to-iobject");t.exports=e("./_iter-define")(Array,"Array",function(e,t){this._t=a(e),this._i=0,this._k=t},function(){var e=this._t,t=this._k,r=this._i++;return!e||r>=e.length?(this._t=void 0,o(1)):"keys"==t?o(0,r):"values"==t?o(0,e[r]):o(0,[r,e[r]])},"values"),i.Arguments=i.Array,n("keys"),n("values"),n("entries")},{"./_add-to-unscopables":36,"./_iter-define":62,"./_iter-step":64,"./_iterators":65,"./_to-iobject":90}],103:[function(e,t,r){var n=e("./_export");n(n.S,"Object",{create:e("./_object-create")})},{"./_export":49,"./_object-create":69}],104:[function(e,t,r){var n=e("./_export");n(n.S+n.F*!e("./_descriptors"),"Object",{defineProperty:e("./_object-dp").f})},{"./_descriptors":45,"./_export":49,"./_object-dp":70}],105:[function(e,t,r){var n=e("./_to-object"),o=e("./_object-gpo");e("./_object-sap")("getPrototypeOf",function(){return function(e){return o(n(e))}})},{"./_object-gpo":76,"./_object-sap":80,"./_to-object":92}],106:[function(e,t,r){var n=e("./_export");n(n.S,"Object",{setPrototypeOf:e("./_set-proto").set})},{"./_export":49,"./_set-proto":83}],107:[function(e,t,r){},{}],108:[function(e,t,r){"use strict";var n=e("./_string-at")(!0);e("./_iter-define")(String,"String",function(e){this._t=String(e),this._i=0},function(){var e,t=this._t,r=this._i;return r>=t.length?{value:void 0,done:!0}:(e=n(t,r),this._i+=e.length,{value:e,done:!1})})},{"./_iter-define":62,"./_string-at":87}],109:[function(e,t,r){"use strict";var n=e("./_global"),o=e("./_has"),i=e("./_descriptors"),a=e("./_export"),u=e("./_redefine"),c=e("./_meta").KEY,s=e("./_fails"),f=e("./_shared"),l=e("./_set-to-string-tag"),p=e("./_uid"),d=e("./_wks"),_=e("./_wks-ext"),b=e("./_wks-define"),h=e("./_keyof"),y=e("./_enum-keys"),v=e("./_is-array"),m=e("./_an-object"),g=e("./_to-iobject"),j=e("./_to-primitive"),w=e("./_property-desc"),x=e("./_object-create"),k=e("./_object-gopn-ext"),O=e("./_object-gopd"),E=e("./_object-dp"),S=e("./_object-keys"),L=O.f,M=E.f,A=k.f,P=n.Symbol,T=n.JSON,F=T&&T.stringify,I="prototype",C=d("_hidden"),N=d("toPrimitive"),R={}.propertyIsEnumerable,G=f("symbol-registry"),D=f("symbols"),U=f("op-symbols"),Y=Object[I],W="function"==typeof P,B=n.QObject,q=!B||!B[I]||!B[I].findChild,J=i&&s(function(){return 7!=x(M({},"a",{get:function(){return M(this,"a",{value:7}).a}})).a})?function(e,t,r){var n=L(Y,t);n&&delete Y[t],M(e,t,r),n&&e!==Y&&M(Y,t,n)}:M,K=function(e){var t=D[e]=x(P[I]);return t._k=e,t},z=W&&"symbol"==typeof P.iterator?function(e){return"symbol"==typeof e}:function(e){return e instanceof P},Q=function(e,t,r){return e===Y&&Q(U,t,r),m(e),t=j(t,!0),m(r),o(D,t)?(r.enumerable?(o(e,C)&&e[C][t]&&(e[C][t]=!1),r=x(r,{enumerable:w(0,!1)})):(o(e,C)||M(e,C,w(1,{})),e[C][t]=!0),J(e,t,r)):M(e,t,r)},H=function(e,t){m(e);for(var r,n=y(t=g(t)),o=0,i=n.length;i>o;)Q(e,r=n[o++],t[r]);return e},V=function(e,t){return void 0===t?x(e):H(x(e),t)},X=function(e){var t=R.call(this,e=j(e,!0));return!(this===Y&&o(D,e)&&!o(U,e))&&(!(t||!o(this,e)||!o(D,e)||o(this,C)&&this[C][e])||t)},Z=function(e,t){if(e=g(e),t=j(t,!0),e!==Y||!o(D,t)||o(U,t)){var r=L(e,t);return!r||!o(D,t)||o(e,C)&&e[C][t]||(r.enumerable=!0),r}},$=function(e){for(var t,r=A(g(e)),n=[],i=0;r.length>i;)o(D,t=r[i++])||t==C||t==c||n.push(t);return n},ee=function(e){for(var t,r=e===Y,n=A(r?U:g(e)),i=[],a=0;n.length>a;)!o(D,t=n[a++])||r&&!o(Y,t)||i.push(D[t]);return i};W||(P=function(){if(this instanceof P)throw TypeError("Symbol is not a constructor!");var e=p(arguments.length>0?arguments[0]:void 0),t=function(r){this===Y&&t.call(U,r),o(this,C)&&o(this[C],e)&&(this[C][e]=!1),J(this,e,w(1,r))};return i&&q&&J(Y,e,{configurable:!0,set:t}),K(e)},u(P[I],"toString",function(){return this._k}),O.f=Z,E.f=Q,e("./_object-gopn").f=k.f=$,e("./_object-pie").f=X,e("./_object-gops").f=ee,i&&!e("./_library")&&u(Y,"propertyIsEnumerable",X,!0),_.f=function(e){return K(d(e))}),a(a.G+a.W+a.F*!W,{Symbol:P});for(var te="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),re=0;te.length>re;)d(te[re++]);for(var te=S(d.store),re=0;te.length>re;)b(te[re++]);a(a.S+a.F*!W,"Symbol",{for:function(e){return o(G,e+="")?G[e]:G[e]=P(e)},keyFor:function(e){if(z(e))return h(G,e);throw TypeError(e+" is not a symbol!")},useSetter:function(){q=!0},useSimple:function(){q=!1}}),a(a.S+a.F*!W,"Object",{create:V,defineProperty:Q,defineProperties:H,getOwnPropertyDescriptor:Z,getOwnPropertyNames:$,getOwnPropertySymbols:ee}),T&&a(a.S+a.F*(!W||s(function(){var e=P();return"[null]"!=F([e])||"{}"!=F({a:e})||"{}"!=F(Object(e))})),"JSON",{stringify:function(e){if(void 0!==e&&!z(e)){for(var t,r,n=[e],o=1;arguments.length>o;)n.push(arguments[o++]);return t=n[1],"function"==typeof t&&(r=t),!r&&v(t)||(t=function(e,t){if(r&&(t=r.call(this,e,t)),!z(t))return t}),n[1]=t,F.apply(T,n)}}}),P[I][N]||e("./_hide")(P[I],N,P[I].valueOf),l(P,"Symbol"),l(Math,"Math",!0),l(n.JSON,"JSON",!0)},{"./_an-object":37,"./_descriptors":45,"./_enum-keys":48,"./_export":49,"./_fails":50,"./_global":51,"./_has":52,"./_hide":53,"./_is-array":58,"./_keyof":66,"./_library":67,"./_meta":68,"./_object-create":69,"./_object-dp":70,"./_object-gopd":72,"./_object-gopn":74,"./_object-gopn-ext":73,"./_object-gops":75,"./_object-keys":78,"./_object-pie":79,"./_property-desc":81,"./_redefine":82,"./_set-to-string-tag":84,"./_shared":86,"./_to-iobject":90,"./_to-primitive":93,"./_uid":94,"./_wks":97,"./_wks-define":95,"./_wks-ext":96}],110:[function(e,t,r){e("./_wks-define")("asyncIterator")},{"./_wks-define":95}],111:[function(e,t,r){e("./_wks-define")("observable")},{"./_wks-define":95}],112:[function(e,t,r){e("./es6.array.iterator");for(var n=e("./_global"),o=e("./_hide"),i=e("./_iterators"),a=e("./_wks")("toStringTag"),u=["NodeList","DOMTokenList","MediaList","StyleSheetList","CSSRuleList"],c=0;c<5;c++){var s=u[c],f=n[s],l=f&&f.prototype;l&&!l[a]&&o(l,a,s),i[s]=i.Array}},{"./_global":51,"./_hide":53,"./_iterators":65,"./_wks":97,"./es6.array.iterator":102}],113:[function(e,t,r){(function(r){var n="object"==typeof r?r:"object"==typeof window?window:"object"==typeof self?self:this,o=n.regeneratorRuntime&&Object.getOwnPropertyNames(n).indexOf("regeneratorRuntime")>=0,i=o&&n.regeneratorRuntime;if(n.regeneratorRuntime=void 0,t.exports=e("./runtime"),o)n.regeneratorRuntime=i;else try{delete n.regeneratorRuntime}catch(e){n.regeneratorRuntime=void 0}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./runtime":114}],114:[function(e,t,r){(function(e,r){!function(r){"use strict";function n(e,t,r,n){var o=t&&t.prototype instanceof i?t:i,a=Object.create(o.prototype),u=new _(n||[]);return a._invoke=f(e,r,u),a}function o(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}function i(){}function a(){}function u(){}function c(e){["next","throw","return"].forEach(function(t){e[t]=function(e){return this._invoke(t,e)}})}function s(t){function r(e,n,i,a){var u=o(t[e],t,n);if("throw"!==u.type){var c=u.arg,s=c.value;return s&&"object"==typeof s&&m.call(s,"__await")?Promise.resolve(s.__await).then(function(e){r("next",e,i,a)},function(e){r("throw",e,i,a)}):Promise.resolve(s).then(function(e){c.value=e,i(c)},a)}a(u.arg)}function n(e,t){function n(){return new Promise(function(n,o){r(e,t,n,o)})}return i=i?i.then(n,n):n()}"object"==typeof e&&e.domain&&(r=e.domain.bind(r));var i;this._invoke=n}function f(e,t,r){var n=O;return function(i,a){if(n===S)throw new Error("Generator is already running");if(n===L){if("throw"===i)throw a;return h()}for(r.method=i,r.arg=a;;){var u=r.delegate;if(u){var c=l(u,r);if(c){if(c===M)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(n===O)throw n=L,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n=S;var s=o(e,t,r);if("normal"===s.type){if(n=r.done?L:E,s.arg===M)continue;return{value:s.arg,done:r.done}}"throw"===s.type&&(n=L,r.method="throw",r.arg=s.arg)}}}function l(e,t){var r=e.iterator[t.method];if(r===y){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&&(t.method="return",t.arg=y,l(e,t),"throw"===t.method))return M;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return M}var n=o(r,e.iterator,t.arg);if("throw"===n.type)return t.method="throw",t.arg=n.arg,t.delegate=null,M;var i=n.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=y),t.delegate=null,M):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,M)}function p(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function d(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function _(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(p,this),this.reset(!0)}function b(e){if(e){var t=e[j];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,n=function t(){for(;++r=0;--n){var o=this.tryEntries[n],i=o.completion;if("root"===o.tryLoc)return t("end");if(o.tryLoc<=this.prev){var a=m.call(o,"catchLoc"),u=m.call(o,"finallyLoc");if(a&&u){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&m.call(n,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),d(r),M}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;d(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:b(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=y),M}}}("object"==typeof r?r:"object"==typeof window?window:"object"==typeof self?self:this)}).call(this,e("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{_process:1}],115:[function(e,t,r){t.exports=e("regenerator-runtime")},{"regenerator-runtime":113}]},{},[2])(2)}); diff --git a/backend/documentation/js/libs/es6-shim.min.js b/backend/documentation/js/libs/es6-shim.min.js new file mode 100644 index 0000000..243e880 --- /dev/null +++ b/backend/documentation/js/libs/es6-shim.min.js @@ -0,0 +1,12 @@ +/*! + * https://github.com/paulmillr/es6-shim + * @license es6-shim Copyright 2013-2016 by Paul Miller (http://paulmillr.com) + * and contributors, MIT License + * es6-shim: v0.35.4 + * see https://github.com/paulmillr/es6-shim/blob/0.35.3/LICENSE + * Details and documentation: + * https://github.com/paulmillr/es6-shim/ + */ +(function(e,t){if(typeof define==="function"&&define.amd){define(t)}else if(typeof exports==="object"){module.exports=t()}else{e.returnExports=t()}})(this,function(){"use strict";var e=Function.call.bind(Function.apply);var t=Function.call.bind(Function.call);var r=Array.isArray;var n=Object.keys;var o=function notThunker(t){return function notThunk(){return!e(t,this,arguments)}};var i=function(e){try{e();return false}catch(t){return true}};var a=function valueOrFalseIfThrows(e){try{return e()}catch(t){return false}};var u=o(i);var f=function(){return!i(function(){return Object.defineProperty({},"x",{get:function(){}})})};var s=!!Object.defineProperty&&f();var c=function foo(){}.name==="foo";var l=Function.call.bind(Array.prototype.forEach);var p=Function.call.bind(Array.prototype.reduce);var v=Function.call.bind(Array.prototype.filter);var y=Function.call.bind(Array.prototype.some);var h=function(e,t,r,n){if(!n&&t in e){return}if(s){Object.defineProperty(e,t,{configurable:true,enumerable:false,writable:true,value:r})}else{e[t]=r}};var b=function(e,t,r){l(n(t),function(n){var o=t[n];h(e,n,o,!!r)})};var g=Function.call.bind(Object.prototype.toString);var d=typeof/abc/==="function"?function IsCallableSlow(e){return typeof e==="function"&&g(e)==="[object Function]"}:function IsCallableFast(e){return typeof e==="function"};var m={getter:function(e,t,r){if(!s){throw new TypeError("getters require true ES5 support")}Object.defineProperty(e,t,{configurable:true,enumerable:false,get:r})},proxy:function(e,t,r){if(!s){throw new TypeError("getters require true ES5 support")}var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,{configurable:n.configurable,enumerable:n.enumerable,get:function getKey(){return e[t]},set:function setKey(r){e[t]=r}})},redefine:function(e,t,r){if(s){var n=Object.getOwnPropertyDescriptor(e,t);n.value=r;Object.defineProperty(e,t,n)}else{e[t]=r}},defineByDescriptor:function(e,t,r){if(s){Object.defineProperty(e,t,r)}else if("value"in r){e[t]=r.value}},preserveToString:function(e,t){if(t&&d(t.toString)){h(e,"toString",t.toString.bind(t),true)}}};var O=Object.create||function(e,t){var r=function Prototype(){};r.prototype=e;var o=new r;if(typeof t!=="undefined"){n(t).forEach(function(e){m.defineByDescriptor(o,e,t[e])})}return o};var w=function(e,t){if(!Object.setPrototypeOf){return false}return a(function(){var r=function Subclass(t){var r=new e(t);Object.setPrototypeOf(r,Subclass.prototype);return r};Object.setPrototypeOf(r,e);r.prototype=O(e.prototype,{constructor:{value:r}});return t(r)})};var j=function(){if(typeof self!=="undefined"){return self}if(typeof window!=="undefined"){return window}if(typeof global!=="undefined"){return global}throw new Error("unable to locate global object")};var S=j();var T=S.isFinite;var I=Function.call.bind(String.prototype.indexOf);var E=Function.apply.bind(Array.prototype.indexOf);var P=Function.call.bind(Array.prototype.concat);var C=Function.call.bind(String.prototype.slice);var M=Function.call.bind(Array.prototype.push);var x=Function.apply.bind(Array.prototype.push);var N=Function.call.bind(Array.prototype.join);var A=Function.call.bind(Array.prototype.shift);var _=Math.max;var R=Math.min;var k=Math.floor;var L=Math.abs;var F=Math.exp;var D=Math.log;var z=Math.sqrt;var q=Function.call.bind(Object.prototype.hasOwnProperty);var W;var G=function(){};var H=S.Map;var V=H&&H.prototype["delete"];var B=H&&H.prototype.get;var U=H&&H.prototype.has;var $=H&&H.prototype.set;var J=S.Symbol||{};var X=J.species||"@@species";var K=Number.isNaN||function isNaN(e){return e!==e};var Z=Number.isFinite||function isFinite(e){return typeof e==="number"&&T(e)};var Y=d(Math.sign)?Math.sign:function sign(e){var t=Number(e);if(t===0){return t}if(K(t)){return t}return t<0?-1:1};var Q=function log1p(e){var t=Number(e);if(t<-1||K(t)){return NaN}if(t===0||t===Infinity){return t}if(t===-1){return-Infinity}return 1+t-1===0?t:t*(D(1+t)/(1+t-1))};var ee=function isArguments(e){return g(e)==="[object Arguments]"};var te=function isArguments(e){return e!==null&&typeof e==="object"&&typeof e.length==="number"&&e.length>=0&&g(e)!=="[object Array]"&&g(e.callee)==="[object Function]"};var re=ee(arguments)?ee:te;var ne={primitive:function(e){return e===null||typeof e!=="function"&&typeof e!=="object"},string:function(e){return g(e)==="[object String]"},regex:function(e){return g(e)==="[object RegExp]"},symbol:function(e){return typeof S.Symbol==="function"&&typeof e==="symbol"}};var oe=function overrideNative(e,t,r){var n=e[t];h(e,t,r,true);m.preserveToString(e[t],n)};var ie=typeof J==="function"&&typeof J["for"]==="function"&&ne.symbol(J());var ae=ne.symbol(J.iterator)?J.iterator:"_es6-shim iterator_";if(S.Set&&typeof(new S.Set)["@@iterator"]==="function"){ae="@@iterator"}if(!S.Reflect){h(S,"Reflect",{},true)}var ue=S.Reflect;var fe=String;var se=typeof document==="undefined"||!document?null:document.all;var ce=se==null?function isNullOrUndefined(e){return e==null}:function isNullOrUndefinedAndNotDocumentAll(e){return e==null&&e!==se};var le={Call:function Call(t,r){var n=arguments.length>2?arguments[2]:[];if(!le.IsCallable(t)){throw new TypeError(t+" is not a function")}return e(t,r,n)},RequireObjectCoercible:function(e,t){if(ce(e)){throw new TypeError(t||"Cannot call method on "+e)}return e},TypeIsObject:function(e){if(e===void 0||e===null||e===true||e===false){return false}return typeof e==="function"||typeof e==="object"||e===se},ToObject:function(e,t){return Object(le.RequireObjectCoercible(e,t))},IsCallable:d,IsConstructor:function(e){return le.IsCallable(e)},ToInt32:function(e){return le.ToNumber(e)>>0},ToUint32:function(e){return le.ToNumber(e)>>>0},ToNumber:function(e){if(ie&&g(e)==="[object Symbol]"){throw new TypeError("Cannot convert a Symbol value to a number")}return+e},ToInteger:function(e){var t=le.ToNumber(e);if(K(t)){return 0}if(t===0||!Z(t)){return t}return(t>0?1:-1)*k(L(t))},ToLength:function(e){var t=le.ToInteger(e);if(t<=0){return 0}if(t>Number.MAX_SAFE_INTEGER){return Number.MAX_SAFE_INTEGER}return t},SameValue:function(e,t){if(e===t){if(e===0){return 1/e===1/t}return true}return K(e)&&K(t)},SameValueZero:function(e,t){return e===t||K(e)&&K(t)},GetIterator:function(e){if(re(e)){return new W(e,"value")}var t=le.GetMethod(e,ae);if(!le.IsCallable(t)){throw new TypeError("value is not an iterable")}var r=le.Call(t,e);if(!le.TypeIsObject(r)){throw new TypeError("bad iterator")}return r},GetMethod:function(e,t){var r=le.ToObject(e)[t];if(ce(r)){return void 0}if(!le.IsCallable(r)){throw new TypeError("Method not callable: "+t)}return r},IteratorComplete:function(e){return!!e.done},IteratorClose:function(e,t){var r=le.GetMethod(e,"return");if(r===void 0){return}var n,o;try{n=le.Call(r,e)}catch(i){o=i}if(t){return}if(o){throw o}if(!le.TypeIsObject(n)){throw new TypeError("Iterator's return method returned a non-object.")}},IteratorNext:function(e){var t=arguments.length>1?e.next(arguments[1]):e.next();if(!le.TypeIsObject(t)){throw new TypeError("bad iterator")}return t},IteratorStep:function(e){var t=le.IteratorNext(e);var r=le.IteratorComplete(t);return r?false:t},Construct:function(e,t,r,n){var o=typeof r==="undefined"?e:r;if(!n&&ue.construct){return ue.construct(e,t,o)}var i=o.prototype;if(!le.TypeIsObject(i)){i=Object.prototype}var a=O(i);var u=le.Call(e,a,t);return le.TypeIsObject(u)?u:a},SpeciesConstructor:function(e,t){var r=e.constructor;if(r===void 0){return t}if(!le.TypeIsObject(r)){throw new TypeError("Bad constructor")}var n=r[X];if(ce(n)){return t}if(!le.IsConstructor(n)){throw new TypeError("Bad @@species")}return n},CreateHTML:function(e,t,r,n){var o=le.ToString(e);var i="<"+t;if(r!==""){var a=le.ToString(n);var u=a.replace(/"/g,""");i+=" "+r+'="'+u+'"'}var f=i+">";var s=f+o;return s+""},IsRegExp:function IsRegExp(e){if(!le.TypeIsObject(e)){return false}var t=e[J.match];if(typeof t!=="undefined"){return!!t}return ne.regex(e)},ToString:function ToString(e){if(ie&&g(e)==="[object Symbol]"){throw new TypeError("Cannot convert a Symbol value to a number")}return fe(e)}};if(s&&ie){var pe=function defineWellKnownSymbol(e){if(ne.symbol(J[e])){return J[e]}var t=J["for"]("Symbol."+e);Object.defineProperty(J,e,{configurable:false,enumerable:false,writable:false,value:t});return t};if(!ne.symbol(J.search)){var ve=pe("search");var ye=String.prototype.search;h(RegExp.prototype,ve,function search(e){return le.Call(ye,e,[this])});var he=function search(e){var t=le.RequireObjectCoercible(this);if(!ce(e)){var r=le.GetMethod(e,ve);if(typeof r!=="undefined"){return le.Call(r,e,[t])}}return le.Call(ye,t,[le.ToString(e)])};oe(String.prototype,"search",he)}if(!ne.symbol(J.replace)){var be=pe("replace");var ge=String.prototype.replace;h(RegExp.prototype,be,function replace(e,t){return le.Call(ge,e,[this,t])});var de=function replace(e,t){var r=le.RequireObjectCoercible(this);if(!ce(e)){var n=le.GetMethod(e,be);if(typeof n!=="undefined"){return le.Call(n,e,[r,t])}}return le.Call(ge,r,[le.ToString(e),t])};oe(String.prototype,"replace",de)}if(!ne.symbol(J.split)){var me=pe("split");var Oe=String.prototype.split;h(RegExp.prototype,me,function split(e,t){return le.Call(Oe,e,[this,t])});var we=function split(e,t){var r=le.RequireObjectCoercible(this);if(!ce(e)){var n=le.GetMethod(e,me);if(typeof n!=="undefined"){return le.Call(n,e,[r,t])}}return le.Call(Oe,r,[le.ToString(e),t])};oe(String.prototype,"split",we)}var je=ne.symbol(J.match);var Se=je&&function(){var e={};e[J.match]=function(){return 42};return"a".match(e)!==42}();if(!je||Se){var Te=pe("match");var Ie=String.prototype.match;h(RegExp.prototype,Te,function match(e){return le.Call(Ie,e,[this])});var Ee=function match(e){var t=le.RequireObjectCoercible(this);if(!ce(e)){var r=le.GetMethod(e,Te);if(typeof r!=="undefined"){return le.Call(r,e,[t])}}return le.Call(Ie,t,[le.ToString(e)])};oe(String.prototype,"match",Ee)}}var Pe=function wrapConstructor(e,t,r){m.preserveToString(t,e);if(Object.setPrototypeOf){Object.setPrototypeOf(e,t)}if(s){l(Object.getOwnPropertyNames(e),function(n){if(n in G||r[n]){return}m.proxy(e,n,t)})}else{l(Object.keys(e),function(n){if(n in G||r[n]){return}t[n]=e[n]})}t.prototype=e.prototype;m.redefine(e.prototype,"constructor",t)};var Ce=function(){return this};var Me=function(e){if(s&&!q(e,X)){m.getter(e,X,Ce)}};var xe=function(e,t){var r=t||function iterator(){return this};h(e,ae,r);if(!e[ae]&&ne.symbol(ae)){e[ae]=r}};var Ne=function createDataProperty(e,t,r){if(s){Object.defineProperty(e,t,{configurable:true,enumerable:true,writable:true,value:r})}else{e[t]=r}};var Ae=function createDataPropertyOrThrow(e,t,r){Ne(e,t,r);if(!le.SameValue(e[t],r)){throw new TypeError("property is nonconfigurable")}};var _e=function(e,t,r,n){if(!le.TypeIsObject(e)){throw new TypeError("Constructor requires `new`: "+t.name)}var o=t.prototype;if(!le.TypeIsObject(o)){o=r}var i=O(o);for(var a in n){if(q(n,a)){var u=n[a];h(i,a,u,true)}}return i};if(String.fromCodePoint&&String.fromCodePoint.length!==1){var Re=String.fromCodePoint;oe(String,"fromCodePoint",function fromCodePoint(e){return le.Call(Re,this,arguments)})}var ke={fromCodePoint:function fromCodePoint(e){var t=[];var r;for(var n=0,o=arguments.length;n1114111){throw new RangeError("Invalid code point "+r)}if(r<65536){M(t,String.fromCharCode(r))}else{r-=65536;M(t,String.fromCharCode((r>>10)+55296));M(t,String.fromCharCode(r%1024+56320))}}return N(t,"")},raw:function raw(e){var t=arguments.length-1;var r=le.ToObject(e,"bad template");var raw=le.ToObject(r.raw,"bad raw value");var n=raw.length;var o=le.ToLength(n);if(o<=0){return""}var i=[];var a=0;var u,f,s,c;while(a=o){break}f=a+1=Fe){throw new RangeError("repeat count must be less than infinity and not overflow maximum string size")}return Le(t,r)},startsWith:function startsWith(e){var t=le.ToString(le.RequireObjectCoercible(this));if(le.IsRegExp(e)){throw new TypeError('Cannot call method "startsWith" with a regex')}var r=le.ToString(e);var n;if(arguments.length>1){n=arguments[1]}var o=_(le.ToInteger(n),0);return C(t,o,o+r.length)===r},endsWith:function endsWith(e){var t=le.ToString(le.RequireObjectCoercible(this));if(le.IsRegExp(e)){throw new TypeError('Cannot call method "endsWith" with a regex')}var r=le.ToString(e);var n=t.length;var o;if(arguments.length>1){o=arguments[1]}var i=typeof o==="undefined"?n:le.ToInteger(o);var a=R(_(i,0),n);return C(t,a-r.length,a)===r},includes:function includes(e){if(le.IsRegExp(e)){throw new TypeError('"includes" does not accept a RegExp')}var t=le.ToString(e);var r;if(arguments.length>1){r=arguments[1]}return I(this,t,r)!==-1},codePointAt:function codePointAt(e){var t=le.ToString(le.RequireObjectCoercible(this));var r=le.ToInteger(e);var n=t.length;if(r>=0&&r56319||i){return o}var a=t.charCodeAt(r+1);if(a<56320||a>57343){return o}return(o-55296)*1024+(a-56320)+65536}}};if(String.prototype.includes&&"a".includes("a",Infinity)!==false){oe(String.prototype,"includes",De.includes)}if(String.prototype.startsWith&&String.prototype.endsWith){var ze=i(function(){return"/a/".startsWith(/a/)});var qe=a(function(){return"abc".startsWith("a",Infinity)===false});if(!ze||!qe){oe(String.prototype,"startsWith",De.startsWith);oe(String.prototype,"endsWith",De.endsWith)}}if(ie){var We=a(function(){var e=/a/;e[J.match]=false;return"/a/".startsWith(e)});if(!We){oe(String.prototype,"startsWith",De.startsWith)}var Ge=a(function(){var e=/a/;e[J.match]=false;return"/a/".endsWith(e)});if(!Ge){oe(String.prototype,"endsWith",De.endsWith)}var He=a(function(){var e=/a/;e[J.match]=false;return"/a/".includes(e)});if(!He){oe(String.prototype,"includes",De.includes)}}b(String.prototype,De);var Ve=["\t\n\x0B\f\r \xa0\u1680\u180e\u2000\u2001\u2002\u2003","\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028","\u2029\ufeff"].join("");var Be=new RegExp("(^["+Ve+"]+)|(["+Ve+"]+$)","g");var Ue=function trim(){return le.ToString(le.RequireObjectCoercible(this)).replace(Be,"")};var $e=["\x85","\u200b","\ufffe"].join("");var Je=new RegExp("["+$e+"]","g");var Xe=/^[-+]0x[0-9a-f]+$/i;var Ke=$e.trim().length!==$e.length;h(String.prototype,"trim",Ue,Ke);var Ze=function(e){return{value:e,done:arguments.length===0}};var Ye=function(e){le.RequireObjectCoercible(e);h(this,"_s",le.ToString(e));h(this,"_i",0)};Ye.prototype.next=function(){var e=this._s;var t=this._i;if(typeof e==="undefined"||t>=e.length){this._s=void 0;return Ze()}var r=e.charCodeAt(t);var n,o;if(r<55296||r>56319||t+1===e.length){o=1}else{n=e.charCodeAt(t+1);o=n<56320||n>57343?1:2}this._i=t+o;return Ze(e.substr(t,o))};xe(Ye.prototype);xe(String.prototype,function(){return new Ye(this)});var Qe={from:function from(e){var r=this;var n;if(arguments.length>1){n=arguments[1]}var o,i;if(typeof n==="undefined"){o=false}else{if(!le.IsCallable(n)){throw new TypeError("Array.from: when provided, the second argument must be a function")}if(arguments.length>2){i=arguments[2]}o=true}var a=typeof(re(e)||le.GetMethod(e,ae))!=="undefined";var u,f,s;if(a){f=le.IsConstructor(r)?Object(new r):[];var c=le.GetIterator(e);var l,p;s=0;while(true){l=le.IteratorStep(c);if(l===false){break}p=l.value;try{if(o){p=typeof i==="undefined"?n(p,s):t(n,i,p,s)}f[s]=p}catch(v){le.IteratorClose(c,true);throw v}s+=1}u=s}else{var y=le.ToObject(e);u=le.ToLength(y.length);f=le.IsConstructor(r)?Object(new r(u)):new Array(u);var h;for(s=0;s2){f=arguments[2]}var s=typeof f==="undefined"?n:le.ToInteger(f);var c=s<0?_(n+s,0):R(s,n);var l=R(c-u,n-a);var p=1;if(u0){if(u in r){r[a]=r[u]}else{delete r[a]}u+=p;a+=p;l-=1}return r},fill:function fill(e){var t;if(arguments.length>1){t=arguments[1]}var r;if(arguments.length>2){r=arguments[2]}var n=le.ToObject(this);var o=le.ToLength(n.length);t=le.ToInteger(typeof t==="undefined"?0:t);r=le.ToInteger(typeof r==="undefined"?o:r);var i=t<0?_(o+t,0):R(t,o);var a=r<0?o+r:r;for(var u=i;u1?arguments[1]:null;for(var i=0,a;i1?arguments[1]:null;for(var i=0;i1&&typeof arguments[1]!=="undefined"){return le.Call(ut,this,arguments)}return t(ut,this,e)})}var ft=-(Math.pow(2,32)-1);var st=function(e,r){var n={length:ft};n[r?(n.length>>>0)-1:0]=true;return a(function(){t(e,n,function(){throw new RangeError("should not reach here")},[]);return true})};if(!st(Array.prototype.forEach)){var ct=Array.prototype.forEach;oe(Array.prototype,"forEach",function forEach(e){return le.Call(ct,this.length>=0?this:[],arguments)})}if(!st(Array.prototype.map)){var lt=Array.prototype.map;oe(Array.prototype,"map",function map(e){return le.Call(lt,this.length>=0?this:[],arguments)})}if(!st(Array.prototype.filter)){var pt=Array.prototype.filter;oe(Array.prototype,"filter",function filter(e){return le.Call(pt,this.length>=0?this:[],arguments)})}if(!st(Array.prototype.some)){var vt=Array.prototype.some;oe(Array.prototype,"some",function some(e){return le.Call(vt,this.length>=0?this:[],arguments)})}if(!st(Array.prototype.every)){var yt=Array.prototype.every;oe(Array.prototype,"every",function every(e){return le.Call(yt,this.length>=0?this:[],arguments)})}if(!st(Array.prototype.reduce)){var ht=Array.prototype.reduce;oe(Array.prototype,"reduce",function reduce(e){return le.Call(ht,this.length>=0?this:[],arguments)})}if(!st(Array.prototype.reduceRight,true)){var bt=Array.prototype.reduceRight;oe(Array.prototype,"reduceRight",function reduceRight(e){return le.Call(bt,this.length>=0?this:[],arguments)})}var gt=Number("0o10")!==8;var dt=Number("0b10")!==2;var mt=y($e,function(e){return Number(e+0+e)===0});if(gt||dt||mt){var Ot=Number;var wt=/^0b[01]+$/i;var jt=/^0o[0-7]+$/i;var St=wt.test.bind(wt);var Tt=jt.test.bind(jt);var It=function(e,t){var r;if(typeof e.valueOf==="function"){r=e.valueOf();if(ne.primitive(r)){return r}}if(typeof e.toString==="function"){r=e.toString();if(ne.primitive(r)){return r}}throw new TypeError("No default value")};var Et=Je.test.bind(Je);var Pt=Xe.test.bind(Xe);var Ct=function(){var e=function Number(t){var r;if(arguments.length>0){r=ne.primitive(t)?t:It(t,"number")}else{r=0}if(typeof r==="string"){r=le.Call(Ue,r);if(St(r)){r=parseInt(C(r,2),2)}else if(Tt(r)){r=parseInt(C(r,2),8)}else if(Et(r)||Pt(r)){r=NaN}}var n=this;var o=a(function(){Ot.prototype.valueOf.call(n);return true});if(n instanceof e&&!o){return new Ot(r)}return Ot(r)};return e}();Pe(Ot,Ct,{});b(Ct,{NaN:Ot.NaN,MAX_VALUE:Ot.MAX_VALUE,MIN_VALUE:Ot.MIN_VALUE,NEGATIVE_INFINITY:Ot.NEGATIVE_INFINITY,POSITIVE_INFINITY:Ot.POSITIVE_INFINITY});Number=Ct;m.redefine(S,"Number",Ct)}var Mt=Math.pow(2,53)-1;b(Number,{MAX_SAFE_INTEGER:Mt,MIN_SAFE_INTEGER:-Mt,EPSILON:2.220446049250313e-16,parseInt:S.parseInt,parseFloat:S.parseFloat,isFinite:Z,isInteger:function isInteger(e){return Z(e)&&le.ToInteger(e)===e},isSafeInteger:function isSafeInteger(e){return Number.isInteger(e)&&L(e)<=Number.MAX_SAFE_INTEGER},isNaN:K});h(Number,"parseInt",S.parseInt,Number.parseInt!==S.parseInt);if([,1].find(function(){return true})===1){oe(Array.prototype,"find",tt.find)}if([,1].findIndex(function(){return true})!==0){oe(Array.prototype,"findIndex",tt.findIndex)}var xt=Function.bind.call(Function.bind,Object.prototype.propertyIsEnumerable);var Nt=function ensureEnumerable(e,t){if(s&&xt(e,t)){Object.defineProperty(e,t,{enumerable:false})}};var At=function sliceArgs(){var e=Number(this);var t=arguments.length;var r=t-e;var n=new Array(r<0?0:r);for(var o=e;o1){return NaN}var r=L(t);return Y(t)*Q(2*r/(1-r))/2},cbrt:function cbrt(e){var t=Number(e);if(t===0){return t}var r=t<0;var n;if(r){t=-t}if(t===Infinity){n=Infinity}else{n=F(D(t)/3);n=(t/(n*n)+2*n)/3}return r?-n:n},clz32:function clz32(e){var t=Number(e);var r=le.ToUint32(t);if(r===0){return 32}return Mr?le.Call(Mr,r):31-k(D(r+.5)*Pr)},cosh:function cosh(e){var t=Number(e);if(t===0){return 1}if(K(t)){return NaN}if(!T(t)){return Infinity}var r=F(L(t)-1);return(r+1/(r*Er*Er))*(Er/2)},expm1:function expm1(e){var t=Number(e);if(t===-Infinity){return-1}if(!T(t)||t===0){return t}if(L(t)>.5){return F(t)-1}var r=t;var n=0;var o=1;while(n+r!==n){n+=r;o+=1;r*=t/o}return n},hypot:function hypot(e,t){var r=0;var n=0;for(var o=0;o0?i/n*(i/n):i}}return n===Infinity?Infinity:n*z(r)},log2:function log2(e){return D(e)*Pr},log10:function log10(e){return D(e)*Cr},log1p:Q,sign:Y,sinh:function sinh(e){var t=Number(e);if(!T(t)||t===0){return t}var r=L(t);if(r<1){var n=Math.expm1(r);return Y(t)*n*(1+1/(n+1))/2}var o=F(r-1);return Y(t)*(o-1/(o*Er*Er))*(Er/2)},tanh:function tanh(e){var t=Number(e);if(K(t)||t===0){return t}if(t>=20){return 1}if(t<=-20){return-1}return(Math.expm1(t)-Math.expm1(-t))/(F(t)+F(-t))},trunc:function trunc(e){var t=Number(e);return t<0?-k(-t):k(t)},imul:function imul(e,t){var r=le.ToUint32(e);var n=le.ToUint32(t);var o=r>>>16&65535;var i=r&65535;var a=n>>>16&65535;var u=n&65535;return i*u+(o*u+i*a<<16>>>0)|0},fround:function fround(e){var t=Number(e);if(t===0||t===Infinity||t===-Infinity||K(t)){return t}var r=Y(t);var n=L(t);if(nTr||K(i)){return r*Infinity}return r*i}};var Nr=function withinULPDistance(e,t,r){return L(1-e/t)/Number.EPSILON<(r||8)};b(Math,xr);h(Math,"sinh",xr.sinh,Math.sinh(710)===Infinity);h(Math,"cosh",xr.cosh,Math.cosh(710)===Infinity);h(Math,"log1p",xr.log1p,Math.log1p(-1e-17)!==-1e-17);h(Math,"asinh",xr.asinh,Math.asinh(-1e7)!==-Math.asinh(1e7)); +h(Math,"asinh",xr.asinh,Math.asinh(1e300)===Infinity);h(Math,"atanh",xr.atanh,Math.atanh(1e-300)===0);h(Math,"tanh",xr.tanh,Math.tanh(-2e-17)!==-2e-17);h(Math,"acosh",xr.acosh,Math.acosh(Number.MAX_VALUE)===Infinity);h(Math,"acosh",xr.acosh,!Nr(Math.acosh(1+Number.EPSILON),Math.sqrt(2*Number.EPSILON)));h(Math,"cbrt",xr.cbrt,!Nr(Math.cbrt(1e-300),1e-100));h(Math,"sinh",xr.sinh,Math.sinh(-2e-17)!==-2e-17);var Ar=Math.expm1(10);h(Math,"expm1",xr.expm1,Ar>22025.465794806718||Ar<22025.465794806718);h(Math,"hypot",xr.hypot,Math.hypot(Infinity,NaN)!==Infinity);var _r=Math.round;var Rr=Math.round(.5-Number.EPSILON/4)===0&&Math.round(-.5+Number.EPSILON/3.99)===1;var kr=wr+1;var Lr=2*wr-1;var Fr=[kr,Lr].every(function(e){return Math.round(e)===e});h(Math,"round",function round(e){var t=k(e);var r=t===-1?-0:t+1;return e-t<.5?t:r},!Rr||!Fr);m.preserveToString(Math.round,_r);var Dr=Math.imul;if(Math.imul(4294967295,5)!==-5){Math.imul=xr.imul;m.preserveToString(Math.imul,Dr)}if(Math.imul.length!==2){oe(Math,"imul",function imul(e,t){return le.Call(Dr,Math,arguments)})}var zr=function(){var e=S.setTimeout;if(typeof e!=="function"&&typeof e!=="object"){return}le.IsPromise=function(e){if(!le.TypeIsObject(e)){return false}if(typeof e._promise==="undefined"){return false}return true};var r=function(e){if(!le.IsConstructor(e)){throw new TypeError("Bad promise constructor")}var t=this;var r=function(e,r){if(t.resolve!==void 0||t.reject!==void 0){throw new TypeError("Bad Promise implementation!")}t.resolve=e;t.reject=r};t.resolve=void 0;t.reject=void 0;t.promise=new e(r);if(!(le.IsCallable(t.resolve)&&le.IsCallable(t.reject))){throw new TypeError("Bad promise constructor")}};var n;if(typeof window!=="undefined"&&le.IsCallable(window.postMessage)){n=function(){var e=[];var t="zero-timeout-message";var r=function(r){M(e,r);window.postMessage(t,"*")};var n=function(r){if(r.source===window&&r.data===t){r.stopPropagation();if(e.length===0){return}var n=A(e);n()}};window.addEventListener("message",n,true);return r}}var o=function(){var e=S.Promise;var t=e&&e.resolve&&e.resolve();return t&&function(e){return t.then(e)}};var i=le.IsCallable(S.setImmediate)?S.setImmediate:typeof process==="object"&&process.nextTick?process.nextTick:o()||(le.IsCallable(n)?n():function(t){e(t,0)});var a=function(e){return e};var u=function(e){throw e};var f=0;var s=1;var c=2;var l=0;var p=1;var v=2;var y={};var h=function(e,t,r){i(function(){g(e,t,r)})};var g=function(e,t,r){var n,o;if(t===y){return e(r)}try{n=e(r);o=t.resolve}catch(i){n=i;o=t.reject}o(n)};var d=function(e,t){var r=e._promise;var n=r.reactionLength;if(n>0){h(r.fulfillReactionHandler0,r.reactionCapability0,t);r.fulfillReactionHandler0=void 0;r.rejectReactions0=void 0;r.reactionCapability0=void 0;if(n>1){for(var o=1,i=0;o0){h(r.rejectReactionHandler0,r.reactionCapability0,t);r.fulfillReactionHandler0=void 0;r.rejectReactions0=void 0;r.reactionCapability0=void 0;if(n>1){for(var o=1,i=0;o2&&arguments[2]===y;if(b&&o===E){i=y}else{i=new r(o)}var g=le.IsCallable(e)?e:a;var d=le.IsCallable(t)?t:u;var m=n._promise;var O;if(m.state===f){if(m.reactionLength===0){m.fulfillReactionHandler0=g;m.rejectReactionHandler0=d;m.reactionCapability0=i}else{var w=3*(m.reactionLength-1);m[w+l]=g;m[w+p]=d;m[w+v]=i}m.reactionLength+=1}else if(m.state===s){O=m.result;h(g,i,O)}else if(m.state===c){O=m.result;h(d,i,O)}else{throw new TypeError("unexpected Promise state")}return i.promise}});y=new r(E);I=T.then;return E}();if(S.Promise){delete S.Promise.accept;delete S.Promise.defer;delete S.Promise.prototype.chain}if(typeof zr==="function"){b(S,{Promise:zr});var qr=w(S.Promise,function(e){return e.resolve(42).then(function(){})instanceof e});var Wr=!i(function(){return S.Promise.reject(42).then(null,5).then(null,G)});var Gr=i(function(){return S.Promise.call(3,G)});var Hr=function(e){var t=e.resolve(5);t.constructor={};var r=e.resolve(t);try{r.then(null,G).then(null,G)}catch(n){return true}return t===r}(S.Promise);var Vr=s&&function(){var e=0;var t=Object.defineProperty({},"then",{get:function(){e+=1}});Promise.resolve(t);return e===1}();var Br=function BadResolverPromise(e){var t=new Promise(e);e(3,function(){});this.then=t.then;this.constructor=BadResolverPromise};Br.prototype=Promise.prototype;Br.all=Promise.all;var Ur=a(function(){return!!Br.all([1,2])});if(!qr||!Wr||!Gr||Hr||!Vr||Ur){Promise=zr;oe(S,"Promise",zr)}if(Promise.all.length!==1){var $r=Promise.all;oe(Promise,"all",function all(e){return le.Call($r,this,arguments)})}if(Promise.race.length!==1){var Jr=Promise.race;oe(Promise,"race",function race(e){return le.Call(Jr,this,arguments)})}if(Promise.resolve.length!==1){var Xr=Promise.resolve;oe(Promise,"resolve",function resolve(e){return le.Call(Xr,this,arguments)})}if(Promise.reject.length!==1){var Kr=Promise.reject;oe(Promise,"reject",function reject(e){return le.Call(Kr,this,arguments)})}Nt(Promise,"all");Nt(Promise,"race");Nt(Promise,"resolve");Nt(Promise,"reject");Me(Promise)}var Zr=function(e){var t=n(p(e,function(e,t){e[t]=true;return e},{}));return e.join(":")===t.join(":")};var Yr=Zr(["z","a","bb"]);var Qr=Zr(["z",1,"a","3",2]);if(s){var en=function fastkey(e,t){if(!t&&!Yr){return null}if(ce(e)){return"^"+le.ToString(e)}else if(typeof e==="string"){return"$"+e}else if(typeof e==="number"){if(!Qr){return"n"+e}return e}else if(typeof e==="boolean"){return"b"+e}return null};var tn=function emptyObject(){return Object.create?Object.create(null):{}};var rn=function addIterableToMap(e,n,o){if(r(o)||ne.string(o)){l(o,function(e){if(!le.TypeIsObject(e)){throw new TypeError("Iterator value "+e+" is not an entry object")}n.set(e[0],e[1])})}else if(o instanceof e){t(e.prototype.forEach,o,function(e,t){n.set(t,e)})}else{var i,a;if(!ce(o)){a=n.set;if(!le.IsCallable(a)){throw new TypeError("bad map")}i=le.GetIterator(o)}if(typeof i!=="undefined"){while(true){var u=le.IteratorStep(i);if(u===false){break}var f=u.value;try{if(!le.TypeIsObject(f)){throw new TypeError("Iterator value "+f+" is not an entry object")}t(a,n,f[0],f[1])}catch(s){le.IteratorClose(i,true);throw s}}}}};var nn=function addIterableToSet(e,n,o){if(r(o)||ne.string(o)){l(o,function(e){n.add(e)})}else if(o instanceof e){t(e.prototype.forEach,o,function(e){n.add(e)})}else{var i,a;if(!ce(o)){a=n.add;if(!le.IsCallable(a)){throw new TypeError("bad set")}i=le.GetIterator(o)}if(typeof i!=="undefined"){while(true){var u=le.IteratorStep(i);if(u===false){break}var f=u.value;try{t(a,n,f)}catch(s){le.IteratorClose(i,true);throw s}}}}};var on={Map:function(){var e={};var r=function MapEntry(e,t){this.key=e;this.value=t;this.next=null;this.prev=null};r.prototype.isRemoved=function isRemoved(){return this.key===e};var n=function isMap(e){return!!e._es6map};var o=function requireMapSlot(e,t){if(!le.TypeIsObject(e)||!n(e)){throw new TypeError("Method Map.prototype."+t+" called on incompatible receiver "+le.ToString(e))}};var i=function MapIterator(e,t){o(e,"[[MapIterator]]");h(this,"head",e._head);h(this,"i",this.head);h(this,"kind",t)};i.prototype={isMapIterator:true,next:function next(){if(!this.isMapIterator){throw new TypeError("Not a MapIterator")}var e=this.i;var t=this.kind;var r=this.head;if(typeof this.i==="undefined"){return Ze()}while(e.isRemoved()&&e!==r){e=e.prev}var n;while(e.next!==r){e=e.next;if(!e.isRemoved()){if(t==="key"){n=e.key}else if(t==="value"){n=e.value}else{n=[e.key,e.value]}this.i=e;return Ze(n)}}this.i=void 0;return Ze()}};xe(i.prototype);var a;var u=function Map(){if(!(this instanceof Map)){throw new TypeError('Constructor Map requires "new"')}if(this&&this._es6map){throw new TypeError("Bad construction")}var e=_e(this,Map,a,{_es6map:true,_head:null,_map:H?new H:null,_size:0,_storage:tn()});var t=new r(null,null);t.next=t.prev=t;e._head=t;if(arguments.length>0){rn(Map,e,arguments[0])}return e};a=u.prototype;m.getter(a,"size",function(){if(typeof this._size==="undefined"){throw new TypeError("size method called on incompatible Map")}return this._size});b(a,{get:function get(e){o(this,"get");var t;var r=en(e,true);if(r!==null){t=this._storage[r];if(t){return t.value}return}if(this._map){t=B.call(this._map,e);if(t){return t.value}return}var n=this._head;var i=n;while((i=i.next)!==n){if(le.SameValueZero(i.key,e)){return i.value}}},has:function has(e){o(this,"has");var t=en(e,true);if(t!==null){return typeof this._storage[t]!=="undefined"}if(this._map){return U.call(this._map,e)}var r=this._head;var n=r;while((n=n.next)!==r){if(le.SameValueZero(n.key,e)){return true}}return false},set:function set(e,t){o(this,"set");var n=this._head;var i=n;var a;var u=en(e,true);if(u!==null){if(typeof this._storage[u]!=="undefined"){this._storage[u].value=t;return this}a=this._storage[u]=new r(e,t);i=n.prev}else if(this._map){if(U.call(this._map,e)){B.call(this._map,e).value=t}else{a=new r(e,t);$.call(this._map,e,a);i=n.prev}}while((i=i.next)!==n){if(le.SameValueZero(i.key,e)){i.value=t;return this}}a=a||new r(e,t);if(le.SameValue(-0,e)){a.key=+0}a.next=this._head;a.prev=this._head.prev;a.prev.next=a;a.next.prev=a;this._size+=1;return this},"delete":function(t){o(this,"delete");var r=this._head;var n=r;var i=en(t,true);if(i!==null){if(typeof this._storage[i]==="undefined"){return false}n=this._storage[i].prev;delete this._storage[i]}else if(this._map){if(!U.call(this._map,t)){return false}n=B.call(this._map,t).prev;V.call(this._map,t)}while((n=n.next)!==r){if(le.SameValueZero(n.key,t)){n.key=e;n.value=e;n.prev.next=n.next;n.next.prev=n.prev;this._size-=1;return true}}return false},clear:function clear(){o(this,"clear");this._map=H?new H:null;this._size=0;this._storage=tn();var t=this._head;var r=t;var n=r.next;while((r=n)!==t){r.key=e;r.value=e;n=r.next;r.next=r.prev=t}t.next=t.prev=t},keys:function keys(){o(this,"keys");return new i(this,"key")},values:function values(){o(this,"values");return new i(this,"value")},entries:function entries(){o(this,"entries");return new i(this,"key+value")},forEach:function forEach(e){o(this,"forEach");var r=arguments.length>1?arguments[1]:null;var n=this.entries();for(var i=n.next();!i.done;i=n.next()){if(r){t(e,r,i.value[1],i.value[0],this)}else{e(i.value[1],i.value[0],this)}}}});xe(a,a.entries);return u}(),Set:function(){var e=function isSet(e){return e._es6set&&typeof e._storage!=="undefined"};var r=function requireSetSlot(t,r){if(!le.TypeIsObject(t)||!e(t)){throw new TypeError("Set.prototype."+r+" called on incompatible receiver "+le.ToString(t))}};var o;var i=function Set(){if(!(this instanceof Set)){throw new TypeError('Constructor Set requires "new"')}if(this&&this._es6set){throw new TypeError("Bad construction")}var e=_e(this,Set,o,{_es6set:true,"[[SetData]]":null,_storage:tn()});if(!e._es6set){throw new TypeError("bad set")}if(arguments.length>0){nn(Set,e,arguments[0])}return e};o=i.prototype;var a=function(e){var t=e;if(t==="^null"){return null}else if(t==="^undefined"){return void 0}var r=t.charAt(0);if(r==="$"){return C(t,1)}else if(r==="n"){return+C(t,1)}else if(r==="b"){return t==="btrue"}return+t};var u=function ensureMap(e){if(!e["[[SetData]]"]){var t=new on.Map;e["[[SetData]]"]=t;l(n(e._storage),function(e){var r=a(e);t.set(r,r)});e["[[SetData]]"]=t}e._storage=null};m.getter(i.prototype,"size",function(){r(this,"size");if(this._storage){return n(this._storage).length}u(this);return this["[[SetData]]"].size});b(i.prototype,{has:function has(e){r(this,"has");var t;if(this._storage&&(t=en(e))!==null){return!!this._storage[t]}u(this);return this["[[SetData]]"].has(e)},add:function add(e){r(this,"add");var t;if(this._storage&&(t=en(e))!==null){this._storage[t]=true;return this}u(this);this["[[SetData]]"].set(e,e);return this},"delete":function(e){r(this,"delete");var t;if(this._storage&&(t=en(e))!==null){var n=q(this._storage,t);return delete this._storage[t]&&n}u(this);return this["[[SetData]]"]["delete"](e)},clear:function clear(){r(this,"clear");if(this._storage){this._storage=tn()}if(this["[[SetData]]"]){this["[[SetData]]"].clear()}},values:function values(){r(this,"values");u(this);return new f(this["[[SetData]]"].values())},entries:function entries(){r(this,"entries");u(this);return new f(this["[[SetData]]"].entries())},forEach:function forEach(e){r(this,"forEach");var n=arguments.length>1?arguments[1]:null;var o=this;u(o);this["[[SetData]]"].forEach(function(r,i){if(n){t(e,n,i,i,o)}else{e(i,i,o)}})}});h(i.prototype,"keys",i.prototype.values,true);xe(i.prototype,i.prototype.values);var f=function SetIterator(e){h(this,"it",e)};f.prototype={isSetIterator:true,next:function next(){if(!this.isSetIterator){throw new TypeError("Not a SetIterator")}return this.it.next()}};xe(f.prototype);return i}()};var an=S.Set&&!Set.prototype["delete"]&&Set.prototype.remove&&Set.prototype.items&&Set.prototype.map&&Array.isArray((new Set).keys);if(an){S.Set=on.Set}if(S.Map||S.Set){var un=a(function(){return new Map([[1,2]]).get(1)===2});if(!un){S.Map=function Map(){if(!(this instanceof Map)){throw new TypeError('Constructor Map requires "new"')}var e=new H;if(arguments.length>0){rn(Map,e,arguments[0])}delete e.constructor;Object.setPrototypeOf(e,S.Map.prototype);return e};S.Map.prototype=O(H.prototype);h(S.Map.prototype,"constructor",S.Map,true);m.preserveToString(S.Map,H)}var fn=new Map;var sn=function(){var e=new Map([[1,0],[2,0],[3,0],[4,0]]);e.set(-0,e);return e.get(0)===e&&e.get(-0)===e&&e.has(0)&&e.has(-0)}();var cn=fn.set(1,2)===fn;if(!sn||!cn){oe(Map.prototype,"set",function set(e,r){t($,this,e===0?0:e,r);return this})}if(!sn){b(Map.prototype,{get:function get(e){return t(B,this,e===0?0:e)},has:function has(e){return t(U,this,e===0?0:e)}},true);m.preserveToString(Map.prototype.get,B);m.preserveToString(Map.prototype.has,U)}var ln=new Set;var pn=Set.prototype["delete"]&&Set.prototype.add&&Set.prototype.has&&function(e){e["delete"](0);e.add(-0);return!e.has(0)}(ln);var vn=ln.add(1)===ln;if(!pn||!vn){var yn=Set.prototype.add;Set.prototype.add=function add(e){t(yn,this,e===0?0:e);return this};m.preserveToString(Set.prototype.add,yn)}if(!pn){var hn=Set.prototype.has;Set.prototype.has=function has(e){return t(hn,this,e===0?0:e)};m.preserveToString(Set.prototype.has,hn);var bn=Set.prototype["delete"];Set.prototype["delete"]=function SetDelete(e){return t(bn,this,e===0?0:e)};m.preserveToString(Set.prototype["delete"],bn)}var gn=w(S.Map,function(e){var t=new e([]);t.set(42,42);return t instanceof e});var dn=Object.setPrototypeOf&&!gn;var mn=function(){try{return!(S.Map()instanceof S.Map)}catch(e){return e instanceof TypeError}}();if(S.Map.length!==0||dn||!mn){S.Map=function Map(){if(!(this instanceof Map)){throw new TypeError('Constructor Map requires "new"')}var e=new H;if(arguments.length>0){rn(Map,e,arguments[0])}delete e.constructor;Object.setPrototypeOf(e,Map.prototype);return e};S.Map.prototype=H.prototype;h(S.Map.prototype,"constructor",S.Map,true);m.preserveToString(S.Map,H)}var On=w(S.Set,function(e){var t=new e([]);t.add(42,42);return t instanceof e});var wn=Object.setPrototypeOf&&!On;var jn=function(){try{return!(S.Set()instanceof S.Set)}catch(e){return e instanceof TypeError}}();if(S.Set.length!==0||wn||!jn){var Sn=S.Set;S.Set=function Set(){if(!(this instanceof Set)){throw new TypeError('Constructor Set requires "new"')}var e=new Sn;if(arguments.length>0){nn(Set,e,arguments[0])}delete e.constructor;Object.setPrototypeOf(e,Set.prototype);return e};S.Set.prototype=Sn.prototype;h(S.Set.prototype,"constructor",S.Set,true);m.preserveToString(S.Set,Sn)}var Tn=new S.Map;var In=!a(function(){return Tn.keys().next().done});if(typeof S.Map.prototype.clear!=="function"||(new S.Set).size!==0||Tn.size!==0||typeof S.Map.prototype.keys!=="function"||typeof S.Set.prototype.keys!=="function"||typeof S.Map.prototype.forEach!=="function"||typeof S.Set.prototype.forEach!=="function"||u(S.Map)||u(S.Set)||typeof Tn.keys().next!=="function"||In||!gn){b(S,{Map:on.Map,Set:on.Set},true)}if(S.Set.prototype.keys!==S.Set.prototype.values){h(S.Set.prototype,"keys",S.Set.prototype.values,true)}xe(Object.getPrototypeOf((new S.Map).keys()));xe(Object.getPrototypeOf((new S.Set).keys()));if(c&&S.Set.prototype.has.name!=="has"){var En=S.Set.prototype.has;oe(S.Set.prototype,"has",function has(e){return t(En,this,e)})}}b(S,on);Me(S.Map);Me(S.Set)}var Pn=function throwUnlessTargetIsObject(e){if(!le.TypeIsObject(e)){throw new TypeError("target must be an object")}};var Cn={apply:function apply(){return le.Call(le.Call,null,arguments)},construct:function construct(e,t){if(!le.IsConstructor(e)){throw new TypeError("First argument must be a constructor.")}var r=arguments.length>2?arguments[2]:e;if(!le.IsConstructor(r)){throw new TypeError("new.target must be a constructor.")}return le.Construct(e,t,r,"internal")},deleteProperty:function deleteProperty(e,t){Pn(e);if(s){var r=Object.getOwnPropertyDescriptor(e,t);if(r&&!r.configurable){return false}}return delete e[t]},has:function has(e,t){Pn(e);return t in e}};if(Object.getOwnPropertyNames){Object.assign(Cn,{ownKeys:function ownKeys(e){Pn(e);var t=Object.getOwnPropertyNames(e);if(le.IsCallable(Object.getOwnPropertySymbols)){x(t,Object.getOwnPropertySymbols(e))}return t}})}var Mn=function ConvertExceptionToBoolean(e){return!i(e)};if(Object.preventExtensions){Object.assign(Cn,{isExtensible:function isExtensible(e){Pn(e);return Object.isExtensible(e)},preventExtensions:function preventExtensions(e){Pn(e);return Mn(function(){return Object.preventExtensions(e)})}})}if(s){var xn=function get(e,t,r){var n=Object.getOwnPropertyDescriptor(e,t);if(!n){var o=Object.getPrototypeOf(e);if(o===null){return void 0}return xn(o,t,r)}if("value"in n){return n.value}if(n.get){return le.Call(n.get,r)}return void 0};var Nn=function set(e,r,n,o){var i=Object.getOwnPropertyDescriptor(e,r);if(!i){var a=Object.getPrototypeOf(e);if(a!==null){return Nn(a,r,n,o)}i={value:void 0,writable:true,enumerable:true,configurable:true}}if("value"in i){if(!i.writable){return false}if(!le.TypeIsObject(o)){return false}var u=Object.getOwnPropertyDescriptor(o,r);if(u){return ue.defineProperty(o,r,{value:n})}return ue.defineProperty(o,r,{value:n,writable:true,enumerable:true,configurable:true})}if(i.set){t(i.set,o,n);return true}return false};Object.assign(Cn,{defineProperty:function defineProperty(e,t,r){Pn(e);return Mn(function(){return Object.defineProperty(e,t,r)})},getOwnPropertyDescriptor:function getOwnPropertyDescriptor(e,t){Pn(e);return Object.getOwnPropertyDescriptor(e,t)},get:function get(e,t){Pn(e);var r=arguments.length>2?arguments[2]:e;return xn(e,t,r)},set:function set(e,t,r){Pn(e);var n=arguments.length>3?arguments[3]:e;return Nn(e,t,r,n)}})}if(Object.getPrototypeOf){var An=Object.getPrototypeOf;Cn.getPrototypeOf=function getPrototypeOf(e){Pn(e);return An(e)}}if(Object.setPrototypeOf&&Cn.getPrototypeOf){var _n=function(e,t){var r=t;while(r){if(e===r){return true}r=Cn.getPrototypeOf(r)}return false};Object.assign(Cn,{setPrototypeOf:function setPrototypeOf(e,t){Pn(e);if(t!==null&&!le.TypeIsObject(t)){throw new TypeError("proto must be an object or null")}if(t===ue.getPrototypeOf(e)){return true}if(ue.isExtensible&&!ue.isExtensible(e)){return false}if(_n(e,t)){return false}Object.setPrototypeOf(e,t);return true}})}var Rn=function(e,t){if(!le.IsCallable(S.Reflect[e])){h(S.Reflect,e,t)}else{var r=a(function(){S.Reflect[e](1);S.Reflect[e](NaN);S.Reflect[e](true);return true});if(r){oe(S.Reflect,e,t)}}};Object.keys(Cn).forEach(function(e){Rn(e,Cn[e])});var kn=S.Reflect.getPrototypeOf;if(c&&kn&&kn.name!=="getPrototypeOf"){oe(S.Reflect,"getPrototypeOf",function getPrototypeOf(e){return t(kn,S.Reflect,e)})}if(S.Reflect.setPrototypeOf){if(a(function(){S.Reflect.setPrototypeOf(1,{});return true})){oe(S.Reflect,"setPrototypeOf",Cn.setPrototypeOf)}}if(S.Reflect.defineProperty){if(!a(function(){var e=!S.Reflect.defineProperty(1,"test",{value:1});var t=typeof Object.preventExtensions!=="function"||!S.Reflect.defineProperty(Object.preventExtensions({}),"test",{});return e&&t})){oe(S.Reflect,"defineProperty",Cn.defineProperty)}}if(S.Reflect.construct){if(!a(function(){var e=function F(){};return S.Reflect.construct(function(){},[],e)instanceof e})){oe(S.Reflect,"construct",Cn.construct)}}if(String(new Date(NaN))!=="Invalid Date"){var Ln=Date.prototype.toString;var Fn=function toString(){var e=+this;if(e!==e){return"Invalid Date"}return le.Call(Ln,this)};oe(Date.prototype,"toString",Fn)}var Dn={anchor:function anchor(e){return le.CreateHTML(this,"a","name",e)},big:function big(){return le.CreateHTML(this,"big","","")},blink:function blink(){return le.CreateHTML(this,"blink","","")},bold:function bold(){return le.CreateHTML(this,"b","","")},fixed:function fixed(){return le.CreateHTML(this,"tt","","")},fontcolor:function fontcolor(e){return le.CreateHTML(this,"font","color",e)},fontsize:function fontsize(e){return le.CreateHTML(this,"font","size",e)},italics:function italics(){return le.CreateHTML(this,"i","","")},link:function link(e){return le.CreateHTML(this,"a","href",e)},small:function small(){return le.CreateHTML(this,"small","","")},strike:function strike(){return le.CreateHTML(this,"strike","","")},sub:function sub(){return le.CreateHTML(this,"sub","","")},sup:function sub(){return le.CreateHTML(this,"sup","","")}};l(Object.keys(Dn),function(e){var r=String.prototype[e];var n=false;if(le.IsCallable(r)){var o=t(r,"",' " ');var i=P([],o.match(/"/g)).length;n=o!==o.toLowerCase()||i>2}else{n=true}if(n){oe(String.prototype,e,Dn[e])}});var zn=function(){if(!ie){return false}var e=typeof JSON==="object"&&typeof JSON.stringify==="function"?JSON.stringify:null;if(!e){return false}if(typeof e(J())!=="undefined"){return true}if(e([J()])!=="[null]"){return true}var t={a:J()};t[J()]=true;if(e(t)!=="{}"){return true}return false}();var qn=a(function(){if(!ie){return true}return JSON.stringify(Object(J()))==="{}"&&JSON.stringify([Object(J())])==="[{}]"});if(zn||!qn){var Wn=JSON.stringify;oe(JSON,"stringify",function stringify(e){if(typeof e==="symbol"){return}var n;if(arguments.length>1){n=arguments[1]}var o=[e];if(!r(n)){var i=le.IsCallable(n)?n:null;var a=function(e,r){var n=i?t(i,this,e,r):r;if(typeof n!=="symbol"){if(ne.symbol(n)){return _t({})(n)}return n}};o.push(a)}else{o.push(n)}if(arguments.length>2){o.push(arguments[2])}return Wn.apply(this,o)})}return S}); +//# sourceMappingURL=es6-shim.map diff --git a/backend/documentation/js/libs/htmlparser.js b/backend/documentation/js/libs/htmlparser.js new file mode 100644 index 0000000..522b39c --- /dev/null +++ b/backend/documentation/js/libs/htmlparser.js @@ -0,0 +1,23 @@ +/*********************************************** +Copyright 2010 - 2012 Chris Winberry . All rights reserved. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. +***********************************************/ +/* v2.0.0 */ + +!function(){function t(t,e){var a=function(){};a.prototype=e.prototype,t.super_=e,t.prototype=new a,t.prototype.constructor=t}function e(t,e){this._options=e||{},this._validateBuilder(t);this._builder=t,this.reset()}function a(t,e){this.reset(),this._options=e||{},void 0===this._options.ignoreWhitespace&&(this._options.ignoreWhitespace=!1),void 0===this._options.includeLocation&&(this._options.includeLocation=!1),void 0===this._options.verbose&&(this._options.verbose=!0),void 0===this._options.enforceEmptyTags&&(this._options.enforceEmptyTags=!0),void 0===this._options.caseSensitiveTags&&(this._options.caseSensitiveTags=!1),void 0===this._options.caseSensitiveAttr&&(this._options.caseSensitiveAttr=!1),"function"==typeof t&&(this._callback=t)}function n(t){n.super_.call(this,t,{ignoreWhitespace:!0,verbose:!1,enforceEmptyTags:!1,caseSensitiveTags:!0})}var i;if("undefined"!=typeof module&&void 0!==module.exports)i=module.exports;else{if(i={},this.Tautologistics||(this.Tautologistics={}),this.Tautologistics.NodeHtmlParser)return;this.Tautologistics.NodeHtmlParser=i}var s={Text:"text",Tag:"tag",Attr:"attr",CData:"cdata",Doctype:"doctype",Comment:"comment"};"undefined"!=typeof module&&void 0!==module.exports&&(t(e,require("stream")),e.prototype.writable=!0,e.prototype.write=function(t){t instanceof Buffer&&(t=t.toString()),this.parseChunk(t)},e.prototype.end=function(t){arguments.length&&this.write(t),this.writable=!1,this.done()},e.prototype.destroy=function(){this.writable=!1}),e.prototype.reset=function(){this._state={mode:s.Text,pos:0,data:null,pendingText:null,pendingWrite:null,lastTag:null,isScript:!1,needData:!1,output:[],done:!1},this._builder.reset()},e.prototype.parseChunk=function(t){for(this._state.needData=!1,this._state.data=null!==this._state.data?this._state.data.substr(this.pos)+t:t;this._state.pos\/]+)(\s*)\??(>?)/g,e.prototype._parseTag=function(){var t=this._state;e.re_parseTag.lastIndex=t.pos;var a=e.re_parseTag.exec(t.data);if(a){if(!a[1]&&"!--"===a[2].substr(0,3))return t.mode=s.Comment,void(t.pos+=3);if(!a[1]&&"![CDATA["===a[2].substr(0,8))return t.mode=s.CData,void(t.pos+=8);if(!a[1]&&"!DOCTYPE"===a[2].substr(0,8))return t.mode=s.Doctype,void(t.pos+=8);if(!t.done&&t.pos+a[0].length===t.data.length)return void(t.needData=!0);var n;">"===a[4]?(t.mode=s.Text,n=a[0].substr(0,a[0].length-1)):(t.mode=s.Attr,n=a[0]),t.pos+=a[0].length;var i={type:s.Tag,name:a[1]+a[2],raw:n};t.mode===s.Attr&&(t.lastTag=i),"script"===i.name.toLowerCase()?t.isScript=!0:"/script"===i.name.toLowerCase()&&(t.isScript=!1),t.mode===s.Attr?this._writePending(i):this._write(i)}else t.needData=!0},e.re_parseAttr_findName=/\s*([^=<>\s'"\/]+)\s*/g,e.prototype._parseAttr_findName=function(){e.re_parseAttr_findName.lastIndex=this._state.pos;var t=e.re_parseAttr_findName.exec(this._state.data);return t?this._state.pos+t[0].length!==e.re_parseAttr_findName.lastIndex?null:{match:t[0],name:t[1]}:null},e.re_parseAttr_findValue=/\s*=\s*(?:'([^']*)'|"([^"]*)"|([^'"\s\/>]+))\s*/g,e.re_parseAttr_findValue_last=/\s*=\s*['"]?(.*)$/g,e.prototype._parseAttr_findValue=function(){var t=this._state;e.re_parseAttr_findValue.lastIndex=t.pos;var a=e.re_parseAttr_findValue.exec(t.data);return a?t.pos+a[0].length!==e.re_parseAttr_findValue.lastIndex?null:{match:a[0],value:a[1]||a[2]||a[3]}:t.done?(e.re_parseAttr_findValue_last.lastIndex=t.pos,a=e.re_parseAttr_findValue_last.exec(t.data),a?{match:a[0],value:""!==a[1]?a[1]:null}:null):null},e.re_parseAttr_splitValue=/\s*=\s*['"]?/g,e.re_parseAttr_selfClose=/(\s*\/\s*)(>?)/g,e.prototype._parseAttr=function(){var t=this._state,a=this._parseAttr_findName(t);if(a&&"?"!==a.name){if(!t.done&&t.pos+a.match.length===t.data.length)return t.needData=!0,null;t.pos+=a.match.length;var n=this._parseAttr_findValue(t);t.data.indexOf(" ",t.pos);if(n){if(!t.done&&t.pos+n.match.length===t.data.length)return t.needData=!0,void(t.pos-=a.match.length);t.pos+=n.match.length}else if(t.data.indexOf(" ",t.pos-1))n={match:"",value:a.name};else{if(e.re_parseAttr_splitValue.lastIndex=t.pos,e.re_parseAttr_splitValue.exec(t.data))return t.needData=!0,void(t.pos-=a.match.length);n={match:"",value:null}}t.lastTag.raw+=a.match+n.match,this._writePending({type:s.Attr,name:a.name,data:n.value})}else{e.re_parseAttr_selfClose.lastIndex=t.pos;var i=e.re_parseAttr_selfClose.exec(t.data);if(i&&i.index===t.pos){if(!t.done&&!i[2]&&t.pos+i[0].length===t.data.length)return void(t.needData=!0);t.lastTag.raw+=i[1],this._write({type:s.Tag,name:"/"+t.lastTag.name,raw:null}),t.pos+=i[1].length}var r=t.data.indexOf(">",t.pos);if(r<0){if(t.done)return t.lastTag.raw+=t.data.substr(t.pos),void(t.pos=t.data.length);t.needData=!0}else t.pos=r+1,t.mode=s.Text}},e.re_parseCData_findEnding=/\]{1,2}$/,e.prototype._parseCData=function(){var t=this._state,a=t.data.indexOf("]]>",t.pos);if(a<0&&t.done&&(a=t.data.length),a<0){if(e.re_parseCData_findEnding.lastIndex=t.pos,e.re_parseCData_findEnding.exec(t.data))return void(t.needData=!0);t.pendingText||(t.pendingText=[]),t.pendingText.push(t.data.substr(t.pos,t.data.length)),t.pos=t.data.length,t.needData=!0}else{var n;t.pendingText?(t.pendingText.push(t.data.substring(t.pos,a)),n=t.pendingText.join(""),t.pendingText=null):n=t.data.substring(t.pos,a),this._write({type:s.CData,data:n}),t.mode=s.Text,t.pos=a+3}},e.prototype._parseDoctype=function(){var t=this._state,a=t.data.indexOf(">",t.pos);if(a<0&&t.done&&(a=t.data.length),a<0)e.re_parseCData_findEnding.lastIndex=t.pos,t.pendingText||(t.pendingText=[]),t.pendingText.push(t.data.substr(t.pos,t.data.length)),t.pos=t.data.length,t.needData=!0;else{var n;t.pendingText?(t.pendingText.push(t.data.substring(t.pos,a)),n=t.pendingText.join(""),t.pendingText=null):n=t.data.substring(t.pos,a),this._write({type:s.Doctype,data:n}),t.mode=s.Text,t.pos=a+1}},e.re_parseComment_findEnding=/\-{1,2}$/,e.prototype._parseComment=function(){var t=this._state,a=t.data.indexOf("--\x3e",t.pos);if(a<0&&t.done&&(a=t.data.length),a<0){if(e.re_parseComment_findEnding.lastIndex=t.pos,e.re_parseComment_findEnding.exec(t.data))return void(t.needData=!0);t.pendingText||(t.pendingText=[]),t.pendingText.push(t.data.substr(t.pos,t.data.length)),t.pos=t.data.length,t.needData=!0}else{var n;t.pendingText?(t.pendingText.push(t.data.substring(t.pos,a)),n=t.pendingText.join(""),t.pendingText=null):n=t.data.substring(t.pos,a),this._write({type:s.Comment,data:n}),t.mode=s.Text,t.pos=a+3}},a._emptyTags={area:1,base:1,basefont:1,br:1,col:1,frame:1,hr:1,img:1,input:1,isindex:1,link:1,meta:1,param:1,embed:1,"?xml":1},a.reWhitespace=/^\s*$/,a.prototype.dom=null,a.prototype.reset=function(){this.dom=[],this._done=!1,this._tagStack=[],this._lastTag=null,this._tagStack.last=function(){return this.length?this[this.length-1]:null},this._line=1,this._col=1},a.prototype.done=function(){this._done=!0,this.handleCallback(null)},a.prototype.error=function(t){this.handleCallback(t)},a.prototype.handleCallback=function(t){if("function"==typeof this._callback)this._callback(t,this.dom);else if(t)throw t},a.prototype.isEmptyTag=function(t){var e=t.name.toLowerCase();return"?"==e.charAt(0)||("/"==e.charAt(0)&&(e=e.substring(1)),this._options.enforceEmptyTags&&!!a._emptyTags[e])},a.prototype._getLocation=function(){return{line:this._line,col:this._col}},a.prototype._updateLocation=function(t){var e=t.type===s.Tag?t.raw:t.data;if(null!==e){var a=e.split("\n");this._line+=a.length-1,a.length>1&&(this._col=1),this._col+=a[a.length-1].length,t.type===s.Tag?this._col+=2:t.type===s.Comment?this._col+=7:t.type===s.CData&&(this._col+=12)}},a.prototype._copyElement=function(t){var e={type:t.type};if(this._options.verbose&&void 0!==t.raw&&(e.raw=t.raw),void 0!==t.name)switch(t.type){case s.Tag:e.name=this._options.caseSensitiveTags?t.name:t.name.toLowerCase();break;case s.Attr:e.name=this._options.caseSensitiveAttr?t.name:t.name.toLowerCase();break;default:e.name=this._options.caseSensitiveTags?t.name:t.name.toLowerCase()}return void 0!==t.data&&(e.data=t.data),t.location&&(e.location={line:t.location.line,col:t.location.col}),e},a.prototype.write=function(t){if(this._done&&this.handleCallback(new Error("Writing to the builder after done() called is not allowed without a reset()")),this._options.includeLocation&&t.type!==s.Attr&&(t.location=this._getLocation(),this._updateLocation(t)),t.type!==s.Text||!this._options.ignoreWhitespace||!a.reWhitespace.test(t.data)){var e,n;if(this._tagStack.last())if(t.type===s.Tag)if("/"==t.name.charAt(0)){var i=this._options.caseSensitiveTags?t.name.substring(1):t.name.substring(1).toLowerCase();if(!this.isEmptyTag(t)){for(var r=this._tagStack.length-1;r>-1&&this._tagStack[r--].name!=i;);if(r>-1||this._tagStack[0].name==i)for(;r=0&&s.length>=n)return s;if(a&&e.children)i=e.children;else{if(!(e instanceof Array))return s;i=e}for(var d=0;d=0&&s.length>=n));d++);return s},getElementById:function(t,e,a){var n=r.getElements({id:t},e,a,1);return n.length?n[0]:null},getElementsByTagName:function(t,e,a,n){return r.getElements({tag_name:t},e,a,n)},getElementsByTagType:function(t,e,a,n){return r.getElements({tag_type:t},e,a,n)}};i.Parser=e,i.HtmlBuilder=a,i.RssBuilder=n,i.ElementType=s,i.DomUtils=r}(); diff --git a/backend/documentation/js/libs/innersvg.js b/backend/documentation/js/libs/innersvg.js new file mode 100644 index 0000000..b1099de --- /dev/null +++ b/backend/documentation/js/libs/innersvg.js @@ -0,0 +1,9 @@ +/** + * innerHTML property for SVGElement + * Copyright(c) 2010, Jeff Schiller + * + * Licensed under the Apache License, Version 2 + * + * Minor modifications by Chris Price to only polyfill when required. + */ +!function(e){if(e&&!("innerHTML"in e.prototype)){var t=function(e,r){var i=e.nodeType;if(3==i)r.push(e.textContent.replace(/&/,"&").replace(/",">"));else if(1==i){if(r.push("<",e.tagName),e.hasAttributes())for(var n=e.attributes,s=0,o=n.length;s");for(var h=e.childNodes,s=0,o=h.length;s")}else r.push("/>")}else{if(8!=i)throw"Error serializing XML. Unhandled node of type: "+i;r.push("\x3c!--",e.nodeValue,"--\x3e")}};Object.defineProperty(e.prototype,"innerHTML",{get:function(){for(var e=[],r=this.firstChild;r;)t(r,e),r=r.nextSibling;return e.join("")},set:function(e){for(;this.firstChild;)this.removeChild(this.firstChild);try{var t=new DOMParser;t.async=!1,sXML=""+e+"";for(var r=t.parseFromString(sXML,"text/xml").documentElement.firstChild;r;)this.appendChild(this.ownerDocument.importNode(r,!0)),r=r.nextSibling}catch(e){throw new Error("Error parsing XML string")}}})}}((0,eval)("this").SVGElement); \ No newline at end of file diff --git a/backend/documentation/js/libs/jszip.min.js b/backend/documentation/js/libs/jszip.min.js new file mode 100644 index 0000000..ff4cfd5 --- /dev/null +++ b/backend/documentation/js/libs/jszip.min.js @@ -0,0 +1,13 @@ +/*! + +JSZip v3.10.1 - A JavaScript class for generating and reading zip files + + +(c) 2009-2016 Stuart Knightley +Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown. + +JSZip uses the library pako released under the MIT license : +https://github.com/nodeca/pako/blob/main/LICENSE +*/ + +!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).JSZip=e()}}(function(){return function s(a,o,h){function u(r,e){if(!o[r]){if(!a[r]){var t="function"==typeof require&&require;if(!e&&t)return t(r,!0);if(l)return l(r,!0);var n=new Error("Cannot find module '"+r+"'");throw n.code="MODULE_NOT_FOUND",n}var i=o[r]={exports:{}};a[r][0].call(i.exports,function(e){var t=a[r][1][e];return u(t||e)},i,i.exports,s,a,o,h)}return o[r].exports}for(var l="function"==typeof require&&require,e=0;e>2,s=(3&t)<<4|r>>4,a=1>6:64,o=2>4,r=(15&i)<<4|(s=p.indexOf(e.charAt(o++)))>>2,n=(3&s)<<6|(a=p.indexOf(e.charAt(o++))),l[h++]=t,64!==s&&(l[h++]=r),64!==a&&(l[h++]=n);return l}},{"./support":30,"./utils":32}],2:[function(e,t,r){"use strict";var n=e("./external"),i=e("./stream/DataWorker"),s=e("./stream/Crc32Probe"),a=e("./stream/DataLengthProbe");function o(e,t,r,n,i){this.compressedSize=e,this.uncompressedSize=t,this.crc32=r,this.compression=n,this.compressedContent=i}o.prototype={getContentWorker:function(){var e=new i(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a("data_length")),t=this;return e.on("end",function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")}),e},getCompressedWorker:function(){return new i(n.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},o.createWorkerFrom=function(e,t,r){return e.pipe(new s).pipe(new a("uncompressedSize")).pipe(t.compressWorker(r)).pipe(new a("compressedSize")).withStreamInfo("compression",t)},t.exports=o},{"./external":6,"./stream/Crc32Probe":25,"./stream/DataLengthProbe":26,"./stream/DataWorker":27}],3:[function(e,t,r){"use strict";var n=e("./stream/GenericWorker");r.STORE={magic:"\0\0",compressWorker:function(){return new n("STORE compression")},uncompressWorker:function(){return new n("STORE decompression")}},r.DEFLATE=e("./flate")},{"./flate":7,"./stream/GenericWorker":28}],4:[function(e,t,r){"use strict";var n=e("./utils");var o=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t){return void 0!==e&&e.length?"string"!==n.getTypeOf(e)?function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t[a])];return-1^e}(0|t,e,e.length,0):function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t.charCodeAt(a))];return-1^e}(0|t,e,e.length,0):0}},{"./utils":32}],5:[function(e,t,r){"use strict";r.base64=!1,r.binary=!1,r.dir=!1,r.createFolders=!0,r.date=null,r.compression=null,r.compressionOptions=null,r.comment=null,r.unixPermissions=null,r.dosPermissions=null},{}],6:[function(e,t,r){"use strict";var n=null;n="undefined"!=typeof Promise?Promise:e("lie"),t.exports={Promise:n}},{lie:37}],7:[function(e,t,r){"use strict";var n="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Uint32Array,i=e("pako"),s=e("./utils"),a=e("./stream/GenericWorker"),o=n?"uint8array":"array";function h(e,t){a.call(this,"FlateWorker/"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}r.magic="\b\0",s.inherits(h,a),h.prototype.processChunk=function(e){this.meta=e.meta,null===this._pako&&this._createPako(),this._pako.push(s.transformTo(o,e.data),!1)},h.prototype.flush=function(){a.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},h.prototype.cleanUp=function(){a.prototype.cleanUp.call(this),this._pako=null},h.prototype._createPako=function(){this._pako=new i[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var t=this;this._pako.onData=function(e){t.push({data:e,meta:t.meta})}},r.compressWorker=function(e){return new h("Deflate",e)},r.uncompressWorker=function(){return new h("Inflate",{})}},{"./stream/GenericWorker":28,"./utils":32,pako:38}],8:[function(e,t,r){"use strict";function A(e,t){var r,n="";for(r=0;r>>=8;return n}function n(e,t,r,n,i,s){var a,o,h=e.file,u=e.compression,l=s!==O.utf8encode,f=I.transformTo("string",s(h.name)),c=I.transformTo("string",O.utf8encode(h.name)),d=h.comment,p=I.transformTo("string",s(d)),m=I.transformTo("string",O.utf8encode(d)),_=c.length!==h.name.length,g=m.length!==d.length,b="",v="",y="",w=h.dir,k=h.date,x={crc32:0,compressedSize:0,uncompressedSize:0};t&&!r||(x.crc32=e.crc32,x.compressedSize=e.compressedSize,x.uncompressedSize=e.uncompressedSize);var S=0;t&&(S|=8),l||!_&&!g||(S|=2048);var z=0,C=0;w&&(z|=16),"UNIX"===i?(C=798,z|=function(e,t){var r=e;return e||(r=t?16893:33204),(65535&r)<<16}(h.unixPermissions,w)):(C=20,z|=function(e){return 63&(e||0)}(h.dosPermissions)),a=k.getUTCHours(),a<<=6,a|=k.getUTCMinutes(),a<<=5,a|=k.getUTCSeconds()/2,o=k.getUTCFullYear()-1980,o<<=4,o|=k.getUTCMonth()+1,o<<=5,o|=k.getUTCDate(),_&&(v=A(1,1)+A(B(f),4)+c,b+="up"+A(v.length,2)+v),g&&(y=A(1,1)+A(B(p),4)+m,b+="uc"+A(y.length,2)+y);var E="";return E+="\n\0",E+=A(S,2),E+=u.magic,E+=A(a,2),E+=A(o,2),E+=A(x.crc32,4),E+=A(x.compressedSize,4),E+=A(x.uncompressedSize,4),E+=A(f.length,2),E+=A(b.length,2),{fileRecord:R.LOCAL_FILE_HEADER+E+f+b,dirRecord:R.CENTRAL_FILE_HEADER+A(C,2)+E+A(p.length,2)+"\0\0\0\0"+A(z,4)+A(n,4)+f+b+p}}var I=e("../utils"),i=e("../stream/GenericWorker"),O=e("../utf8"),B=e("../crc32"),R=e("../signature");function s(e,t,r,n){i.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=r,this.encodeFileName=n,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}I.inherits(s,i),s.prototype.push=function(e){var t=e.meta.percent||0,r=this.entriesCount,n=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,i.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:r?(t+100*(r-n-1))/r:100}}))},s.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;if(t){var r=n(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:r.fileRecord,meta:{percent:0}})}else this.accumulate=!0},s.prototype.closedSource=function(e){this.accumulate=!1;var t=this.streamFiles&&!e.file.dir,r=n(e,t,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(r.dirRecord),t)this.push({data:function(e){return R.DATA_DESCRIPTOR+A(e.crc32,4)+A(e.compressedSize,4)+A(e.uncompressedSize,4)}(e),meta:{percent:100}});else for(this.push({data:r.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},s.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t=this.index;t--)r=(r<<8)+this.byteAt(t);return this.index+=e,r},readString:function(e){return n.transformTo("string",this.readData(e))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},t.exports=i},{"../utils":32}],19:[function(e,t,r){"use strict";var n=e("./Uint8ArrayReader");function i(e){n.call(this,e)}e("../utils").inherits(i,n),i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{"../utils":32,"./Uint8ArrayReader":21}],20:[function(e,t,r){"use strict";var n=e("./DataReader");function i(e){n.call(this,e)}e("../utils").inherits(i,n),i.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},i.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},i.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{"../utils":32,"./DataReader":18}],21:[function(e,t,r){"use strict";var n=e("./ArrayReader");function i(e){n.call(this,e)}e("../utils").inherits(i,n),i.prototype.readData=function(e){if(this.checkOffset(e),0===e)return new Uint8Array(0);var t=this.data.subarray(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{"../utils":32,"./ArrayReader":17}],22:[function(e,t,r){"use strict";var n=e("../utils"),i=e("../support"),s=e("./ArrayReader"),a=e("./StringReader"),o=e("./NodeBufferReader"),h=e("./Uint8ArrayReader");t.exports=function(e){var t=n.getTypeOf(e);return n.checkSupport(t),"string"!==t||i.uint8array?"nodebuffer"===t?new o(e):i.uint8array?new h(n.transformTo("uint8array",e)):new s(n.transformTo("array",e)):new a(e)}},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(e,t,r){"use strict";r.LOCAL_FILE_HEADER="PK",r.CENTRAL_FILE_HEADER="PK",r.CENTRAL_DIRECTORY_END="PK",r.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK",r.ZIP64_CENTRAL_DIRECTORY_END="PK",r.DATA_DESCRIPTOR="PK\b"},{}],24:[function(e,t,r){"use strict";var n=e("./GenericWorker"),i=e("../utils");function s(e){n.call(this,"ConvertWorker to "+e),this.destType=e}i.inherits(s,n),s.prototype.processChunk=function(e){this.push({data:i.transformTo(this.destType,e.data),meta:e.meta})},t.exports=s},{"../utils":32,"./GenericWorker":28}],25:[function(e,t,r){"use strict";var n=e("./GenericWorker"),i=e("../crc32");function s(){n.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}e("../utils").inherits(s,n),s.prototype.processChunk=function(e){this.streamInfo.crc32=i(e.data,this.streamInfo.crc32||0),this.push(e)},t.exports=s},{"../crc32":4,"../utils":32,"./GenericWorker":28}],26:[function(e,t,r){"use strict";var n=e("../utils"),i=e("./GenericWorker");function s(e){i.call(this,"DataLengthProbe for "+e),this.propName=e,this.withStreamInfo(e,0)}n.inherits(s,i),s.prototype.processChunk=function(e){if(e){var t=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=t+e.data.length}i.prototype.processChunk.call(this,e)},t.exports=s},{"../utils":32,"./GenericWorker":28}],27:[function(e,t,r){"use strict";var n=e("../utils"),i=e("./GenericWorker");function s(e){i.call(this,"DataWorker");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,e.then(function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=n.getTypeOf(e),t.isPaused||t._tickAndRepeat()},function(e){t.error(e)})}n.inherits(s,i),s.prototype.cleanUp=function(){i.prototype.cleanUp.call(this),this.data=null},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,n.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(n.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},s.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var e=null,t=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case"string":e=this.data.substring(this.index,t);break;case"uint8array":e=this.data.subarray(this.index,t);break;case"array":case"nodebuffer":e=this.data.slice(this.index,t)}return this.index=t,this.push({data:e,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=s},{"../utils":32,"./GenericWorker":28}],28:[function(e,t,r){"use strict";function n(e){this.name=e||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}n.prototype={push:function(e){this.emit("data",e)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(e){this.emit("error",e)}return!0},error:function(e){return!this.isFinished&&(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit("error",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(e,t){if(this._listeners[e])for(var r=0;r "+e:e}},t.exports=n},{}],29:[function(e,t,r){"use strict";var h=e("../utils"),i=e("./ConvertWorker"),s=e("./GenericWorker"),u=e("../base64"),n=e("../support"),a=e("../external"),o=null;if(n.nodestream)try{o=e("../nodejs/NodejsStreamOutputAdapter")}catch(e){}function l(e,o){return new a.Promise(function(t,r){var n=[],i=e._internalType,s=e._outputType,a=e._mimeType;e.on("data",function(e,t){n.push(e),o&&o(t)}).on("error",function(e){n=[],r(e)}).on("end",function(){try{var e=function(e,t,r){switch(e){case"blob":return h.newBlob(h.transformTo("arraybuffer",t),r);case"base64":return u.encode(t);default:return h.transformTo(e,t)}}(s,function(e,t){var r,n=0,i=null,s=0;for(r=0;r>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t}(e)},s.utf8decode=function(e){return h.nodebuffer?o.transformTo("nodebuffer",e).toString("utf-8"):function(e){var t,r,n,i,s=e.length,a=new Array(2*s);for(t=r=0;t>10&1023,a[r++]=56320|1023&n)}return a.length!==r&&(a.subarray?a=a.subarray(0,r):a.length=r),o.applyFromCharCode(a)}(e=o.transformTo(h.uint8array?"uint8array":"array",e))},o.inherits(a,n),a.prototype.processChunk=function(e){var t=o.transformTo(h.uint8array?"uint8array":"array",e.data);if(this.leftOver&&this.leftOver.length){if(h.uint8array){var r=t;(t=new Uint8Array(r.length+this.leftOver.length)).set(this.leftOver,0),t.set(r,this.leftOver.length)}else t=this.leftOver.concat(t);this.leftOver=null}var n=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}(t),i=t;n!==t.length&&(h.uint8array?(i=t.subarray(0,n),this.leftOver=t.subarray(n,t.length)):(i=t.slice(0,n),this.leftOver=t.slice(n,t.length))),this.push({data:s.utf8decode(i),meta:e.meta})},a.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:s.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},s.Utf8DecodeWorker=a,o.inherits(l,n),l.prototype.processChunk=function(e){this.push({data:s.utf8encode(e.data),meta:e.meta})},s.Utf8EncodeWorker=l},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(e,t,a){"use strict";var o=e("./support"),h=e("./base64"),r=e("./nodejsUtils"),u=e("./external");function n(e){return e}function l(e,t){for(var r=0;r>8;this.dir=!!(16&this.externalFileAttributes),0==e&&(this.dosPermissions=63&this.externalFileAttributes),3==e&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||"/"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var e=n(this.extraFields[1].value);this.uncompressedSize===s.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===s.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===s.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===s.MAX_VALUE_32BITS&&(this.diskNumberStart=e.readInt(4))}},readExtraFields:function(e){var t,r,n,i=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index+4>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t},r.buf2binstring=function(e){return l(e,e.length)},r.binstring2buf=function(e){for(var t=new h.Buf8(e.length),r=0,n=t.length;r>10&1023,o[n++]=56320|1023&i)}return l(o,n)},r.utf8border=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}},{"./common":41}],43:[function(e,t,r){"use strict";t.exports=function(e,t,r,n){for(var i=65535&e|0,s=e>>>16&65535|0,a=0;0!==r;){for(r-=a=2e3>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t[a])];return-1^e}},{}],46:[function(e,t,r){"use strict";var h,c=e("../utils/common"),u=e("./trees"),d=e("./adler32"),p=e("./crc32"),n=e("./messages"),l=0,f=4,m=0,_=-2,g=-1,b=4,i=2,v=8,y=9,s=286,a=30,o=19,w=2*s+1,k=15,x=3,S=258,z=S+x+1,C=42,E=113,A=1,I=2,O=3,B=4;function R(e,t){return e.msg=n[t],t}function T(e){return(e<<1)-(4e.avail_out&&(r=e.avail_out),0!==r&&(c.arraySet(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))}function N(e,t){u._tr_flush_block(e,0<=e.block_start?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,F(e.strm)}function U(e,t){e.pending_buf[e.pending++]=t}function P(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function L(e,t){var r,n,i=e.max_chain_length,s=e.strstart,a=e.prev_length,o=e.nice_match,h=e.strstart>e.w_size-z?e.strstart-(e.w_size-z):0,u=e.window,l=e.w_mask,f=e.prev,c=e.strstart+S,d=u[s+a-1],p=u[s+a];e.prev_length>=e.good_match&&(i>>=2),o>e.lookahead&&(o=e.lookahead);do{if(u[(r=t)+a]===p&&u[r+a-1]===d&&u[r]===u[s]&&u[++r]===u[s+1]){s+=2,r++;do{}while(u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&sh&&0!=--i);return a<=e.lookahead?a:e.lookahead}function j(e){var t,r,n,i,s,a,o,h,u,l,f=e.w_size;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=f+(f-z)){for(c.arraySet(e.window,e.window,f,f,0),e.match_start-=f,e.strstart-=f,e.block_start-=f,t=r=e.hash_size;n=e.head[--t],e.head[t]=f<=n?n-f:0,--r;);for(t=r=f;n=e.prev[--t],e.prev[t]=f<=n?n-f:0,--r;);i+=f}if(0===e.strm.avail_in)break;if(a=e.strm,o=e.window,h=e.strstart+e.lookahead,u=i,l=void 0,l=a.avail_in,u=x)for(s=e.strstart-e.insert,e.ins_h=e.window[s],e.ins_h=(e.ins_h<=x&&(e.ins_h=(e.ins_h<=x)if(n=u._tr_tally(e,e.strstart-e.match_start,e.match_length-x),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=x){for(e.match_length--;e.strstart++,e.ins_h=(e.ins_h<=x&&(e.ins_h=(e.ins_h<=x&&e.match_length<=e.prev_length){for(i=e.strstart+e.lookahead-x,n=u._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-x),e.lookahead-=e.prev_length-1,e.prev_length-=2;++e.strstart<=i&&(e.ins_h=(e.ins_h<e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(j(e),0===e.lookahead&&t===l)return A;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+r;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,N(e,!1),0===e.strm.avail_out))return A;if(e.strstart-e.block_start>=e.w_size-z&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):(e.strstart>e.block_start&&(N(e,!1),e.strm.avail_out),A)}),new M(4,4,8,4,Z),new M(4,5,16,8,Z),new M(4,6,32,32,Z),new M(4,4,16,16,W),new M(8,16,32,32,W),new M(8,16,128,128,W),new M(8,32,128,256,W),new M(32,128,258,1024,W),new M(32,258,258,4096,W)],r.deflateInit=function(e,t){return Y(e,t,v,15,8,0)},r.deflateInit2=Y,r.deflateReset=K,r.deflateResetKeep=G,r.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?_:(e.state.gzhead=t,m):_},r.deflate=function(e,t){var r,n,i,s;if(!e||!e.state||5>8&255),U(n,n.gzhead.time>>16&255),U(n,n.gzhead.time>>24&255),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(U(n,255&n.gzhead.extra.length),U(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=p(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(U(n,0),U(n,0),U(n,0),U(n,0),U(n,0),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,3),n.status=E);else{var a=v+(n.w_bits-8<<4)<<8;a|=(2<=n.strategy||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(a|=32),a+=31-a%31,n.status=E,P(n,a),0!==n.strstart&&(P(n,e.adler>>>16),P(n,65535&e.adler)),e.adler=1}if(69===n.status)if(n.gzhead.extra){for(i=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending!==n.pending_buf_size));)U(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73)}else n.status=73;if(73===n.status)if(n.gzhead.name){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindexi&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindexi&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.status=103)}else n.status=103;if(103===n.status&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&F(e),n.pending+2<=n.pending_buf_size&&(U(n,255&e.adler),U(n,e.adler>>8&255),e.adler=0,n.status=E)):n.status=E),0!==n.pending){if(F(e),0===e.avail_out)return n.last_flush=-1,m}else if(0===e.avail_in&&T(t)<=T(r)&&t!==f)return R(e,-5);if(666===n.status&&0!==e.avail_in)return R(e,-5);if(0!==e.avail_in||0!==n.lookahead||t!==l&&666!==n.status){var o=2===n.strategy?function(e,t){for(var r;;){if(0===e.lookahead&&(j(e),0===e.lookahead)){if(t===l)return A;break}if(e.match_length=0,r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):3===n.strategy?function(e,t){for(var r,n,i,s,a=e.window;;){if(e.lookahead<=S){if(j(e),e.lookahead<=S&&t===l)return A;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=x&&0e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=x?(r=u._tr_tally(e,1,e.match_length-x),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):h[n.level].func(n,t);if(o!==O&&o!==B||(n.status=666),o===A||o===O)return 0===e.avail_out&&(n.last_flush=-1),m;if(o===I&&(1===t?u._tr_align(n):5!==t&&(u._tr_stored_block(n,0,0,!1),3===t&&(D(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),F(e),0===e.avail_out))return n.last_flush=-1,m}return t!==f?m:n.wrap<=0?1:(2===n.wrap?(U(n,255&e.adler),U(n,e.adler>>8&255),U(n,e.adler>>16&255),U(n,e.adler>>24&255),U(n,255&e.total_in),U(n,e.total_in>>8&255),U(n,e.total_in>>16&255),U(n,e.total_in>>24&255)):(P(n,e.adler>>>16),P(n,65535&e.adler)),F(e),0=r.w_size&&(0===s&&(D(r.head),r.strstart=0,r.block_start=0,r.insert=0),u=new c.Buf8(r.w_size),c.arraySet(u,t,l-r.w_size,r.w_size,0),t=u,l=r.w_size),a=e.avail_in,o=e.next_in,h=e.input,e.avail_in=l,e.next_in=0,e.input=t,j(r);r.lookahead>=x;){for(n=r.strstart,i=r.lookahead-(x-1);r.ins_h=(r.ins_h<>>=y=v>>>24,p-=y,0===(y=v>>>16&255))C[s++]=65535&v;else{if(!(16&y)){if(0==(64&y)){v=m[(65535&v)+(d&(1<>>=y,p-=y),p<15&&(d+=z[n++]<>>=y=v>>>24,p-=y,!(16&(y=v>>>16&255))){if(0==(64&y)){v=_[(65535&v)+(d&(1<>>=y,p-=y,(y=s-a)>3,d&=(1<<(p-=w<<3))-1,e.next_in=n,e.next_out=s,e.avail_in=n>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function s(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new I.Buf16(320),this.work=new I.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function a(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=P,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new I.Buf32(n),t.distcode=t.distdyn=new I.Buf32(i),t.sane=1,t.back=-1,N):U}function o(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,a(e)):U}function h(e,t){var r,n;return e&&e.state?(n=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15=s.wsize?(I.arraySet(s.window,t,r-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):(n<(i=s.wsize-s.wnext)&&(i=n),I.arraySet(s.window,t,r-n,i,s.wnext),(n-=i)?(I.arraySet(s.window,t,r-n,n,0),s.wnext=n,s.whave=s.wsize):(s.wnext+=i,s.wnext===s.wsize&&(s.wnext=0),s.whave>>8&255,r.check=B(r.check,E,2,0),l=u=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&u)<<8)+(u>>8))%31){e.msg="incorrect header check",r.mode=30;break}if(8!=(15&u)){e.msg="unknown compression method",r.mode=30;break}if(l-=4,k=8+(15&(u>>>=4)),0===r.wbits)r.wbits=k;else if(k>r.wbits){e.msg="invalid window size",r.mode=30;break}r.dmax=1<>8&1),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=3;case 3:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<>>8&255,E[2]=u>>>16&255,E[3]=u>>>24&255,r.check=B(r.check,E,4,0)),l=u=0,r.mode=4;case 4:for(;l<16;){if(0===o)break e;o--,u+=n[s++]<>8),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=5;case 5:if(1024&r.flags){for(;l<16;){if(0===o)break e;o--,u+=n[s++]<>>8&255,r.check=B(r.check,E,2,0)),l=u=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&(o<(d=r.length)&&(d=o),d&&(r.head&&(k=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),I.arraySet(r.head.extra,n,s,d,k)),512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,r.length-=d),r.length))break e;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===o)break e;for(d=0;k=n[s+d++],r.head&&k&&r.length<65536&&(r.head.name+=String.fromCharCode(k)),k&&d>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=12;break;case 10:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<>>=7&l,l-=7&l,r.mode=27;break}for(;l<3;){if(0===o)break e;o--,u+=n[s++]<>>=1)){case 0:r.mode=14;break;case 1:if(j(r),r.mode=20,6!==t)break;u>>>=2,l-=2;break e;case 2:r.mode=17;break;case 3:e.msg="invalid block type",r.mode=30}u>>>=2,l-=2;break;case 14:for(u>>>=7&l,l-=7&l;l<32;){if(0===o)break e;o--,u+=n[s++]<>>16^65535)){e.msg="invalid stored block lengths",r.mode=30;break}if(r.length=65535&u,l=u=0,r.mode=15,6===t)break e;case 15:r.mode=16;case 16:if(d=r.length){if(o>>=5,l-=5,r.ndist=1+(31&u),u>>>=5,l-=5,r.ncode=4+(15&u),u>>>=4,l-=4,286>>=3,l-=3}for(;r.have<19;)r.lens[A[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,S={bits:r.lenbits},x=T(0,r.lens,0,19,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg="invalid code lengths set",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=_,l-=_,r.lens[r.have++]=b;else{if(16===b){for(z=_+2;l>>=_,l-=_,0===r.have){e.msg="invalid bit length repeat",r.mode=30;break}k=r.lens[r.have-1],d=3+(3&u),u>>>=2,l-=2}else if(17===b){for(z=_+3;l>>=_)),u>>>=3,l-=3}else{for(z=_+7;l>>=_)),u>>>=7,l-=7}if(r.have+d>r.nlen+r.ndist){e.msg="invalid bit length repeat",r.mode=30;break}for(;d--;)r.lens[r.have++]=k}}if(30===r.mode)break;if(0===r.lens[256]){e.msg="invalid code -- missing end-of-block",r.mode=30;break}if(r.lenbits=9,S={bits:r.lenbits},x=T(D,r.lens,0,r.nlen,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg="invalid literal/lengths set",r.mode=30;break}if(r.distbits=6,r.distcode=r.distdyn,S={bits:r.distbits},x=T(F,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,S),r.distbits=S.bits,x){e.msg="invalid distances set",r.mode=30;break}if(r.mode=20,6===t)break e;case 20:r.mode=21;case 21:if(6<=o&&258<=h){e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,R(e,c),a=e.next_out,i=e.output,h=e.avail_out,s=e.next_in,n=e.input,o=e.avail_in,u=r.hold,l=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;g=(C=r.lencode[u&(1<>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,r.length=b,0===g){r.mode=26;break}if(32&g){r.back=-1,r.mode=12;break}if(64&g){e.msg="invalid literal/length code",r.mode=30;break}r.extra=15&g,r.mode=22;case 22:if(r.extra){for(z=r.extra;l>>=r.extra,l-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;g=(C=r.distcode[u&(1<>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,64&g){e.msg="invalid distance code",r.mode=30;break}r.offset=b,r.extra=15&g,r.mode=24;case 24:if(r.extra){for(z=r.extra;l>>=r.extra,l-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg="invalid distance too far back",r.mode=30;break}r.mode=25;case 25:if(0===h)break e;if(d=c-h,r.offset>d){if((d=r.offset-d)>r.whave&&r.sane){e.msg="invalid distance too far back",r.mode=30;break}p=d>r.wnext?(d-=r.wnext,r.wsize-d):r.wnext-d,d>r.length&&(d=r.length),m=r.window}else m=i,p=a-r.offset,d=r.length;for(hd?(m=R[T+a[v]],A[I+a[v]]):(m=96,0),h=1<>S)+(u-=h)]=p<<24|m<<16|_|0,0!==u;);for(h=1<>=1;if(0!==h?(E&=h-1,E+=h):E=0,v++,0==--O[b]){if(b===w)break;b=t[r+a[v]]}if(k>>7)]}function U(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function P(e,t,r){e.bi_valid>d-r?(e.bi_buf|=t<>d-e.bi_valid,e.bi_valid+=r-d):(e.bi_buf|=t<>>=1,r<<=1,0<--t;);return r>>>1}function Z(e,t,r){var n,i,s=new Array(g+1),a=0;for(n=1;n<=g;n++)s[n]=a=a+r[n-1]<<1;for(i=0;i<=t;i++){var o=e[2*i+1];0!==o&&(e[2*i]=j(s[o]++,o))}}function W(e){var t;for(t=0;t>1;1<=r;r--)G(e,s,r);for(i=h;r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],G(e,s,1),n=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=n,s[2*i]=s[2*r]+s[2*n],e.depth[i]=(e.depth[r]>=e.depth[n]?e.depth[r]:e.depth[n])+1,s[2*r+1]=s[2*n+1]=i,e.heap[1]=i++,G(e,s,1),2<=e.heap_len;);e.heap[--e.heap_max]=e.heap[1],function(e,t){var r,n,i,s,a,o,h=t.dyn_tree,u=t.max_code,l=t.stat_desc.static_tree,f=t.stat_desc.has_stree,c=t.stat_desc.extra_bits,d=t.stat_desc.extra_base,p=t.stat_desc.max_length,m=0;for(s=0;s<=g;s++)e.bl_count[s]=0;for(h[2*e.heap[e.heap_max]+1]=0,r=e.heap_max+1;r<_;r++)p<(s=h[2*h[2*(n=e.heap[r])+1]+1]+1)&&(s=p,m++),h[2*n+1]=s,u>=7;n>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return o;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return h;for(t=32;t>>3,(s=e.static_len+3+7>>>3)<=i&&(i=s)):i=s=r+5,r+4<=i&&-1!==t?J(e,t,r,n):4===e.strategy||s===i?(P(e,2+(n?1:0),3),K(e,z,C)):(P(e,4+(n?1:0),3),function(e,t,r,n){var i;for(P(e,t-257,5),P(e,r-1,5),P(e,n-4,4),i=0;i>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(A[r]+u+1)]++,e.dyn_dtree[2*N(t)]++),e.last_lit===e.lit_bufsize-1},r._tr_align=function(e){P(e,2,3),L(e,m,z),function(e){16===e.bi_valid?(U(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):8<=e.bi_valid&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},{"../utils/common":41}],53:[function(e,t,r){"use strict";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(e,t,r){(function(e){!function(r,n){"use strict";if(!r.setImmediate){var i,s,t,a,o=1,h={},u=!1,l=r.document,e=Object.getPrototypeOf&&Object.getPrototypeOf(r);e=e&&e.setTimeout?e:r,i="[object process]"==={}.toString.call(r.process)?function(e){process.nextTick(function(){c(e)})}:function(){if(r.postMessage&&!r.importScripts){var e=!0,t=r.onmessage;return r.onmessage=function(){e=!1},r.postMessage("","*"),r.onmessage=t,e}}()?(a="setImmediate$"+Math.random()+"$",r.addEventListener?r.addEventListener("message",d,!1):r.attachEvent("onmessage",d),function(e){r.postMessage(a+e,"*")}):r.MessageChannel?((t=new MessageChannel).port1.onmessage=function(e){c(e.data)},function(e){t.port2.postMessage(e)}):l&&"onreadystatechange"in l.createElement("script")?(s=l.documentElement,function(e){var t=l.createElement("script");t.onreadystatechange=function(){c(e),t.onreadystatechange=null,s.removeChild(t),t=null},s.appendChild(t)}):function(e){setTimeout(c,0,e)},e.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),r=0;r2&&arguments[2]!==undefined?arguments[2]:null;var i=arguments.length>3&&arguments[3]!==undefined?arguments[3]:null;var n=e;for(;n!==s;){var _e=n.nextSibling;t.insertBefore(n,i),n=_e}},o=function o(t,e){var s=arguments.length>2&&arguments[2]!==undefined?arguments[2]:null;var i=e;for(;i!==s;){var _e2=i.nextSibling;t.removeChild(i),i=_e2}},r={},a={},l="{{lit-".concat(String(Math.random()).slice(2),"}}"),h="\x3c!--".concat(l,"--\x3e"),d=new RegExp("".concat(l,"|").concat(h)),c="$lit$";var u=function u(t,e){var _this=this;_classCallCheck(this,u);this.parts=[],this.element=e;var s=-1,i=0;var n=[],o=function o(e){var r=e.content,a=document.createTreeWalker(r,133,null,!1);var h=0;for(;a.nextNode();){s++;var _e3=a.currentNode;if(1===_e3.nodeType){if(_e3.hasAttributes()){var _n=_e3.attributes;var _o=0;for(var _t=0;_t<_n.length;_t++){_n[_t].value.indexOf(l)>=0&&_o++}for(;_o-- >0;){var _n2=t.strings[i],_o2=g.exec(_n2)[2],_r=_o2.toLowerCase()+c,_a=_e3.getAttribute(_r).split(d);_this.parts.push({type:"attribute",index:s,name:_o2,strings:_a}),_e3.removeAttribute(_r),i+=_a.length-1}}"TEMPLATE"===_e3.tagName&&o(_e3)}else if(3===_e3.nodeType){var _t2=_e3.data;if(_t2.indexOf(l)>=0){var _o3=_e3.parentNode,_r2=_t2.split(d),_a2=_r2.length-1;for(var _t3=0;_t3<_a2;_t3++){_o3.insertBefore(""===_r2[_t3]?m():document.createTextNode(_r2[_t3]),_e3),_this.parts.push({type:"node",index:++s})}""===_r2[_a2]?(_o3.insertBefore(m(),_e3),n.push(_e3)):_e3.data=_r2[_a2],i+=_a2}}else if(8===_e3.nodeType)if(_e3.data===l){var _t4=_e3.parentNode;null!==_e3.previousSibling&&s!==h||(s++,_t4.insertBefore(m(),_e3)),h=s,_this.parts.push({type:"node",index:s}),null===_e3.nextSibling?_e3.data="":(n.push(_e3),s--),i++}else{var _t5=-1;for(;-1!==(_t5=_e3.data.indexOf(l,_t5+1));){_this.parts.push({type:"node",index:-1})}}}};o(e);for(var _i=0;_i=\/]+)([ \x09\x0a\x0c\x0d]*=[ \x09\x0a\x0c\x0d]*(?:[^ \x09\x0a\x0c\x0d"'`<>=]*|"[^"]*|'[^']*))$/;var v=function(){function v(t,e,s){_classCallCheck(this,v);this._parts=[],this.template=t,this.processor=e,this.options=s}_createClass(v,[{key:"update",value:function update(t){var e=0;var _iteratorNormalCompletion=true;var _didIteratorError=false;var _iteratorError=undefined;try{for(var _iterator=this._parts[Symbol.iterator](),_step;!(_iteratorNormalCompletion=(_step=_iterator.next()).done);_iteratorNormalCompletion=true){var _s=_step.value;void 0!==_s&&_s.setValue(t[e]),e++}}catch(err){_didIteratorError=true;_iteratorError=err}finally{try{if(!_iteratorNormalCompletion&&_iterator.return!=null){_iterator.return()}}finally{if(_didIteratorError){throw _iteratorError}}}var _iteratorNormalCompletion2=true;var _didIteratorError2=false;var _iteratorError2=undefined;try{for(var _iterator2=this._parts[Symbol.iterator](),_step2;!(_iteratorNormalCompletion2=(_step2=_iterator2.next()).done);_iteratorNormalCompletion2=true){var _t7=_step2.value;void 0!==_t7&&_t7.commit()}}catch(err){_didIteratorError2=true;_iteratorError2=err}finally{try{if(!_iteratorNormalCompletion2&&_iterator2.return!=null){_iterator2.return()}}finally{if(_didIteratorError2){throw _iteratorError2}}}}},{key:"_clone",value:function _clone(){var _this2=this;var t=i?this.template.element.content.cloneNode(!0):document.importNode(this.template.element.content,!0),e=this.template.parts;var s=0,n=0;var o=function o(t){var i=document.createTreeWalker(t,133,null,!1);var r=i.nextNode();for(;s".concat(_get(_getPrototypeOf(x.prototype),"getHTML",this).call(this),"")}},{key:"getTemplateElement",value:function getTemplateElement(){var t=_get(_getPrototypeOf(x.prototype),"getTemplateElement",this).call(this),e=t.content,s=e.firstChild;return e.removeChild(s),n(e,s.firstChild),t}}]);return x}(f);var _=function _(t){return null===t||!("object"==_typeof(t)||"function"==typeof t)};var y=function(){function y(t,e,s){_classCallCheck(this,y);this.dirty=!0,this.element=t,this.name=e,this.strings=s,this.parts=[];for(var _t11=0;_t110&&arguments[0]!==undefined?arguments[0]:this.startNode;o(this.startNode.parentNode,t.nextSibling,this.endNode)}}]);return V}();var b=function(){function b(t,e,s){_classCallCheck(this,b);if(this.value=void 0,this._pendingValue=void 0,2!==s.length||""!==s[0]||""!==s[1])throw new Error("Boolean attributes can only contain a single expression");this.element=t,this.name=e,this.strings=s}_createClass(b,[{key:"setValue",value:function setValue(t){this._pendingValue=t}},{key:"commit",value:function commit(){for(;s(this._pendingValue);){var _t15=this._pendingValue;this._pendingValue=r,_t15(this)}if(this._pendingValue===r)return;var t=!!this._pendingValue;this.value!==t&&(t?this.element.setAttribute(this.name,""):this.element.removeAttribute(this.name)),this.value=t,this._pendingValue=r}}]);return b}();var w=function(_y){_inherits(w,_y);function w(t,e,s){var _this3;_classCallCheck(this,w);_this3=_possibleConstructorReturn(this,_getPrototypeOf(w).call(this,t,e,s)),_this3.single=2===s.length&&""===s[0]&&""===s[1];return _this3}_createClass(w,[{key:"_createPart",value:function _createPart(){return new T(this)}},{key:"_getValue",value:function _getValue(){return this.single?this.parts[0].value:_get(_getPrototypeOf(w.prototype),"_getValue",this).call(this)}},{key:"commit",value:function commit(){this.dirty&&(this.dirty=!1,this.element[this.name]=this._getValue())}}]);return w}(y);var T=function(_N){_inherits(T,_N);function T(){_classCallCheck(this,T);return _possibleConstructorReturn(this,_getPrototypeOf(T).apply(this,arguments))}return T}(N);var E=!1;try{var _t16={get capture(){return E=!0,!1}};window.addEventListener("test",_t16,_t16),window.removeEventListener("test",_t16,_t16)}catch(t){}var A=function(){function A(t,e,s){var _this4=this;_classCallCheck(this,A);this.value=void 0,this._pendingValue=void 0,this.element=t,this.eventName=e,this.eventContext=s,this._boundHandleEvent=function(t){return _this4.handleEvent(t)}}_createClass(A,[{key:"setValue",value:function setValue(t){this._pendingValue=t}},{key:"commit",value:function commit(){for(;s(this._pendingValue);){var _t17=this._pendingValue;this._pendingValue=r,_t17(this)}if(this._pendingValue===r)return;var t=this._pendingValue,e=this.value,i=null==t||null!=e&&(t.capture!==e.capture||t.once!==e.once||t.passive!==e.passive),n=null!=t&&(null==e||i);i&&this.element.removeEventListener(this.eventName,this._boundHandleEvent,this._options),n&&(this._options=P(t),this.element.addEventListener(this.eventName,this._boundHandleEvent,this._options)),this.value=t,this._pendingValue=r}},{key:"handleEvent",value:function handleEvent(t){"function"==typeof this.value?this.value.call(this.eventContext||this.element,t):this.value.handleEvent(t)}}]);return A}();var P=function P(t){return t&&(E?{capture:t.capture,passive:t.passive,once:t.once}:t.capture)};var S=function(){function S(){_classCallCheck(this,S)}_createClass(S,[{key:"handleAttributeExpressions",value:function handleAttributeExpressions(t,e,s,i){var n=e[0];if("."===n){return new w(t,e.slice(1),s).parts}return"@"===n?[new A(t,e.slice(1),i.eventContext)]:"?"===n?[new b(t,e.slice(1),s)]:new y(t,e,s).parts}},{key:"handleTextExpression",value:function handleTextExpression(t){return new V(t)}}]);return S}();var C=new S;function M(t){var e=L.get(t.type);void 0===e&&(e={stringsArray:new WeakMap,keyString:new Map},L.set(t.type,e));var s=e.stringsArray.get(t.strings);if(void 0!==s)return s;var i=t.strings.join(l);return void 0===(s=e.keyString.get(i))&&(s=new u(t,t.getTemplateElement()),e.keyString.set(i,s)),e.stringsArray.set(t.strings,s),s}var L=new Map,k=new WeakMap;(window.litHtmlVersions||(window.litHtmlVersions=[])).push("1.0.0");t.html=function(t){for(var _len=arguments.length,e=new Array(_len>1?_len-1:0),_key=1;_key<_len;_key++){e[_key-1]=arguments[_key]}return new f(t,e,"html",C)},t.svg=function(t){for(var _len2=arguments.length,e=new Array(_len2>1?_len2-1:0),_key2=1;_key2<_len2;_key2++){e[_key2-1]=arguments[_key2]}return new x(t,e,"svg",C)},t.DefaultTemplateProcessor=S,t.defaultTemplateProcessor=C,t.directive=function(t){return function(){var i=t.apply(void 0,arguments);return e.set(i,!0),i}},t.isDirective=s,t.removeNodes=o,t.reparentNodes=n,t.noChange=r,t.nothing=a,t.AttributeCommitter=y,t.AttributePart=N,t.BooleanAttributePart=b,t.EventPart=A,t.isPrimitive=_,t.NodePart=V,t.PropertyCommitter=w,t.PropertyPart=T,t.parts=k,t.render=function(t,e,s){var i=k.get(e);void 0===i&&(o(e,e.firstChild),k.set(e,i=new V(Object.assign({templateFactory:M},s))),i.appendInto(e)),i.setValue(t),i.commit()},t.templateCaches=L,t.templateFactory=M,t.TemplateInstance=v,t.SVGTemplateResult=x,t.TemplateResult=f,t.createMarker=m,t.isTemplatePartActive=p,t.Template=u,Object.defineProperty(t,"__esModule",{value:!0})}); \ No newline at end of file diff --git a/backend/documentation/js/libs/prism.js b/backend/documentation/js/libs/prism.js new file mode 100644 index 0000000..9267591 --- /dev/null +++ b/backend/documentation/js/libs/prism.js @@ -0,0 +1,46 @@ +/* PrismJS 1.29.0 +https://prismjs.com/download.html?#themes=prism&languages=markup+css+clike+javascript+apacheconf+aspnet+bash+c+csharp+cpp+coffeescript+dart+docker+elm+git+go+graphql+handlebars+haskell+http+ignore+java+json+kotlin+less+markdown+markup-templating+nginx+php+powershell+ruby+rust+sass+scss+sql+swift+typescript+wasm+yaml&plugins=line-highlight+line-numbers+toolbar+copy-to-clipboard */ +var _self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},Prism=function(e){var n=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,r={},a={manual:e.Prism&&e.Prism.manual,disableWorkerMessageHandler:e.Prism&&e.Prism.disableWorkerMessageHandler,util:{encode:function e(n){return n instanceof i?new i(n.type,e(n.content),n.alias):Array.isArray(n)?n.map(e):n.replace(/&/g,"&").replace(/=g.reach);A+=w.value.length,w=w.next){var E=w.value;if(n.length>e.length)return;if(!(E instanceof i)){var P,L=1;if(y){if(!(P=l(b,A,e,m))||P.index>=e.length)break;var S=P.index,O=P.index+P[0].length,j=A;for(j+=w.value.length;S>=j;)j+=(w=w.next).value.length;if(A=j-=w.value.length,w.value instanceof i)continue;for(var C=w;C!==n.tail&&(jg.reach&&(g.reach=W);var z=w.prev;if(_&&(z=u(n,z,_),A+=_.length),c(n,z,L),w=u(n,z,new i(f,p?a.tokenize(N,p):N,k,N)),M&&u(n,w,M),L>1){var I={cause:f+","+d,reach:W};o(e,n,t,w.prev,A,I),g&&I.reach>g.reach&&(g.reach=I.reach)}}}}}}function s(){var e={value:null,prev:null,next:null},n={value:null,prev:e,next:null};e.next=n,this.head=e,this.tail=n,this.length=0}function u(e,n,t){var r=n.next,a={value:t,prev:n,next:r};return n.next=a,r.prev=a,e.length++,a}function c(e,n,t){for(var r=n.next,a=0;a"+i.content+""},!e.document)return e.addEventListener?(a.disableWorkerMessageHandler||e.addEventListener("message",(function(n){var t=JSON.parse(n.data),r=t.language,i=t.code,l=t.immediateClose;e.postMessage(a.highlight(i,a.languages[r],r)),l&&e.close()}),!1),a):a;var g=a.util.currentScript();function f(){a.manual||a.highlightAll()}if(g&&(a.filename=g.src,g.hasAttribute("data-manual")&&(a.manual=!0)),!a.manual){var h=document.readyState;"loading"===h||"interactive"===h&&g&&g.defer?document.addEventListener("DOMContentLoaded",f):window.requestAnimationFrame?window.requestAnimationFrame(f):window.setTimeout(f,16)}return a}(_self);"undefined"!=typeof module&&module.exports&&(module.exports=Prism),"undefined"!=typeof global&&(global.Prism=Prism); +Prism.languages.markup={comment:{pattern://,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},Prism.languages.markup.tag.inside["attr-value"].inside.entity=Prism.languages.markup.entity,Prism.languages.markup.doctype.inside["internal-subset"].inside=Prism.languages.markup,Prism.hooks.add("wrap",(function(a){"entity"===a.type&&(a.attributes.title=a.content.replace(/&/,"&"))})),Object.defineProperty(Prism.languages.markup.tag,"addInlined",{value:function(a,e){var s={};s["language-"+e]={pattern:/(^$)/i,lookbehind:!0,inside:Prism.languages[e]},s.cdata=/^$/i;var t={"included-cdata":{pattern://i,inside:s}};t["language-"+e]={pattern:/[\s\S]+/,inside:Prism.languages[e]};var n={};n[a]={pattern:RegExp("(<__[^>]*>)(?:))*\\]\\]>|(?!)".replace(/__/g,(function(){return a})),"i"),lookbehind:!0,greedy:!0,inside:t},Prism.languages.insertBefore("markup","cdata",n)}}),Object.defineProperty(Prism.languages.markup.tag,"addAttribute",{value:function(a,e){Prism.languages.markup.tag.inside["special-attr"].push({pattern:RegExp("(^|[\"'\\s])(?:"+a+")\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))","i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[e,"language-"+e],inside:Prism.languages[e]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup,Prism.languages.xml=Prism.languages.extend("markup",{}),Prism.languages.ssml=Prism.languages.xml,Prism.languages.atom=Prism.languages.xml,Prism.languages.rss=Prism.languages.xml; +!function(s){var e=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;s.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:[^;{\\s\"']|\\s+(?!\\s)|"+e.source+")*?(?:;|(?=\\s*\\{))"),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+e.source+"|(?:[^\\\\\r\n()\"']|\\\\[^])*)\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+e.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+e.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:e,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},s.languages.css.atrule.inside.rest=s.languages.css;var t=s.languages.markup;t&&(t.tag.addInlined("style","css"),t.tag.addAttribute("style","css"))}(Prism); +Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/}; +Prism.languages.javascript=Prism.languages.extend("clike",{"class-name":[Prism.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp("(^|[^\\w$])(?:NaN|Infinity|0[bB][01]+(?:_[01]+)*n?|0[oO][0-7]+(?:_[0-7]+)*n?|0[xX][\\dA-Fa-f]+(?:_[\\dA-Fa-f]+)*n?|\\d+(?:_\\d+)*n|(?:\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[Ee][+-]?\\d+(?:_\\d+)*)?)(?![\\w$])"),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),Prism.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp("((?:^|[^$\\w\\xA0-\\uFFFF.\"'\\])\\s]|\\b(?:return|yield))\\s*)/(?:(?:\\[(?:[^\\]\\\\\r\n]|\\\\.)*\\]|\\\\.|[^/\\\\\\[\r\n])+/[dgimyus]{0,7}|(?:\\[(?:[^[\\]\\\\\r\n]|\\\\.|\\[(?:[^[\\]\\\\\r\n]|\\\\.|\\[(?:[^[\\]\\\\\r\n]|\\\\.)*\\])*\\])*\\]|\\\\.|[^/\\\\\\[\r\n])+/[dgimyus]{0,7}v[dgimyus]{0,7})(?=(?:\\s|/\\*(?:[^*]|\\*(?!/))*\\*/)*(?:$|[\r\n,.;:})\\]]|//))"),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:Prism.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:Prism.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),Prism.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),Prism.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),Prism.languages.markup&&(Prism.languages.markup.tag.addInlined("script","javascript"),Prism.languages.markup.tag.addAttribute("on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)","javascript")),Prism.languages.js=Prism.languages.javascript; +Prism.languages.apacheconf={comment:/#.*/,"directive-inline":{pattern:/(^[\t ]*)\b(?:AcceptFilter|AcceptPathInfo|AccessFileName|Action|Add(?:Alt|AltByEncoding|AltByType|Charset|DefaultCharset|Description|Encoding|Handler|Icon|IconByEncoding|IconByType|InputFilter|Language|ModuleInfo|OutputFilter|OutputFilterByType|Type)|Alias|AliasMatch|Allow(?:CONNECT|EncodedSlashes|Methods|Override|OverrideList)?|Anonymous(?:_LogEmail|_MustGiveEmail|_NoUserID|_VerifyEmail)?|AsyncRequestWorkerFactor|Auth(?:BasicAuthoritative|BasicFake|BasicProvider|BasicUseDigestAlgorithm|DBDUserPWQuery|DBDUserRealmQuery|DBMGroupFile|DBMType|DBMUserFile|Digest(?:Algorithm|Domain|NonceLifetime|Provider|Qop|ShmemSize)|Form(?:Authoritative|Body|DisableNoStore|FakeBasicAuth|Location|LoginRequiredLocation|LoginSuccessLocation|LogoutLocation|Method|Mimetype|Password|Provider|SitePassphrase|Size|Username)|GroupFile|LDAP(?:AuthorizePrefix|BindAuthoritative|BindDN|BindPassword|CharsetConfig|CompareAsUser|CompareDNOnServer|DereferenceAliases|GroupAttribute|GroupAttributeIsDN|InitialBindAsUser|InitialBindPattern|MaxSubGroupDepth|RemoteUserAttribute|RemoteUserIsDN|SearchAsUser|SubGroupAttribute|SubGroupClass|Url)|Merging|Name|nCache(?:Context|Enable|ProvideFor|SOCache|Timeout)|nzFcgiCheckAuthnProvider|nzFcgiDefineProvider|Type|UserFile|zDBDLoginToReferer|zDBDQuery|zDBDRedirectQuery|zDBMType|zSendForbiddenOnFailure)|BalancerGrowth|BalancerInherit|BalancerMember|BalancerPersist|BrowserMatch|BrowserMatchNoCase|BufferedLogs|BufferSize|Cache(?:DefaultExpire|DetailHeader|DirLength|DirLevels|Disable|Enable|File|Header|IgnoreCacheControl|IgnoreHeaders|IgnoreNoLastMod|IgnoreQueryString|IgnoreURLSessionIdentifiers|KeyBaseURL|LastModifiedFactor|Lock|LockMaxAge|LockPath|MaxExpire|MaxFileSize|MinExpire|MinFileSize|NegotiatedDocs|QuickHandler|ReadSize|ReadTime|Root|Socache(?:MaxSize|MaxTime|MinTime|ReadSize|ReadTime)?|StaleOnError|StoreExpired|StoreNoStore|StorePrivate)|CGIDScriptTimeout|CGIMapExtension|CharsetDefault|CharsetOptions|CharsetSourceEnc|CheckCaseOnly|CheckSpelling|ChrootDir|ContentDigest|CookieDomain|CookieExpires|CookieName|CookieStyle|CookieTracking|CoreDumpDirectory|CustomLog|Dav|DavDepthInfinity|DavGenericLockDB|DavLockDB|DavMinTimeout|DBDExptime|DBDInitSQL|DBDKeep|DBDMax|DBDMin|DBDParams|DBDPersist|DBDPrepareSQL|DBDriver|DefaultIcon|DefaultLanguage|DefaultRuntimeDir|DefaultType|Define|Deflate(?:BufferSize|CompressionLevel|FilterNote|InflateLimitRequestBody|InflateRatio(?:Burst|Limit)|MemLevel|WindowSize)|Deny|DirectoryCheckHandler|DirectoryIndex|DirectoryIndexRedirect|DirectorySlash|DocumentRoot|DTracePrivileges|DumpIOInput|DumpIOOutput|EnableExceptionHook|EnableMMAP|EnableSendfile|Error|ErrorDocument|ErrorLog|ErrorLogFormat|Example|ExpiresActive|ExpiresByType|ExpiresDefault|ExtendedStatus|ExtFilterDefine|ExtFilterOptions|FallbackResource|FileETag|FilterChain|FilterDeclare|FilterProtocol|FilterProvider|FilterTrace|ForceLanguagePriority|ForceType|ForensicLog|GprofDir|GracefulShutdownTimeout|Group|Header|HeaderName|Heartbeat(?:Address|Listen|MaxServers|Storage)|HostnameLookups|IdentityCheck|IdentityCheckTimeout|ImapBase|ImapDefault|ImapMenu|Include|IncludeOptional|Index(?:HeadInsert|Ignore|IgnoreReset|Options|OrderDefault|StyleSheet)|InputSed|ISAPI(?:AppendLogToErrors|AppendLogToQuery|CacheFile|FakeAsync|LogNotSupported|ReadAheadBuffer)|KeepAlive|KeepAliveTimeout|KeptBodySize|LanguagePriority|LDAP(?:CacheEntries|CacheTTL|ConnectionPoolTTL|ConnectionTimeout|LibraryDebug|OpCacheEntries|OpCacheTTL|ReferralHopLimit|Referrals|Retries|RetryDelay|SharedCacheFile|SharedCacheSize|Timeout|TrustedClientCert|TrustedGlobalCert|TrustedMode|VerifyServerCert)|Limit(?:InternalRecursion|Request(?:Body|Fields|FieldSize|Line)|XMLRequestBody)|Listen|ListenBackLog|LoadFile|LoadModule|LogFormat|LogLevel|LogMessage|LuaAuthzProvider|LuaCodeCache|Lua(?:Hook(?:AccessChecker|AuthChecker|CheckUserID|Fixups|InsertFilter|Log|MapToStorage|TranslateName|TypeChecker)|Inherit|InputFilter|MapHandler|OutputFilter|PackageCPath|PackagePath|QuickHandler|Root|Scope)|Max(?:ConnectionsPerChild|KeepAliveRequests|MemFree|RangeOverlaps|RangeReversals|Ranges|RequestWorkers|SpareServers|SpareThreads|Threads)|MergeTrailers|MetaDir|MetaFiles|MetaSuffix|MimeMagicFile|MinSpareServers|MinSpareThreads|MMapFile|ModemStandard|ModMimeUsePathInfo|MultiviewsMatch|Mutex|NameVirtualHost|NoProxy|NWSSLTrustedCerts|NWSSLUpgradeable|Options|Order|OutputSed|PassEnv|PidFile|PrivilegesMode|Protocol|ProtocolEcho|Proxy(?:AddHeaders|BadHeader|Block|Domain|ErrorOverride|ExpressDBMFile|ExpressDBMType|ExpressEnable|FtpDirCharset|FtpEscapeWildcards|FtpListOnWildcard|HTML(?:BufSize|CharsetOut|DocType|Enable|Events|Extended|Fixups|Interp|Links|Meta|StripComments|URLMap)|IOBufferSize|MaxForwards|Pass(?:Inherit|InterpolateEnv|Match|Reverse|ReverseCookieDomain|ReverseCookiePath)?|PreserveHost|ReceiveBufferSize|Remote|RemoteMatch|Requests|SCGIInternalRedirect|SCGISendfile|Set|SourceAddress|Status|Timeout|Via)|ReadmeName|ReceiveBufferSize|Redirect|RedirectMatch|RedirectPermanent|RedirectTemp|ReflectorHeader|RemoteIP(?:Header|InternalProxy|InternalProxyList|ProxiesHeader|TrustedProxy|TrustedProxyList)|RemoveCharset|RemoveEncoding|RemoveHandler|RemoveInputFilter|RemoveLanguage|RemoveOutputFilter|RemoveType|RequestHeader|RequestReadTimeout|Require|Rewrite(?:Base|Cond|Engine|Map|Options|Rule)|RLimitCPU|RLimitMEM|RLimitNPROC|Satisfy|ScoreBoardFile|Script(?:Alias|AliasMatch|InterpreterSource|Log|LogBuffer|LogLength|Sock)?|SecureListen|SeeRequestTail|SendBufferSize|Server(?:Admin|Alias|Limit|Name|Path|Root|Signature|Tokens)|Session(?:Cookie(?:Name|Name2|Remove)|Crypto(?:Cipher|Driver|Passphrase|PassphraseFile)|DBD(?:CookieName|CookieName2|CookieRemove|DeleteLabel|InsertLabel|PerUser|SelectLabel|UpdateLabel)|Env|Exclude|Header|Include|MaxAge)?|SetEnv|SetEnvIf|SetEnvIfExpr|SetEnvIfNoCase|SetHandler|SetInputFilter|SetOutputFilter|SSIEndTag|SSIErrorMsg|SSIETag|SSILastModified|SSILegacyExprParser|SSIStartTag|SSITimeFormat|SSIUndefinedEcho|SSL(?:CACertificateFile|CACertificatePath|CADNRequestFile|CADNRequestPath|CARevocationCheck|CARevocationFile|CARevocationPath|CertificateChainFile|CertificateFile|CertificateKeyFile|CipherSuite|Compression|CryptoDevice|Engine|FIPS|HonorCipherOrder|InsecureRenegotiation|OCSP(?:DefaultResponder|Enable|OverrideResponder|ResponderTimeout|ResponseMaxAge|ResponseTimeSkew|UseRequestNonce)|OpenSSLConfCmd|Options|PassPhraseDialog|Protocol|Proxy(?:CACertificateFile|CACertificatePath|CARevocation(?:Check|File|Path)|CheckPeer(?:CN|Expire|Name)|CipherSuite|Engine|MachineCertificate(?:ChainFile|File|Path)|Protocol|Verify|VerifyDepth)|RandomSeed|RenegBufferSize|Require|RequireSSL|Session(?:Cache|CacheTimeout|TicketKeyFile|Tickets)|SRPUnknownUserSeed|SRPVerifierFile|Stapling(?:Cache|ErrorCacheTimeout|FakeTryLater|ForceURL|ResponderTimeout|ResponseMaxAge|ResponseTimeSkew|ReturnResponderErrors|StandardCacheTimeout)|StrictSNIVHostCheck|UserName|UseStapling|VerifyClient|VerifyDepth)|StartServers|StartThreads|Substitute|Suexec|SuexecUserGroup|ThreadLimit|ThreadsPerChild|ThreadStackSize|TimeOut|TraceEnable|TransferLog|TypesConfig|UnDefine|UndefMacro|UnsetEnv|Use|UseCanonicalName|UseCanonicalPhysicalPort|User|UserDir|VHostCGIMode|VHostCGIPrivs|VHostGroup|VHostPrivs|VHostSecure|VHostUser|Virtual(?:DocumentRoot|ScriptAlias)(?:IP)?|WatchdogInterval|XBitHack|xml2EncAlias|xml2EncDefault|xml2StartParse)\b/im,lookbehind:!0,alias:"property"},"directive-block":{pattern:/<\/?\b(?:Auth[nz]ProviderAlias|Directory|DirectoryMatch|Else|ElseIf|Files|FilesMatch|If|IfDefine|IfModule|IfVersion|Limit|LimitExcept|Location|LocationMatch|Macro|Proxy|Require(?:All|Any|None)|VirtualHost)\b.*>/i,inside:{"directive-block":{pattern:/^<\/?\w+/,inside:{punctuation:/^<\/?/},alias:"tag"},"directive-block-parameter":{pattern:/.*[^>]/,inside:{punctuation:/:/,string:{pattern:/("|').*\1/,inside:{variable:/[$%]\{?(?:\w\.?[-+:]?)+\}?/}}},alias:"attr-value"},punctuation:/>/},alias:"tag"},"directive-flags":{pattern:/\[(?:[\w=],?)+\]/,alias:"keyword"},string:{pattern:/("|').*\1/,inside:{variable:/[$%]\{?(?:\w\.?[-+:]?)+\}?/}},variable:/[$%]\{?(?:\w\.?[-+:]?)+\}?/,regex:/\^?.*\$|\^.*\$?/}; +!function(e){function n(e,n){return e.replace(/<<(\d+)>>/g,(function(e,s){return"(?:"+n[+s]+")"}))}function s(e,s,a){return RegExp(n(e,s),a||"")}function a(e,n){for(var s=0;s>/g,(function(){return"(?:"+e+")"}));return e.replace(/<>/g,"[^\\s\\S]")}var t="bool byte char decimal double dynamic float int long object sbyte short string uint ulong ushort var void",r="class enum interface record struct",i="add alias and ascending async await by descending from(?=\\s*(?:\\w|$)) get global group into init(?=\\s*;) join let nameof not notnull on or orderby partial remove select set unmanaged value when where with(?=\\s*{)",o="abstract as base break case catch checked const continue default delegate do else event explicit extern finally fixed for foreach goto if implicit in internal is lock namespace new null operator out override params private protected public readonly ref return sealed sizeof stackalloc static switch this throw try typeof unchecked unsafe using virtual volatile while yield";function l(e){return"\\b(?:"+e.trim().replace(/ /g,"|")+")\\b"}var d=l(r),p=RegExp(l(t+" "+r+" "+i+" "+o)),c=l(r+" "+i+" "+o),u=l(t+" "+r+" "+o),g=a("<(?:[^<>;=+\\-*/%&|^]|<>)*>",2),b=a("\\((?:[^()]|<>)*\\)",2),h="@?\\b[A-Za-z_]\\w*\\b",f=n("<<0>>(?:\\s*<<1>>)?",[h,g]),m=n("(?!<<0>>)<<1>>(?:\\s*\\.\\s*<<1>>)*",[c,f]),k="\\[\\s*(?:,\\s*)*\\]",y=n("<<0>>(?:\\s*(?:\\?\\s*)?<<1>>)*(?:\\s*\\?)?",[m,k]),w=n("[^,()<>[\\];=+\\-*/%&|^]|<<0>>|<<1>>|<<2>>",[g,b,k]),v=n("\\(<<0>>+(?:,<<0>>+)+\\)",[w]),x=n("(?:<<0>>|<<1>>)(?:\\s*(?:\\?\\s*)?<<2>>)*(?:\\s*\\?)?",[v,m,k]),$={keyword:p,punctuation:/[<>()?,.:[\]]/},_="'(?:[^\r\n'\\\\]|\\\\.|\\\\[Uux][\\da-fA-F]{1,8})'",B='"(?:\\\\.|[^\\\\"\r\n])*"';e.languages.csharp=e.languages.extend("clike",{string:[{pattern:s("(^|[^$\\\\])<<0>>",['@"(?:""|\\\\[^]|[^\\\\"])*"(?!")']),lookbehind:!0,greedy:!0},{pattern:s("(^|[^@$\\\\])<<0>>",[B]),lookbehind:!0,greedy:!0}],"class-name":[{pattern:s("(\\busing\\s+static\\s+)<<0>>(?=\\s*;)",[m]),lookbehind:!0,inside:$},{pattern:s("(\\busing\\s+<<0>>\\s*=\\s*)<<1>>(?=\\s*;)",[h,x]),lookbehind:!0,inside:$},{pattern:s("(\\busing\\s+)<<0>>(?=\\s*=)",[h]),lookbehind:!0},{pattern:s("(\\b<<0>>\\s+)<<1>>",[d,f]),lookbehind:!0,inside:$},{pattern:s("(\\bcatch\\s*\\(\\s*)<<0>>",[m]),lookbehind:!0,inside:$},{pattern:s("(\\bwhere\\s+)<<0>>",[h]),lookbehind:!0},{pattern:s("(\\b(?:is(?:\\s+not)?|as)\\s+)<<0>>",[y]),lookbehind:!0,inside:$},{pattern:s("\\b<<0>>(?=\\s+(?!<<1>>|with\\s*\\{)<<2>>(?:\\s*[=,;:{)\\]]|\\s+(?:in|when)\\b))",[x,u,h]),inside:$}],keyword:p,number:/(?:\b0(?:x[\da-f_]*[\da-f]|b[01_]*[01])|(?:\B\.\d+(?:_+\d+)*|\b\d+(?:_+\d+)*(?:\.\d+(?:_+\d+)*)?)(?:e[-+]?\d+(?:_+\d+)*)?)(?:[dflmu]|lu|ul)?\b/i,operator:/>>=?|<<=?|[-=]>|([-+&|])\1|~|\?\?=?|[-+*/%&|^!=<>]=?/,punctuation:/\?\.?|::|[{}[\];(),.:]/}),e.languages.insertBefore("csharp","number",{range:{pattern:/\.\./,alias:"operator"}}),e.languages.insertBefore("csharp","punctuation",{"named-parameter":{pattern:s("([(,]\\s*)<<0>>(?=\\s*:)",[h]),lookbehind:!0,alias:"punctuation"}}),e.languages.insertBefore("csharp","class-name",{namespace:{pattern:s("(\\b(?:namespace|using)\\s+)<<0>>(?:\\s*\\.\\s*<<0>>)*(?=\\s*[;{])",[h]),lookbehind:!0,inside:{punctuation:/\./}},"type-expression":{pattern:s("(\\b(?:default|sizeof|typeof)\\s*\\(\\s*(?!\\s))(?:[^()\\s]|\\s(?!\\s)|<<0>>)*(?=\\s*\\))",[b]),lookbehind:!0,alias:"class-name",inside:$},"return-type":{pattern:s("<<0>>(?=\\s+(?:<<1>>\\s*(?:=>|[({]|\\.\\s*this\\s*\\[)|this\\s*\\[))",[x,m]),inside:$,alias:"class-name"},"constructor-invocation":{pattern:s("(\\bnew\\s+)<<0>>(?=\\s*[[({])",[x]),lookbehind:!0,inside:$,alias:"class-name"},"generic-method":{pattern:s("<<0>>\\s*<<1>>(?=\\s*\\()",[h,g]),inside:{function:s("^<<0>>",[h]),generic:{pattern:RegExp(g),alias:"class-name",inside:$}}},"type-list":{pattern:s("\\b((?:<<0>>\\s+<<1>>|record\\s+<<1>>\\s*<<5>>|where\\s+<<2>>)\\s*:\\s*)(?:<<3>>|<<4>>|<<1>>\\s*<<5>>|<<6>>)(?:\\s*,\\s*(?:<<3>>|<<4>>|<<6>>))*(?=\\s*(?:where|[{;]|=>|$))",[d,f,h,x,p.source,b,"\\bnew\\s*\\(\\s*\\)"]),lookbehind:!0,inside:{"record-arguments":{pattern:s("(^(?!new\\s*\\()<<0>>\\s*)<<1>>",[f,b]),lookbehind:!0,greedy:!0,inside:e.languages.csharp},keyword:p,"class-name":{pattern:RegExp(x),greedy:!0,inside:$},punctuation:/[,()]/}},preprocessor:{pattern:/(^[\t ]*)#.*/m,lookbehind:!0,alias:"property",inside:{directive:{pattern:/(#)\b(?:define|elif|else|endif|endregion|error|if|line|nullable|pragma|region|undef|warning)\b/,lookbehind:!0,alias:"keyword"}}}});var E=B+"|"+_,R=n("/(?![*/])|//[^\r\n]*[\r\n]|/\\*(?:[^*]|\\*(?!/))*\\*/|<<0>>",[E]),z=a(n("[^\"'/()]|<<0>>|\\(<>*\\)",[R]),2),S="\\b(?:assembly|event|field|method|module|param|property|return|type)\\b",j=n("<<0>>(?:\\s*\\(<<1>>*\\))?",[m,z]);e.languages.insertBefore("csharp","class-name",{attribute:{pattern:s("((?:^|[^\\s\\w>)?])\\s*\\[\\s*)(?:<<0>>\\s*:\\s*)?<<1>>(?:\\s*,\\s*<<1>>)*(?=\\s*\\])",[S,j]),lookbehind:!0,greedy:!0,inside:{target:{pattern:s("^<<0>>(?=\\s*:)",[S]),alias:"keyword"},"attribute-arguments":{pattern:s("\\(<<0>>*\\)",[z]),inside:e.languages.csharp},"class-name":{pattern:RegExp(m),inside:{punctuation:/\./}},punctuation:/[:,]/}}});var A=":[^}\r\n]+",F=a(n("[^\"'/()]|<<0>>|\\(<>*\\)",[R]),2),P=n("\\{(?!\\{)(?:(?![}:])<<0>>)*<<1>>?\\}",[F,A]),U=a(n("[^\"'/()]|/(?!\\*)|/\\*(?:[^*]|\\*(?!/))*\\*/|<<0>>|\\(<>*\\)",[E]),2),Z=n("\\{(?!\\{)(?:(?![}:])<<0>>)*<<1>>?\\}",[U,A]);function q(n,a){return{interpolation:{pattern:s("((?:^|[^{])(?:\\{\\{)*)<<0>>",[n]),lookbehind:!0,inside:{"format-string":{pattern:s("(^\\{(?:(?![}:])<<0>>)*)<<1>>(?=\\}$)",[a,A]),lookbehind:!0,inside:{punctuation:/^:/}},punctuation:/^\{|\}$/,expression:{pattern:/[\s\S]+/,alias:"language-csharp",inside:e.languages.csharp}}},string:/[\s\S]+/}}e.languages.insertBefore("csharp","string",{"interpolation-string":[{pattern:s('(^|[^\\\\])(?:\\$@|@\\$)"(?:""|\\\\[^]|\\{\\{|<<0>>|[^\\\\{"])*"',[P]),lookbehind:!0,greedy:!0,inside:q(P,F)},{pattern:s('(^|[^@\\\\])\\$"(?:\\\\.|\\{\\{|<<0>>|[^\\\\"{])*"',[Z]),lookbehind:!0,greedy:!0,inside:q(Z,U)}],char:{pattern:RegExp(_),greedy:!0}}),e.languages.dotnet=e.languages.cs=e.languages.csharp}(Prism); +Prism.languages.aspnet=Prism.languages.extend("markup",{"page-directive":{pattern:/<%\s*@.*%>/,alias:"tag",inside:{"page-directive":{pattern:/<%\s*@\s*(?:Assembly|Control|Implements|Import|Master(?:Type)?|OutputCache|Page|PreviousPageType|Reference|Register)?|%>/i,alias:"tag"},rest:Prism.languages.markup.tag.inside}},directive:{pattern:/<%.*%>/,alias:"tag",inside:{directive:{pattern:/<%\s*?[$=%#:]{0,2}|%>/,alias:"tag"},rest:Prism.languages.csharp}}}),Prism.languages.aspnet.tag.pattern=/<(?!%)\/?[^\s>\/]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/,Prism.languages.insertBefore("inside","punctuation",{directive:Prism.languages.aspnet.directive},Prism.languages.aspnet.tag.inside["attr-value"]),Prism.languages.insertBefore("aspnet","comment",{"asp-comment":{pattern:/<%--[\s\S]*?--%>/,alias:["asp","comment"]}}),Prism.languages.insertBefore("aspnet",Prism.languages.javascript?"script":"tag",{"asp-script":{pattern:/(]*>)[\s\S]*?(?=<\/script>)/i,lookbehind:!0,alias:["asp","script"],inside:Prism.languages.csharp||{}}}); +!function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",a={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},n={bash:a,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?:\.\w+)*(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},parameter:{pattern:/(^|\s)-{1,2}(?:\w+:[+-]?)?\w+(?:\.\w+)*(?=[=\s]|$)/,alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:n},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:a}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:n},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:n.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:n.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|java|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|sysctl|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},a.inside=e.languages.bash;for(var s=["comment","function-name","for-or-select","assign-left","parameter","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],o=n.variable[1].inside,i=0;i>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),Prism.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),Prism.languages.insertBefore("c","string",{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},Prism.languages.c.string],char:Prism.languages.c.char,comment:Prism.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:Prism.languages.c}}}}),Prism.languages.insertBefore("c","function",{constant:/\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/}),delete Prism.languages.c.boolean; +!function(e){var t=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,n="\\b(?!)\\w+(?:\\s*\\.\\s*\\w+)*\\b".replace(//g,(function(){return t.source}));e.languages.cpp=e.languages.extend("c",{"class-name":[{pattern:RegExp("(\\b(?:class|concept|enum|struct|typename)\\s+)(?!)\\w+".replace(//g,(function(){return t.source}))),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:t,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:false|true)\b/}),e.languages.insertBefore("cpp","string",{module:{pattern:RegExp('(\\b(?:import|module)\\s+)(?:"(?:\\\\(?:\r\n|[^])|[^"\\\\\r\n])*"|<[^<>\r\n]*>|'+"(?:\\s*:\\s*)?|:\\s*".replace(//g,(function(){return n}))+")"),lookbehind:!0,greedy:!0,inside:{string:/^[<"][\s\S]+/,operator:/:/,punctuation:/\./}},"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),e.languages.insertBefore("cpp","keyword",{"generic-function":{pattern:/\b(?!operator\b)[a-z_]\w*\s*<(?:[^<>]|<[^<>]*>)*>(?=\s*\()/i,inside:{function:/^\w+/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:e.languages.cpp}}}}),e.languages.insertBefore("cpp","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}}),e.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:e.languages.extend("cpp",{})}}),e.languages.insertBefore("inside","double-colon",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},e.languages.cpp["base-clause"])}(Prism); +!function(e){var t=/#(?!\{).+/,n={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:t,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:n}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:t,interpolation:n}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},script:{pattern:/[\s\S]+/,alias:"language-javascript",inside:e.languages.javascript}}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:n}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript["template-string"],e.languages.coffee=e.languages.coffeescript}(Prism); +!function(e){var a=[/\b(?:async|sync|yield)\*/,/\b(?:abstract|assert|async|await|break|case|catch|class|const|continue|covariant|default|deferred|do|dynamic|else|enum|export|extends|extension|external|factory|final|finally|for|get|hide|if|implements|import|in|interface|library|mixin|new|null|on|operator|part|rethrow|return|set|show|static|super|switch|sync|this|throw|try|typedef|var|void|while|with|yield)\b/],n="(^|[^\\w.])(?:[a-z]\\w*\\s*\\.\\s*)*(?:[A-Z]\\w*\\s*\\.\\s*)*",s={pattern:RegExp(n+"[A-Z](?:[\\d_A-Z]*[a-z]\\w*)?\\b"),lookbehind:!0,inside:{namespace:{pattern:/^[a-z]\w*(?:\s*\.\s*[a-z]\w*)*(?:\s*\.)?/,inside:{punctuation:/\./}}}};e.languages.dart=e.languages.extend("clike",{"class-name":[s,{pattern:RegExp(n+"[A-Z]\\w*(?=\\s+\\w+\\s*[;,=()])"),lookbehind:!0,inside:s.inside}],keyword:a,operator:/\bis!|\b(?:as|is)\b|\+\+|--|&&|\|\||<<=?|>>=?|~(?:\/=?)?|[+\-*\/%&^|=!<>]=?|\?/}),e.languages.insertBefore("dart","string",{"string-literal":{pattern:/r?(?:("""|''')[\s\S]*?\1|(["'])(?:\\.|(?!\2)[^\\\r\n])*\2(?!\2))/,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$(?:\w+|\{(?:[^{}]|\{[^{}]*\})*\})/,lookbehind:!0,inside:{punctuation:/^\$\{?|\}$/,expression:{pattern:/[\s\S]+/,inside:e.languages.dart}}},string:/[\s\S]+/}},string:void 0}),e.languages.insertBefore("dart","class-name",{metadata:{pattern:/@\w+/,alias:"function"}}),e.languages.insertBefore("dart","class-name",{generics:{pattern:/<(?:[\w\s,.&?]|<(?:[\w\s,.&?]|<(?:[\w\s,.&?]|<[\w\s,.&?]*>)*>)*>)*>/,inside:{"class-name":s,keyword:a,punctuation:/[<>(),.:]/,operator:/[?&|]/}}})}(Prism); +!function(e){var n="(?:[ \t]+(?![ \t])(?:)?|)".replace(//g,(function(){return"\\\\[\r\n](?:\\s|\\\\[\r\n]|#.*(?!.))*(?![\\s#]|\\\\[\r\n])"})),r="\"(?:[^\"\\\\\r\n]|\\\\(?:\r\n|[^]))*\"|'(?:[^'\\\\\r\n]|\\\\(?:\r\n|[^]))*'",t="--[\\w-]+=(?:|(?![\"'])(?:[^\\s\\\\]|\\\\.)+)".replace(//g,(function(){return r})),o={pattern:RegExp(r),greedy:!0},i={pattern:/(^[ \t]*)#.*/m,lookbehind:!0,greedy:!0};function a(e,r){return e=e.replace(//g,(function(){return t})).replace(//g,(function(){return n})),RegExp(e,r)}e.languages.docker={instruction:{pattern:/(^[ \t]*)(?:ADD|ARG|CMD|COPY|ENTRYPOINT|ENV|EXPOSE|FROM|HEALTHCHECK|LABEL|MAINTAINER|ONBUILD|RUN|SHELL|STOPSIGNAL|USER|VOLUME|WORKDIR)(?=\s)(?:\\.|[^\r\n\\])*(?:\\$(?:\s|#.*$)*(?![\s#])(?:\\.|[^\r\n\\])*)*/im,lookbehind:!0,greedy:!0,inside:{options:{pattern:a("(^(?:ONBUILD)?\\w+)(?:)*","i"),lookbehind:!0,greedy:!0,inside:{property:{pattern:/(^|\s)--[\w-]+/,lookbehind:!0},string:[o,{pattern:/(=)(?!["'])(?:[^\s\\]|\\.)+/,lookbehind:!0}],operator:/\\$/m,punctuation:/=/}},keyword:[{pattern:a("(^(?:ONBUILD)?HEALTHCHECK(?:)*)(?:CMD|NONE)\\b","i"),lookbehind:!0,greedy:!0},{pattern:a("(^(?:ONBUILD)?FROM(?:)*(?!--)[^ \t\\\\]+)AS","i"),lookbehind:!0,greedy:!0},{pattern:a("(^ONBUILD)\\w+","i"),lookbehind:!0,greedy:!0},{pattern:/^\w+/,greedy:!0}],comment:i,string:o,variable:/\$(?:\w+|\{[^{}"'\\]*\})/,operator:/\\$/m}},comment:i},e.languages.dockerfile=e.languages.docker}(Prism); +Prism.languages.elm={comment:/--.*|\{-[\s\S]*?-\}/,char:{pattern:/'(?:[^\\'\r\n]|\\(?:[abfnrtv\\']|\d+|x[0-9a-fA-F]+|u\{[0-9a-fA-F]+\}))'/,greedy:!0},string:[{pattern:/"""[\s\S]*?"""/,greedy:!0},{pattern:/"(?:[^\\"\r\n]|\\.)*"/,greedy:!0}],"import-statement":{pattern:/(^[\t ]*)import\s+[A-Z]\w*(?:\.[A-Z]\w*)*(?:\s+as\s+(?:[A-Z]\w*)(?:\.[A-Z]\w*)*)?(?:\s+exposing\s+)?/m,lookbehind:!0,inside:{keyword:/\b(?:as|exposing|import)\b/}},keyword:/\b(?:alias|as|case|else|exposing|if|in|infixl|infixr|let|module|of|then|type)\b/,builtin:/\b(?:abs|acos|always|asin|atan|atan2|ceiling|clamp|compare|cos|curry|degrees|e|flip|floor|fromPolar|identity|isInfinite|isNaN|logBase|max|min|negate|never|not|pi|radians|rem|round|sin|sqrt|tan|toFloat|toPolar|toString|truncate|turns|uncurry|xor)\b/,number:/\b(?:\d+(?:\.\d+)?(?:e[+-]?\d+)?|0x[0-9a-f]+)\b/i,operator:/\s\.\s|[+\-/*=.$<>:&|^?%#@~!]{2,}|[+\-/*=$<>:&|^?%#@~!]/,hvariable:/\b(?:[A-Z]\w*\.)*[a-z]\w*\b/,constant:/\b(?:[A-Z]\w*\.)*[A-Z]\w*\b/,punctuation:/[{}[\]|(),.:]/}; +Prism.languages.git={comment:/^#.*/m,deleted:/^[-–].*/m,inserted:/^\+.*/m,string:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,command:{pattern:/^.*\$ git .*$/m,inside:{parameter:/\s--?\w+/}},coord:/^@@.*@@$/m,"commit-sha1":/^commit \w{40}$/m}; +Prism.languages.go=Prism.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/}),Prism.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete Prism.languages.go["class-name"]; +Prism.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:Prism.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:false|true)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/\b[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/\b[A-Z]\w*Input\b/,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}\[\]:=,]/,property:/\w+/},Prism.hooks.add("after-tokenize",(function(n){if("graphql"===n.language)for(var t=n.tokens.filter((function(n){return"string"!=typeof n&&"comment"!==n.type&&"scalar"!==n.type})),e=0;e0)){var s=f(/^\{$/,/^\}$/);if(-1===s)continue;for(var u=e;u=0&&b(p,"variable-input")}}}}function l(n){return t[e+n]}function c(n,t){t=t||0;for(var e=0;e=o.length);u++){var g=i[u];if("string"==typeof g||g.content&&"string"==typeof g.content){var l=o[r],s=t.tokenStack[l],f="string"==typeof g?g:g.content,p=n(a,l),k=f.indexOf(p);if(k>-1){++r;var m=f.substring(0,k),d=new e.Token(a,e.tokenize(s,t.grammar),"language-"+a,s),h=f.substring(k+p.length),v=[];m&&v.push.apply(v,c([m])),v.push(d),h&&v.push.apply(v,c([h])),"string"==typeof g?i.splice.apply(i,[u,1].concat(v)):g.content=v}}else g.content&&c(g.content)}return i}(t.tokens)}}}})}(Prism); +!function(a){a.languages.handlebars={comment:/\{\{![\s\S]*?\}\}/,delimiter:{pattern:/^\{\{\{?|\}\}\}?$/,alias:"punctuation"},string:/(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee][+-]?\d+)?/,boolean:/\b(?:false|true)\b/,block:{pattern:/^(\s*(?:~\s*)?)[#\/]\S+?(?=\s*(?:~\s*)?$|\s)/,lookbehind:!0,alias:"keyword"},brackets:{pattern:/\[[^\]]+\]/,inside:{punctuation:/\[|\]/,variable:/[\s\S]+/}},punctuation:/[!"#%&':()*+,.\/;<=>@\[\\\]^`{|}~]/,variable:/[^!"#%&'()*+,\/;<=>@\[\\\]^`{|}~\s]+/},a.hooks.add("before-tokenize",(function(e){a.languages["markup-templating"].buildPlaceholders(e,"handlebars",/\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\}/g)})),a.hooks.add("after-tokenize",(function(e){a.languages["markup-templating"].tokenizePlaceholders(e,"handlebars")})),a.languages.hbs=a.languages.handlebars,a.languages.mustache=a.languages.handlebars}(Prism); +Prism.languages.haskell={comment:{pattern:/(^|[^-!#$%*+=?&@|~.:<>^\\\/])(?:--(?:(?=.)[^-!#$%*+=?&@|~.:<>^\\\/].*|$)|\{-[\s\S]*?-\})/m,lookbehind:!0},char:{pattern:/'(?:[^\\']|\\(?:[abfnrtv\\"'&]|\^[A-Z@[\]^_]|ACK|BEL|BS|CAN|CR|DC1|DC2|DC3|DC4|DEL|DLE|EM|ENQ|EOT|ESC|ETB|ETX|FF|FS|GS|HT|LF|NAK|NUL|RS|SI|SO|SOH|SP|STX|SUB|SYN|US|VT|\d+|o[0-7]+|x[0-9a-fA-F]+))'/,alias:"string"},string:{pattern:/"(?:[^\\"]|\\(?:\S|\s+\\))*"/,greedy:!0},keyword:/\b(?:case|class|data|deriving|do|else|if|in|infixl|infixr|instance|let|module|newtype|of|primitive|then|type|where)\b/,"import-statement":{pattern:/(^[\t ]*)import\s+(?:qualified\s+)?(?:[A-Z][\w']*)(?:\.[A-Z][\w']*)*(?:\s+as\s+(?:[A-Z][\w']*)(?:\.[A-Z][\w']*)*)?(?:\s+hiding\b)?/m,lookbehind:!0,inside:{keyword:/\b(?:as|hiding|import|qualified)\b/,punctuation:/\./}},builtin:/\b(?:abs|acos|acosh|all|and|any|appendFile|approxRational|asTypeOf|asin|asinh|atan|atan2|atanh|basicIORun|break|catch|ceiling|chr|compare|concat|concatMap|const|cos|cosh|curry|cycle|decodeFloat|denominator|digitToInt|div|divMod|drop|dropWhile|either|elem|encodeFloat|enumFrom|enumFromThen|enumFromThenTo|enumFromTo|error|even|exp|exponent|fail|filter|flip|floatDigits|floatRadix|floatRange|floor|fmap|foldl|foldl1|foldr|foldr1|fromDouble|fromEnum|fromInt|fromInteger|fromIntegral|fromRational|fst|gcd|getChar|getContents|getLine|group|head|id|inRange|index|init|intToDigit|interact|ioError|isAlpha|isAlphaNum|isAscii|isControl|isDenormalized|isDigit|isHexDigit|isIEEE|isInfinite|isLower|isNaN|isNegativeZero|isOctDigit|isPrint|isSpace|isUpper|iterate|last|lcm|length|lex|lexDigits|lexLitChar|lines|log|logBase|lookup|map|mapM|mapM_|max|maxBound|maximum|maybe|min|minBound|minimum|mod|negate|not|notElem|null|numerator|odd|or|ord|otherwise|pack|pi|pred|primExitWith|print|product|properFraction|putChar|putStr|putStrLn|quot|quotRem|range|rangeSize|read|readDec|readFile|readFloat|readHex|readIO|readInt|readList|readLitChar|readLn|readOct|readParen|readSigned|reads|readsPrec|realToFrac|recip|rem|repeat|replicate|return|reverse|round|scaleFloat|scanl|scanl1|scanr|scanr1|seq|sequence|sequence_|show|showChar|showInt|showList|showLitChar|showParen|showSigned|showString|shows|showsPrec|significand|signum|sin|sinh|snd|sort|span|splitAt|sqrt|subtract|succ|sum|tail|take|takeWhile|tan|tanh|threadToIOResult|toEnum|toInt|toInteger|toLower|toRational|toUpper|truncate|uncurry|undefined|unlines|until|unwords|unzip|unzip3|userError|words|writeFile|zip|zip3|zipWith|zipWith3)\b/,number:/\b(?:\d+(?:\.\d+)?(?:e[+-]?\d+)?|0o[0-7]+|0x[0-9a-f]+)\b/i,operator:[{pattern:/`(?:[A-Z][\w']*\.)*[_a-z][\w']*`/,greedy:!0},{pattern:/(\s)\.(?=\s)/,lookbehind:!0},/[-!#$%*+=?&@|~:<>^\\\/][-!#$%*+=?&@|~.:<>^\\\/]*|\.[-!#$%*+=?&@|~.:<>^\\\/]+/],hvariable:{pattern:/\b(?:[A-Z][\w']*\.)*[_a-z][\w']*/,inside:{punctuation:/\./}},constant:{pattern:/\b(?:[A-Z][\w']*\.)*[A-Z][\w']*/,inside:{punctuation:/\./}},punctuation:/[{}[\];(),.:]/},Prism.languages.hs=Prism.languages.haskell; +!function(t){function a(t){return RegExp("(^(?:"+t+"):[ \t]*(?![ \t]))[^]+","i")}t.languages.http={"request-line":{pattern:/^(?:CONNECT|DELETE|GET|HEAD|OPTIONS|PATCH|POST|PRI|PUT|SEARCH|TRACE)\s(?:https?:\/\/|\/)\S*\sHTTP\/[\d.]+/m,inside:{method:{pattern:/^[A-Z]+\b/,alias:"property"},"request-target":{pattern:/^(\s)(?:https?:\/\/|\/)\S*(?=\s)/,lookbehind:!0,alias:"url",inside:t.languages.uri},"http-version":{pattern:/^(\s)HTTP\/[\d.]+/,lookbehind:!0,alias:"property"}}},"response-status":{pattern:/^HTTP\/[\d.]+ \d+ .+/m,inside:{"http-version":{pattern:/^HTTP\/[\d.]+/,alias:"property"},"status-code":{pattern:/^(\s)\d+(?=\s)/,lookbehind:!0,alias:"number"},"reason-phrase":{pattern:/^(\s).+/,lookbehind:!0,alias:"string"}}},header:{pattern:/^[\w-]+:.+(?:(?:\r\n?|\n)[ \t].+)*/m,inside:{"header-value":[{pattern:a("Content-Security-Policy"),lookbehind:!0,alias:["csp","languages-csp"],inside:t.languages.csp},{pattern:a("Public-Key-Pins(?:-Report-Only)?"),lookbehind:!0,alias:["hpkp","languages-hpkp"],inside:t.languages.hpkp},{pattern:a("Strict-Transport-Security"),lookbehind:!0,alias:["hsts","languages-hsts"],inside:t.languages.hsts},{pattern:a("[^:]+"),lookbehind:!0}],"header-name":{pattern:/^[^:]+/,alias:"keyword"},punctuation:/^:/}}};var e,n=t.languages,s={"application/javascript":n.javascript,"application/json":n.json||n.javascript,"application/xml":n.xml,"text/xml":n.xml,"text/html":n.html,"text/css":n.css,"text/plain":n.plain},i={"application/json":!0,"application/xml":!0};function r(t){var a=t.replace(/^[a-z]+\//,"");return"(?:"+t+"|\\w+/(?:[\\w.-]+\\+)+"+a+"(?![+\\w.-]))"}for(var p in s)if(s[p]){e=e||{};var l=i[p]?r(p):p;e[p.replace(/\//g,"-")]={pattern:RegExp("(content-type:\\s*"+l+"(?:(?:\r\n?|\n)[\\w-].*)*(?:\r(?:\n|(?!\n))|\n))[^ \t\\w-][^]*","i"),lookbehind:!0,inside:s[p]}}e&&t.languages.insertBefore("http","header",e)}(Prism); +!function(n){n.languages.ignore={comment:/^#.*/m,entry:{pattern:/\S(?:.*(?:(?:\\ )|\S))?/,alias:"string",inside:{operator:/^!|\*\*?|\?/,regex:{pattern:/(^|[^\\])\[[^\[\]]*\]/,lookbehind:!0},punctuation:/\//}}},n.languages.gitignore=n.languages.ignore,n.languages.hgignore=n.languages.ignore,n.languages.npmignore=n.languages.ignore}(Prism); +!function(e){var n=/\b(?:abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|exports|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|module|native|new|non-sealed|null|open|opens|package|permits|private|protected|provides|public|record(?!\s*[(){}[\]<>=%~.:,;?+\-*/&|^])|requires|return|sealed|short|static|strictfp|super|switch|synchronized|this|throw|throws|to|transient|transitive|try|uses|var|void|volatile|while|with|yield)\b/,t="(?:[a-z]\\w*\\s*\\.\\s*)*(?:[A-Z]\\w*\\s*\\.\\s*)*",s={pattern:RegExp("(^|[^\\w.])"+t+"[A-Z](?:[\\d_A-Z]*[a-z]\\w*)?\\b"),lookbehind:!0,inside:{namespace:{pattern:/^[a-z]\w*(?:\s*\.\s*[a-z]\w*)*(?:\s*\.)?/,inside:{punctuation:/\./}},punctuation:/\./}};e.languages.java=e.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"/,lookbehind:!0,greedy:!0},"class-name":[s,{pattern:RegExp("(^|[^\\w.])"+t+"[A-Z]\\w*(?=\\s+\\w+\\s*[;,=()]|\\s*(?:\\[[\\s,]*\\]\\s*)?::\\s*new\\b)"),lookbehind:!0,inside:s.inside},{pattern:RegExp("(\\b(?:class|enum|extends|implements|instanceof|interface|new|record|throws)\\s+)"+t+"[A-Z]\\w*\\b"),lookbehind:!0,inside:s.inside}],keyword:n,function:[e.languages.clike.function,{pattern:/(::\s*)[a-z_]\w*/,lookbehind:!0}],number:/\b0b[01][01_]*L?\b|\b0x(?:\.[\da-f_p+-]+|[\da-f_]+(?:\.[\da-f_p+-]+)?)\b|(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?\d[\d_]*)?[dfl]?/i,operator:{pattern:/(^|[^.])(?:<<=?|>>>?=?|->|--|\+\+|&&|\|\||::|[?:~]|[-+*/%&|^!=<>]=?)/m,lookbehind:!0},constant:/\b[A-Z][A-Z_\d]+\b/}),e.languages.insertBefore("java","string",{"triple-quoted-string":{pattern:/"""[ \t]*[\r\n](?:(?:"|"")?(?:\\.|[^"\\]))*"""/,greedy:!0,alias:"string"},char:{pattern:/'(?:\\.|[^'\\\r\n]){1,6}'/,greedy:!0}}),e.languages.insertBefore("java","class-name",{annotation:{pattern:/(^|[^.])@\w+(?:\s*\.\s*\w+)*/,lookbehind:!0,alias:"punctuation"},generics:{pattern:/<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&))*>)*>)*>)*>/,inside:{"class-name":s,keyword:n,punctuation:/[<>(),.:]/,operator:/[?&|]/}},import:[{pattern:RegExp("(\\bimport\\s+)"+t+"(?:[A-Z]\\w*|\\*)(?=\\s*;)"),lookbehind:!0,inside:{namespace:s.inside.namespace,punctuation:/\./,operator:/\*/,"class-name":/\w+/}},{pattern:RegExp("(\\bimport\\s+static\\s+)"+t+"(?:\\w+|\\*)(?=\\s*;)"),lookbehind:!0,alias:"static",inside:{namespace:s.inside.namespace,static:/\b\w+$/,punctuation:/\./,operator:/\*/,"class-name":/\w+/}}],namespace:{pattern:RegExp("(\\b(?:exports|import(?:\\s+static)?|module|open|opens|package|provides|requires|to|transitive|uses|with)\\s+)(?!)[a-z]\\w*(?:\\.[a-z]\\w*)*\\.?".replace(//g,(function(){return n.source}))),lookbehind:!0,inside:{punctuation:/\./}}})}(Prism); +Prism.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},Prism.languages.webmanifest=Prism.languages.json; +!function(n){n.languages.kotlin=n.languages.extend("clike",{keyword:{pattern:/(^|[^.])\b(?:abstract|actual|annotation|as|break|by|catch|class|companion|const|constructor|continue|crossinline|data|do|dynamic|else|enum|expect|external|final|finally|for|fun|get|if|import|in|infix|init|inline|inner|interface|internal|is|lateinit|noinline|null|object|open|operator|out|override|package|private|protected|public|reified|return|sealed|set|super|suspend|tailrec|this|throw|to|try|typealias|val|var|vararg|when|where|while)\b/,lookbehind:!0},function:[{pattern:/(?:`[^\r\n`]+`|\b\w+)(?=\s*\()/,greedy:!0},{pattern:/(\.)(?:`[^\r\n`]+`|\w+)(?=\s*\{)/,lookbehind:!0,greedy:!0}],number:/\b(?:0[xX][\da-fA-F]+(?:_[\da-fA-F]+)*|0[bB][01]+(?:_[01]+)*|\d+(?:_\d+)*(?:\.\d+(?:_\d+)*)?(?:[eE][+-]?\d+(?:_\d+)*)?[fFL]?)\b/,operator:/\+[+=]?|-[-=>]?|==?=?|!(?:!|==?)?|[\/*%<>]=?|[?:]:?|\.\.|&&|\|\||\b(?:and|inv|or|shl|shr|ushr|xor)\b/}),delete n.languages.kotlin["class-name"];var e={"interpolation-punctuation":{pattern:/^\$\{?|\}$/,alias:"punctuation"},expression:{pattern:/[\s\S]+/,inside:n.languages.kotlin}};n.languages.insertBefore("kotlin","string",{"string-literal":[{pattern:/"""(?:[^$]|\$(?:(?!\{)|\{[^{}]*\}))*?"""/,alias:"multiline",inside:{interpolation:{pattern:/\$(?:[a-z_]\w*|\{[^{}]*\})/i,inside:e},string:/[\s\S]+/}},{pattern:/"(?:[^"\\\r\n$]|\\.|\$(?:(?!\{)|\{[^{}]*\}))*"/,alias:"singleline",inside:{interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$(?:[a-z_]\w*|\{[^{}]*\})/i,lookbehind:!0,inside:e},string:/[\s\S]+/}}],char:{pattern:/'(?:[^'\\\r\n]|\\(?:.|u[a-fA-F0-9]{0,4}))'/,greedy:!0}}),delete n.languages.kotlin.string,n.languages.insertBefore("kotlin","keyword",{annotation:{pattern:/\B@(?:\w+:)?(?:[A-Z]\w*|\[[^\]]+\])/,alias:"builtin"}}),n.languages.insertBefore("kotlin","function",{label:{pattern:/\b\w+@|@\w+\b/,alias:"symbol"}}),n.languages.kt=n.languages.kotlin,n.languages.kts=n.languages.kotlin}(Prism); +Prism.languages.less=Prism.languages.extend("css",{comment:[/\/\*[\s\S]*?\*\//,{pattern:/(^|[^\\])\/\/.*/,lookbehind:!0}],atrule:{pattern:/@[\w-](?:\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{punctuation:/[:()]/}},selector:{pattern:/(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};@\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{variable:/@+[\w-]+/}},property:/(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/,operator:/[+\-*\/]/}),Prism.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-].*?(?=[(;])/,lookbehind:!0,alias:"function"}}); +!function(n){function e(n){return n=n.replace(//g,(function(){return"(?:\\\\.|[^\\\\\n\r]|(?:\n|\r\n?)(?![\r\n]))"})),RegExp("((?:^|[^\\\\])(?:\\\\{2})*)(?:"+n+")")}var t="(?:\\\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\\\|\r\n`])+",a="\\|?__(?:\\|__)+\\|?(?:(?:\n|\r\n?)|(?![^]))".replace(/__/g,(function(){return t})),i="\\|?[ \t]*:?-{3,}:?[ \t]*(?:\\|[ \t]*:?-{3,}:?[ \t]*)+\\|?(?:\n|\r\n?)";n.languages.markdown=n.languages.extend("markup",{}),n.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:n.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+a+i+"(?:"+a+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+a+i+")(?:"+a+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(t),inside:n.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+a+")"+i+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+a+"$"),inside:{"table-header":{pattern:RegExp(t),alias:"important",inside:n.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:e("\\b__(?:(?!_)|_(?:(?!_))+_)+__\\b|\\*\\*(?:(?!\\*)|\\*(?:(?!\\*))+\\*)+\\*\\*"),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:e("\\b_(?:(?!_)|__(?:(?!_))+__)+_\\b|\\*(?:(?!\\*)|\\*\\*(?:(?!\\*))+\\*\\*)+\\*"),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:e("(~~?)(?:(?!~))+\\2"),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:e('!?\\[(?:(?!\\]))+\\](?:\\([^\\s)]+(?:[\t ]+"(?:\\\\.|[^"\\\\])*")?\\)|[ \t]?\\[(?:(?!\\]))+\\])'),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach((function(e){["url","bold","italic","strike","code-snippet"].forEach((function(t){e!==t&&(n.languages.markdown[e].inside.content.inside[t]=n.languages.markdown[t])}))})),n.hooks.add("after-tokenize",(function(n){"markdown"!==n.language&&"md"!==n.language||function n(e){if(e&&"string"!=typeof e)for(var t=0,a=e.length;t",quot:'"'},l=String.fromCodePoint||String.fromCharCode;n.languages.md=n.languages.markdown}(Prism); +!function(e){var n=/\$(?:\w[a-z\d]*(?:_[^\x00-\x1F\s"'\\()$]*)?|\{[^}\s"'\\]+\})/i;e.languages.nginx={comment:{pattern:/(^|[\s{};])#.*/,lookbehind:!0,greedy:!0},directive:{pattern:/(^|\s)\w(?:[^;{}"'\\\s]|\\.|"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*'|\s+(?:#.*(?!.)|(?![#\s])))*?(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:{string:{pattern:/((?:^|[^\\])(?:\\\\)*)(?:"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*')/,lookbehind:!0,greedy:!0,inside:{escape:{pattern:/\\["'\\nrt]/,alias:"entity"},variable:n}},comment:{pattern:/(\s)#.*/,lookbehind:!0,greedy:!0},keyword:{pattern:/^\S+/,greedy:!0},boolean:{pattern:/(\s)(?:off|on)(?!\S)/,lookbehind:!0},number:{pattern:/(\s)\d+[a-z]*(?!\S)/i,lookbehind:!0},variable:n}},punctuation:/[{};]/}}(Prism); +!function(e){var a=/\/\*[\s\S]*?\*\/|\/\/.*|#(?!\[).*/,t=[{pattern:/\b(?:false|true)\b/i,alias:"boolean"},{pattern:/(::\s*)\b[a-z_]\w*\b(?!\s*\()/i,greedy:!0,lookbehind:!0},{pattern:/(\b(?:case|const)\s+)\b[a-z_]\w*(?=\s*[;=])/i,greedy:!0,lookbehind:!0},/\b(?:null)\b/i,/\b[A-Z_][A-Z0-9_]*\b(?!\s*\()/],i=/\b0b[01]+(?:_[01]+)*\b|\b0o[0-7]+(?:_[0-7]+)*\b|\b0x[\da-f]+(?:_[\da-f]+)*\b|(?:\b\d+(?:_\d+)*\.?(?:\d+(?:_\d+)*)?|\B\.\d+)(?:e[+-]?\d+)?/i,n=/|\?\?=?|\.{3}|\??->|[!=]=?=?|::|\*\*=?|--|\+\+|&&|\|\||<<|>>|[?~]|[/^|%*&<>.+-]=?/,s=/[{}\[\](),:;]/;e.languages.php={delimiter:{pattern:/\?>$|^<\?(?:php(?=\s)|=)?/i,alias:"important"},comment:a,variable:/\$+(?:\w+\b|(?=\{))/,package:{pattern:/(namespace\s+|use\s+(?:function\s+)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,lookbehind:!0,inside:{punctuation:/\\/}},"class-name-definition":{pattern:/(\b(?:class|enum|interface|trait)\s+)\b[a-z_]\w*(?!\\)\b/i,lookbehind:!0,alias:"class-name"},"function-definition":{pattern:/(\bfunction\s+)[a-z_]\w*(?=\s*\()/i,lookbehind:!0,alias:"function"},keyword:[{pattern:/(\(\s*)\b(?:array|bool|boolean|float|int|integer|object|string)\b(?=\s*\))/i,alias:"type-casting",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*)\b(?:array(?!\s*\()|bool|callable|(?:false|null)(?=\s*\|)|float|int|iterable|mixed|object|self|static|string)\b(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?)\b(?:array(?!\s*\()|bool|callable|(?:false|null)(?=\s*\|)|float|int|iterable|mixed|never|object|self|static|string|void)\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/\b(?:array(?!\s*\()|bool|float|int|iterable|mixed|object|string|void)\b/i,alias:"type-declaration",greedy:!0},{pattern:/(\|\s*)(?:false|null)\b|\b(?:false|null)(?=\s*\|)/i,alias:"type-declaration",greedy:!0,lookbehind:!0},{pattern:/\b(?:parent|self|static)(?=\s*::)/i,alias:"static-context",greedy:!0},{pattern:/(\byield\s+)from\b/i,lookbehind:!0},/\bclass\b/i,{pattern:/((?:^|[^\s>:]|(?:^|[^-])>|(?:^|[^:]):)\s*)\b(?:abstract|and|array|as|break|callable|case|catch|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|enum|eval|exit|extends|final|finally|fn|for|foreach|function|global|goto|if|implements|include|include_once|instanceof|insteadof|interface|isset|list|match|namespace|never|new|or|parent|print|private|protected|public|readonly|require|require_once|return|self|static|switch|throw|trait|try|unset|use|var|while|xor|yield|__halt_compiler)\b/i,lookbehind:!0}],"argument-name":{pattern:/([(,]\s*)\b[a-z_]\w*(?=\s*:(?!:))/i,lookbehind:!0},"class-name":[{pattern:/(\b(?:extends|implements|instanceof|new(?!\s+self|\s+static))\s+|\bcatch\s*\()\b[a-z_]\w*(?!\\)\b/i,greedy:!0,lookbehind:!0},{pattern:/(\|\s*)\b[a-z_]\w*(?!\\)\b/i,greedy:!0,lookbehind:!0},{pattern:/\b[a-z_]\w*(?!\\)\b(?=\s*\|)/i,greedy:!0},{pattern:/(\|\s*)(?:\\?\b[a-z_]\w*)+\b/i,alias:"class-name-fully-qualified",greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/(?:\\?\b[a-z_]\w*)+\b(?=\s*\|)/i,alias:"class-name-fully-qualified",greedy:!0,inside:{punctuation:/\\/}},{pattern:/(\b(?:extends|implements|instanceof|new(?!\s+self\b|\s+static\b))\s+|\bcatch\s*\()(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,alias:"class-name-fully-qualified",greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/\b[a-z_]\w*(?=\s*\$)/i,alias:"type-declaration",greedy:!0},{pattern:/(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,alias:["class-name-fully-qualified","type-declaration"],greedy:!0,inside:{punctuation:/\\/}},{pattern:/\b[a-z_]\w*(?=\s*::)/i,alias:"static-context",greedy:!0},{pattern:/(?:\\?\b[a-z_]\w*)+(?=\s*::)/i,alias:["class-name-fully-qualified","static-context"],greedy:!0,inside:{punctuation:/\\/}},{pattern:/([(,?]\s*)[a-z_]\w*(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*)(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,alias:["class-name-fully-qualified","type-hint"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/(\)\s*:\s*(?:\?\s*)?)\b[a-z_]\w*(?!\\)\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,alias:["class-name-fully-qualified","return-type"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}}],constant:t,function:{pattern:/(^|[^\\\w])\\?[a-z_](?:[\w\\]*\w)?(?=\s*\()/i,lookbehind:!0,inside:{punctuation:/\\/}},property:{pattern:/(->\s*)\w+/,lookbehind:!0},number:i,operator:n,punctuation:s};var l={pattern:/\{\$(?:\{(?:\{[^{}]+\}|[^{}]+)\}|[^{}])+\}|(^|[^\\{])\$+(?:\w+(?:\[[^\r\n\[\]]+\]|->\w+)?)/,lookbehind:!0,inside:e.languages.php},r=[{pattern:/<<<'([^']+)'[\r\n](?:.*[\r\n])*?\1;/,alias:"nowdoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<<'[^']+'|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<'?|[';]$/}}}},{pattern:/<<<(?:"([^"]+)"[\r\n](?:.*[\r\n])*?\1;|([a-z_]\w*)[\r\n](?:.*[\r\n])*?\2;)/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<<(?:"[^"]+"|[a-z_]\w*)|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<"?|[";]$/}},interpolation:l}},{pattern:/`(?:\\[\s\S]|[^\\`])*`/,alias:"backtick-quoted-string",greedy:!0},{pattern:/'(?:\\[\s\S]|[^\\'])*'/,alias:"single-quoted-string",greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,alias:"double-quoted-string",greedy:!0,inside:{interpolation:l}}];e.languages.insertBefore("php","variable",{string:r,attribute:{pattern:/#\[(?:[^"'\/#]|\/(?![*/])|\/\/.*$|#(?!\[).*$|\/\*(?:[^*]|\*(?!\/))*\*\/|"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*')+\](?=\s*[a-z$#])/im,greedy:!0,inside:{"attribute-content":{pattern:/^(#\[)[\s\S]+(?=\]$)/,lookbehind:!0,inside:{comment:a,string:r,"attribute-class-name":[{pattern:/([^:]|^)\b[a-z_]\w*(?!\\)\b/i,alias:"class-name",greedy:!0,lookbehind:!0},{pattern:/([^:]|^)(?:\\?\b[a-z_]\w*)+/i,alias:["class-name","class-name-fully-qualified"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}}],constant:t,number:i,operator:n,punctuation:s}},delimiter:{pattern:/^#\[|\]$/,alias:"punctuation"}}}}),e.hooks.add("before-tokenize",(function(a){/<\?/.test(a.code)&&e.languages["markup-templating"].buildPlaceholders(a,"php",/<\?(?:[^"'/#]|\/(?![*/])|("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|(?:\/\/|#(?!\[))(?:[^?\n\r]|\?(?!>))*(?=$|\?>|[\r\n])|#\[|\/\*(?:[^*]|\*(?!\/))*(?:\*\/|$))*?(?:\?>|$)/g)})),e.hooks.add("after-tokenize",(function(a){e.languages["markup-templating"].tokenizePlaceholders(a,"php")}))}(Prism); +!function(e){var i=e.languages.powershell={comment:[{pattern:/(^|[^`])<#[\s\S]*?#>/,lookbehind:!0},{pattern:/(^|[^`])#.*/,lookbehind:!0}],string:[{pattern:/"(?:`[\s\S]|[^`"])*"/,greedy:!0,inside:null},{pattern:/'(?:[^']|'')*'/,greedy:!0}],namespace:/\[[a-z](?:\[(?:\[[^\]]*\]|[^\[\]])*\]|[^\[\]])*\]/i,boolean:/\$(?:false|true)\b/i,variable:/\$\w+\b/,function:[/\b(?:Add|Approve|Assert|Backup|Block|Checkpoint|Clear|Close|Compare|Complete|Compress|Confirm|Connect|Convert|ConvertFrom|ConvertTo|Copy|Debug|Deny|Disable|Disconnect|Dismount|Edit|Enable|Enter|Exit|Expand|Export|Find|ForEach|Format|Get|Grant|Group|Hide|Import|Initialize|Install|Invoke|Join|Limit|Lock|Measure|Merge|Move|New|Open|Optimize|Out|Ping|Pop|Protect|Publish|Push|Read|Receive|Redo|Register|Remove|Rename|Repair|Request|Reset|Resize|Resolve|Restart|Restore|Resume|Revoke|Save|Search|Select|Send|Set|Show|Skip|Sort|Split|Start|Step|Stop|Submit|Suspend|Switch|Sync|Tee|Test|Trace|Unblock|Undo|Uninstall|Unlock|Unprotect|Unpublish|Unregister|Update|Use|Wait|Watch|Where|Write)-[a-z]+\b/i,/\b(?:ac|cat|chdir|clc|cli|clp|clv|compare|copy|cp|cpi|cpp|cvpa|dbp|del|diff|dir|ebp|echo|epal|epcsv|epsn|erase|fc|fl|ft|fw|gal|gbp|gc|gci|gcs|gdr|gi|gl|gm|gp|gps|group|gsv|gu|gv|gwmi|iex|ii|ipal|ipcsv|ipsn|irm|iwmi|iwr|kill|lp|ls|measure|mi|mount|move|mp|mv|nal|ndr|ni|nv|ogv|popd|ps|pushd|pwd|rbp|rd|rdr|ren|ri|rm|rmdir|rni|rnp|rp|rv|rvpa|rwmi|sal|saps|sasv|sbp|sc|select|set|shcm|si|sl|sleep|sls|sort|sp|spps|spsv|start|sv|swmi|tee|trcm|type|write)\b/i],keyword:/\b(?:Begin|Break|Catch|Class|Continue|Data|Define|Do|DynamicParam|Else|ElseIf|End|Exit|Filter|Finally|For|ForEach|From|Function|If|InlineScript|Parallel|Param|Process|Return|Sequence|Switch|Throw|Trap|Try|Until|Using|Var|While|Workflow)\b/i,operator:{pattern:/(^|\W)(?:!|-(?:b?(?:and|x?or)|as|(?:Not)?(?:Contains|In|Like|Match)|eq|ge|gt|is(?:Not)?|Join|le|lt|ne|not|Replace|sh[lr])\b|-[-=]?|\+[+=]?|[*\/%]=?)/i,lookbehind:!0},punctuation:/[|{}[\];(),.]/};i.string[0].inside={function:{pattern:/(^|[^`])\$\((?:\$\([^\r\n()]*\)|(?!\$\()[^\r\n)])*\)/,lookbehind:!0,inside:i},boolean:i.boolean,variable:i.variable}}(Prism); +!function(e){e.languages.ruby=e.languages.extend("clike",{comment:{pattern:/#.*|^=begin\s[\s\S]*?^=end/m,greedy:!0},"class-name":{pattern:/(\b(?:class|module)\s+|\bcatch\s+\()[\w.\\]+|\b[A-Z_]\w*(?=\s*\.\s*new\b)/,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:BEGIN|END|alias|and|begin|break|case|class|def|define_method|defined|do|each|else|elsif|end|ensure|extend|for|if|in|include|module|new|next|nil|not|or|prepend|private|protected|public|raise|redo|require|rescue|retry|return|self|super|then|throw|undef|unless|until|when|while|yield)\b/,operator:/\.{2,3}|&\.|===||[!=]?~|(?:&&|\|\||<<|>>|\*\*|[+\-*/%<>!^&|=])=?|[?:]/,punctuation:/[(){}[\].,;]/}),e.languages.insertBefore("ruby","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}});var n={pattern:/((?:^|[^\\])(?:\\{2})*)#\{(?:[^{}]|\{[^{}]*\})*\}/,lookbehind:!0,inside:{content:{pattern:/^(#\{)[\s\S]+(?=\}$)/,lookbehind:!0,inside:e.languages.ruby},delimiter:{pattern:/^#\{|\}$/,alias:"punctuation"}}};delete e.languages.ruby.function;var t="(?:"+["([^a-zA-Z0-9\\s{(\\[<=])(?:(?!\\1)[^\\\\]|\\\\[^])*\\1","\\((?:[^()\\\\]|\\\\[^]|\\((?:[^()\\\\]|\\\\[^])*\\))*\\)","\\{(?:[^{}\\\\]|\\\\[^]|\\{(?:[^{}\\\\]|\\\\[^])*\\})*\\}","\\[(?:[^\\[\\]\\\\]|\\\\[^]|\\[(?:[^\\[\\]\\\\]|\\\\[^])*\\])*\\]","<(?:[^<>\\\\]|\\\\[^]|<(?:[^<>\\\\]|\\\\[^])*>)*>"].join("|")+")",i='(?:"(?:\\\\.|[^"\\\\\r\n])*"|(?:\\b[a-zA-Z_]\\w*|[^\\s\0-\\x7F]+)[?!]?|\\$.)';e.languages.insertBefore("ruby","keyword",{"regex-literal":[{pattern:RegExp("%r"+t+"[egimnosux]{0,6}"),greedy:!0,inside:{interpolation:n,regex:/[\s\S]+/}},{pattern:/(^|[^/])\/(?!\/)(?:\[[^\r\n\]]+\]|\\.|[^[/\\\r\n])+\/[egimnosux]{0,6}(?=\s*(?:$|[\r\n,.;})#]))/,lookbehind:!0,greedy:!0,inside:{interpolation:n,regex:/[\s\S]+/}}],variable:/[@$]+[a-zA-Z_]\w*(?:[?!]|\b)/,symbol:[{pattern:RegExp("(^|[^:]):"+i),lookbehind:!0,greedy:!0},{pattern:RegExp("([\r\n{(,][ \t]*)"+i+"(?=:(?!:))"),lookbehind:!0,greedy:!0}],"method-definition":{pattern:/(\bdef\s+)\w+(?:\s*\.\s*\w+)?/,lookbehind:!0,inside:{function:/\b\w+$/,keyword:/^self\b/,"class-name":/^\w+/,punctuation:/\./}}}),e.languages.insertBefore("ruby","string",{"string-literal":[{pattern:RegExp("%[qQiIwWs]?"+t),greedy:!0,inside:{interpolation:n,string:/[\s\S]+/}},{pattern:/("|')(?:#\{[^}]+\}|#(?!\{)|\\(?:\r\n|[\s\S])|(?!\1)[^\\#\r\n])*\1/,greedy:!0,inside:{interpolation:n,string:/[\s\S]+/}},{pattern:/<<[-~]?([a-z_]\w*)[\r\n](?:.*[\r\n])*?[\t ]*\1/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<[-~]?[a-z_]\w*|\b[a-z_]\w*$/i,inside:{symbol:/\b\w+/,punctuation:/^<<[-~]?/}},interpolation:n,string:/[\s\S]+/}},{pattern:/<<[-~]?'([a-z_]\w*)'[\r\n](?:.*[\r\n])*?[\t ]*\1/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<[-~]?'[a-z_]\w*'|\b[a-z_]\w*$/i,inside:{symbol:/\b\w+/,punctuation:/^<<[-~]?'|'$/}},string:/[\s\S]+/}}],"command-literal":[{pattern:RegExp("%x"+t),greedy:!0,inside:{interpolation:n,command:{pattern:/[\s\S]+/,alias:"string"}}},{pattern:/`(?:#\{[^}]+\}|#(?!\{)|\\(?:\r\n|[\s\S])|[^\\`#\r\n])*`/,greedy:!0,inside:{interpolation:n,command:{pattern:/[\s\S]+/,alias:"string"}}}]}),delete e.languages.ruby.string,e.languages.insertBefore("ruby","number",{builtin:/\b(?:Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Fixnum|Float|Hash|IO|Integer|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|Stat|String|Struct|Symbol|TMS|Thread|ThreadGroup|Time|TrueClass)\b/,constant:/\b[A-Z][A-Z0-9_]*(?:[?!]|\b)/}),e.languages.rb=e.languages.ruby}(Prism); +!function(e){for(var a="/\\*(?:[^*/]|\\*(?!/)|/(?!\\*)|)*\\*/",t=0;t<2;t++)a=a.replace(//g,(function(){return a}));a=a.replace(//g,(function(){return"[^\\s\\S]"})),e.languages.rust={comment:[{pattern:RegExp("(^|[^\\\\])"+a),lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/b?"(?:\\[\s\S]|[^\\"])*"|b?r(#*)"(?:[^"]|"(?!\1))*"\1/,greedy:!0},char:{pattern:/b?'(?:\\(?:x[0-7][\da-fA-F]|u\{(?:[\da-fA-F]_*){1,6}\}|.)|[^\\\r\n\t'])'/,greedy:!0},attribute:{pattern:/#!?\[(?:[^\[\]"]|"(?:\\[\s\S]|[^\\"])*")*\]/,greedy:!0,alias:"attr-name",inside:{string:null}},"closure-params":{pattern:/([=(,:]\s*|\bmove\s*)\|[^|]*\||\|[^|]*\|(?=\s*(?:\{|->))/,lookbehind:!0,greedy:!0,inside:{"closure-punctuation":{pattern:/^\||\|$/,alias:"punctuation"},rest:null}},"lifetime-annotation":{pattern:/'\w+/,alias:"symbol"},"fragment-specifier":{pattern:/(\$\w+:)[a-z]+/,lookbehind:!0,alias:"punctuation"},variable:/\$\w+/,"function-definition":{pattern:/(\bfn\s+)\w+/,lookbehind:!0,alias:"function"},"type-definition":{pattern:/(\b(?:enum|struct|trait|type|union)\s+)\w+/,lookbehind:!0,alias:"class-name"},"module-declaration":[{pattern:/(\b(?:crate|mod)\s+)[a-z][a-z_\d]*/,lookbehind:!0,alias:"namespace"},{pattern:/(\b(?:crate|self|super)\s*)::\s*[a-z][a-z_\d]*\b(?:\s*::(?:\s*[a-z][a-z_\d]*\s*::)*)?/,lookbehind:!0,alias:"namespace",inside:{punctuation:/::/}}],keyword:[/\b(?:Self|abstract|as|async|await|become|box|break|const|continue|crate|do|dyn|else|enum|extern|final|fn|for|if|impl|in|let|loop|macro|match|mod|move|mut|override|priv|pub|ref|return|self|static|struct|super|trait|try|type|typeof|union|unsafe|unsized|use|virtual|where|while|yield)\b/,/\b(?:bool|char|f(?:32|64)|[ui](?:8|16|32|64|128|size)|str)\b/],function:/\b[a-z_]\w*(?=\s*(?:::\s*<|\())/,macro:{pattern:/\b\w+!/,alias:"property"},constant:/\b[A-Z_][A-Z_\d]+\b/,"class-name":/\b[A-Z]\w*\b/,namespace:{pattern:/(?:\b[a-z][a-z_\d]*\s*::\s*)*\b[a-z][a-z_\d]*\s*::(?!\s*<)/,inside:{punctuation:/::/}},number:/\b(?:0x[\dA-Fa-f](?:_?[\dA-Fa-f])*|0o[0-7](?:_?[0-7])*|0b[01](?:_?[01])*|(?:(?:\d(?:_?\d)*)?\.)?\d(?:_?\d)*(?:[Ee][+-]?\d+)?)(?:_?(?:f32|f64|[iu](?:8|16|32|64|size)?))?\b/,boolean:/\b(?:false|true)\b/,punctuation:/->|\.\.=|\.{1,3}|::|[{}[\];(),:]/,operator:/[-+*\/%!^]=?|=[=>]?|&[&=]?|\|[|=]?|<>?=?|[@?]/},e.languages.rust["closure-params"].inside.rest=e.languages.rust,e.languages.rust.attribute.inside.string=e.languages.rust.string}(Prism); +!function(e){e.languages.sass=e.languages.extend("css",{comment:{pattern:/^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t].+)*/m,lookbehind:!0,greedy:!0}}),e.languages.insertBefore("sass","atrule",{"atrule-line":{pattern:/^(?:[ \t]*)[@+=].+/m,greedy:!0,inside:{atrule:/(?:@[\w-]+|[+=])/}}}),delete e.languages.sass.atrule;var r=/\$[-\w]+|#\{\$[-\w]+\}/,t=[/[+*\/%]|[=!]=|<=?|>=?|\b(?:and|not|or)\b/,{pattern:/(\s)-(?=\s)/,lookbehind:!0}];e.languages.insertBefore("sass","property",{"variable-line":{pattern:/^[ \t]*\$.+/m,greedy:!0,inside:{punctuation:/:/,variable:r,operator:t}},"property-line":{pattern:/^[ \t]*(?:[^:\s]+ *:.*|:[^:\s].*)/m,greedy:!0,inside:{property:[/[^:\s]+(?=\s*:)/,{pattern:/(:)[^:\s]+/,lookbehind:!0}],punctuation:/:/,variable:r,operator:t,important:e.languages.sass.important}}}),delete e.languages.sass.property,delete e.languages.sass.important,e.languages.insertBefore("sass","punctuation",{selector:{pattern:/^([ \t]*)\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*)*/m,lookbehind:!0,greedy:!0}})}(Prism); +Prism.languages.scss=Prism.languages.extend("css",{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},atrule:{pattern:/@[\w-](?:\([^()]+\)|[^()\s]|\s+(?!\s))*?(?=\s+[{;])/,inside:{rule:/@[\w-]+/}},url:/(?:[-a-z]+-)?url(?=\()/i,selector:{pattern:/(?=\S)[^@;{}()]?(?:[^@;{}()\s]|\s+(?!\s)|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}][^:{}]*[:{][^}]))/,inside:{parent:{pattern:/&/,alias:"important"},placeholder:/%[-\w]+/,variable:/\$[-\w]+|#\{\$[-\w]+\}/}},property:{pattern:/(?:[-\w]|\$[-\w]|#\{\$[-\w]+\})+(?=\s*:)/,inside:{variable:/\$[-\w]+|#\{\$[-\w]+\}/}}}),Prism.languages.insertBefore("scss","atrule",{keyword:[/@(?:content|debug|each|else(?: if)?|extend|for|forward|function|if|import|include|mixin|return|use|warn|while)\b/i,{pattern:/( )(?:from|through)(?= )/,lookbehind:!0}]}),Prism.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),Prism.languages.insertBefore("scss","function",{"module-modifier":{pattern:/\b(?:as|hide|show|with)\b/i,alias:"keyword"},placeholder:{pattern:/%[-\w]+/,alias:"selector"},statement:{pattern:/\B!(?:default|optional)\b/i,alias:"keyword"},boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"},operator:{pattern:/(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|not|or)(?=\s)/,lookbehind:!0}}),Prism.languages.scss.atrule.inside.rest=Prism.languages.scss; +Prism.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},variable:[{pattern:/@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,greedy:!0},/@[\w.$]+/],string:{pattern:/(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/,greedy:!0,lookbehind:!0},identifier:{pattern:/(^|[^@\\])`(?:\\[\s\S]|[^`\\]|``)*`/,greedy:!0,lookbehind:!0,inside:{punctuation:/^`|`$/}},function:/\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:COL|_INSERT)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:ING|S)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i,boolean:/\b(?:FALSE|NULL|TRUE)\b/i,number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i,operator:/[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/}; +Prism.languages.swift={comment:{pattern:/(^|[^\\:])(?:\/\/.*|\/\*(?:[^/*]|\/(?!\*)|\*(?!\/)|\/\*(?:[^*]|\*(?!\/))*\*\/)*\*\/)/,lookbehind:!0,greedy:!0},"string-literal":[{pattern:RegExp('(^|[^"#])(?:"(?:\\\\(?:\\((?:[^()]|\\([^()]*\\))*\\)|\r\n|[^(])|[^\\\\\r\n"])*"|"""(?:\\\\(?:\\((?:[^()]|\\([^()]*\\))*\\)|[^(])|[^\\\\"]|"(?!""))*""")(?!["#])'),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\\($/,alias:"punctuation"},punctuation:/\\(?=[\r\n])/,string:/[\s\S]+/}},{pattern:RegExp('(^|[^"#])(#+)(?:"(?:\\\\(?:#+\\((?:[^()]|\\([^()]*\\))*\\)|\r\n|[^#])|[^\\\\\r\n])*?"|"""(?:\\\\(?:#+\\((?:[^()]|\\([^()]*\\))*\\)|[^#])|[^\\\\])*?""")\\2'),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\#+\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\#+\($/,alias:"punctuation"},string:/[\s\S]+/}}],directive:{pattern:RegExp("#(?:(?:elseif|if)\\b(?:[ \t]*(?:![ \t]*)?(?:\\b\\w+\\b(?:[ \t]*\\((?:[^()]|\\([^()]*\\))*\\))?|\\((?:[^()]|\\([^()]*\\))*\\))(?:[ \t]*(?:&&|\\|\\|))?)+|(?:else|endif)\\b)"),alias:"property",inside:{"directive-name":/^#\w+/,boolean:/\b(?:false|true)\b/,number:/\b\d+(?:\.\d+)*\b/,operator:/!|&&|\|\||[<>]=?/,punctuation:/[(),]/}},literal:{pattern:/#(?:colorLiteral|column|dsohandle|file(?:ID|Literal|Path)?|function|imageLiteral|line)\b/,alias:"constant"},"other-directive":{pattern:/#\w+\b/,alias:"property"},attribute:{pattern:/@\w+/,alias:"atrule"},"function-definition":{pattern:/(\bfunc\s+)\w+/,lookbehind:!0,alias:"function"},label:{pattern:/\b(break|continue)\s+\w+|\b[a-zA-Z_]\w*(?=\s*:\s*(?:for|repeat|while)\b)/,lookbehind:!0,alias:"important"},keyword:/\b(?:Any|Protocol|Self|Type|actor|as|assignment|associatedtype|associativity|async|await|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic|else|enum|extension|fallthrough|fileprivate|final|for|func|get|guard|higherThan|if|import|in|indirect|infix|init|inout|internal|is|isolated|lazy|left|let|lowerThan|mutating|none|nonisolated|nonmutating|open|operator|optional|override|postfix|precedencegroup|prefix|private|protocol|public|repeat|required|rethrows|return|right|safe|self|set|some|static|struct|subscript|super|switch|throw|throws|try|typealias|unowned|unsafe|var|weak|where|while|willSet)\b/,boolean:/\b(?:false|true)\b/,nil:{pattern:/\bnil\b/,alias:"constant"},"short-argument":/\$\d+\b/,omit:{pattern:/\b_\b/,alias:"keyword"},number:/\b(?:[\d_]+(?:\.[\de_]+)?|0x[a-f0-9_]+(?:\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\b/i,"class-name":/\b[A-Z](?:[A-Z_\d]*[a-z]\w*)?\b/,function:/\b[a-z_]\w*(?=\s*\()/i,constant:/\b(?:[A-Z_]{2,}|k[A-Z][A-Za-z_]+)\b/,operator:/[-+*/%=!<>&|^~?]+|\.[.\-+*/%=!<>&|^~?]+/,punctuation:/[{}[\]();,.:\\]/},Prism.languages.swift["string-literal"].forEach((function(e){e.inside.interpolation.inside=Prism.languages.swift})); +!function(e){e.languages.typescript=e.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var s=e.languages.extend("typescript",{});delete s["class-name"],e.languages.typescript["class-name"].inside=s,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:s}}}}),e.languages.ts=e.languages.typescript}(Prism); +Prism.languages.wasm={comment:[/\(;[\s\S]*?;\)/,{pattern:/;;.*/,greedy:!0}],string:{pattern:/"(?:\\[\s\S]|[^"\\])*"/,greedy:!0},keyword:[{pattern:/\b(?:align|offset)=/,inside:{operator:/=/}},{pattern:/\b(?:(?:f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|neg?|nearest|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|sqrt|store(?:8|16|32)?|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))?|memory\.(?:grow|size))\b/,inside:{punctuation:/\./}},/\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\b/],variable:/\$[\w!#$%&'*+\-./:<=>?@\\^`|~]+/,number:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/,punctuation:/[()]/}; +!function(e){var n=/[*&][^\s[\]{},]+/,r=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,t="(?:"+r.source+"(?:[ \t]+"+n.source+")?|"+n.source+"(?:[ \t]+"+r.source+")?)",a="(?:[^\\s\\x00-\\x08\\x0e-\\x1f!\"#%&'*,\\-:>?@[\\]`{|}\\x7f-\\x84\\x86-\\x9f\\ud800-\\udfff\\ufffe\\uffff]|[?:-])(?:[ \t]*(?:(?![#:])|:))*".replace(//g,(function(){return"[^\\s\\x00-\\x08\\x0e-\\x1f,[\\]{}\\x7f-\\x84\\x86-\\x9f\\ud800-\\udfff\\ufffe\\uffff]"})),d="\"(?:[^\"\\\\\r\n]|\\\\.)*\"|'(?:[^'\\\\\r\n]|\\\\.)*'";function o(e,n){n=(n||"").replace(/m/g,"")+"m";var r="([:\\-,[{]\\s*(?:\\s<>[ \t]+)?)(?:<>)(?=[ \t]*(?:$|,|\\]|\\}|(?:[\r\n]\\s*)?#))".replace(/<>/g,(function(){return t})).replace(/<>/g,(function(){return e}));return RegExp(r,n)}e.languages.yaml={scalar:{pattern:RegExp("([\\-:]\\s*(?:\\s<>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\\S[^\r\n]*(?:\\2[^\r\n]+)*)".replace(/<>/g,(function(){return t}))),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp("((?:^|[:\\-,[{\r\n?])[ \t]*(?:<>[ \t]+)?)<>(?=\\s*:\\s)".replace(/<>/g,(function(){return t})).replace(/<>/g,(function(){return"(?:"+a+"|"+d+")"}))),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:o("\\d{4}-\\d\\d?-\\d\\d?(?:[tT]|[ \t]+)\\d\\d?:\\d{2}:\\d{2}(?:\\.\\d*)?(?:[ \t]*(?:Z|[-+]\\d\\d?(?::\\d{2})?))?|\\d{4}-\\d{2}-\\d{2}|\\d\\d?:\\d{2}(?::\\d{2}(?:\\.\\d*)?)?"),lookbehind:!0,alias:"number"},boolean:{pattern:o("false|true","i"),lookbehind:!0,alias:"important"},null:{pattern:o("null|~","i"),lookbehind:!0,alias:"important"},string:{pattern:o(d),lookbehind:!0,greedy:!0},number:{pattern:o("[+-]?(?:0x[\\da-f]+|0o[0-7]+|(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?|\\.inf|\\.nan)","i"),lookbehind:!0},tag:r,important:n,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(Prism); +!function(){if("undefined"!=typeof Prism&&"undefined"!=typeof document&&document.querySelector){var e,t="line-numbers",i="linkable-line-numbers",n=/\n(?!$)/g,r=!0;Prism.plugins.lineHighlight={highlightLines:function(o,u,c){var h=(u="string"==typeof u?u:o.getAttribute("data-line")||"").replace(/\s+/g,"").split(",").filter(Boolean),d=+o.getAttribute("data-line-offset")||0,f=(function(){if(void 0===e){var t=document.createElement("div");t.style.fontSize="13px",t.style.lineHeight="1.5",t.style.padding="0",t.style.border="0",t.innerHTML=" 
                                                                                                                   ",document.body.appendChild(t),e=38===t.offsetHeight,document.body.removeChild(t)}return e}()?parseInt:parseFloat)(getComputedStyle(o).lineHeight),p=Prism.util.isActive(o,t),g=o.querySelector("code"),m=p?o:g||o,v=[],y=g.textContent.match(n),b=y?y.length+1:1,A=g&&m!=g?function(e,t){var i=getComputedStyle(e),n=getComputedStyle(t);function r(e){return+e.substr(0,e.length-2)}return t.offsetTop+r(n.borderTopWidth)+r(n.paddingTop)-r(i.paddingTop)}(o,g):0;h.forEach((function(e){var t=e.split("-"),i=+t[0],n=+t[1]||i;if(!((n=Math.min(b+d,n))i&&r.setAttribute("data-end",String(n)),r.style.top=(i-d-1)*f+A+"px",r.textContent=new Array(n-i+2).join(" \n")}));v.push((function(){r.style.width=o.scrollWidth+"px"})),v.push((function(){m.appendChild(r)}))}}));var P=o.id;if(p&&Prism.util.isActive(o,i)&&P){l(o,i)||v.push((function(){o.classList.add(i)}));var E=parseInt(o.getAttribute("data-start")||"1");s(".line-numbers-rows > span",o).forEach((function(e,t){var i=t+E;e.onclick=function(){var e=P+"."+i;r=!1,location.hash=e,setTimeout((function(){r=!0}),1)}}))}return function(){v.forEach(a)}}};var o=0;Prism.hooks.add("before-sanity-check",(function(e){var t=e.element.parentElement;if(u(t)){var i=0;s(".line-highlight",t).forEach((function(e){i+=e.textContent.length,e.parentNode.removeChild(e)})),i&&/^(?: \n)+$/.test(e.code.slice(-i))&&(e.code=e.code.slice(0,-i))}})),Prism.hooks.add("complete",(function e(i){var n=i.element.parentElement;if(u(n)){clearTimeout(o);var r=Prism.plugins.lineNumbers,s=i.plugins&&i.plugins.lineNumbers;l(n,t)&&r&&!s?Prism.hooks.add("line-numbers",e):(Prism.plugins.lineHighlight.highlightLines(n)(),o=setTimeout(c,1))}})),window.addEventListener("hashchange",c),window.addEventListener("resize",(function(){s("pre").filter(u).map((function(e){return Prism.plugins.lineHighlight.highlightLines(e)})).forEach(a)}))}function s(e,t){return Array.prototype.slice.call((t||document).querySelectorAll(e))}function l(e,t){return e.classList.contains(t)}function a(e){e()}function u(e){return!!(e&&/pre/i.test(e.nodeName)&&(e.hasAttribute("data-line")||e.id&&Prism.util.isActive(e,i)))}function c(){var e=location.hash.slice(1);s(".temporary.line-highlight").forEach((function(e){e.parentNode.removeChild(e)}));var t=(e.match(/\.([\d,-]+)$/)||[,""])[1];if(t&&!document.getElementById(e)){var i=e.slice(0,e.lastIndexOf(".")),n=document.getElementById(i);n&&(n.hasAttribute("data-line")||n.setAttribute("data-line",""),Prism.plugins.lineHighlight.highlightLines(n,t,"temporary ")(),r&&document.querySelector(".temporary.line-highlight").scrollIntoView())}}}(); +!function(){if("undefined"!=typeof Prism&&"undefined"!=typeof document){var e="line-numbers",n=/\n(?!$)/g,t=Prism.plugins.lineNumbers={getLine:function(n,t){if("PRE"===n.tagName&&n.classList.contains(e)){var i=n.querySelector(".line-numbers-rows");if(i){var r=parseInt(n.getAttribute("data-start"),10)||1,s=r+(i.children.length-1);ts&&(t=s);var l=t-r;return i.children[l]}}},resize:function(e){r([e])},assumeViewportIndependence:!0},i=void 0;window.addEventListener("resize",(function(){t.assumeViewportIndependence&&i===window.innerWidth||(i=window.innerWidth,r(Array.prototype.slice.call(document.querySelectorAll("pre.line-numbers"))))})),Prism.hooks.add("complete",(function(t){if(t.code){var i=t.element,s=i.parentNode;if(s&&/pre/i.test(s.nodeName)&&!i.querySelector(".line-numbers-rows")&&Prism.util.isActive(i,e)){i.classList.remove(e),s.classList.add(e);var l,o=t.code.match(n),a=o?o.length+1:1,u=new Array(a+1).join("");(l=document.createElement("span")).setAttribute("aria-hidden","true"),l.className="line-numbers-rows",l.innerHTML=u,s.hasAttribute("data-start")&&(s.style.counterReset="linenumber "+(parseInt(s.getAttribute("data-start"),10)-1)),t.element.appendChild(l),r([s]),Prism.hooks.run("line-numbers",t)}}})),Prism.hooks.add("line-numbers",(function(e){e.plugins=e.plugins||{},e.plugins.lineNumbers=!0}))}function r(e){if(0!=(e=e.filter((function(e){var n,t=(n=e,n?window.getComputedStyle?getComputedStyle(n):n.currentStyle||null:null)["white-space"];return"pre-wrap"===t||"pre-line"===t}))).length){var t=e.map((function(e){var t=e.querySelector("code"),i=e.querySelector(".line-numbers-rows");if(t&&i){var r=e.querySelector(".line-numbers-sizer"),s=t.textContent.split(n);r||((r=document.createElement("span")).className="line-numbers-sizer",t.appendChild(r)),r.innerHTML="0",r.style.display="block";var l=r.getBoundingClientRect().height;return r.innerHTML="",{element:e,lines:s,lineHeights:[],oneLinerHeight:l,sizer:r}}})).filter(Boolean);t.forEach((function(e){var n=e.sizer,t=e.lines,i=e.lineHeights,r=e.oneLinerHeight;i[t.length-1]=void 0,t.forEach((function(e,t){if(e&&e.length>1){var s=n.appendChild(document.createElement("span"));s.style.display="block",s.textContent=e}else i[t]=r}))})),t.forEach((function(e){for(var n=e.sizer,t=e.lineHeights,i=0,r=0;r + * Licensed under the New BSD License. + * https://github.com/stackp/promisejs + */ +(function(a){function b(){this._callbacks=[];}b.prototype.then=function(a,c){var d;if(this._isdone)d=a.apply(c,this.result);else{d=new b();this._callbacks.push(function(){var b=a.apply(c,arguments);if(b&&typeof b.then==='function')b.then(d.done,d);});}return d;};b.prototype.done=function(){this.result=arguments;this._isdone=true;for(var a=0;a=300)&&j.status!==304);h.done(a,j.responseText,j);}};j.send(k);return h;}function h(a){return function(b,c,d){return g(a,b,c,d);};}var i={Promise:b,join:c,chain:d,ajax:g,get:h('GET'),post:h('POST'),put:h('PUT'),del:h('DELETE'),ENOXHR:1,ETIMEOUT:2,ajaxTimeout:0};if(typeof define==='function'&&define.amd)define(function(){return i;});else a.promise=i;})(this); \ No newline at end of file diff --git a/backend/documentation/js/libs/svg-pan-zoom.min.js b/backend/documentation/js/libs/svg-pan-zoom.min.js new file mode 100644 index 0000000..cadc36e --- /dev/null +++ b/backend/documentation/js/libs/svg-pan-zoom.min.js @@ -0,0 +1,3 @@ +// svg-pan-zoom v3.6.2 +// https://github.com/bumbu/svg-pan-zoom +!function s(r,a,l){function u(e,t){if(!a[e]){if(!r[e]){var o="function"==typeof require&&require;if(!t&&o)return o(e,!0);if(h)return h(e,!0);var n=new Error("Cannot find module '"+e+"'");throw n.code="MODULE_NOT_FOUND",n}var i=a[e]={exports:{}};r[e][0].call(i.exports,function(t){return u(r[e][1][t]||t)},i,i.exports,s,r,a,l)}return a[e].exports}for(var h="function"==typeof require&&require,t=0;tthis.options.maxZoom*n.zoom&&(t=this.options.maxZoom*n.zoom/this.getZoom());var i=this.viewport.getCTM(),s=e.matrixTransform(i.inverse()),r=this.svg.createSVGMatrix().translate(s.x,s.y).scale(t).translate(-s.x,-s.y),a=i.multiply(r);a.a!==i.a&&this.viewport.setCTM(a)},i.prototype.zoom=function(t,e){this.zoomAtPoint(t,a.getSvgCenterPoint(this.svg,this.width,this.height),e)},i.prototype.publicZoom=function(t,e){e&&(t=this.computeFromRelativeZoom(t)),this.zoom(t,e)},i.prototype.publicZoomAtPoint=function(t,e,o){if(o&&(t=this.computeFromRelativeZoom(t)),"SVGPoint"!==r.getType(e)){if(!("x"in e&&"y"in e))throw new Error("Given point is invalid");e=a.createSVGPoint(this.svg,e.x,e.y)}this.zoomAtPoint(t,e,o)},i.prototype.getZoom=function(){return this.viewport.getZoom()},i.prototype.getRelativeZoom=function(){return this.viewport.getRelativeZoom()},i.prototype.computeFromRelativeZoom=function(t){return t*this.viewport.getOriginalState().zoom},i.prototype.resetZoom=function(){var t=this.viewport.getOriginalState();this.zoom(t.zoom,!0)},i.prototype.resetPan=function(){this.pan(this.viewport.getOriginalState())},i.prototype.reset=function(){this.resetZoom(),this.resetPan()},i.prototype.handleDblClick=function(t){var e;if((this.options.preventMouseEventsDefault&&(t.preventDefault?t.preventDefault():t.returnValue=!1),this.options.controlIconsEnabled)&&-1<(t.target.getAttribute("class")||"").indexOf("svg-pan-zoom-control"))return!1;e=t.shiftKey?1/(2*(1+this.options.zoomScaleSensitivity)):2*(1+this.options.zoomScaleSensitivity);var o=a.getEventPoint(t,this.svg).matrixTransform(this.svg.getScreenCTM().inverse());this.zoomAtPoint(e,o)},i.prototype.handleMouseDown=function(t,e){this.options.preventMouseEventsDefault&&(t.preventDefault?t.preventDefault():t.returnValue=!1),r.mouseAndTouchNormalize(t,this.svg),this.options.dblClickZoomEnabled&&r.isDblClick(t,e)?this.handleDblClick(t):(this.state="pan",this.firstEventCTM=this.viewport.getCTM(),this.stateOrigin=a.getEventPoint(t,this.svg).matrixTransform(this.firstEventCTM.inverse()))},i.prototype.handleMouseMove=function(t){if(this.options.preventMouseEventsDefault&&(t.preventDefault?t.preventDefault():t.returnValue=!1),"pan"===this.state&&this.options.panEnabled){var e=a.getEventPoint(t,this.svg).matrixTransform(this.firstEventCTM.inverse()),o=this.firstEventCTM.translate(e.x-this.stateOrigin.x,e.y-this.stateOrigin.y);this.viewport.setCTM(o)}},i.prototype.handleMouseUp=function(t){this.options.preventMouseEventsDefault&&(t.preventDefault?t.preventDefault():t.returnValue=!1),"pan"===this.state&&(this.state="none")},i.prototype.fit=function(){var t=this.viewport.getViewBox(),e=Math.min(this.width/t.width,this.height/t.height);this.zoom(e,!0)},i.prototype.contain=function(){var t=this.viewport.getViewBox(),e=Math.max(this.width/t.width,this.height/t.height);this.zoom(e,!0)},i.prototype.center=function(){var t=this.viewport.getViewBox(),e=.5*(this.width-(t.width+2*t.x)*this.getZoom()),o=.5*(this.height-(t.height+2*t.y)*this.getZoom());this.getPublicInstance().pan({x:e,y:o})},i.prototype.updateBBox=function(){this.viewport.simpleViewBoxCache()},i.prototype.pan=function(t){var e=this.viewport.getCTM();e.e=t.x,e.f=t.y,this.viewport.setCTM(e)},i.prototype.panBy=function(t){var e=this.viewport.getCTM();e.e+=t.x,e.f+=t.y,this.viewport.setCTM(e)},i.prototype.getPan=function(){var t=this.viewport.getState();return{x:t.x,y:t.y}},i.prototype.resize=function(){var t=a.getBoundingClientRectNormalized(this.svg);this.width=t.width,this.height=t.height;var e=this.viewport;e.options.width=this.width,e.options.height=this.height,e.processCTM(),this.options.controlIconsEnabled&&(this.getPublicInstance().disableControlIcons(),this.getPublicInstance().enableControlIcons())},i.prototype.destroy=function(){var e=this;for(var t in this.beforeZoom=null,this.onZoom=null,this.beforePan=null,this.onPan=null,(this.onUpdatedCTM=null)!=this.options.customEventsHandler&&this.options.customEventsHandler.destroy({svgElement:this.svg,eventsListenerElement:this.options.eventsListenerElement,instance:this.getPublicInstance()}),this.eventListeners)(this.options.eventsListenerElement||this.svg).removeEventListener(t,this.eventListeners[t],!this.options.preventMouseEventsDefault&&h);this.disableMouseWheelZoom(),this.getPublicInstance().disableControlIcons(),this.reset(),c=c.filter(function(t){return t.svg!==e.svg}),delete this.options,delete this.viewport,delete this.publicInstance,delete this.pi,this.getPublicInstance=function(){return null}},i.prototype.getPublicInstance=function(){var o=this;return this.publicInstance||(this.publicInstance=this.pi={enablePan:function(){return o.options.panEnabled=!0,o.pi},disablePan:function(){return o.options.panEnabled=!1,o.pi},isPanEnabled:function(){return!!o.options.panEnabled},pan:function(t){return o.pan(t),o.pi},panBy:function(t){return o.panBy(t),o.pi},getPan:function(){return o.getPan()},setBeforePan:function(t){return o.options.beforePan=null===t?null:r.proxy(t,o.publicInstance),o.pi},setOnPan:function(t){return o.options.onPan=null===t?null:r.proxy(t,o.publicInstance),o.pi},enableZoom:function(){return o.options.zoomEnabled=!0,o.pi},disableZoom:function(){return o.options.zoomEnabled=!1,o.pi},isZoomEnabled:function(){return!!o.options.zoomEnabled},enableControlIcons:function(){return o.options.controlIconsEnabled||(o.options.controlIconsEnabled=!0,s.enable(o)),o.pi},disableControlIcons:function(){return o.options.controlIconsEnabled&&(o.options.controlIconsEnabled=!1,s.disable(o)),o.pi},isControlIconsEnabled:function(){return!!o.options.controlIconsEnabled},enableDblClickZoom:function(){return o.options.dblClickZoomEnabled=!0,o.pi},disableDblClickZoom:function(){return o.options.dblClickZoomEnabled=!1,o.pi},isDblClickZoomEnabled:function(){return!!o.options.dblClickZoomEnabled},enableMouseWheelZoom:function(){return o.enableMouseWheelZoom(),o.pi},disableMouseWheelZoom:function(){return o.disableMouseWheelZoom(),o.pi},isMouseWheelZoomEnabled:function(){return!!o.options.mouseWheelZoomEnabled},setZoomScaleSensitivity:function(t){return o.options.zoomScaleSensitivity=t,o.pi},setMinZoom:function(t){return o.options.minZoom=t,o.pi},setMaxZoom:function(t){return o.options.maxZoom=t,o.pi},setBeforeZoom:function(t){return o.options.beforeZoom=null===t?null:r.proxy(t,o.publicInstance),o.pi},setOnZoom:function(t){return o.options.onZoom=null===t?null:r.proxy(t,o.publicInstance),o.pi},zoom:function(t){return o.publicZoom(t,!0),o.pi},zoomBy:function(t){return o.publicZoom(t,!1),o.pi},zoomAtPoint:function(t,e){return o.publicZoomAtPoint(t,e,!0),o.pi},zoomAtPointBy:function(t,e){return o.publicZoomAtPoint(t,e,!1),o.pi},zoomIn:function(){return this.zoomBy(1+o.options.zoomScaleSensitivity),o.pi},zoomOut:function(){return this.zoomBy(1/(1+o.options.zoomScaleSensitivity)),o.pi},getZoom:function(){return o.getRelativeZoom()},setOnUpdatedCTM:function(t){return o.options.onUpdatedCTM=null===t?null:r.proxy(t,o.publicInstance),o.pi},resetZoom:function(){return o.resetZoom(),o.pi},resetPan:function(){return o.resetPan(),o.pi},reset:function(){return o.reset(),o.pi},fit:function(){return o.fit(),o.pi},contain:function(){return o.contain(),o.pi},center:function(){return o.center(),o.pi},updateBBox:function(){return o.updateBBox(),o.pi},resize:function(){return o.resize(),o.pi},getSizes:function(){return{width:o.width,height:o.height,realZoom:o.getZoom(),viewBox:o.viewport.getViewBox()}},destroy:function(){return o.destroy(),o.pi}}),this.publicInstance};var c=[];e.exports=function(t,e){var o=r.getSvg(t);if(null===o)return null;for(var n=c.length-1;0<=n;n--)if(c[n].svg===o)return c[n].instance.getPublicInstance();return c.push({svg:o,instance:new i(o,e)}),c[c.length-1].instance.getPublicInstance()}},{"./control-icons":1,"./shadow-viewport":2,"./svg-utilities":5,"./uniwheel":6,"./utilities":7}],5:[function(t,e,o){var l=t("./utilities"),s="unknown";document.documentMode&&(s="ie"),e.exports={svgNS:"http://www.w3.org/2000/svg",xmlNS:"http://www.w3.org/XML/1998/namespace",xmlnsNS:"http://www.w3.org/2000/xmlns/",xlinkNS:"http://www.w3.org/1999/xlink",evNS:"http://www.w3.org/2001/xml-events",getBoundingClientRectNormalized:function(t){if(t.clientWidth&&t.clientHeight)return{width:t.clientWidth,height:t.clientHeight};if(t.getBoundingClientRect())return t.getBoundingClientRect();throw new Error("Cannot get BoundingClientRect for SVG.")},getOrCreateViewport:function(t,e){var o=null;if(!(o=l.isElement(e)?e:t.querySelector(e))){var n=Array.prototype.slice.call(t.childNodes||t.children).filter(function(t){return"defs"!==t.nodeName&&"#text"!==t.nodeName});1===n.length&&"g"===n[0].nodeName&&null===n[0].getAttribute("transform")&&(o=n[0])}if(!o){var i="viewport-"+(new Date).toISOString().replace(/\D/g,"");(o=document.createElementNS(this.svgNS,"g")).setAttribute("id",i);var s=t.childNodes||t.children;if(s&&0{function r(t,e){if(!(this instanceof r))return new r(t,e);if(!t||"TABLE"!==t.tagName)throw new Error("Element must be a table");this.init(t,e||{})}function v(t){var e;return window.CustomEvent&&"function"==typeof window.CustomEvent?e=new CustomEvent(t):(e=document.createEvent("CustomEvent")).initCustomEvent(t,!1,!1,void 0),e}function p(t,e){return t.getAttribute(e.sortAttribute||"data-sort")||t.textContent||t.innerText||""}function A(t,e){return(t=t.trim().toLowerCase())===(e=e.trim().toLowerCase())?0:t{function a(t){return t.replace(/[^\-?0-9.]/g,"")}Tablesort.extend("number",function(t){return t.match(/^[-+]?[£\x24Û¢´€]?\d+\s*([,\.]\d{0,2})/)||t.match(/^[-+]?\d+\s*([,\.]\d{0,2})?[£\x24Û¢´€]/)||t.match(/^[-+]?(\d)*-?([,\.]){0,1}-?(\d)+([E,e][\-+][\d]+)?%?$/)},function(t,e){return t=a(t),e=a(e),e=e,t=t,e=parseFloat(e),t=parseFloat(t),(e=isNaN(e)?0:e)-(t=isNaN(t)?0:t)})})(); \ No newline at end of file diff --git a/backend/documentation/js/libs/vis-network.min.js b/backend/documentation/js/libs/vis-network.min.js new file mode 100644 index 0000000..5dc0976 --- /dev/null +++ b/backend/documentation/js/libs/vis-network.min.js @@ -0,0 +1,78 @@ +/** + * vis-network + * https://visjs.github.io/vis-network/ + * + * A dynamic, browser-based visualization library. + * + * @version 10.0.2 + * @date 2025-09-15T17:49:24.446Z + * + * @copyright (c) 2011-2017 Almende B.V, http://almende.com + * @copyright (c) 2017-2019 visjs contributors, https://github.com/visjs + * + * @license + * vis.js is dual licensed under both + * + * 1. The Apache 2.0 License + * http://www.apache.org/licenses/LICENSE-2.0 + * + * and + * + * 2. The MIT License + * http://opensource.org/licenses/MIT + * + * vis.js may be distributed under either license. + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).vis=t.vis||{})}(this,function(t){"use strict";var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function i(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var o,n,s,r,a,h,d,l,c,u,p,f,g,m,v,y,b={};function w(){if(n)return o;n=1;var t=function(t){return t&&t.Math===Math&&t};return o=t("object"==typeof globalThis&&globalThis)||t("object"==typeof window&&window)||t("object"==typeof self&&self)||t("object"==typeof e&&e)||t("object"==typeof o&&o)||function(){return this}()||Function("return this")()}function _(){return r?s:(r=1,s=function(t){try{return!!t()}catch(t){return!0}})}function x(){return h?a:(h=1,a=!_()(function(){var t=function(){}.bind();return"function"!=typeof t||t.hasOwnProperty("prototype")}))}function E(){if(l)return d;l=1;var t=x(),e=Function.prototype,i=e.apply,o=e.call;return d="object"==typeof Reflect&&Reflect.apply||(t?o.bind(i):function(){return o.apply(i,arguments)}),d}function O(){if(u)return c;u=1;var t=x(),e=Function.prototype,i=e.call,o=t&&e.bind.bind(i,i);return c=t?o:function(t){return function(){return i.apply(t,arguments)}},c}function C(){if(f)return p;f=1;var t=O(),e=t({}.toString),i=t("".slice);return p=function(t){return i(e(t),8,-1)},p}function k(){if(m)return g;m=1;var t=C(),e=O();return g=function(i){if("Function"===t(i))return e(i)}}function S(){if(y)return v;y=1;var t="object"==typeof document&&document.all;return v=void 0===t&&void 0!==t?function(e){return"function"==typeof e||e===t}:function(t){return"function"==typeof t}}var T,D,M,I,P={};function N(){return D?T:(D=1,T=!_()(function(){return 7!==Object.defineProperty({},1,{get:function(){return 7}})[1]}))}function B(){if(I)return M;I=1;var t=x(),e=Function.prototype.call;return M=t?e.bind(e):function(){return e.apply(e,arguments)},M}var z,F,A,j,R,L,H,W,V,q,U,Y,X,G,K,Z,Q,$,J,tt,et,it,ot,nt,st,rt,at,ht,dt,lt,ct,ut,pt,ft,gt,mt,vt,yt={};function bt(){if(z)return yt;z=1;var t={}.propertyIsEnumerable,e=Object.getOwnPropertyDescriptor,i=e&&!t.call({1:2},1);return yt.f=i?function(t){var i=e(this,t);return!!i&&i.enumerable}:t,yt}function wt(){return A?F:(A=1,F=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}})}function _t(){if(R)return j;R=1;var t=O(),e=_(),i=C(),o=Object,n=t("".split);return j=e(function(){return!o("z").propertyIsEnumerable(0)})?function(t){return"String"===i(t)?n(t,""):o(t)}:o,j}function xt(){return H||(H=1,L=function(t){return null==t}),L}function Et(){if(V)return W;V=1;var t=xt(),e=TypeError;return W=function(i){if(t(i))throw new e("Can't call method on "+i);return i},W}function Ot(){if(U)return q;U=1;var t=_t(),e=Et();return q=function(i){return t(e(i))},q}function Ct(){if(X)return Y;X=1;var t=S();return Y=function(e){return"object"==typeof e?null!==e:t(e)},Y}function kt(){return K?G:(K=1,G={})}function St(){if(Q)return Z;Q=1;var t=kt(),e=w(),i=S(),o=function(t){return i(t)?t:void 0};return Z=function(i,n){return arguments.length<2?o(t[i])||o(e[i]):t[i]&&t[i][n]||e[i]&&e[i][n]},Z}function Tt(){return J?$:(J=1,$=O()({}.isPrototypeOf))}function Dt(){if(et)return tt;et=1;var t=w().navigator,e=t&&t.userAgent;return tt=e?String(e):""}function Mt(){if(ot)return it;ot=1;var t,e,i=w(),o=Dt(),n=i.process,s=i.Deno,r=n&&n.versions||s&&s.version,a=r&&r.v8;return a&&(e=(t=a.split("."))[0]>0&&t[0]<4?1:+(t[0]+t[1])),!e&&o&&(!(t=o.match(/Edge\/(\d+)/))||t[1]>=74)&&(t=o.match(/Chrome\/(\d+)/))&&(e=+t[1]),it=e}function It(){if(st)return nt;st=1;var t=Mt(),e=_(),i=w().String;return nt=!!Object.getOwnPropertySymbols&&!e(function(){var e=Symbol("symbol detection");return!i(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&t&&t<41}),nt}function Pt(){return at?rt:(at=1,rt=It()&&!Symbol.sham&&"symbol"==typeof Symbol.iterator)}function Nt(){if(dt)return ht;dt=1;var t=St(),e=S(),i=Tt(),o=Object;return ht=Pt()?function(t){return"symbol"==typeof t}:function(n){var s=t("Symbol");return e(s)&&i(s.prototype,o(n))},ht}function Bt(){if(ct)return lt;ct=1;var t=String;return lt=function(e){try{return t(e)}catch(t){return"Object"}}}function zt(){if(pt)return ut;pt=1;var t=S(),e=Bt(),i=TypeError;return ut=function(o){if(t(o))return o;throw new i(e(o)+" is not a function")}}function Ft(){if(gt)return ft;gt=1;var t=zt(),e=xt();return ft=function(i,o){var n=i[o];return e(n)?void 0:t(n)}}function At(){if(vt)return mt;vt=1;var t=B(),e=S(),i=Ct(),o=TypeError;return mt=function(n,s){var r,a;if("string"===s&&e(r=n.toString)&&!i(a=t(r,n)))return a;if(e(r=n.valueOf)&&!i(a=t(r,n)))return a;if("string"!==s&&e(r=n.toString)&&!i(a=t(r,n)))return a;throw new o("Can't convert object to primitive value")}}var jt,Rt,Lt,Ht,Wt,Vt,qt,Ut,Yt,Xt,Gt,Kt,Zt,Qt,$t,Jt,te,ee,ie,oe,ne,se,re,ae,he,de,le,ce,ue={exports:{}};function pe(){return Rt?jt:(Rt=1,jt=!0)}function fe(){if(Ht)return Lt;Ht=1;var t=w(),e=Object.defineProperty;return Lt=function(i,o){try{e(t,i,{value:o,configurable:!0,writable:!0})}catch(e){t[i]=o}return o}}function ge(){if(Wt)return ue.exports;Wt=1;var t=pe(),e=w(),i=fe(),o="__core-js_shared__",n=ue.exports=e[o]||i(o,{});return(n.versions||(n.versions=[])).push({version:"3.44.0",mode:t?"pure":"global",copyright:"© 2014-2025 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.44.0/LICENSE",source:"https://github.com/zloirock/core-js"}),ue.exports}function me(){if(qt)return Vt;qt=1;var t=ge();return Vt=function(e,i){return t[e]||(t[e]=i||{})}}function ve(){if(Yt)return Ut;Yt=1;var t=Et(),e=Object;return Ut=function(i){return e(t(i))}}function ye(){if(Gt)return Xt;Gt=1;var t=O(),e=ve(),i=t({}.hasOwnProperty);return Xt=Object.hasOwn||function(t,o){return i(e(t),o)},Xt}function be(){if(Zt)return Kt;Zt=1;var t=O(),e=0,i=Math.random(),o=t(1.1.toString);return Kt=function(t){return"Symbol("+(void 0===t?"":t)+")_"+o(++e+i,36)}}function we(){if($t)return Qt;$t=1;var t=w(),e=me(),i=ye(),o=be(),n=It(),s=Pt(),r=t.Symbol,a=e("wks"),h=s?r.for||r:r&&r.withoutSetter||o;return Qt=function(t){return i(a,t)||(a[t]=n&&i(r,t)?r[t]:h("Symbol."+t)),a[t]}}function _e(){if(te)return Jt;te=1;var t=B(),e=Ct(),i=Nt(),o=Ft(),n=At(),s=TypeError,r=we()("toPrimitive");return Jt=function(a,h){if(!e(a)||i(a))return a;var d,l=o(a,r);if(l){if(void 0===h&&(h="default"),d=t(l,a,h),!e(d)||i(d))return d;throw new s("Can't convert object to primitive value")}return void 0===h&&(h="number"),n(a,h)}}function xe(){if(ie)return ee;ie=1;var t=_e(),e=Nt();return ee=function(i){var o=t(i,"string");return e(o)?o:o+""}}function Ee(){if(ne)return oe;ne=1;var t=w(),e=Ct(),i=t.document,o=e(i)&&e(i.createElement);return oe=function(t){return o?i.createElement(t):{}},oe}function Oe(){if(re)return se;re=1;var t=N(),e=_(),i=Ee();return se=!t&&!e(function(){return 7!==Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a})}function Ce(){if(ae)return P;ae=1;var t=N(),e=B(),i=bt(),o=wt(),n=Ot(),s=xe(),r=ye(),a=Oe(),h=Object.getOwnPropertyDescriptor;return P.f=t?h:function(t,d){if(t=n(t),d=s(d),a)try{return h(t,d)}catch(t){}if(r(t,d))return o(!e(i.f,t,d),t[d])},P}function ke(){if(de)return he;de=1;var t=_(),e=S(),i=/#|\.prototype\./,o=function(i,o){var h=s[n(i)];return h===a||h!==r&&(e(o)?t(o):!!o)},n=o.normalize=function(t){return String(t).replace(i,".").toLowerCase()},s=o.data={},r=o.NATIVE="N",a=o.POLYFILL="P";return he=o}function Se(){if(ce)return le;ce=1;var t=k(),e=zt(),i=x(),o=t(t.bind);return le=function(t,n){return e(t),void 0===n?t:i?o(t,n):function(){return t.apply(n,arguments)}},le}var Te,De,Me,Ie,Pe,Ne,Be,ze,Fe,Ae,je,Re,Le,He,We,Ve,qe,Ue,Ye,Xe,Ge,Ke,Ze,Qe,$e,Je,ti,ei,ii,oi={};function ni(){return De?Te:(De=1,Te=N()&&_()(function(){return 42!==Object.defineProperty(function(){},"prototype",{value:42,writable:!1}).prototype}))}function si(){if(Ie)return Me;Ie=1;var t=Ct(),e=String,i=TypeError;return Me=function(o){if(t(o))return o;throw new i(e(o)+" is not an object")}}function ri(){if(Pe)return oi;Pe=1;var t=N(),e=Oe(),i=ni(),o=si(),n=xe(),s=TypeError,r=Object.defineProperty,a=Object.getOwnPropertyDescriptor,h="enumerable",d="configurable",l="writable";return oi.f=t?i?function(t,e,i){if(o(t),e=n(e),o(i),"function"==typeof t&&"prototype"===e&&"value"in i&&l in i&&!i[l]){var s=a(t,e);s&&s[l]&&(t[e]=i.value,i={configurable:d in i?i[d]:s[d],enumerable:h in i?i[h]:s[h],writable:!1})}return r(t,e,i)}:r:function(t,i,a){if(o(t),i=n(i),o(a),e)try{return r(t,i,a)}catch(t){}if("get"in a||"set"in a)throw new s("Accessors not supported");return"value"in a&&(t[i]=a.value),t},oi}function ai(){if(Be)return Ne;Be=1;var t=N(),e=ri(),i=wt();return Ne=t?function(t,o,n){return e.f(t,o,i(1,n))}:function(t,e,i){return t[e]=i,t},Ne}function hi(){if(Fe)return ze;Fe=1;var t=w(),e=E(),i=k(),o=S(),n=Ce().f,s=ke(),r=kt(),a=Se(),h=ai(),d=ye(),l=function(t){var i=function(o,n,s){if(this instanceof i){switch(arguments.length){case 0:return new t;case 1:return new t(o);case 2:return new t(o,n)}return new t(o,n,s)}return e(t,this,arguments)};return i.prototype=t.prototype,i};return ze=function(e,c){var u,p,f,g,m,v,y,b,w,_=e.target,x=e.global,E=e.stat,O=e.proto,C=x?t:E?t[_]:t[_]&&t[_].prototype,k=x?r:r[_]||h(r,_,{})[_],S=k.prototype;for(g in c)p=!(u=s(x?g:_+(E?".":"#")+g,e.forced))&&C&&d(C,g),v=k[g],p&&(y=e.dontCallGetSet?(w=n(C,g))&&w.value:C[g]),m=p&&y?y:c[g],(u||O||typeof v!=typeof m)&&(b=e.bind&&p?a(m,t):e.wrap&&p?l(m):O&&o(m)?i(m):m,(e.sham||m&&m.sham||v&&v.sham)&&h(b,"sham",!0),h(k,g,b),O&&(d(r,f=_+"Prototype")||h(r,f,{}),h(r[f],g,m),e.real&&S&&(u||!S[g])&&h(S,g,m)))}}function di(){if(je)return Ae;je=1;var t=Math.ceil,e=Math.floor;return Ae=Math.trunc||function(i){var o=+i;return(o>0?e:t)(o)}}function li(){if(Le)return Re;Le=1;var t=di();return Re=function(e){var i=+e;return i!=i||0===i?0:t(i)},Re}function ci(){if(We)return He;We=1;var t=li(),e=Math.max,i=Math.min;return He=function(o,n){var s=t(o);return s<0?e(s+n,0):i(s,n)},He}function ui(){if(qe)return Ve;qe=1;var t=li(),e=Math.min;return Ve=function(i){var o=t(i);return o>0?e(o,9007199254740991):0}}function pi(){if(Ye)return Ue;Ye=1;var t=ui();return Ue=function(e){return t(e.length)}}function fi(){if(Ge)return Xe;Ge=1;var t=Ot(),e=ci(),i=pi(),o=function(o){return function(n,s,r){var a=t(n),h=i(a);if(0===h)return!o&&-1;var d,l=e(r,h);if(o&&s!=s){for(;h>l;)if((d=a[l++])!=d)return!0}else for(;h>l;l++)if((o||l in a)&&a[l]===s)return o||l||0;return!o&&-1}};return Xe={includes:o(!0),indexOf:o(!1)}}function gi(){return Ze?Ke:(Ze=1,Ke={})}function mi(){if($e)return Qe;$e=1;var t=O(),e=ye(),i=Ot(),o=fi().indexOf,n=gi(),s=t([].push);return Qe=function(t,r){var a,h=i(t),d=0,l=[];for(a in h)!e(n,a)&&e(h,a)&&s(l,a);for(;r.length>d;)e(h,a=r[d++])&&(~o(l,a)||s(l,a));return l},Qe}function vi(){return ti?Je:(ti=1,Je=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"])}function yi(){if(ii)return ei;ii=1;var t=mi(),e=vi();return ei=Object.keys||function(i){return t(i,e)}}var bi,wi,_i,xi,Ei,Oi,Ci,ki,Si,Ti,Di={};function Mi(){return bi||(bi=1,Di.f=Object.getOwnPropertySymbols),Di}function Ii(){if(_i)return wi;_i=1;var t=N(),e=O(),i=B(),o=_(),n=yi(),s=Mi(),r=bt(),a=ve(),h=_t(),d=Object.assign,l=Object.defineProperty,c=e([].concat);return wi=!d||o(function(){if(t&&1!==d({b:1},d(l({},"a",{enumerable:!0,get:function(){l(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},i={},o=Symbol("assign detection"),s="abcdefghijklmnopqrst";return e[o]=7,s.split("").forEach(function(t){i[t]=t}),7!==d({},e)[o]||n(d({},i)).join("")!==s})?function(e,o){for(var d=a(e),l=arguments.length,u=1,p=s.f,f=r.f;l>u;)for(var g,m=h(arguments[u++]),v=p?c(n(m),p(m)):n(m),y=v.length,b=0;y>b;)g=v[b++],t&&!i(f,m,g)||(d[g]=m[g]);return d}:d,wi}function Pi(){return Oi?Ei:(Oi=1,function(){if(xi)return b;xi=1;var t=hi(),e=Ii();t({target:"Object",stat:!0,arity:2,forced:Object.assign!==e},{assign:e})}(),Ei=kt().Object.assign)}function Ni(){return ki?Ci:(ki=1,Ci=Pi())}var Bi,zi,Fi,Ai,ji,Ri,Li,Hi,Wi,Vi,qi,Ui,Yi,Xi,Gi,Ki=i(Ti?Si:(Ti=1,Si=Ni())),Zi={};function Qi(){return zi?Bi:(zi=1,Bi=O()([].slice))}function $i(){if(Ai)return Fi;Ai=1;var t=O(),e=zt(),i=Ct(),o=ye(),n=Qi(),s=x(),r=Function,a=t([].concat),h=t([].join),d={};return Fi=s?r.bind:function(t){var s=e(this),l=s.prototype,c=n(arguments,1),u=function(){var e=a(c,n(arguments));return this instanceof u?function(t,e,i){if(!o(d,e)){for(var n=[],s=0;s=.1;)f=+s[c++%r],f>l&&(f=l),p=Math.sqrt(f*f/(1+d*d)),p=a<0?-p:p,e+=p,i+=d*p,!0===u?t.lineTo(e,i):t.moveTo(e,i),l-=f,u=!u}const lo={circle:no,dashedLine:ho,database:ao,diamond:function(t,e,i,o){t.beginPath(),t.lineTo(e,i+o),t.lineTo(e+o,i),t.lineTo(e,i-o),t.lineTo(e-o,i),t.closePath()},ellipse:ro,ellipse_vis:ro,hexagon:function(t,e,i,o){t.beginPath();const n=2*Math.PI/6;t.moveTo(e+o,i);for(let s=1;s<6;s++)t.lineTo(e+o*Math.cos(n*s),i+o*Math.sin(n*s));t.closePath()},roundRect:so,square:function(t,e,i,o){t.beginPath(),t.rect(e-o,i-o,2*o,2*o),t.closePath()},star:function(t,e,i,o){t.beginPath(),i+=.1*(o*=.82);for(let n=0;n<10;n++){const s=n%2==0?1.3*o:.5*o;t.lineTo(e+s*Math.sin(2*n*Math.PI/10),i-s*Math.cos(2*n*Math.PI/10))}t.closePath()},triangle:function(t,e,i,o){t.beginPath(),i+=.275*(o*=1.15);const n=2*o,s=n/2,r=Math.sqrt(3)/6*n,a=Math.sqrt(n*n-s*s);t.moveTo(e,i-(a-r)),t.lineTo(e+s,i+r),t.lineTo(e-s,i+r),t.lineTo(e,i-(a-r)),t.closePath()},triangleDown:function(t,e,i,o){t.beginPath(),i-=.275*(o*=1.15);const n=2*o,s=n/2,r=Math.sqrt(3)/6*n,a=Math.sqrt(n*n-s*s);t.moveTo(e,i+(a-r)),t.lineTo(e+s,i-r),t.lineTo(e-s,i-r),t.lineTo(e,i+(a-r)),t.closePath()}};var co,uo={exports:{}};var po,fo=(co||(co=1,function(t){function e(t){if(t)return function(t){for(var i in e.prototype)t[i]=e.prototype[i];return t}(t)}t.exports=e,e.prototype.on=e.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks["$"+t]=this._callbacks["$"+t]||[]).push(e),this},e.prototype.once=function(t,e){function i(){this.off(t,i),e.apply(this,arguments)}return i.fn=e,this.on(t,i),this},e.prototype.off=e.prototype.removeListener=e.prototype.removeAllListeners=e.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i,o=this._callbacks["$"+t];if(!o)return this;if(1==arguments.length)return delete this._callbacks["$"+t],this;for(var n=0;n-1}var Go=function(){function t(t,e){this.manager=t,this.set(e)}var e=t.prototype;return e.set=function(t){t===Do&&(t=this.compute()),To&&this.manager.element.style&&zo[t]&&(this.manager.element.style[So]=t),this.actions=t.toLowerCase().trim()},e.update=function(){this.set(this.manager.options.touchAction)},e.compute=function(){var t=[];return Uo(this.manager.recognizers,function(e){Yo(e.options.enable,[e])&&(t=t.concat(e.getTouchAction()))}),function(t){if(Xo(t,Po))return Po;var e=Xo(t,No),i=Xo(t,Bo);return e&&i?Po:e||i?e?No:Bo:Xo(t,Io)?Io:Mo}(t.join(" "))},e.preventDefaults=function(t){var e=t.srcEvent,i=t.offsetDirection;if(this.manager.session.prevented)e.preventDefault();else{var o=this.actions,n=Xo(o,Po)&&!zo[Po],s=Xo(o,Bo)&&!zo[Bo],r=Xo(o,No)&&!zo[No];if(n){var a=1===t.pointers.length,h=t.distance<2,d=t.deltaTime<250;if(a&&h&&d)return}if(!r||!s)return n||s&&6&i||r&&i&Wo?this.preventSrc(e):void 0}},e.preventSrc=function(t){this.manager.session.prevented=!0,t.preventDefault()},t}();function Ko(t,e){for(;t;){if(t===e)return!0;t=t.parentNode}return!1}function Zo(t){var e=t.length;if(1===e)return{x:Eo(t[0].clientX),y:Eo(t[0].clientY)};for(var i=0,o=0,n=0;n=Oo(e)?t<0?2:4:e<0?8:Ho}function en(t,e,i){return{x:e/t||0,y:i/t||0}}function on(t,e){var i=t.session,o=e.pointers,n=o.length;i.firstInput||(i.firstInput=Qo(e)),n>1&&!i.firstMultiple?i.firstMultiple=Qo(e):1===n&&(i.firstMultiple=!1);var s=i.firstInput,r=i.firstMultiple,a=r?r.center:s.center,h=e.center=Zo(o);e.timeStamp=Co(),e.deltaTime=e.timeStamp-s.timeStamp,e.angle=Jo(a,h),e.distance=$o(a,h),function(t,e){var i=e.center,o=t.offsetDelta||{},n=t.prevDelta||{},s=t.prevInput||{};1!==e.eventType&&4!==s.eventType||(n=t.prevDelta={x:s.deltaX||0,y:s.deltaY||0},o=t.offsetDelta={x:i.x,y:i.y}),e.deltaX=n.x+(i.x-o.x),e.deltaY=n.y+(i.y-o.y)}(i,e),e.offsetDirection=tn(e.deltaX,e.deltaY);var d,l,c=en(e.deltaTime,e.deltaX,e.deltaY);e.overallVelocityX=c.x,e.overallVelocityY=c.y,e.overallVelocity=Oo(c.x)>Oo(c.y)?c.x:c.y,e.scale=r?(d=r.pointers,$o((l=o)[0],l[1],qo)/$o(d[0],d[1],qo)):1,e.rotation=r?function(t,e){return Jo(e[1],e[0],qo)+Jo(t[1],t[0],qo)}(r.pointers,o):0,e.maxPointers=i.prevInput?e.pointers.length>i.prevInput.maxPointers?e.pointers.length:i.prevInput.maxPointers:e.pointers.length,function(t,e){var i,o,n,s,r=t.lastInterval||e,a=e.timeStamp-r.timeStamp;if(8!==e.eventType&&(a>25||void 0===r.velocity)){var h=e.deltaX-r.deltaX,d=e.deltaY-r.deltaY,l=en(a,h,d);o=l.x,n=l.y,i=Oo(l.x)>Oo(l.y)?l.x:l.y,s=tn(h,d),t.lastInterval=e}else i=r.velocity,o=r.velocityX,n=r.velocityY,s=r.direction;e.velocity=i,e.velocityX=o,e.velocityY=n,e.direction=s}(i,e);var u,p=t.element,f=e.srcEvent;Ko(u=f.composedPath?f.composedPath()[0]:f.path?f.path[0]:f.target,p)&&(p=u),e.target=p}function nn(t,e,i){var o=i.pointers.length,n=i.changedPointers.length,s=1&e&&o-n===0,r=12&e&&o-n===0;i.isFirst=!!s,i.isFinal=!!r,s&&(t.session={}),i.eventType=e,on(t,i),t.emit("hammer.input",i),t.recognize(i),t.session.prevInput=i}function sn(t){return t.trim().split(/\s+/g)}function rn(t,e,i){Uo(sn(e),function(e){t.addEventListener(e,i,!1)})}function an(t,e,i){Uo(sn(e),function(e){t.removeEventListener(e,i,!1)})}function hn(t){var e=t.ownerDocument||t;return e.defaultView||e.parentWindow||window}var dn=function(){function t(t,e){var i=this;this.manager=t,this.callback=e,this.element=t.element,this.target=t.options.inputTarget,this.domHandler=function(e){Yo(t.options.enable,[t])&&i.handler(e)},this.init()}var e=t.prototype;return e.handler=function(){},e.init=function(){this.evEl&&rn(this.element,this.evEl,this.domHandler),this.evTarget&&rn(this.target,this.evTarget,this.domHandler),this.evWin&&rn(hn(this.element),this.evWin,this.domHandler)},e.destroy=function(){this.evEl&&an(this.element,this.evEl,this.domHandler),this.evTarget&&an(this.target,this.evTarget,this.domHandler),this.evWin&&an(hn(this.element),this.evWin,this.domHandler)},t}();function ln(t,e,i){if(t.indexOf&&!i)return t.indexOf(e);for(var o=0;oi[e]}):o.sort()),o}var yn={touchstart:1,touchmove:2,touchend:4,touchcancel:8},bn=function(t){function e(){var i;return e.prototype.evTarget="touchstart touchmove touchend touchcancel",(i=t.apply(this,arguments)||this).targetIds={},i}return vo(e,t),e.prototype.handler=function(t){var e=yn[t.type],i=wn.call(this,t,e);i&&this.callback(this.manager,e,{pointers:i[0],changedPointers:i[1],pointerType:Ro,srcEvent:t})},e}(dn);function wn(t,e){var i,o,n=mn(t.touches),s=this.targetIds;if(3&e&&1===n.length)return s[n[0].identifier]=!0,[n,n];var r=mn(t.changedTouches),a=[],h=this.target;if(o=n.filter(function(t){return Ko(t.target,h)}),1===e)for(i=0;i-1&&o.splice(t,1)},2500)}}function On(t,e){1&t?(this.primaryTouch=e.changedPointers[0].identifier,En.call(this,e)):12&t&&En.call(this,e)}function Cn(t){for(var e=t.srcEvent.clientX,i=t.srcEvent.clientY,o=0;o-1&&this.requireFail.splice(e,1),this},e.hasRequireFailures=function(){return this.requireFail.length>0},e.canRecognizeWith=function(t){return!!this.simultaneous[t.id]},e.emit=function(t){var e=this,i=this.state;function o(i){e.manager.emit(i,t)}i<8&&o(e.options.event+In(i)),o(e.options.event),t.additionalEvent&&o(t.additionalEvent),i>=8&&o(e.options.event+In(i))},e.tryEmit=function(t){if(this.canEmit())return this.emit(t);this.state=Tn},e.canEmit=function(){for(var t=0;te.threshold&&n&e.direction},i.attrTest=function(t){return Bn.prototype.attrTest.call(this,t)&&(2&this.state||!(2&this.state)&&this.directionTest(t))},i.emit=function(e){this.pX=e.deltaX,this.pY=e.deltaY;var i=zn(e.direction);i&&(e.additionalEvent=this.options.event+i),t.prototype.emit.call(this,e)},e}(Bn),An=function(t){function e(e){return void 0===e&&(e={}),t.call(this,mo({event:"swipe",threshold:10,velocity:.3,direction:30,pointers:1},e))||this}vo(e,t);var i=e.prototype;return i.getTouchAction=function(){return Fn.prototype.getTouchAction.call(this)},i.attrTest=function(e){var i,o=this.options.direction;return 30&o?i=e.overallVelocity:6&o?i=e.overallVelocityX:o&Wo&&(i=e.overallVelocityY),t.prototype.attrTest.call(this,e)&&o&e.offsetDirection&&e.distance>this.options.threshold&&e.maxPointers===this.options.pointers&&Oo(i)>this.options.velocity&&4&e.eventType},i.emit=function(t){var e=zn(t.offsetDirection);e&&this.manager.emit(this.options.event+e,t),this.manager.emit(this.options.event,t)},e}(Bn),jn=function(t){function e(e){return void 0===e&&(e={}),t.call(this,mo({event:"pinch",threshold:0,pointers:2},e))||this}vo(e,t);var i=e.prototype;return i.getTouchAction=function(){return[Po]},i.attrTest=function(e){return t.prototype.attrTest.call(this,e)&&(Math.abs(e.scale-1)>this.options.threshold||2&this.state)},i.emit=function(e){if(1!==e.scale){var i=e.scale<1?"in":"out";e.additionalEvent=this.options.event+i}t.prototype.emit.call(this,e)},e}(Bn),Rn=function(t){function e(e){return void 0===e&&(e={}),t.call(this,mo({event:"rotate",threshold:0,pointers:2},e))||this}vo(e,t);var i=e.prototype;return i.getTouchAction=function(){return[Po]},i.attrTest=function(e){return t.prototype.attrTest.call(this,e)&&(Math.abs(e.rotation)>this.options.threshold||2&this.state)},e}(Bn),Ln=function(t){function e(e){var i;return void 0===e&&(e={}),(i=t.call(this,mo({event:"press",pointers:1,time:251,threshold:9},e))||this)._timer=null,i._input=null,i}vo(e,t);var i=e.prototype;return i.getTouchAction=function(){return[Mo]},i.process=function(t){var e=this,i=this.options,o=t.pointers.length===i.pointers,n=t.distancei.time;if(this._input=t,!n||!o||12&t.eventType&&!s)this.reset();else if(1&t.eventType)this.reset(),this._timer=setTimeout(function(){e.state=8,e.tryEmit()},i.time);else if(4&t.eventType)return 8;return Tn},i.reset=function(){clearTimeout(this._timer)},i.emit=function(t){8===this.state&&(t&&4&t.eventType?this.manager.emit(this.options.event+"up",t):(this._input.timeStamp=Co(),this.manager.emit(this.options.event,this._input)))},e}(Pn),Hn={domEvents:!1,touchAction:Do,enable:!0,inputTarget:null,inputClass:null,cssProps:{userSelect:"none",touchSelect:"none",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}},Wn=[[Rn,{enable:!1}],[jn,{enable:!1},["rotate"]],[An,{direction:6}],[Fn,{direction:6},["swipe"]],[Nn],[Nn,{event:"doubletap",taps:2},["tap"]],[Ln]];function Vn(t,e){var i,o=t.element;o.style&&(Uo(t.options.cssProps,function(n,s){i=ko(o.style,s),e?(t.oldCssProps[i]=o.style[i],o.style[i]=n):o.style[i]=t.oldCssProps[i]||""}),e||(t.oldCssProps={}))}var qn=function(){function t(t,e){var i,o=this;this.options=wo({},Hn,e||{}),this.options.inputTarget=this.options.inputTarget||t,this.handlers={},this.session={},this.recognizers=[],this.oldCssProps={},this.element=t,this.input=new((i=this).options.inputClass||(Ao?gn:jo?bn:Fo?kn:xn))(i,nn),this.touchAction=new Go(this,this.options.touchAction),Vn(this,!0),Uo(this.options.recognizers,function(t){var e=o.add(new t[0](t[1]));t[2]&&e.recognizeWith(t[2]),t[3]&&e.requireFailure(t[3])},this)}var e=t.prototype;return e.set=function(t){return wo(this.options,t),t.touchAction&&this.touchAction.update(),t.inputTarget&&(this.input.destroy(),this.input.target=t.inputTarget,this.input.init()),this},e.stop=function(t){this.session.stopped=t?2:1},e.recognize=function(t){var e=this.session;if(!e.stopped){var i;this.touchAction.preventDefaults(t);var o=this.recognizers,n=e.curRecognizer;(!n||n&&8&n.state)&&(e.curRecognizer=null,n=null);for(var s=0;s\s*\(/gm,"{anonymous}()@"):"Unknown Stack Trace",n=window.console&&(window.console.warn||window.console.log);return n&&n.call(window.console,o,i),t.apply(this,arguments)}}var Kn=Gn(function(t,e,i){for(var o=Object.keys(e),n=0;n2)return os(is(t[0],t[1]),...t.slice(2));const e=t[0],i=t[1];if(e instanceof Date&&i instanceof Date)return e.setTime(i.getTime()),e;for(const t of Reflect.ownKeys(i))Object.prototype.propertyIsEnumerable.call(i,t)&&(i[t]===ts?delete e[t]:null===e[t]||null===i[t]||"object"!=typeof e[t]||"object"!=typeof i[t]||Array.isArray(e[t])||Array.isArray(i[t])?e[t]=ns(i[t]):e[t]=os(e[t],i[t]));return e}function ns(t){return Array.isArray(t)?t.map(t=>ns(t)):"object"==typeof t&&null!==t?t instanceof Date?new Date(t.getTime()):os({},t):t}function ss(t){for(const e of Object.keys(t))t[e]===ts?delete t[e]:"object"==typeof t[e]&&null!==t[e]&&ss(t[e])}function rs(...t){return function(t){let[e,i,o]=function(...t){const e=function(){let t=4022871197;return function(e){const i=e.toString();for(let e=0;e>>0,o-=t,o*=t,t=o>>>0,o-=t,t+=4294967296*o}return 2.3283064365386963e-10*(t>>>0)}}();let i=e(" "),o=e(" "),n=e(" ");for(let s=0;s{const t=2091639*e+2.3283064365386963e-10*n;return e=i,i=o,o=t-(n=0|t)};return s.uint32=()=>4294967296*s(),s.fract53=()=>s()+11102230246251565e-32*(2097152*s()|0),s.algorithm="Alea",s.seed=t,s.version="0.9",s}(t.length?t:[Date.now()])}const as="undefined"!=typeof window?window.Hammer||Jn:function(){return function(){const t=()=>{};return{on:t,off:t,destroy:t,emit:t,get:()=>({set:t})}}()};function hs(t){this._cleanupQueue=[],this.active=!1,this._dom={container:t,overlay:document.createElement("div")},this._dom.overlay.classList.add("vis-overlay"),this._dom.container.appendChild(this._dom.overlay),this._cleanupQueue.push(()=>{this._dom.overlay.parentNode.removeChild(this._dom.overlay)});const e=as(this._dom.overlay);e.on("tap",this._onTapOverlay.bind(this)),this._cleanupQueue.push(()=>{e.destroy()});["tap","doubletap","press","pinch","pan","panstart","panmove","panend"].forEach(t=>{e.on(t,t=>{t.srcEvent.stopPropagation()})}),document&&document.body&&(this._onClick=e=>{(function(t,e){for(;t;){if(t===e)return!0;t=t.parentNode}return!1})(e.target,t)||this.deactivate()},document.body.addEventListener("click",this._onClick),this._cleanupQueue.push(()=>{document.body.removeEventListener("click",this._onClick)})),this._escListener=t=>{("key"in t?"Escape"===t.key:27===t.keyCode)&&this.deactivate()}}go(hs.prototype),hs.current=null,hs.prototype.destroy=function(){this.deactivate();for(const t of this._cleanupQueue.splice(0).reverse())t()},hs.prototype.activate=function(){hs.current&&hs.current.deactivate(),hs.current=this,this.active=!0,this._dom.overlay.style.display="none",this._dom.container.classList.add("vis-active"),this.emit("change"),this.emit("activate"),document.body.addEventListener("keydown",this._escListener)},hs.prototype.deactivate=function(){this.active=!1,this._dom.overlay.style.display="block",this._dom.container.classList.remove("vis-active"),document.body.removeEventListener("keydown",this._escListener),this.emit("change"),this.emit("deactivate")},hs.prototype._onTapOverlay=function(t){this.activate(),t.srcEvent.stopPropagation()};const ds=/^\/?Date\((-?\d+)/i,ls=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i,cs=/^#?([a-f\d])([a-f\d])([a-f\d])$/i,us=/^rgb\( *(1?\d{1,2}|2[0-4]\d|25[0-5]) *, *(1?\d{1,2}|2[0-4]\d|25[0-5]) *, *(1?\d{1,2}|2[0-4]\d|25[0-5]) *\)$/i,ps=/^rgba\( *(1?\d{1,2}|2[0-4]\d|25[0-5]) *, *(1?\d{1,2}|2[0-4]\d|25[0-5]) *, *(1?\d{1,2}|2[0-4]\d|25[0-5]) *, *([01]|0?\.\d+) *\)$/i;function fs(t){return t instanceof Number||"number"==typeof t}function gs(t){if(t)for(;!0===t.hasChildNodes();){const e=t.firstChild;e&&(gs(e),t.removeChild(e))}}function ms(t){return t instanceof String||"string"==typeof t}function vs(t){return"object"==typeof t&&null!==t}function ys(t,e,i,o){let n=!1;!0===o&&(n=null===e[i]&&void 0!==t[i]),n?delete t[i]:t[i]=e[i]}function bs(t,e,i=!1){for(const o in t)if(void 0!==e[o])if(null===e[o]||"object"!=typeof e[o])ys(t,e,o,i);else{const n=t[o],s=e[o];vs(n)&&vs(s)&&bs(n,s,i)}}const ws=Object.assign;function _s(t,e,i,o=!1){if(Array.isArray(i))throw new TypeError("Arrays are not supported by deepExtend");for(let n=0;n("function"==typeof t&&(t=t()),null!=t?0!=t:e||null),asNumber:(t,e)=>("function"==typeof t&&(t=t()),null!=t?Number(t)||e||null:e||null),asString:(t,e)=>("function"==typeof t&&(t=t()),null!=t?String(t):e||null),asSize:(t,e)=>("function"==typeof t&&(t=t()),ms(t)?t:fs(t)?t+"px":e||null),asElement:(t,e)=>("function"==typeof t&&(t=t()),t||e||null)};function Is(t){let e;switch(t.length){case 3:case 4:return e=cs.exec(t),e?{r:parseInt(e[1]+e[1],16),g:parseInt(e[2]+e[2],16),b:parseInt(e[3]+e[3],16)}:null;case 6:case 7:return e=ls.exec(t),e?{r:parseInt(e[1],16),g:parseInt(e[2],16),b:parseInt(e[3],16)}:null;default:return null}}function Ps(t,e){if(t.includes("rgba"))return t;if(t.includes("rgb")){const i=t.substr(t.indexOf("(")+1).replace(")","").split(",");return"rgba("+i[0]+","+i[1]+","+i[2]+","+e+")"}{const i=Is(t);return null==i?t:"rgba("+i.r+","+i.g+","+i.b+","+e+")"}}function Ns(t,e,i){return"#"+((1<<24)+(t<<16)+(e<<8)+i).toString(16).slice(1)}function Bs(t,e){if(ms(t)){let e=t;if(Hs(e)){const t=e.substr(4).substr(0,e.length-5).split(",").map(function(t){return parseInt(t)});e=Ns(t[0],t[1],t[2])}if(!0===Ls(e)){const t=Rs(e),i={h:t.h,s:.8*t.s,v:Math.min(1,1.02*t.v)},o={h:t.h,s:Math.min(1,1.25*t.s),v:.8*t.v},n=js(o.h,o.s,o.v),s=js(i.h,i.s,i.v);return{background:e,border:n,highlight:{background:s,border:n},hover:{background:s,border:n}}}return{background:e,border:e,highlight:{background:e,border:e},hover:{background:e,border:e}}}if(e){return{background:t.background||e.background,border:t.border||e.border,highlight:ms(t.highlight)?{border:t.highlight,background:t.highlight}:{background:t.highlight&&t.highlight.background||e.highlight.background,border:t.highlight&&t.highlight.border||e.highlight.border},hover:ms(t.hover)?{border:t.hover,background:t.hover}:{border:t.hover&&t.hover.border||e.hover.border,background:t.hover&&t.hover.background||e.hover.background}}}return{background:t.background||void 0,border:t.border||void 0,highlight:ms(t.highlight)?{border:t.highlight,background:t.highlight}:{background:t.highlight&&t.highlight.background||void 0,border:t.highlight&&t.highlight.border||void 0},hover:ms(t.hover)?{border:t.hover,background:t.hover}:{border:t.hover&&t.hover.border||void 0,background:t.hover&&t.hover.background||void 0}}}function zs(t,e,i){t/=255,e/=255,i/=255;const o=Math.min(t,Math.min(e,i)),n=Math.max(t,Math.max(e,i));if(o===n)return{h:0,s:0,v:o};return{h:60*((t===o?3:i===o?1:5)-(t===o?e-i:i===o?t-e:i-t)/(n-o))/360,s:(n-o)/n,v:n}}function Fs(t){const e=document.createElement("div"),i={};e.style.cssText=t;for(let t=0;tt,easeInQuad:t=>t*t,easeOutQuad:t=>t*(2-t),easeInOutQuad:t=>t<.5?2*t*t:(4-2*t)*t-1,easeInCubic:t=>t*t*t,easeOutCubic:t=>--t*t*t+1,easeInOutCubic:t=>t<.5?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1,easeInQuart:t=>t*t*t*t,easeOutQuart:t=>1- --t*t*t*t,easeInOutQuart:t=>t<.5?8*t*t*t*t:1-8*--t*t*t*t,easeInQuint:t=>t*t*t*t*t,easeOutQuint:t=>1+--t*t*t*t*t,easeInOutQuint:t=>t<.5?16*t*t*t*t*t:1+16*--t*t*t*t*t};function Ys(t,e){let i;Array.isArray(e)||(e=[e]);for(const o of t)if(o){i=o[e[0]];for(let t=1;t{},this.closeCallback=()=>{},this._create()}insertTo(t){void 0!==this.hammer&&(this.hammer.destroy(),this.hammer=void 0),this.container=t,this.container.appendChild(this.frame),this._bindHammer(),this._setSize()}setUpdateCallback(t){if("function"!=typeof t)throw new Error("Function attempted to set as colorPicker update callback is not a function.");this.updateCallback=t}setCloseCallback(t){if("function"!=typeof t)throw new Error("Function attempted to set as colorPicker closing callback is not a function.");this.closeCallback=t}_isColorString(t){if("string"==typeof t)return Xs[t]}setColor(t,e=!0){if("none"===t)return;let i;const o=this._isColorString(t);if(void 0!==o&&(t=o),!0===ms(t)){if(!0===Hs(t)){const e=t.substr(4).substr(0,t.length-5).split(",");i={r:e[0],g:e[1],b:e[2],a:1}}else if(!0===Ws(t)){const e=t.substr(5).substr(0,t.length-6).split(",");i={r:e[0],g:e[1],b:e[2],a:e[3]}}else if(!0===Ls(t)){const e=Is(t);i={r:e.r,g:e.g,b:e.b,a:1}}}else if(t instanceof Object&&void 0!==t.r&&void 0!==t.g&&void 0!==t.b){const e=void 0!==t.a?t.a:"1.0";i={r:t.r,g:t.g,b:t.b,a:e}}if(void 0===i)throw new Error("Unknown color passed to the colorPicker. Supported are strings: rgb, hex, rgba. Object: rgb ({r:r,g:g,b:b,[a:a]}). Supplied: "+JSON.stringify(t));this._setColor(i,e)}show(){void 0!==this.closeCallback&&(this.closeCallback(),this.closeCallback=void 0),this.applied=!1,this.frame.style.display="block",this._generateHueCircle()}_hide(t=!0){!0===t&&(this.previousColor=Object.assign({},this.color)),!0===this.applied&&this.updateCallback(this.initialColor),this.frame.style.display="none",setTimeout(()=>{void 0!==this.closeCallback&&(this.closeCallback(),this.closeCallback=void 0)},0)}_save(){this.updateCallback(this.color),this.applied=!1,this._hide()}_apply(){this.applied=!0,this.updateCallback(this.color),this._updatePicker(this.color)}_loadLast(){void 0!==this.previousColor?this.setColor(this.previousColor,!1):alert("There is no last color to load...")}_setColor(t,e=!0){!0===e&&(this.initialColor=Object.assign({},t)),this.color=t;const i=zs(t.r,t.g,t.b),o=2*Math.PI,n=this.r*i.s,s=this.centerCoordinates.x+n*Math.sin(o*i.h),r=this.centerCoordinates.y+n*Math.cos(o*i.h);this.colorPickerSelector.style.left=s-.5*this.colorPickerSelector.clientWidth+"px",this.colorPickerSelector.style.top=r-.5*this.colorPickerSelector.clientHeight+"px",this._updatePicker(t)}_setOpacity(t){this.color.a=t/100,this._updatePicker(this.color)}_setBrightness(t){const e=zs(this.color.r,this.color.g,this.color.b);e.v=t/100;const i=As(e.h,e.s,e.v);i.a=this.color.a,this.color=i,this._updatePicker()}_updatePicker(t=this.color){const e=zs(t.r,t.g,t.b),i=this.colorPickerCanvas.getContext("2d");void 0===this.pixelRation&&(this.pixelRatio=(window.devicePixelRatio||1)/(i.webkitBackingStorePixelRatio||i.mozBackingStorePixelRatio||i.msBackingStorePixelRatio||i.oBackingStorePixelRatio||i.backingStorePixelRatio||1)),i.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);const o=this.colorPickerCanvas.clientWidth,n=this.colorPickerCanvas.clientHeight;i.clearRect(0,0,o,n),i.putImageData(this.hueCircle,0,0),i.fillStyle="rgba(0,0,0,"+(1-e.v)+")",i.circle(this.centerCoordinates.x,this.centerCoordinates.y,this.r),i.fill(),this.brightnessRange.value=100*e.v,this.opacityRange.value=100*t.a,this.initialColorDiv.style.backgroundColor="rgba("+this.initialColor.r+","+this.initialColor.g+","+this.initialColor.b+","+this.initialColor.a+")",this.newColorDiv.style.backgroundColor="rgba("+this.color.r+","+this.color.g+","+this.color.b+","+this.color.a+")"}_setSize(){this.colorPickerCanvas.style.width="100%",this.colorPickerCanvas.style.height="100%",this.colorPickerCanvas.width=289*this.pixelRatio,this.colorPickerCanvas.height=289*this.pixelRatio}_create(){if(this.frame=document.createElement("div"),this.frame.className="vis-color-picker",this.colorPickerDiv=document.createElement("div"),this.colorPickerSelector=document.createElement("div"),this.colorPickerSelector.className="vis-selector",this.colorPickerDiv.appendChild(this.colorPickerSelector),this.colorPickerCanvas=document.createElement("canvas"),this.colorPickerDiv.appendChild(this.colorPickerCanvas),this.colorPickerCanvas.getContext){const t=this.colorPickerCanvas.getContext("2d");this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1),this.colorPickerCanvas.getContext("2d").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}else{const t=document.createElement("DIV");t.style.color="red",t.style.fontWeight="bold",t.style.padding="10px",t.innerText="Error: your browser does not support HTML canvas",this.colorPickerCanvas.appendChild(t)}this.colorPickerDiv.className="vis-color",this.opacityDiv=document.createElement("div"),this.opacityDiv.className="vis-opacity",this.brightnessDiv=document.createElement("div"),this.brightnessDiv.className="vis-brightness",this.arrowDiv=document.createElement("div"),this.arrowDiv.className="vis-arrow",this.opacityRange=document.createElement("input");try{this.opacityRange.type="range",this.opacityRange.min="0",this.opacityRange.max="100"}catch(t){}this.opacityRange.value="100",this.opacityRange.className="vis-range",this.brightnessRange=document.createElement("input");try{this.brightnessRange.type="range",this.brightnessRange.min="0",this.brightnessRange.max="100"}catch(t){}this.brightnessRange.value="100",this.brightnessRange.className="vis-range",this.opacityDiv.appendChild(this.opacityRange),this.brightnessDiv.appendChild(this.brightnessRange);const t=this;this.opacityRange.onchange=function(){t._setOpacity(this.value)},this.opacityRange.oninput=function(){t._setOpacity(this.value)},this.brightnessRange.onchange=function(){t._setBrightness(this.value)},this.brightnessRange.oninput=function(){t._setBrightness(this.value)},this.brightnessLabel=document.createElement("div"),this.brightnessLabel.className="vis-label vis-brightness",this.brightnessLabel.innerText="brightness:",this.opacityLabel=document.createElement("div"),this.opacityLabel.className="vis-label vis-opacity",this.opacityLabel.innerText="opacity:",this.newColorDiv=document.createElement("div"),this.newColorDiv.className="vis-new-color",this.newColorDiv.innerText="new",this.initialColorDiv=document.createElement("div"),this.initialColorDiv.className="vis-initial-color",this.initialColorDiv.innerText="initial",this.cancelButton=document.createElement("div"),this.cancelButton.className="vis-button vis-cancel",this.cancelButton.innerText="cancel",this.cancelButton.onclick=this._hide.bind(this,!1),this.applyButton=document.createElement("div"),this.applyButton.className="vis-button vis-apply",this.applyButton.innerText="apply",this.applyButton.onclick=this._apply.bind(this),this.saveButton=document.createElement("div"),this.saveButton.className="vis-button vis-save",this.saveButton.innerText="save",this.saveButton.onclick=this._save.bind(this),this.loadButton=document.createElement("div"),this.loadButton.className="vis-button vis-load",this.loadButton.innerText="load last",this.loadButton.onclick=this._loadLast.bind(this),this.frame.appendChild(this.colorPickerDiv),this.frame.appendChild(this.arrowDiv),this.frame.appendChild(this.brightnessLabel),this.frame.appendChild(this.brightnessDiv),this.frame.appendChild(this.opacityLabel),this.frame.appendChild(this.opacityDiv),this.frame.appendChild(this.newColorDiv),this.frame.appendChild(this.initialColorDiv),this.frame.appendChild(this.cancelButton),this.frame.appendChild(this.applyButton),this.frame.appendChild(this.saveButton),this.frame.appendChild(this.loadButton)}_bindHammer(){this.drag={},this.pinch={},this.hammer=new as(this.colorPickerCanvas),this.hammer.get("pinch").set({enable:!0}),this.hammer.on("hammer.input",t=>{t.isFirst&&this._moveSelector(t)}),this.hammer.on("tap",t=>{this._moveSelector(t)}),this.hammer.on("panstart",t=>{this._moveSelector(t)}),this.hammer.on("panmove",t=>{this._moveSelector(t)}),this.hammer.on("panend",t=>{this._moveSelector(t)})}_generateHueCircle(){if(!1===this.generated){const t=this.colorPickerCanvas.getContext("2d");void 0===this.pixelRation&&(this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1)),t.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);const e=this.colorPickerCanvas.clientWidth,i=this.colorPickerCanvas.clientHeight;let o,n,s,r;t.clearRect(0,0,e,i),this.centerCoordinates={x:.5*e,y:.5*i},this.r=.49*e;const a=2*Math.PI/360,h=1/360,d=1/this.r;let l;for(s=0;s<360;s++)for(r=0;r!1){this.parent=t,this.changedOptions=[],this.container=e,this.allowCreation=!1,this.hideOption=n,this.options={},this.initialized=!1,this.popupCounter=0,this.defaultOptions={enabled:!1,filter:!0,container:void 0,showButton:!0},Object.assign(this.options,this.defaultOptions),this.configureOptions=i,this.moduleOptions={},this.domElements=[],this.popupDiv={},this.popupLimit=5,this.popupHistory={},this.colorPicker=new Gs(o),this.wrapper=void 0}setOptions(t){if(void 0!==t){this.popupHistory={},this._removePopup();let e=!0;if("string"==typeof t)this.options.filter=t;else if(Array.isArray(t))this.options.filter=t.join();else if("object"==typeof t){if(null==t)throw new TypeError("options cannot be null");void 0!==t.container&&(this.options.container=t.container),void 0!==t.filter&&(this.options.filter=t.filter),void 0!==t.showButton&&(this.options.showButton=t.showButton),void 0!==t.enabled&&(e=t.enabled)}else"boolean"==typeof t?(this.options.filter=!0,e=t):"function"==typeof t&&(this.options.filter=t,e=!0);!1===this.options.filter&&(e=!1),this.options.enabled=e}this._clean()}setModuleOptions(t){this.moduleOptions=t,!0===this.options.enabled&&(this._clean(),void 0!==this.options.container&&(this.container=this.options.container),this._create())}_create(){this._clean(),this.changedOptions=[];const t=this.options.filter;let e=0,i=!1;for(const o in this.configureOptions)Object.prototype.hasOwnProperty.call(this.configureOptions,o)&&(this.allowCreation=!1,i=!1,"function"==typeof t?(i=t(o,[]),i=i||this._handleObject(this.configureOptions[o],[o],!0)):!0!==t&&-1===t.indexOf(o)||(i=!0),!1!==i&&(this.allowCreation=!0,e>0&&this._makeItem([]),this._makeHeader(o),this._handleObject(this.configureOptions[o],[o])),e++);this._makeButton(),this._push()}_push(){this.wrapper=document.createElement("div"),this.wrapper.className="vis-configuration-wrapper",this.container.appendChild(this.wrapper);for(let t=0;t{i.appendChild(t)}),this.domElements.push(i),this.domElements.length}return 0}_makeHeader(t){const e=document.createElement("div");e.className="vis-configuration vis-config-header",e.innerText=t,this._makeItem([],e)}_makeLabel(t,e,i=!1){const o=document.createElement("div");if(o.className="vis-configuration vis-config-label vis-config-s"+e.length,!0===i){for(;o.firstChild;)o.removeChild(o.firstChild);o.appendChild(Ks("i","b",t))}else o.innerText=t+":";return o}_makeDropdown(t,e,i){const o=document.createElement("select");o.className="vis-configuration vis-config-select";let n=0;void 0!==e&&-1!==t.indexOf(e)&&(n=t.indexOf(e));for(let e=0;es&&1!==s&&(a.max=Math.ceil(e*t),d=a.max,h="range increased"),a.value=e}else a.value=o;const l=document.createElement("input");l.className="vis-configuration vis-config-rangeinput",l.value=a.value;const c=this;a.onchange=function(){l.value=this.value,c._update(Number(this.value),i)},a.oninput=function(){l.value=this.value};const u=this._makeLabel(i[i.length-1],i),p=this._makeItem(i,u,a,l);""!==h&&this.popupHistory[p]!==d&&(this.popupHistory[p]=d,this._setupPopup(h,p))}_makeButton(){if(!0===this.options.showButton){const t=document.createElement("div");t.className="vis-configuration vis-config-button",t.innerText="generate options",t.onclick=()=>{this._printOptions()},t.onmouseover=()=>{t.className="vis-configuration vis-config-button hover"},t.onmouseout=()=>{t.className="vis-configuration vis-config-button"},this.optionsContainer=document.createElement("div"),this.optionsContainer.className="vis-configuration vis-config-option-container",this.domElements.push(this.optionsContainer),this.domElements.push(t)}}_setupPopup(t,e){if(!0===this.initialized&&!0===this.allowCreation&&this.popupCounter{this._removePopup()},this.popupCounter+=1,this.popupDiv={html:i,index:e}}}_removePopup(){void 0!==this.popupDiv.html&&(this.popupDiv.html.parentNode.removeChild(this.popupDiv.html),clearTimeout(this.popupDiv.hideTimeout),clearTimeout(this.popupDiv.deleteTimeout),this.popupDiv={})}_showPopupIfNeeded(){if(void 0!==this.popupDiv.html){const t=this.domElements[this.popupDiv.index].getBoundingClientRect();this.popupDiv.html.style.left=t.left+"px",this.popupDiv.html.style.top=t.top-30+"px",document.body.appendChild(this.popupDiv.html),this.popupDiv.hideTimeout=setTimeout(()=>{this.popupDiv.html.style.opacity=0},1500),this.popupDiv.deleteTimeout=setTimeout(()=>{this._removePopup()},1800)}}_makeCheckbox(t,e,i){const o=document.createElement("input");o.type="checkbox",o.className="vis-configuration vis-config-checkbox",o.checked=t,void 0!==e&&(o.checked=e,e!==t&&("object"==typeof t?e!==t.enabled&&this.changedOptions.push({path:i,value:e}):this.changedOptions.push({path:i,value:e})));const n=this;o.onchange=function(){n._update(this.checked,i)};const s=this._makeLabel(i[i.length-1],i);this._makeItem(i,s,o)}_makeTextInput(t,e,i){const o=document.createElement("input");o.type="text",o.className="vis-configuration vis-config-text",o.value=e,e!==t&&this.changedOptions.push({path:i,value:e});const n=this;o.onchange=function(){n._update(this.value,i)};const s=this._makeLabel(i[i.length-1],i);this._makeItem(i,s,o)}_makeColorField(t,e,i){const o=t[1],n=document.createElement("div");"none"!==(e=void 0===e?o:e)?(n.className="vis-configuration vis-config-colorBlock",n.style.backgroundColor=e):n.className="vis-configuration vis-config-colorBlock none",e=void 0===e?o:e,n.onclick=()=>{this._showColorPicker(e,n,i)};const s=this._makeLabel(i[i.length-1],i);this._makeItem(i,s,n)}_showColorPicker(t,e,i){e.onclick=function(){},this.colorPicker.insertTo(e),this.colorPicker.show(),this.colorPicker.setColor(t),this.colorPicker.setUpdateCallback(t=>{const o="rgba("+t.r+","+t.g+","+t.b+","+t.a+")";e.style.backgroundColor=o,this._update(o,i)}),this.colorPicker.setCloseCallback(()=>{e.onclick=()=>{this._showColorPicker(t,e,i)}})}_handleObject(t,e=[],i=!1){let o=!1;const n=this.options.filter;let s=!1;for(const r in t)if(Object.prototype.hasOwnProperty.call(t,r)){o=!0;const a=t[r],h=Os(e,r);if("function"==typeof n&&(o=n(r,e),!1===o&&!Array.isArray(a)&&"string"!=typeof a&&"boolean"!=typeof a&&a instanceof Object&&(this.allowCreation=!1,o=this._handleObject(a,h,!0),this.allowCreation=!1===i)),!1!==o){s=!0;const t=this._getValue(h);if(Array.isArray(a))this._handleArray(a,t,h);else if("string"==typeof a)this._makeTextInput(a,t,h);else if("boolean"==typeof a)this._makeCheckbox(a,t,h);else if(a instanceof Object){if(!this.hideOption(e,r,this.moduleOptions))if(void 0!==a.enabled){const t=Os(h,"enabled"),e=this._getValue(t);if(!0===e){const t=this._makeLabel(r,h,!0);this._makeItem(h,t),s=this._handleObject(a,h)||s}else this._makeCheckbox(a,e,h)}else{const t=this._makeLabel(r,h,!0);this._makeItem(h,t),s=this._handleObject(a,h)||s}}else console.error("dont know how to handle",a,r,h)}}return s}_handleArray(t,e,i){"string"==typeof t[0]&&"color"===t[0]?(this._makeColorField(t,e,i),t[1]!==e&&this.changedOptions.push({path:i,value:e})):"string"==typeof t[0]?(this._makeDropdown(t,e,i),t[0]!==e&&this.changedOptions.push({path:i,value:e})):"number"==typeof t[0]&&(this._makeRange(t,e,i),t[0]!==e&&this.changedOptions.push({path:i,value:Number(e)}))}_update(t,e){const i=this._constructOptions(t,e);this.parent.body&&this.parent.body.emitter&&this.parent.body.emitter.emit&&this.parent.body.emitter.emit("configChange",i),this.initialized=!0,this.parent.setOptions(i)}_constructOptions(t,e,i={}){let o=i;t="false"!==(t="true"===t||t)&&t;for(let i=0;io-this.padding&&(i=!0),n=i?this.x-e:this.x,s=r?this.y-t:this.y}else s=this.y-t,s+t+this.padding>i&&(s=i-t-this.padding),so&&(n=o-e-this.padding),ns.distance?" in "+t.printLocation(n.path,e,"")+"Perhaps it was misplaced? Matching option found at: "+t.printLocation(s.path,s.closestMatch,""):n.distance<=8?'. Did you mean "'+n.closestMatch+'"?'+t.printLocation(n.path,e):". Did you mean one of these: "+t.print(Object.keys(i))+t.printLocation(o,e),console.error('%cUnknown option detected: "'+e+'"'+r,$s),Qs=!0}static findInOptions(e,i,o,n=!1){let s=1e9,r="",a=[];const h=e.toLowerCase();let d;for(const l in i){let c;if(void 0!==i[l].__type__&&!0===n){const n=t.findInOptions(e,i[l],Os(o,l));s>n.distance&&(r=n.closestMatch,a=n.path,s=n.distance,d=n.indexMatch)}else-1!==l.toLowerCase().indexOf(h)&&(d=l),c=t.levenshteinDistance(e,l),s>c&&(r=l,a=Cs(o),s=c)}return{closestMatch:r,path:a,distance:s,indexMatch:d}}static printLocation(t,e,i="Problem value found at: \n"){let o="\n\n"+i+"options = {\n";for(let e=0;e0)return"before"==o?Math.max(0,h-1):h;if(n(r,e)<0&&n(a,e)>0)return"before"==o?h:Math.min(t.length-1,h+1);n(r,e)<0?l=h+1:c=h-1,d++}return-1},bridgeObject:Vs,copyAndExtendArray:Os,copyArray:Cs,deepExtend:Es,deepObjectAssign:is,easingFunctions:Us,equalArray:function(t,e){if(t.length!==e.length)return!1;for(let i=0,o=t.length;i0&&e(o,t[n-1])<0;n--)t[n]=t[n-1];t[n]=o}return t},isDate:function(t){if(t instanceof Date)return!0;if(ms(t)){if(ds.exec(t))return!0;if(!isNaN(Date.parse(t)))return!0}return!1},isNumber:fs,isObject:vs,isString:ms,isValidHex:Ls,isValidRGB:Hs,isValidRGBA:Ws,mergeOptions:qs,option:Ms,overrideOpacity:Ps,parseColor:Bs,preventDefault:function(t){t||(t=window.event),t&&(t.preventDefault?t.preventDefault():t.returnValue=!1)},pureDeepObjectAssign:es,recursiveDOMDelete:gs,removeClassName:function(t,e){let i=t.className.split(" ");const o=e.split(" ");i=i.filter(function(t){return!o.includes(t)}),t.className=i.join(" ")},removeCssText:function(t,e){const i=Fs(e);for(const e of Object.keys(i))t.style.removeProperty(e)},selectiveBridgeObject:function(t,e){if(null!==e&&"object"==typeof e){const i=Object.create(e);for(let o=0;o{e||(e=!0,requestAnimationFrame(()=>{e=!1,t()}))}},toArray:Ds,topMost:Ys,updateProperty:function(t,e,i){return t[e]!==i&&(t[e]=i,!0)}}),_r={};function xr(){if(rr)return _r;rr=1;var t=N(),e=ni(),i=ri(),o=si(),n=Ot(),s=yi();return _r.f=t&&!e?Object.defineProperties:function(t,e){o(t);for(var r,a=n(e),h=s(e),d=h.length,l=0;d>l;)i.f(t,r=h[l++],a[r]);return t},_r}function Er(){return hr?ar:(hr=1,ar=St()("document","documentElement"))}function Or(){if(lr)return dr;lr=1;var t=me(),e=be(),i=t("keys");return dr=function(t){return i[t]||(i[t]=e(t))}}function Cr(){if(ur)return cr;ur=1;var t,e=si(),i=xr(),o=vi(),n=gi(),s=Er(),r=Ee(),a="prototype",h="script",d=Or()("IE_PROTO"),l=function(){},c=function(t){return"<"+h+">"+t+""},u=function(t){t.write(c("")),t.close();var e=t.parentWindow.Object;return t=null,e},p=function(){try{t=new ActiveXObject("htmlfile")}catch(t){}var e,i,n;p="undefined"!=typeof document?document.domain&&t?u(t):(i=r("iframe"),n="java"+h+":",i.style.display="none",s.appendChild(i),i.src=String(n),(e=i.contentWindow.document).open(),e.write(c("document.F=Object")),e.close(),e.F):u(t);for(var d=o.length;d--;)delete p[a][o[d]];return p()};return n[d]=!0,cr=Object.create||function(t,o){var n;return null!==t?(l[a]=e(t),n=new l,l[a]=null,n[d]=t):n=p(),void 0===o?n:i.f(n,o)}}function kr(){if(gr)return fr;gr=1,pr||(pr=1,hi()({target:"Object",stat:!0,sham:!N()},{create:Cr()}));var t=kt().Object;return fr=function(e,i){return t.create(e,i)}}function Sr(){return vr?mr:(vr=1,mr=kr())}var Tr,Dr,Mr,Ir,Pr,Nr,Br,zr,Fr,Ar,jr,Rr=i(br?yr:(br=1,yr=Sr())),Lr={};function Hr(){if(Dr)return Tr;Dr=1;var t=_();return Tr=function(e,i){var o=[][e];return!!o&&t(function(){o.call(null,i||function(){return 1},1)})}}function Wr(){return Pr?Ir:(Pr=1,function(){if(Mr)return Lr;Mr=1;var t=hi(),e=k(),i=fi().indexOf,o=Hr(),n=e([].indexOf),s=!!n&&1/n([1],1,-0)<0;t({target:"Array",proto:!0,forced:s||!o("indexOf")},{indexOf:function(t){var e=arguments.length>1?arguments[1]:void 0;return s?n(this,t,e)||0:i(this,t,e)}})}(),Ir=Ji()("Array","indexOf"))}function Vr(){if(Br)return Nr;Br=1;var t=Tt(),e=Wr(),i=Array.prototype;return Nr=function(o){var n=o.indexOf;return o===i||t(i,o)&&n===i.indexOf?e:n},Nr}function qr(){return Fr?zr:(Fr=1,zr=Vr())}var Ur,Yr,Xr,Gr,Kr,Zr=i(jr?Ar:(jr=1,Ar=qr())),Qr={};function $r(){return Yr?Ur:(Yr=1,Ur=function(){})}function Jr(){return Kr?Gr:(Kr=1,function(){if(Xr)return Qr;Xr=1;var t=hi(),e=fi().includes,i=_(),o=$r();t({target:"Array",proto:!0,forced:i(function(){return!Array(1).includes()})},{includes:function(t){return e(this,t,arguments.length>1?arguments[1]:void 0)}}),o("includes")}(),Gr=Ji()("Array","includes"))}var ta,ea,ia,oa,na,sa,ra,aa,ha,da,la,ca,ua,pa,fa,ga,ma,va,ya,ba,wa,_a={};function xa(){if(ea)return ta;ea=1;var t=Ct(),e=C(),i=we()("match");return ta=function(o){var n;return t(o)&&(void 0!==(n=o[i])?!!n:"RegExp"===e(o))},ta}function Ea(){if(oa)return ia;oa=1;var t=xa(),e=TypeError;return ia=function(i){if(t(i))throw new e("The method doesn't accept regular expressions");return i},ia}function Oa(){if(sa)return na;sa=1;var t={};return t[we()("toStringTag")]="z",na="[object z]"===String(t)}function Ca(){if(aa)return ra;aa=1;var t=Oa(),e=S(),i=C(),o=we()("toStringTag"),n=Object,s="Arguments"===i(function(){return arguments}());return ra=t?i:function(t){var r,a,h;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(a=function(t,e){try{return t[e]}catch(t){}}(r=n(t),o))?a:s?i(r):"Object"===(h=i(r))&&e(r.callee)?"Arguments":h},ra}function ka(){if(da)return ha;da=1;var t=Ca(),e=String;return ha=function(i){if("Symbol"===t(i))throw new TypeError("Cannot convert a Symbol value to a string");return e(i)}}function Sa(){if(ca)return la;ca=1;var t=we()("match");return la=function(e){var i=/./;try{"/./"[e](i)}catch(o){try{return i[t]=!1,"/./"[e](i)}catch(t){}}return!1}}function Ta(){return fa?pa:(fa=1,function(){if(ua)return _a;ua=1;var t=hi(),e=O(),i=Ea(),o=Et(),n=ka(),s=Sa(),r=e("".indexOf);t({target:"String",proto:!0,forced:!s("includes")},{includes:function(t){return!!~r(n(o(this)),n(i(t)),arguments.length>1?arguments[1]:void 0)}})}(),pa=Ji()("String","includes"))}function Da(){if(ma)return ga;ma=1;var t=Tt(),e=Jr(),i=Ta(),o=Array.prototype,n=String.prototype;return ga=function(s){var r=s.includes;return s===o||t(o,s)&&r===o.includes?e:"string"==typeof s||s===n||t(n,s)&&r===n.includes?i:r},ga}function Ma(){return ya?va:(ya=1,va=Da())}var Ia,Pa,Na,Ba,za,Fa,Aa,ja,Ra,La,Ha,Wa,Va,qa,Ua,Ya,Xa,Ga,Ka,Za,Qa,$a,Ja,th,eh,ih,oh,nh,sh,rh=i(wa?ba:(wa=1,ba=Ma())),ah={};function hh(){if(Pa)return Ia;Pa=1;var t=C();return Ia=Array.isArray||function(e){return"Array"===t(e)}}function dh(){if(Ba)return Na;Ba=1;var t=N(),e=hh(),i=TypeError,o=Object.getOwnPropertyDescriptor,n=t&&!function(){if(void 0!==this)return!0;try{Object.defineProperty([],"length",{writable:!1}).length=1}catch(t){return t instanceof TypeError}}();return Na=n?function(t,n){if(e(t)&&!o(t,"length").writable)throw new i("Cannot set read only .length");return t.length=n}:function(t,e){return t.length=e}}function lh(){if(Fa)return za;Fa=1;var t=TypeError;return za=function(e){if(e>9007199254740991)throw t("Maximum allowed index exceeded");return e},za}function ch(){if(ja)return Aa;ja=1;var t=O(),e=S(),i=ge(),o=t(Function.toString);return e(i.inspectSource)||(i.inspectSource=function(t){return o(t)}),Aa=i.inspectSource}function uh(){if(La)return Ra;La=1;var t=O(),e=_(),i=S(),o=Ca(),n=St(),s=ch(),r=function(){},a=n("Reflect","construct"),h=/^\s*(?:class|function)\b/,d=t(h.exec),l=!h.test(r),c=function(t){if(!i(t))return!1;try{return a(r,[],t),!0}catch(t){return!1}},u=function(t){if(!i(t))return!1;switch(o(t)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return l||!!d(h,s(t))}catch(t){return!0}};return u.sham=!0,Ra=!a||e(function(){var t;return c(c.call)||!c(Object)||!c(function(){t=!0})||t})?u:c}function ph(){if(Wa)return Ha;Wa=1;var t=hh(),e=uh(),i=Ct(),o=we()("species"),n=Array;return Ha=function(s){var r;return t(s)&&(r=s.constructor,(e(r)&&(r===n||t(r.prototype))||i(r)&&null===(r=r[o]))&&(r=void 0)),void 0===r?n:r}}function fh(){if(qa)return Va;qa=1;var t=ph();return Va=function(e,i){return new(t(e))(0===i?0:i)}}function gh(){if(Ya)return Ua;Ya=1;var t=N(),e=ri(),i=wt();return Ua=function(o,n,s){t?e.f(o,n,i(0,s)):o[n]=s},Ua}function mh(){if(Ga)return Xa;Ga=1;var t=Bt(),e=TypeError;return Xa=function(i,o){if(!delete i[o])throw new e("Cannot delete property "+t(o)+" of "+t(i))}}function vh(){if(Za)return Ka;Za=1;var t=_(),e=we(),i=Mt(),o=e("species");return Ka=function(e){return i>=51||!t(function(){var t=[];return(t.constructor={})[o]=function(){return{foo:1}},1!==t[e](Boolean).foo})},Ka}function yh(){return Ja?$a:(Ja=1,function(){if(Qa)return ah;Qa=1;var t=hi(),e=ve(),i=ci(),o=li(),n=pi(),s=dh(),r=lh(),a=fh(),h=gh(),d=mh(),l=vh()("splice"),c=Math.max,u=Math.min;t({target:"Array",proto:!0,forced:!l},{splice:function(t,l){var p,f,g,m,v,y,b=e(this),w=n(b),_=i(t,w),x=arguments.length;for(0===x?p=f=0:1===x?(p=0,f=w-_):(p=x-2,f=u(c(o(l),0),w-_)),r(w+p-f),g=a(b,f),m=0;mw-f+p;m--)d(b,m-1)}else if(p>f)for(m=w-f;m>_;m--)y=m+p-1,(v=m+f-1)in b?b[y]=b[v]:d(b,y);for(m=0;mO;O++)if((p||O in _)&&(b=E(y=_[O],O,w),e))if(a)k[O]=b;else if(b)switch(e){case 3:return!0;case 5:return y;case 6:return O;case 2:r(k,y)}else switch(e){case 4:return!1;case 7:r(k,y)}return c?-1:d||l?l:k}};return Ih={forEach:a(0),map:a(1),filter:a(2),some:a(3),every:a(4),find:a(5),findIndex:a(6),filterReject:a(7)}}function Xh(){if(Bh)return Nh;Bh=1;var t=Yh().forEach,e=Hr()("forEach");return Nh=e?[].forEach:function(e){return t(this,e,arguments.length>1?arguments[1]:void 0)},Nh}function Gh(){return Ah?Fh:(Ah=1,function(){if(zh)return Uh;zh=1;var t=hi(),e=Xh();t({target:"Array",proto:!0,forced:[].forEach!==e},{forEach:e})}(),Fh=Ji()("Array","forEach"))}function Kh(){return Rh?jh:(Rh=1,jh=Gh())}function Zh(){if(Hh)return Lh;Hh=1;var t=Ca(),e=ye(),i=Tt(),o=Kh(),n=Array.prototype,s={DOMTokenList:!0,NodeList:!0};return Lh=function(r){var a=r.forEach;return r===n||i(n,r)&&a===n.forEach||e(s,t(r))?o:a},Lh}var Qh=i(Vh?Wh:(Vh=1,Wh=Zh()));function $h(t){return od=t,function(){var t={};nd=0,void(sd=od.charAt(0)),md(),"strict"===rd&&(t.strict=!0,md());"graph"!==rd&&"digraph"!==rd||(t.type=rd,md());ad===ed.IDENTIFIER&&(t.id=rd,md());if("{"!=rd)throw xd("Angle bracket { expected");if(md(),vd(t),"}"!=rd)throw xd("Angle bracket } expected");if(md(),""!==rd)throw xd("End of file expected");return md(),delete t.node,delete t.edge,delete t.graph,t}()}var Jh={fontsize:"font.size",fontcolor:"font.color",labelfontcolor:"font.color",fontname:"font.face",color:["color.border","color.background"],fillcolor:"color.background",tooltip:"title",labeltooltip:"title"},td=Rr(Jh);td.color="color.color",td.style="dashes";var ed={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},id={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},od="",nd=0,sd="",rd="",ad=ed.NULL;function hd(){nd++,sd=od.charAt(nd)}function dd(){return od.charAt(nd+1)}function ld(t){var e=t.charCodeAt(0);return e<47?35===e||46===e:e<59?e>47:e<91?e>64:e<96?95===e:e<123&&e>96}function cd(t,e){if(t||(t={}),e)for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i]);return t}function ud(t,e,i){for(var o=e.split("."),n=t;o.length;){var s=o.shift();o.length?(n[s]||(n[s]={}),n=n[s]):n[s]=i}}function pd(t,e){for(var i,o,n=null,s=[t],r=t;r.parent;)s.push(r.parent),r=r.parent;if(r.nodes)for(i=0,o=r.nodes.length;i=0;i--){var a,h=s[i];h.nodes||(h.nodes=[]),-1===Zr(a=h.nodes).call(a,n)&&h.nodes.push(n)}e.attr&&(n.attr=cd(n.attr,e.attr))}function fd(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=cd({},t.edge);e.attr=cd(i,e.attr)}}function gd(t,e,i,o,n){var s={from:e,to:i,type:o};return t.edge&&(s.attr=cd({},t.edge)),s.attr=cd(s.attr||{},n),null!=n&&n.hasOwnProperty("arrows")&&null!=n.arrows&&(s.arrows={to:{enabled:!0,type:n.arrows.type}},n.arrows=null),s}function md(){for(ad=ed.NULL,rd="";" "===sd||"\t"===sd||"\n"===sd||"\r"===sd;)hd();do{var t=!1;if("#"===sd){for(var e=nd-1;" "===od.charAt(e)||"\t"===od.charAt(e);)e--;if("\n"===od.charAt(e)||""===od.charAt(e)){for(;""!=sd&&"\n"!=sd;)hd();t=!0}}if("/"===sd&&"/"===dd()){for(;""!=sd&&"\n"!=sd;)hd();t=!0}if("/"===sd&&"*"===dd()){for(;""!=sd;){if("*"===sd&&"/"===dd()){hd(),hd();break}hd()}t=!0}for(;" "===sd||"\t"===sd||"\n"===sd||"\r"===sd;)hd()}while(t);if(""!==sd){var i=sd+dd();if(id[i])return ad=ed.DELIMITER,rd=i,hd(),void hd();if(id[sd])return ad=ed.DELIMITER,rd=sd,void hd();if(ld(sd)||"-"===sd){for(rd+=sd,hd();ld(sd);)rd+=sd,hd();return"false"===rd?rd=!1:"true"===rd?rd=!0:isNaN(Number(rd))||(rd=Number(rd)),void(ad=ed.IDENTIFIER)}if('"'===sd){for(hd();""!=sd&&('"'!=sd||'"'===sd&&'"'===dd());)'"'===sd?(rd+=sd,hd()):"\\"===sd&&"n"===dd()?(rd+="\n",hd()):rd+=sd,hd();if('"'!=sd)throw xd('End of string " expected');return hd(),void(ad=ed.IDENTIFIER)}for(ad=ed.UNKNOWN;""!=sd;)rd+=sd,hd();throw new SyntaxError('Syntax error in part "'+Ed(rd,30)+'"')}ad=ed.DELIMITER}function vd(t){for(;""!==rd&&"}"!=rd;)yd(t),";"===rd&&md()}function yd(t){var e=bd(t);if(e)wd(t,e);else{var i=function(t){if("node"===rd)return md(),t.node=_d(),"node";if("edge"===rd)return md(),t.edge=_d(),"edge";if("graph"===rd)return md(),t.graph=_d(),"graph";return null}(t);if(!i){if(ad!=ed.IDENTIFIER)throw xd("Identifier expected");var o=rd;if(md(),"="===rd){if(md(),ad!=ed.IDENTIFIER)throw xd("Identifier expected");t[o]=rd,md()}else!function(t,e){var i={id:e},o=_d();o&&(i.attr=o);pd(t,i),wd(t,e)}(t,o)}}}function bd(t){var e=null;if("subgraph"===rd&&((e={}).type="subgraph",md(),ad===ed.IDENTIFIER&&(e.id=rd,md())),"{"===rd){if(md(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,vd(e),"}"!=rd)throw xd("Angle bracket } expected");md(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function wd(t,e){for(;"->"===rd||"--"===rd;){var i,o=rd;md();var n=bd(t);if(n)i=n;else{if(ad!=ed.IDENTIFIER)throw xd("Identifier or subgraph expected");pd(t,{id:i=rd}),md()}fd(t,gd(t,e,i,o,_d())),e=i}}function _d(){for(var t,e,i=null,o={dashed:!0,solid:!1,dotted:[1,5]},n={dot:"circle",box:"box",crow:"crow",curve:"curve",icurve:"inv_curve",normal:"triangle",inv:"inv_triangle",diamond:"diamond",tee:"bar",vee:"vee"},s=new Array,r=new Array;"["===rd;){for(md(),i={};""!==rd&&"]"!=rd;){if(ad!=ed.IDENTIFIER)throw xd("Attribute name expected");var a=rd;if(md(),"="!=rd)throw xd("Equal sign = expected");if(md(),ad!=ed.IDENTIFIER)throw xd("Attribute value expected");var h=rd;"style"===a&&(h=o[h]),"arrowhead"===a&&(a="arrows",h={to:{enabled:!0,type:n[h]}}),"arrowtail"===a&&(a="arrows",h={from:{enabled:!0,type:n[h]}}),s.push({attr:i,name:a,value:h}),r.push(a),md(),","==rd&&md()}if("]"!=rd)throw xd("Bracket ] expected");md()}if(rh(r).call(r,"dir")){var d={arrows:{}};for(t=0;t"===t.type&&(e.arrows="to"),e};Qh(n=i.edges).call(n,function(t){var e,i,n,r,a,h,d;(e=t.from instanceof Object?t.from.nodes:{id:t.from},i=t.to instanceof Object?t.to.nodes:{id:t.to},t.from instanceof Object&&t.from.edges)&&Qh(n=t.from.edges).call(n,function(t){var e=s(t);o.edges.push(e)});(a=i,h=function(e,i){var n=gd(o,e.id,i.id,t.type,t.attr),r=s(n);o.edges.push(r)},qh(r=e)?Qh(r).call(r,function(t){qh(a)?Qh(a).call(a,function(e){h(t,e)}):h(t,a)}):qh(a)?Qh(a).call(a,function(t){h(r,t)}):h(r,a),t.to instanceof Object&&t.to.edges)&&Qh(d=t.to.edges).call(d,function(t){var e=s(t);o.edges.push(e)})})}return i.attr&&(o.options=i.attr),o}var Sd,Td,Dd,Md,Id,Pd,Nd,Bd,zd,Fd=Object.freeze({__proto__:null,DOTToGraph:kd,parseDOT:$h}),Ad={};function jd(){return Dd?Td:(Dd=1,function(){if(Sd)return Ad;Sd=1;var t=hi(),e=Yh().map;t({target:"Array",proto:!0,forced:!vh()("map")},{map:function(t){return e(this,t,arguments.length>1?arguments[1]:void 0)}})}(),Td=Ji()("Array","map"))}function Rd(){if(Id)return Md;Id=1;var t=Tt(),e=jd(),i=Array.prototype;return Md=function(o){var n=o.map;return o===i||t(i,o)&&n===i.map?e:n},Md}function Ld(){return Nd?Pd:(Nd=1,Pd=Rd())}var Hd=i(zd?Bd:(zd=1,Bd=Ld()));function Wd(t,e){var i;const o={edges:{inheritColor:!1},nodes:{fixed:!1,parseColor:!1}};null!=e&&(null!=e.fixed&&(o.nodes.fixed=e.fixed),null!=e.parseColor&&(o.nodes.parseColor=e.parseColor),null!=e.inheritColor&&(o.edges.inheritColor=e.inheritColor));const n=t.edges,s=Hd(n).call(n,t=>{const e={from:t.source,id:t.id,to:t.target};return null!=t.attributes&&(e.attributes=t.attributes),null!=t.label&&(e.label=t.label),null!=t.attributes&&null!=t.attributes.title&&(e.title=t.attributes.title),"Directed"===t.type&&(e.arrows="to"),t.color&&!1===o.edges.inheritColor&&(e.color=t.color),e});return{nodes:Hd(i=t.nodes).call(i,t=>{const e={id:t.id,fixed:o.nodes.fixed&&null!=t.x&&null!=t.y};return null!=t.attributes&&(e.attributes=t.attributes),null!=t.label&&(e.label=t.label),null!=t.size&&(e.size=t.size),null!=t.attributes&&null!=t.attributes.title&&(e.title=t.attributes.title),null!=t.title&&(e.title=t.title),null!=t.x&&(e.x=t.x),null!=t.y&&(e.y=t.y),null!=t.color&&(!0===o.nodes.parseColor?e.color=t.color:e.color={background:t.color,border:t.color,highlight:{background:t.color,border:t.color},hover:{background:t.color,border:t.color}}),e}),edges:s}}var Vd=Object.freeze({__proto__:null,parseGephi:Wd});var qd,Ud,Yd,Xd,Gd,Kd,Zd,Qd,$d,Jd=Object.freeze({__proto__:null,cn:{addDescription:"单击空白处放置新节点。",addEdge:"添加连接线",addNode:"添加节点",back:"返回",close:"關閉",createEdgeError:"无法将连接线连接到群集。",del:"删除选定",deleteClusterError:"无法删除群集。",edgeDescription:"单击某个节点并将该连接线拖动到另一个节点以连接它们。",edit:"编辑",editClusterError:"无法编辑群集。",editEdge:"编辑连接线",editEdgeDescription:"单击控制节点并将它们拖到节点上连接。",editNode:"编辑节点"},cs:{addDescription:"Kluknutím do prázdného prostoru můžete přidat nový vrchol.",addEdge:"Přidat hranu",addNode:"Přidat vrchol",back:"Zpět",close:"Zavřít",createEdgeError:"Nelze připojit hranu ke shluku.",del:"Smazat výběr",deleteClusterError:"Nelze mazat shluky.",edgeDescription:"Přetažením z jednoho vrcholu do druhého můžete spojit tyto vrcholy novou hranou.",edit:"Upravit",editClusterError:"Nelze upravovat shluky.",editEdge:"Upravit hranu",editEdgeDescription:"Přetažením kontrolního vrcholu hrany ji můžete připojit k jinému vrcholu.",editNode:"Upravit vrchol"},de:{addDescription:"Klicke auf eine freie Stelle, um einen neuen Knoten zu plazieren.",addEdge:"Kante hinzufügen",addNode:"Knoten hinzufügen",back:"Zurück",close:"Schließen",createEdgeError:"Es ist nicht möglich, Kanten mit Clustern zu verbinden.",del:"Lösche Auswahl",deleteClusterError:"Cluster können nicht gelöscht werden.",edgeDescription:"Klicke auf einen Knoten und ziehe die Kante zu einem anderen Knoten, um diese zu verbinden.",edit:"Editieren",editClusterError:"Cluster können nicht editiert werden.",editEdge:"Kante editieren",editEdgeDescription:"Klicke auf die Verbindungspunkte und ziehe diese auf einen Knoten, um sie zu verbinden.",editNode:"Knoten editieren"},en:{addDescription:"Click in an empty space to place a new node.",addEdge:"Add Edge",addNode:"Add Node",back:"Back",close:"Close",createEdgeError:"Cannot link edges to a cluster.",del:"Delete selected",deleteClusterError:"Clusters cannot be deleted.",edgeDescription:"Click on a node and drag the edge to another node to connect them.",edit:"Edit",editClusterError:"Clusters cannot be edited.",editEdge:"Edit Edge",editEdgeDescription:"Click on the control points and drag them to a node to connect to it.",editNode:"Edit Node"},es:{addDescription:"Haga clic en un lugar vacío para colocar un nuevo nodo.",addEdge:"Añadir arista",addNode:"Añadir nodo",back:"Atrás",close:"Cerrar",createEdgeError:"No se puede conectar una arista a un grupo.",del:"Eliminar selección",deleteClusterError:"No es posible eliminar grupos.",edgeDescription:"Haga clic en un nodo y arrastre la arista hacia otro nodo para conectarlos.",edit:"Editar",editClusterError:"No es posible editar grupos.",editEdge:"Editar arista",editEdgeDescription:"Haga clic en un punto de control y arrastrelo a un nodo para conectarlo.",editNode:"Editar nodo"},fr:{addDescription:"Cliquez dans un endroit vide pour placer un nœud.",addEdge:"Ajouter un lien",addNode:"Ajouter un nœud",back:"Retour",close:"Fermer",createEdgeError:"Impossible de créer un lien vers un cluster.",del:"Effacer la sélection",deleteClusterError:"Les clusters ne peuvent pas être effacés.",edgeDescription:"Cliquez sur un nœud et glissez le lien vers un autre nœud pour les connecter.",edit:"Éditer",editClusterError:"Les clusters ne peuvent pas être édités.",editEdge:"Éditer le lien",editEdgeDescription:"Cliquez sur les points de contrôle et glissez-les pour connecter un nœud.",editNode:"Éditer le nœud"},it:{addDescription:"Clicca per aggiungere un nuovo nodo",addEdge:"Aggiungi un vertice",addNode:"Aggiungi un nodo",back:"Indietro",close:"Chiudere",createEdgeError:"Non si possono collegare vertici ad un cluster",del:"Cancella la selezione",deleteClusterError:"I cluster non possono essere cancellati",edgeDescription:"Clicca su un nodo e trascinalo ad un altro nodo per connetterli.",edit:"Modifica",editClusterError:"I clusters non possono essere modificati.",editEdge:"Modifica il vertice",editEdgeDescription:"Clicca sui Punti di controllo e trascinali ad un nodo per connetterli.",editNode:"Modifica il nodo"},nl:{addDescription:"Klik op een leeg gebied om een nieuwe node te maken.",addEdge:"Link toevoegen",addNode:"Node toevoegen",back:"Terug",close:"Sluiten",createEdgeError:"Kan geen link maken naar een cluster.",del:"Selectie verwijderen",deleteClusterError:"Clusters kunnen niet worden verwijderd.",edgeDescription:"Klik op een node en sleep de link naar een andere node om ze te verbinden.",edit:"Wijzigen",editClusterError:"Clusters kunnen niet worden aangepast.",editEdge:"Link wijzigen",editEdgeDescription:"Klik op de verbindingspunten en sleep ze naar een node om daarmee te verbinden.",editNode:"Node wijzigen"},pt:{addDescription:"Clique em um espaço em branco para adicionar um novo nó",addEdge:"Adicionar aresta",addNode:"Adicionar nó",back:"Voltar",close:"Fechar",createEdgeError:"Não foi possível linkar arestas a um cluster.",del:"Remover selecionado",deleteClusterError:"Clusters não puderam ser removidos.",edgeDescription:"Clique em um nó e arraste a aresta até outro nó para conectá-los",edit:"Editar",editClusterError:"Clusters não puderam ser editados.",editEdge:"Editar aresta",editEdgeDescription:"Clique nos pontos de controle e os arraste para um nó para conectá-los",editNode:"Editar nó"},ru:{addDescription:"Кликните в свободное место, чтобы добавить новый узел.",addEdge:"Добавить ребро",addNode:"Добавить узел",back:"Назад",close:"Закрывать",createEdgeError:"Невозможно соединить ребра в кластер.",del:"Удалить выбранное",deleteClusterError:"Кластеры не могут быть удалены",edgeDescription:"Кликните на узел и протяните ребро к другому узлу, чтобы соединить их.",edit:"Редактировать",editClusterError:"Кластеры недоступны для редактирования.",editEdge:"Редактировать ребро",editEdgeDescription:"Кликните на контрольные точки и перетащите их в узел, чтобы подключиться к нему.",editNode:"Редактировать узел"},uk:{addDescription:"Kлікніть на вільне місце, щоб додати новий вузол.",addEdge:"Додати край",addNode:"Додати вузол",back:"Назад",close:"Закрити",createEdgeError:"Не можливо об'єднати краї в групу.",del:"Видалити обране",deleteClusterError:"Групи не можуть бути видалені.",edgeDescription:"Клікніть на вузол і перетягніть край до іншого вузла, щоб їх з'єднати.",edit:"Редагувати",editClusterError:"Групи недоступні для редагування.",editEdge:"Редагувати край",editEdgeDescription:"Клікніть на контрольні точки і перетягніть їх у вузол, щоб підключитися до нього.",editNode:"Редагувати вузол"}}),tl={};function el(){if(qd)return tl;qd=1;var t=hi(),e=_(),i=hh(),o=Ct(),n=ve(),s=pi(),r=lh(),a=gh(),h=fh(),d=vh(),l=we(),c=Mt(),u=l("isConcatSpreadable"),p=c>=51||!e(function(){var t=[];return t[u]=!1,t.concat()[0]!==t}),f=function(t){if(!o(t))return!1;var e=t[u];return void 0!==e?!!e:i(t)};return t({target:"Array",proto:!0,arity:1,forced:!p||!d("concat")},{concat:function(t){var e,i,o,d,l,c=n(this),u=h(c,0),p=0;for(e=-1,o=arguments.length;e2){e*=.5;let r=0;for(;e>2&&r=this.NUM_ITERATIONS&&(r=this.NUM_ITERATIONS-1);const a=this.coordinates[r];t.drawImage(this.canvas,a[0],a[1],a[2],a[3],i,o,n,s)}else t.drawImage(this.image,i,o,n,s)}}class Vl{constructor(t){this.images={},this.imageBroken={},this.callback=t}_tryloadBrokenUrl(t,e,i){void 0!==t&&void 0!==i&&(void 0!==e?(i.image.onerror=()=>{console.error("Could not load brokenImage:",e)},i.image.src=e):console.warn("No broken url image defined"))}_redrawWithImage(t){this.callback&&this.callback(t)}load(t,e){const i=this.images[t];if(i)return i;const o=new Wl;return this.images[t]=o,o.image.onload=()=>{this._fixImageCoordinates(o.image),o.init(),this._redrawWithImage(o)},o.image.onerror=()=>{console.error("Could not load image:",t),this._tryloadBrokenUrl(t,e,o)},o.image.src=t,o}_fixImageCoordinates(t){0===t.width&&(document.body.appendChild(t),t.width=t.offsetWidth,t.height=t.offsetHeight,document.body.removeChild(t))}}function ql(){return rl?sl:(rl=1,sl={})}function Ul(){if(hl)return al;hl=1;var t=w(),e=S(),i=t.WeakMap;return al=e(i)&&/native code/.test(String(i))}function Yl(){if(ll)return dl;ll=1;var t,e,i,o=Ul(),n=w(),s=Ct(),r=ai(),a=ye(),h=ge(),d=Or(),l=gi(),c="Object already initialized",u=n.TypeError,p=n.WeakMap;if(o||h.state){var f=h.state||(h.state=new p);f.get=f.get,f.has=f.has,f.set=f.set,t=function(t,e){if(f.has(t))throw new u(c);return e.facade=t,f.set(t,e),e},e=function(t){return f.get(t)||{}},i=function(t){return f.has(t)}}else{var g=d("state");l[g]=!0,t=function(t,e){if(a(t,g))throw new u(c);return e.facade=t,r(t,g,e),e},e=function(t){return a(t,g)?t[g]:{}},i=function(t){return a(t,g)}}return dl={set:t,get:e,has:i,enforce:function(o){return i(o)?e(o):t(o,{})},getterFor:function(t){return function(i){var o;if(!s(i)||(o=e(i)).type!==t)throw new u("Incompatible receiver, "+t+" required");return o}}},dl}function Xl(){if(ul)return cl;ul=1;var t=N(),e=ye(),i=Function.prototype,o=t&&Object.getOwnPropertyDescriptor,n=e(i,"name"),s=n&&"something"===function(){}.name,r=n&&(!t||t&&o(i,"name").configurable);return cl={EXISTS:n,PROPER:s,CONFIGURABLE:r}}function Gl(){return fl?pl:(fl=1,pl=!_()(function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype}))}function Kl(){if(ml)return gl;ml=1;var t=ye(),e=S(),i=ve(),o=Or(),n=Gl(),s=o("IE_PROTO"),r=Object,a=r.prototype;return gl=n?r.getPrototypeOf:function(o){var n=i(o);if(t(n,s))return n[s];var h=n.constructor;return e(h)&&n instanceof h?h.prototype:n instanceof r?a:null},gl}function Zl(){if(yl)return vl;yl=1;var t=ai();return vl=function(e,i,o,n){return n&&n.enumerable?e[i]=o:t(e,i,o),e}}function Ql(){if(wl)return bl;wl=1;var t,e,i,o=_(),n=S(),s=Ct(),r=Cr(),a=Kl(),h=Zl(),d=we(),l=pe(),c=d("iterator"),u=!1;return[].keys&&("next"in(i=[].keys())?(e=a(a(i)))!==Object.prototype&&(t=e):u=!0),!s(t)||o(function(){var e={};return t[c].call(e)!==e})?t={}:l&&(t=r(t)),n(t[c])||h(t,c,function(){return this}),bl={IteratorPrototype:t,BUGGY_SAFARI_ITERATORS:u}}function $l(){if(xl)return _l;xl=1;var t=Oa(),e=Ca();return _l=t?{}.toString:function(){return"[object "+e(this)+"]"}}function Jl(){if(Ol)return El;Ol=1;var t=Oa(),e=ri().f,i=ai(),o=ye(),n=$l(),s=we()("toStringTag");return El=function(r,a,h,d){var l=h?r:r&&r.prototype;l&&(o(l,s)||e(l,s,{configurable:!0,value:a}),d&&!t&&i(l,"toString",n))},El}function tc(){if(kl)return Cl;kl=1;var t=Ql().IteratorPrototype,e=Cr(),i=wt(),o=Jl(),n=ql(),s=function(){return this};return Cl=function(r,a,h,d){var l=a+" Iterator";return r.prototype=e(t,{next:i(+!d,h)}),o(r,l,!1,!0),n[l]=s,r},Cl}function ec(){if(Tl)return Sl;Tl=1;var t=O(),e=zt();return Sl=function(i,o,n){try{return t(e(Object.getOwnPropertyDescriptor(i,o)[n]))}catch(t){}},Sl}function ic(){if(Ml)return Dl;Ml=1;var t=Ct();return Dl=function(e){return t(e)||null===e}}function oc(){if(Pl)return Il;Pl=1;var t=ic(),e=String,i=TypeError;return Il=function(o){if(t(o))return o;throw new i("Can't set "+e(o)+" as a prototype")}}function nc(){if(Bl)return Nl;Bl=1;var t=ec(),e=Ct(),i=Et(),o=oc();return Nl=Object.setPrototypeOf||("__proto__"in{}?function(){var n,s=!1,r={};try{(n=t(Object.prototype,"__proto__","set"))(r,[]),s=r instanceof Array}catch(t){}return function(t,r){return i(t),o(r),e(t)?(s?n(t,r):t.__proto__=r,t):t}}():void 0)}function sc(){if(Fl)return zl;Fl=1;var t=hi(),e=B(),i=pe(),o=Xl(),n=S(),s=tc(),r=Kl(),a=nc(),h=Jl(),d=ai(),l=Zl(),c=we(),u=ql(),p=Ql(),f=o.PROPER,g=o.CONFIGURABLE,m=p.IteratorPrototype,v=p.BUGGY_SAFARI_ITERATORS,y=c("iterator"),b="keys",w="values",_="entries",x=function(){return this};return zl=function(o,c,p,E,O,C,k){s(p,c,E);var S,T,D,M=function(t){if(t===O&&z)return z;if(!v&&t&&t in N)return N[t];switch(t){case b:case w:case _:return function(){return new p(this,t)}}return function(){return new p(this)}},I=c+" Iterator",P=!1,N=o.prototype,B=N[y]||N["@@iterator"]||O&&N[O],z=!v&&B||M(O),F="Array"===c&&N.entries||B;if(F&&(S=r(F.call(new o)))!==Object.prototype&&S.next&&(i||r(S)===m||(a?a(S,m):n(S[y])||l(S,y,x)),h(S,I,!0,!0),i&&(u[I]=x)),f&&O===w&&B&&B.name!==w&&(!i&&g?d(N,"name",w):(P=!0,z=function(){return e(B,this)})),O)if(T={values:M(w),keys:C?z:M(b),entries:M(_)},k)for(D in T)(v||P||!(D in N))&&l(N,D,T[D]);else t({target:c,proto:!0,forced:v||P},T);return i&&!k||N[y]===z||l(N,y,z,{name:O}),u[c]=z,T},zl}function rc(){return jl?Al:(jl=1,Al=function(t,e){return{value:t,done:e}})}function ac(){if(Ll)return Rl;Ll=1;var t=Ot(),e=$r(),i=ql(),o=Yl(),n=ri().f,s=sc(),r=rc(),a=pe(),h=N(),d="Array Iterator",l=o.set,c=o.getterFor(d);Rl=s(Array,"Array",function(e,i){l(this,{type:d,target:t(e),index:0,kind:i})},function(){var t=c(this),e=t.target,i=t.index++;if(!e||i>=e.length)return t.target=null,r(void 0,!0);switch(t.kind){case"keys":return r(i,!1);case"values":return r(e[i],!1)}return r([i,e[i]],!1)},"values");var u=i.Arguments=i.Array;if(e("keys"),e("values"),e("entries"),!a&&h&&"values"!==u.name)try{n(u,"name",{value:"values"})}catch(t){}return Rl}var hc,dc={},lc={exports:{}},cc={};function uc(){if(hc)return cc;hc=1;var t=mi(),e=vi().concat("length","prototype");return cc.f=Object.getOwnPropertyNames||function(i){return t(i,e)},cc}var pc,fc,gc,mc,vc,yc,bc,wc,_c,xc,Ec,Oc,Cc,kc,Sc,Tc,Dc,Mc,Ic,Pc,Nc,Bc,zc,Fc,Ac,jc,Rc,Lc,Hc,Wc,Vc,qc,Uc={};function Yc(){if(pc)return Uc;pc=1;var t=C(),e=Ot(),i=uc().f,o=Qi(),n="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];return Uc.f=function(s){return n&&"Window"===t(s)?function(t){try{return i(t)}catch(t){return o(n)}}(s):i(e(s))},Uc}function Xc(){return gc?fc:(gc=1,fc=_()(function(){if("function"==typeof ArrayBuffer){var t=new ArrayBuffer(8);Object.isExtensible(t)&&Object.defineProperty(t,"a",{value:8})}}))}function Gc(){if(vc)return mc;vc=1;var t=_(),e=Ct(),i=C(),o=Xc(),n=Object.isExtensible,s=t(function(){});return mc=s||o?function(t){return!!e(t)&&((!o||"ArrayBuffer"!==i(t))&&(!n||n(t)))}:n,mc}function Kc(){return bc?yc:(bc=1,yc=!_()(function(){return Object.isExtensible(Object.preventExtensions({}))}))}function Zc(){if(wc)return lc.exports;wc=1;var t=hi(),e=O(),i=gi(),o=Ct(),n=ye(),s=ri().f,r=uc(),a=Yc(),h=Gc(),d=be(),l=Kc(),c=!1,u=d("meta"),p=0,f=function(t){s(t,u,{value:{objectID:"O"+p++,weakData:{}}})},g=lc.exports={enable:function(){g.enable=function(){},c=!0;var i=r.f,o=e([].splice),n={};n[u]=1,i(n).length&&(r.f=function(t){for(var e=i(t),n=0,s=e.length;ny;y++)if((w=M(p[y]))&&r(u,w))return w;return new c(!1)}m=a(p,v)}for(_=C?p.next:m.next;!(x=e(_,m)).done;){try{w=M(x.value)}catch(t){d(m,"throw",t)}if("object"==typeof w&&w&&r(u,w))return w}return new c(!1)},Dc}function iu(){if(Pc)return Ic;Pc=1;var t=Tt(),e=TypeError;return Ic=function(i,o){if(t(o,i))return i;throw new e("Incorrect invocation")},Ic}function ou(){if(Bc)return Nc;Bc=1;var t=hi(),e=w(),i=Zc(),o=_(),n=ai(),s=eu(),r=iu(),a=S(),h=Ct(),d=xt(),l=Jl(),c=ri().f,u=Yh().forEach,p=N(),f=Yl(),g=f.set,m=f.getterFor;return Nc=function(f,v,y){var b,w=-1!==f.indexOf("Map"),_=-1!==f.indexOf("Weak"),x=w?"set":"add",E=e[f],O=E&&E.prototype,C={};if(p&&a(E)&&(_||O.forEach&&!o(function(){(new E).entries().next()}))){var k=(b=v(function(t,e){g(r(t,k),{type:f,collection:new E}),d(e)||s(e,t[x],{that:t,AS_ENTRIES:w})})).prototype,S=m(f);u(["add","clear","delete","forEach","get","has","set","keys","values","entries"],function(t){var e="add"===t||"set"===t;!(t in O)||_&&"clear"===t||n(k,t,function(i,o){var n=S(this).collection;if(!e&&_&&!h(i))return"get"===t&&void 0;var s=n[t](0===i?0:i,o);return e?this:s})}),_||c(k,"size",{configurable:!0,get:function(){return S(this).collection.size}})}else b=y.getConstructor(v,f,w,x),i.enable();return l(b,f,!1,!0),C[f]=b,t({global:!0,forced:!0},C),_||y.setStrong(b,f,w),b}}function nu(){if(Fc)return zc;Fc=1;var t=ri();return zc=function(e,i,o){return t.f(e,i,o)}}function su(){if(jc)return Ac;jc=1;var t=Zl();return Ac=function(e,i,o){for(var n in i)o&&o.unsafe&&e[n]?e[n]=i[n]:t(e,n,i[n],o);return e}}function ru(){if(Lc)return Rc;Lc=1;var t=St(),e=nu(),i=we(),o=N(),n=i("species");return Rc=function(i){var s=t(i);o&&s&&!s[n]&&e(s,n,{configurable:!0,get:function(){return this}})}}function au(){if(Wc)return Hc;Wc=1;var t=Cr(),e=nu(),i=su(),o=Se(),n=iu(),s=xt(),r=eu(),a=sc(),h=rc(),d=ru(),l=N(),c=Zc().fastKey,u=Yl(),p=u.set,f=u.getterFor;return Hc={getConstructor:function(a,h,d,u){var g=a(function(e,i){n(e,m),p(e,{type:h,index:t(null),first:null,last:null,size:0}),l||(e.size=0),s(i)||r(i,e[u],{that:e,AS_ENTRIES:d})}),m=g.prototype,v=f(h),y=function(t,e,i){var o,n,s=v(t),r=b(t,e);return r?r.value=i:(s.last=r={index:n=c(e,!0),key:e,value:i,previous:o=s.last,next:null,removed:!1},s.first||(s.first=r),o&&(o.next=r),l?s.size++:t.size++,"F"!==n&&(s.index[n]=r)),t},b=function(t,e){var i,o=v(t),n=c(e);if("F"!==n)return o.index[n];for(i=o.first;i;i=i.next)if(i.key===e)return i};return i(m,{clear:function(){for(var e=v(this),i=e.first;i;)i.removed=!0,i.previous&&(i.previous=i.previous.next=null),i=i.next;e.first=e.last=null,e.index=t(null),l?e.size=0:this.size=0},delete:function(t){var e=this,i=v(e),o=b(e,t);if(o){var n=o.next,s=o.previous;delete i.index[o.index],o.removed=!0,s&&(s.next=n),n&&(n.previous=s),i.first===o&&(i.first=n),i.last===o&&(i.last=s),l?i.size--:e.size--}return!!o},forEach:function(t){for(var e,i=v(this),n=o(t,arguments.length>1?arguments[1]:void 0);e=e?e.next:i.first;)for(n(e.value,e.key,this);e&&e.removed;)e=e.previous},has:function(t){return!!b(this,t)}}),i(m,d?{get:function(t){var e=b(this,t);return e&&e.value},set:function(t,e){return y(this,0===t?0:t,e)}}:{add:function(t){return y(this,t=0===t?0:t,t)}}),l&&e(m,"size",{configurable:!0,get:function(){return v(this).size}}),g},setStrong:function(t,e,i){var o=e+" Iterator",n=f(e),s=f(o);a(t,e,function(t,e){p(this,{type:o,target:t,state:n(t),kind:e,last:null})},function(){for(var t=s(this),e=t.kind,i=t.last;i&&i.removed;)i=i.previous;return t.target&&(t.last=i=i?i.next:t.state.first)?h("keys"===e?i.key:"values"===e?i.value:[i.key,i.value],!1):(t.target=null,h(void 0,!0))},i?"entries":"values",!i,!0),d(e)}},Hc}function hu(){return qc||(qc=1,Vc||(Vc=1,ou()("Map",function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}},au()))),dc}var du,lu,cu,uu,pu,fu={};function gu(){return lu||(lu=1,du=function(t,e){return 1===e?function(e,i){return e[t](i)}:function(e,i,o){return e[t](i,o)}}),du}function mu(){if(uu)return cu;uu=1;var t=St(),e=gu(),i=t("Map");return cu={Map:i,set:e("set",2),get:e("get",1),has:e("has",1),remove:e("delete",1),proto:i.prototype}}var vu,yu,bu,wu,_u,xu={};function Eu(){if(yu)return vu;yu=1;var t=O(),e=li(),i=ka(),o=Et(),n=t("".charAt),s=t("".charCodeAt),r=t("".slice),a=function(t){return function(a,h){var d,l,c=i(o(a)),u=e(h),p=c.length;return u<0||u>=p?t?"":void 0:(d=s(c,u))<55296||d>56319||u+1===p||(l=s(c,u+1))<56320||l>57343?t?n(c,u):d:t?r(c,u,u+2):l-56320+(d-55296<<10)+65536}};return vu={codeAt:a(!1),charAt:a(!0)}}function Ou(){if(bu)return xu;bu=1;var t=Eu().charAt,e=ka(),i=Yl(),o=sc(),n=rc(),s="String Iterator",r=i.set,a=i.getterFor(s);return o(String,"String",function(t){r(this,{type:s,string:e(t),index:0})},function(){var e,i=a(this),o=i.string,s=i.index;return s>=o.length?n(void 0,!0):(e=t(o,s),i.index+=e.length,n(e,!1))}),xu}function Cu(){return _u?wu:(_u=1,ac(),hu(),function(){if(pu)return fu;pu=1;var t=hi(),e=O(),i=zt(),o=Et(),n=eu(),s=mu(),r=pe(),a=_(),h=s.Map,d=s.has,l=s.get,c=s.set,u=e([].push),p=r||a(function(){return 1!==h.groupBy("ab",function(t){return t}).get("a").length});t({target:"Map",stat:!0,forced:r||p},{groupBy:function(t,e){o(t),i(e);var s=new h,r=0;return n(t,function(t){var i=e(t,r++);d(s,i)?u(l(s,i),t):c(s,i,[t])}),s}})}(),Ou(),wu=kt().Map)}var ku,Su,Tu,Du,Mu,Iu,Pu,Nu={};function Bu(){return Su?ku:(Su=1,ku={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0})}function zu(){if(Tu)return Nu;Tu=1,ac();var t=Bu(),e=w(),i=Jl(),o=ql();for(var n in t)i(e[n],n),o[n]=o.Array;return Nu}function Fu(){if(Mu)return Du;Mu=1;var t=Cu();return zu(),Du=t}var Au=i(Pu?Iu:(Pu=1,Iu=Fu()));class ju{constructor(){this.clear(),this._defaultIndex=0,this._groupIndex=0,this._defaultGroups=[{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},{border:"#FFA500",background:"#FFFF00",highlight:{border:"#FFA500",background:"#FFFFA3"},hover:{border:"#FFA500",background:"#FFFFA3"}},{border:"#FA0A10",background:"#FB7E81",highlight:{border:"#FA0A10",background:"#FFAFB1"},hover:{border:"#FA0A10",background:"#FFAFB1"}},{border:"#41A906",background:"#7BE141",highlight:{border:"#41A906",background:"#A1EC76"},hover:{border:"#41A906",background:"#A1EC76"}},{border:"#E129F0",background:"#EB7DF4",highlight:{border:"#E129F0",background:"#F0B3F5"},hover:{border:"#E129F0",background:"#F0B3F5"}},{border:"#7C29F0",background:"#AD85E4",highlight:{border:"#7C29F0",background:"#D3BDF0"},hover:{border:"#7C29F0",background:"#D3BDF0"}},{border:"#C37F00",background:"#FFA807",highlight:{border:"#C37F00",background:"#FFCA66"},hover:{border:"#C37F00",background:"#FFCA66"}},{border:"#4220FB",background:"#6E6EFD",highlight:{border:"#4220FB",background:"#9B9BFD"},hover:{border:"#4220FB",background:"#9B9BFD"}},{border:"#FD5A77",background:"#FFC0CB",highlight:{border:"#FD5A77",background:"#FFD1D9"},hover:{border:"#FD5A77",background:"#FFD1D9"}},{border:"#4AD63A",background:"#C2FABC",highlight:{border:"#4AD63A",background:"#E6FFE3"},hover:{border:"#4AD63A",background:"#E6FFE3"}},{border:"#990000",background:"#EE0000",highlight:{border:"#BB0000",background:"#FF3333"},hover:{border:"#BB0000",background:"#FF3333"}},{border:"#FF6000",background:"#FF6000",highlight:{border:"#FF6000",background:"#FF6000"},hover:{border:"#FF6000",background:"#FF6000"}},{border:"#97C2FC",background:"#2B7CE9",highlight:{border:"#D2E5FF",background:"#2B7CE9"},hover:{border:"#D2E5FF",background:"#2B7CE9"}},{border:"#399605",background:"#255C03",highlight:{border:"#399605",background:"#255C03"},hover:{border:"#399605",background:"#255C03"}},{border:"#B70054",background:"#FF007E",highlight:{border:"#B70054",background:"#FF007E"},hover:{border:"#B70054",background:"#FF007E"}},{border:"#AD85E4",background:"#7C29F0",highlight:{border:"#D3BDF0",background:"#7C29F0"},hover:{border:"#D3BDF0",background:"#7C29F0"}},{border:"#4557FA",background:"#000EA1",highlight:{border:"#6E6EFD",background:"#000EA1"},hover:{border:"#6E6EFD",background:"#000EA1"}},{border:"#FFC0CB",background:"#FD5A77",highlight:{border:"#FFD1D9",background:"#FD5A77"},hover:{border:"#FFD1D9",background:"#FD5A77"}},{border:"#C2FABC",background:"#74D66A",highlight:{border:"#E6FFE3",background:"#74D66A"},hover:{border:"#E6FFE3",background:"#74D66A"}},{border:"#EE0000",background:"#990000",highlight:{border:"#FF3333",background:"#BB0000"},hover:{border:"#FF3333",background:"#BB0000"}}],this.options={},this.defaultOptions={useDefaultGroups:!0},Ki(this.options,this.defaultOptions)}setOptions(t){const e=["useDefaultGroups"];if(void 0!==t)for(const i in t)if(Object.prototype.hasOwnProperty.call(t,i)&&-1===Zr(e).call(e,i)){const e=t[i];this.add(i,e)}}clear(){this._groups=new Au,this._groupNames=[]}get(t){let e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=this._groups.get(t);if(void 0===i&&e)if(!1===this.options.useDefaultGroups&&this._groupNames.length>0){const e=this._groupIndex%this._groupNames.length;++this._groupIndex,i={},i.color=this._groups.get(this._groupNames[e]),this._groups.set(t,i)}else{const e=this._defaultIndex%this._defaultGroups.length;this._defaultIndex++,i={},i.color=this._defaultGroups[e],this._groups.set(t,i)}return i}add(t,e){return this._groups.has(t)||this._groupNames.push(t),this._groups.set(t,e),e}}var Ru,Lu,Hu,Wu,Vu,qu,Uu;function Yu(){return Hu?Lu:(Hu=1,Ru||(Ru=1,hi()({target:"Number",stat:!0},{isNaN:function(t){return t!=t}})),Lu=kt().Number.isNaN)}function Xu(){return Vu?Wu:(Vu=1,Wu=Yu())}var Gu,Ku,Zu,Qu,$u,Ju,tp,ep,ip,op=i(Uu?qu:(Uu=1,qu=Xu()));function np(){if(Ku)return Gu;Ku=1;var t=w().isFinite;return Gu=Number.isFinite||function(e){return"number"==typeof e&&t(e)},Gu}function sp(){return $u?Qu:($u=1,Zu||(Zu=1,hi()({target:"Number",stat:!0},{isFinite:np()})),Qu=kt().Number.isFinite)}function rp(){return tp?Ju:(tp=1,Ju=sp())}var ap,hp,dp,lp,cp,up,pp,fp=i(ip?ep:(ip=1,ep=rp())),gp={};function mp(){return dp?hp:(dp=1,function(){if(ap)return gp;ap=1;var t=hi(),e=ve(),i=yi();t({target:"Object",stat:!0,forced:_()(function(){i(1)})},{keys:function(t){return i(e(t))}})}(),hp=kt().Object.keys)}function vp(){return cp?lp:(cp=1,lp=mp())}var yp,bp,wp,_p,xp,Ep,Op,Cp,kp,Sp=i(pp?up:(pp=1,up=vp())),Tp={};function Dp(){return wp?bp:(wp=1,function(){if(yp)return Tp;yp=1;var t=hi(),e=Yh().some;t({target:"Array",proto:!0,forced:!Hr()("some")},{some:function(t){return e(this,t,arguments.length>1?arguments[1]:void 0)}})}(),bp=Ji()("Array","some"))}function Mp(){if(xp)return _p;xp=1;var t=Tt(),e=Dp(),i=Array.prototype;return _p=function(o){var n=o.some;return o===i||t(i,o)&&n===i.some?e:n},_p}function Ip(){return Op?Ep:(Op=1,Ep=Mp())}var Pp,Np,Bp,zp,Fp,Ap,jp,Rp=i(kp?Cp:(kp=1,Cp=Ip())),Lp={},Hp={};function Wp(){if(Np)return Pp;Np=1;var t=w(),e=Dt(),i=C(),o=function(t){return e.slice(0,t.length)===t};return Pp=o("Bun/")?"BUN":o("Cloudflare-Workers")?"CLOUDFLARE":o("Deno/")?"DENO":o("Node.js/")?"NODE":t.Bun&&"string"==typeof Bun.version?"BUN":t.Deno&&"object"==typeof Deno.version?"DENO":"process"===i(t.process)?"NODE":t.window&&t.document?"BROWSER":"REST"}function Vp(){if(zp)return Bp;zp=1;var t=TypeError;return Bp=function(e,i){if(en,c=o(s)?s:h(s),u=l?r(arguments,n):[],p=l?function(){i(c,this,u)}:c;return e?t(p,d):t(p)}:t},Fp}var Up,Yp,Xp,Gp,Kp,Zp,Qp={};function $p(){return Yp||(Yp=1,function(){if(jp)return Hp;jp=1;var t=hi(),e=w(),i=qp()(e.setInterval,!0);t({global:!0,bind:!0,forced:e.setInterval!==i},{setInterval:i})}(),function(){if(Up)return Qp;Up=1;var t=hi(),e=w(),i=qp()(e.setTimeout,!0);t({global:!0,bind:!0,forced:e.setTimeout!==i},{setTimeout:i})}()),Lp}function Jp(){return Gp?Xp:(Gp=1,$p(),Xp=kt().setTimeout)}var tf=i(Zp?Kp:(Zp=1,Kp=Jp()));const ef=[];for(let t=0;t<256;++t)ef.push((t+256).toString(16).slice(1));let of;const nf=new Uint8Array(16);var sf={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function rf(t,e,i){const o=(t=t||{}).random??t.rng?.()??function(){if(!of){if("undefined"==typeof crypto||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");of=crypto.getRandomValues.bind(crypto)}return of(nf)}();if(o.length<16)throw new Error("Random bytes length must be >= 16");return o[6]=15&o[6]|64,o[8]=63&o[8]|128,function(t,e=0){return(ef[t[e+0]]+ef[t[e+1]]+ef[t[e+2]]+ef[t[e+3]]+"-"+ef[t[e+4]]+ef[t[e+5]]+"-"+ef[t[e+6]]+ef[t[e+7]]+"-"+ef[t[e+8]]+ef[t[e+9]]+"-"+ef[t[e+10]]+ef[t[e+11]]+ef[t[e+12]]+ef[t[e+13]]+ef[t[e+14]]+ef[t[e+15]]).toLowerCase()}(o)}function af(t,e,i){return sf.randomUUID&&!t?sf.randomUUID():rf(t)} +/** + * vis-data + * http://visjs.org/ + * + * Manage unstructured data using DataSet. Add, update, and remove data, and listen for changes in the data. + * + * @version 8.0.3 + * @date 2025-09-10T16:22:00.613Z + * + * @copyright (c) 2011-2017 Almende B.V, http://almende.com + * @copyright (c) 2017-2019 visjs contributors, https://github.com/visjs + * + * @license + * vis.js is dual licensed under both + * + * 1. The Apache 2.0 License + * http://www.apache.org/licenses/LICENSE-2.0 + * + * and + * + * 2. The MIT License + * http://opensource.org/licenses/MIT + * + * vis.js may be distributed under either license. + */class hf{_source;_transformers;_target;_listeners={add:this._add.bind(this),remove:this._remove.bind(this),update:this._update.bind(this)};constructor(t,e,i){this._source=t,this._transformers=e,this._target=i}all(){return this._target.update(this._transformItems(this._source.get())),this}start(){return this._source.on("add",this._listeners.add),this._source.on("remove",this._listeners.remove),this._source.on("update",this._listeners.update),this}stop(){return this._source.off("add",this._listeners.add),this._source.off("remove",this._listeners.remove),this._source.off("update",this._listeners.update),this}_transformItems(t){return this._transformers.reduce((t,e)=>e(t),t)}_add(t,e){null!=e&&this._target.add(this._transformItems(this._source.get(e.items)))}_update(t,e){null!=e&&this._target.update(this._transformItems(this._source.get(e.items)))}_remove(t,e){null!=e&&this._target.remove(this._transformItems(e.oldData))}}class df{_source;_transformers=[];constructor(t){this._source=t}filter(t){return this._transformers.push(e=>e.filter(t)),this}map(t){return this._transformers.push(e=>e.map(t)),this}flatMap(t){return this._transformers.push(e=>e.flatMap(t)),this}to(t){return new hf(this._source,this._transformers,t)}}function lf(t){return"string"==typeof t||"number"==typeof t}class cf{delay;max;_queue=[];_timeout=null;_extended=null;constructor(t){this.delay=null,this.max=1/0,this.setOptions(t)}setOptions(t){t&&void 0!==t.delay&&(this.delay=t.delay),t&&void 0!==t.max&&(this.max=t.max),this._flushIfNeeded()}static extend(t,e){const i=new cf(e);if(void 0!==t.flush)throw new Error("Target object already has a property flush");t.flush=()=>{i.flush()};const o=[{name:"flush",original:void 0}];if(e&&e.replace)for(let n=0;nthis.max&&this.flush(),null!=this._timeout&&(clearTimeout(this._timeout),this._timeout=null),this.queue.length>0&&"number"==typeof this.delay&&(this._timeout=setTimeout(()=>{this.flush()},this.delay))}flush(){this._queue.splice(0).forEach(t=>{t.fn.apply(t.context||t.fn,t.args||[])})}}class uf{_subscribers={"*":[],add:[],remove:[],update:[]};_trigger(t,e,i){if("*"===t)throw new Error("Cannot trigger event *");[...this._subscribers[t],...this._subscribers["*"]].forEach(o=>{o(t,e,null!=i?i:null)})}on(t,e){"function"==typeof e&&this._subscribers[t].push(e)}off(t,e){this._subscribers[t]=this._subscribers[t].filter(t=>t!==e)}subscribe=uf.prototype.on;unsubscribe=uf.prototype.off}class pf{_pairs;constructor(t){this._pairs=t}*[Symbol.iterator](){for(const[t,e]of this._pairs)yield[t,e]}*entries(){for(const[t,e]of this._pairs)yield[t,e]}*keys(){for(const[t]of this._pairs)yield t}*values(){for(const[,t]of this._pairs)yield t}toIdArray(){return[...this._pairs].map(t=>t[0])}toItemArray(){return[...this._pairs].map(t=>t[1])}toEntryArray(){return[...this._pairs]}toObjectMap(){const t=Object.create(null);for(const[e,i]of this._pairs)t[e]=i;return t}toMap(){return new Map(this._pairs)}toIdSet(){return new Set(this.toIdArray())}toItemSet(){return new Set(this.toItemArray())}cache(){return new pf([...this._pairs])}distinct(t){const e=new Set;for(const[i,o]of this._pairs)e.add(t(o,i));return e}filter(t){const e=this._pairs;return new pf({*[Symbol.iterator](){for(const[i,o]of e)t(o,i)&&(yield[i,o])}})}forEach(t){for(const[e,i]of this._pairs)t(i,e)}map(t){const e=this._pairs;return new pf({*[Symbol.iterator](){for(const[i,o]of e)yield[i,t(o,i)]}})}max(t){const e=this._pairs[Symbol.iterator]();let i=e.next();if(i.done)return null;let o=i.value[1],n=t(i.value[1],i.value[0]);for(;!(i=e.next()).done;){const[e,s]=i.value,r=t(s,e);r>n&&(n=r,o=s)}return o}min(t){const e=this._pairs[Symbol.iterator]();let i=e.next();if(i.done)return null;let o=i.value[1],n=t(i.value[1],i.value[0]);for(;!(i=e.next()).done;){const[e,s]=i.value,r=t(s,e);r[...this._pairs].sort(([e,i],[o,n])=>t(i,n,e,o))[Symbol.iterator]()})}}class ff extends uf{flush;length;get idProp(){return this._idProp}_options;_data;_idProp;_queue=null;constructor(t,e){super(),t&&!Array.isArray(t)&&(e=t,t=[]),this._options=e||{},this._data=new Map,this.length=0,this._idProp=this._options.fieldId||"id",t&&t.length&&this.add(t),this.setOptions(e)}setOptions(t){t&&void 0!==t.queue&&(!1===t.queue?this._queue&&(this._queue.destroy(),this._queue=null):(this._queue||(this._queue=cf.extend(this,{replace:["add","update","remove"]})),t.queue&&"object"==typeof t.queue&&this._queue.setOptions(t.queue)))}add(t,e){const i=[];let o;if(Array.isArray(t)){if(t.map(t=>t[this._idProp]).some(t=>this._data.has(t)))throw new Error("A duplicate id was found in the parameter array.");for(let e=0,n=t.length;e{const e=t[r];if(null!=e&&this._data.has(e)){const i=t,r=Object.assign({},this._data.get(e)),a=this._updateItem(i);o.push(a),s.push(i),n.push(r)}else{const e=this._addItem(t);i.push(e)}};if(Array.isArray(t))for(let e=0,i=t.length;e{const e=this._data.get(t[this._idProp]);if(null==e)throw new Error("Updating non-existent items is not allowed.");return{oldData:e,update:t}}).map(({oldData:t,update:e})=>{const i=t[this._idProp],o=es(t,e);return this._data.set(i,o),{id:i,oldData:t,updatedData:o}});if(i.length){const t={items:i.map(t=>t.id),oldData:i.map(t=>t.oldData),data:i.map(t=>t.updatedData)};return this._trigger("update",t,e),t.items}return[]}get(t,e){let i,o,n;lf(t)?(i=t,n=e):Array.isArray(t)?(o=t,n=e):n=t;const s=n&&"Object"===n.returnType?"Object":"Array",r=n&&n.filter,a=[];let h,d,l;if(null!=i)h=this._data.get(i),h&&r&&!r(h)&&(h=void 0);else if(null!=o)for(let t=0,e=o.length;t(e[i]=t[i],e),{}):t}_sort(t,e){if("string"==typeof e){const i=e;t.sort((t,e)=>{const o=t[i],n=e[i];return o>n?1:oi)&&(e=o,i=n)}return e||null}min(t){let e=null,i=null;for(const o of this._data.values()){const n=o[t];"number"==typeof n&&(null==i||ns(t)&&r(t)),null==o?this._data.get(n):this._data.get(o,n)}getIds(t){if(this._data.length){const e=this._options.filter,i=null!=t?t.filter:null;let o;return o=i?e?t=>e(t)&&i(t):i:e,this._data.getIds({filter:o,order:t&&t.order})}return[]}forEach(t,e){if(this._data){const i=this._options.filter,o=e&&e.filter;let n;n=o?i?function(t){return i(t)&&o(t)}:o:i,this._data.forEach(t,{filter:n,order:e&&e.order})}}map(t,e){if(this._data){const i=this._options.filter,o=e&&e.filter;let n;return n=o?i?t=>i(t)&&o(t):o:i,this._data.map(t,{filter:n,order:e&&e.order})}return[]}getDataSet(){return this._data.getDataSet()}stream(t){return this._data.stream(t||{[Symbol.iterator]:this._ids.keys.bind(this._ids)})}dispose(){this._data?.off&&this._data.off("*",this._listener);const t="This data view has already been disposed of.",e={get:()=>{throw new Error(t)},set:()=>{throw new Error(t)},configurable:!1};for(const t of Reflect.ownKeys(gf.prototype))Object.defineProperty(this,t,e)}_onEvent(t,e,i){if(!e||!e.items||!this._data)return;const o=e.items,n=[],s=[],r=[],a=[],h=[],d=[];switch(t){case"add":for(let t=0,e=o.length;t>>0||(l(d,i)?16:10))}:r,av}function wv(){return cv?lv:(cv=1,function(){if(dv)return mv;dv=1;var t=hi(),e=bv();t({global:!0,forced:parseInt!==e},{parseInt:e})}(),lv=kt().parseInt)}function _v(){return pv?uv:(pv=1,uv=wv())}var xv,Ev,Ov,Cv,kv,Sv,Tv,Dv,Mv,Iv=i(gv?fv:(gv=1,fv=_v())),Pv={};function Nv(){if(Ev)return xv;Ev=1;var t=w(),e=_(),i=O(),o=ka(),n=yv().trim,s=vv(),r=i("".charAt),a=t.parseFloat,h=t.Symbol,d=h&&h.iterator,l=1/a(s+"-0")!=-1/0||d&&!e(function(){a(Object(d))});return xv=l?function(t){var e=n(o(t)),i=a(e);return 0===i&&"-"===r(e,0)?-0:i}:a,xv}function Bv(){return kv?Cv:(kv=1,function(){if(Ov)return Pv;Ov=1;var t=hi(),e=Nv();t({global:!0,forced:parseFloat!==e},{parseFloat:e})}(),Cv=kt().parseFloat)}function zv(){return Tv?Sv:(Tv=1,Sv=Bv())}var Fv,Av,jv,Rv,Lv,Hv,Wv,Vv,qv,Uv=i(Mv?Dv:(Mv=1,Dv=zv())),Yv={};function Xv(){return jv?Av:(jv=1,function(){if(Fv)return Yv;Fv=1;var t=hi(),e=Yh().filter;t({target:"Array",proto:!0,forced:!vh()("filter")},{filter:function(t){return e(this,t,arguments.length>1?arguments[1]:void 0)}})}(),Av=Ji()("Array","filter"))}function Gv(){if(Lv)return Rv;Lv=1;var t=Tt(),e=Xv(),i=Array.prototype;return Rv=function(o){var n=o.filter;return o===i||t(i,o)&&n===i.filter?e:n},Rv}function Kv(){return Wv?Hv:(Wv=1,Hv=Gv())}var Zv,Qv,$v,Jv,ty,ey,iy,oy=i(qv?Vv:(qv=1,Vv=Kv())),ny={};function sy(){if(Zv)return ny;Zv=1;var t=hi(),e=_(),i=Yc().f;return t({target:"Object",stat:!0,forced:e(function(){return!Object.getOwnPropertyNames(1)})},{getOwnPropertyNames:i}),ny}function ry(){if($v)return Qv;$v=1,sy();var t=kt().Object;return Qv=function(e){return t.getOwnPropertyNames(e)},Qv}function ay(){return ty?Jv:(ty=1,Jv=ry())}var hy,dy,ly,cy,uy,py,fy=i(iy?ey:(iy=1,ey=ay()));function gy(){return dy?hy:(dy=1,ug(),hy=kt().Object.getOwnPropertySymbols)}function my(){return cy?ly:(cy=1,ly=gy())}var vy,yy,by,wy,_y,xy,Ey=i(py?uy:(py=1,uy=my())),Oy={exports:{}},Cy={};function ky(){if(yy)return Oy.exports;yy=1,function(){if(vy)return Cy;vy=1;var t=hi(),e=_(),i=Ot(),o=Ce().f,n=N();t({target:"Object",stat:!0,forced:!n||e(function(){o(1)}),sham:!n},{getOwnPropertyDescriptor:function(t,e){return o(i(t),e)}})}();var t=kt().Object,e=Oy.exports=function(e,i){return t.getOwnPropertyDescriptor(e,i)};return t.getOwnPropertyDescriptor.sham&&(e.sham=!0),Oy.exports}function Sy(){return wy?by:(wy=1,by=ky())}var Ty,Dy,My,Iy,Py,Ny,By,zy,Fy,Ay=i(xy?_y:(xy=1,_y=Sy())),jy={};function Ry(){if(Dy)return Ty;Dy=1;var t=St(),e=O(),i=uc(),o=Mi(),n=si(),s=e([].concat);return Ty=t("Reflect","ownKeys")||function(t){var e=i.f(n(t)),r=o.f;return r?s(e,r(t)):e},Ty}function Ly(){return Py?Iy:(Py=1,function(){if(My)return jy;My=1;var t=hi(),e=N(),i=Ry(),o=Ot(),n=Ce(),s=gh();t({target:"Object",stat:!0,sham:!e},{getOwnPropertyDescriptors:function(t){for(var e,r,a=o(t),h=n.f,d=i(a),l={},c=0;d.length>c;)void 0!==(r=h(a,e=d[c++]))&&s(l,e,r);return l}})}(),Iy=kt().Object.getOwnPropertyDescriptors)}function Hy(){return By?Ny:(By=1,Ny=Ly())}var Wy,Vy,qy,Uy,Yy,Xy,Gy=i(Fy?zy:(Fy=1,zy=Hy())),Ky={exports:{}},Zy={};function Qy(){if(Wy)return Zy;Wy=1;var t=hi(),e=N(),i=xr().f;return t({target:"Object",stat:!0,forced:Object.defineProperties!==i,sham:!e},{defineProperties:i}),Zy}function $y(){if(Vy)return Ky.exports;Vy=1,Qy();var t=kt().Object,e=Ky.exports=function(e,i){return t.defineProperties(e,i)};return t.defineProperties.sham&&(e.sham=!0),Ky.exports}function Jy(){return Uy?qy:(Uy=1,qy=$y())}var tb,eb,ib=i(Xy?Yy:(Xy=1,Yy=Jy()));var ob=i(eb?tb:(eb=1,tb=Nf()));function nb(t,e){const i=["node","edge","label"];let o=!0;const n=Ys(e,"chosen");if("boolean"==typeof n)o=n;else if("object"==typeof n){if(-1===Zr(i).call(i,t))throw new Error("choosify: subOption '"+t+"' should be one of '"+i.join("', '")+"'");const n=Ys(e,["chosen",t]);"boolean"!=typeof n&&"function"!=typeof n||(o=n)}return o}function sb(t,e,i){if(t.width<=0||t.height<=0)return!1;if(void 0!==i){const t={x:e.x-i.x,y:e.y-i.y};if(0!==i.angle){const o=-i.angle;e={x:Math.cos(o)*t.x-Math.sin(o)*t.y,y:Math.sin(o)*t.x+Math.cos(o)*t.y}}else e=t}const o=t.x+t.width,n=t.y+t.width;return t.lefte.x&&t.tope.y}function rb(t){return"string"==typeof t&&""!==t}function ab(t,e,i,o){let n=o.x,s=o.y;if("function"==typeof o.distanceToBorder){const i=o.distanceToBorder(t,e),r=Math.sin(e)*i,a=Math.cos(e)*i;a===i?(n+=i,s=o.y):r===i?(n=o.x,s-=i):(n+=a,s-=r)}else o.shape.width>o.shape.height?(n=o.x+.5*o.shape.width,s=o.y-i):(n=o.x+i,s=o.y-.5*o.shape.height);return{x:n,y:s}}var hb,db,lb,cb,ub,pb,fb,gb,mb,vb={};function yb(){return lb?db:(lb=1,function(){if(hb)return vb;hb=1;var t=hi(),e=hh(),i=uh(),o=Ct(),n=ci(),s=pi(),r=Ot(),a=gh(),h=we(),d=vh(),l=Qi(),c=d("slice"),u=h("species"),p=Array,f=Math.max;t({target:"Array",proto:!0,forced:!c},{slice:function(t,h){var d,c,g,m=r(this),v=s(m),y=n(t,v),b=n(void 0===h?v:h,v);if(e(m)&&(d=m.constructor,(i(d)&&(d===p||e(d.prototype))||o(d)&&null===(d=d[u]))&&(d=void 0),d===p||void 0===d))return l(m,y,b);for(c=new(void 0===d?p:d)(f(b-y,0)),g=0;y2&&void 0!==arguments[2]?arguments[2]:"normal";void 0===this.lines[t]&&(this.lines[t]={width:0,height:0,blocks:[]});let o=e;void 0!==e&&""!==e||(o=" ");const n=this.measureText(o,i),s=Ki({},Nb(n));s.text=e,s.width=n.width,s.mod=i,void 0!==e&&""!==e||(s.width=0),this.lines[t].blocks.push(s),this.lines[t].width+=s.width}curWidth(){const t=this.lines[this.current];return void 0===t?0:t.width}append(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"normal";this._add(this.current,t,e)}newLine(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"normal";this._add(this.current,t,e),this.current++}determineLineHeights(){for(let t=0;tt&&(t=o.width),e+=o.height}this.width=t,this.height=e}removeEmptyBlocks(){const t=[];for(let e=0;e"://,""://,""://,"":/<\/b>/,"":/<\/i>/,"":/<\/code>/,"*":/\*/,_:/_/,"`":/`/,afterBold:/[^*]/,afterItal:/[^_]/,afterMono:/[^`]/};class Fb{constructor(t){this.text=t,this.bold=!1,this.ital=!1,this.mono=!1,this.spacing=!1,this.position=0,this.buffer="",this.modStack=[],this.blocks=[]}mod(){return 0===this.modStack.length?"normal":this.modStack[0]}modName(){return 0===this.modStack.length?"normal":"mono"===this.modStack[0]?"mono":this.bold&&this.ital?"boldital":this.bold?"bold":this.ital?"ital":void 0}emitBlock(){this.spacing&&(this.add(" "),this.spacing=!1),this.buffer.length>0&&(this.blocks.push({text:this.buffer,mod:this.modName()}),this.buffer="")}add(t){" "===t&&(this.spacing=!0),this.spacing&&(this.buffer+=" ",this.spacing=!1)," "!=t&&(this.buffer+=t)}parseWS(t){return!!/[ \t]/.test(t)&&(this.mono?this.add(t):this.spacing=!0,!0)}setTag(t){this.emitBlock(),this[t]=!0,this.modStack.unshift(t)}unsetTag(t){this.emitBlock(),this[t]=!1,this.modStack.shift()}parseStartTag(t,e){return!(this.mono||this[t]||!this.match(e))&&(this.setTag(t),!0)}match(t){let e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];const[i,o]=this.prepareRegExp(t),n=i.test(this.text.substr(this.position,o));return n&&e&&(this.position+=o-1),n}parseEndTag(t,e,i){let o=this.mod()===t;return o="mono"===t?o&&this.mono:o&&!this.mono,!(!o||!this.match(e))&&(void 0!==i?(this.position===this.text.length-1||this.match(i,!1))&&this.unsetTag(t):this.unsetTag(t),!0)}replace(t,e){return!!this.match(t)&&(this.add(e),this.position+=length-1,!0)}prepareRegExp(t){let e,i;if(t instanceof RegExp)i=t,e=1;else{const o=zb[t];i=void 0!==o?o:new RegExp(t),e=t.length}return[i,e]}}class Ab{constructor(t,e,i,o){this.ctx=t,this.parent=e,this.selected=i,this.hover=o;this.lines=new Bb((e,n)=>{if(void 0===e)return 0;const s=this.parent.getFormattingValues(t,i,o,n);let r=0;if(""!==e){r=this.ctx.measureText(e).width}return{width:r,values:s}})}process(t){if(!rb(t))return this.lines.finalize();const e=this.parent.fontOptions;t=(t=t.replace(/\r\n/g,"\n")).replace(/\r/g,"\n");const i=String(t).split("\n"),o=i.length;if(e.multi)for(let t=0;t0)for(let t=0;t0)for(let t=0;t{if(/&/.test(t)){return e.replace(e.text,"<","<")||e.replace(e.text,"&","&")||e.add("&"),!0}return!1};for(;e.position")||e.parseStartTag("ital","")||e.parseStartTag("mono","")||e.parseEndTag("bold","")||e.parseEndTag("ital","")||e.parseEndTag("mono",""))||i(t)||e.add(t),e.position++}return e.emitBlock(),e.blocks}splitMarkdownBlocks(t){const e=new Fb(t);let i=!0;const o=t=>!!/\\/.test(t)&&(e.positionthis.parent.fontOptions.maxWdt}getLongestFit(t){let e="",i=0;for(;i1&&void 0!==arguments[1]?arguments[1]:"normal",i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];this.parent.getFormattingValues(this.ctx,this.selected,this.hover,e);let o=(t=(t=t.replace(/^( +)/g,"$1\r")).replace(/([^\r][^ ]*)( +)/g,"$1\r$2\r")).split("\r");for(;o.length>0;){let t=this.getLongestFit(o);if(0===t){const t=o[0],i=this.getLongestFitWord(t);this.lines.newLine(Db(t).call(t,0,i),e),o[0]=Db(t).call(t,i)}else{let n=t;" "===o[t-1]?t--:" "===o[n]&&n++;const s=Db(o).call(o,0,t).join("");t==o.length&&i?this.lines.append(s,e):this.lines.newLine(s,e),o=Db(o).call(o,n)}}}}const jb=["bold","ital","boldital","mono"];class Rb{constructor(t,e){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];this.body=t,this.pointToSelf=!1,this.baseSize=void 0,this.fontOptions={},this.setOptions(e),this.size={top:0,left:0,width:0,height:0,yLine:0},this.isEdgeLabel=i}setOptions(t){if(this.elementOptions=t,this.initFontOptions(t.font),rb(t.label)?this.labelDirty=!0:t.label=void 0,void 0!==t.font&&null!==t.font)if("string"==typeof t.font)this.baseSize=this.fontOptions.size;else if("object"==typeof t.font){const e=t.font.size;void 0!==e&&(this.baseSize=e)}}initFontOptions(t){Ts(jb,t=>{this.fontOptions[t]={}}),Rb.parseFontString(this.fontOptions,t)?this.fontOptions.vadjust=0:Ts(t,(t,e)=>{null!=t&&"object"!=typeof t&&(this.fontOptions[e]=t)})}static parseFontString(t,e){if(!e||"string"!=typeof e)return!1;const i=e.split(" ");return t.size=+i[0].replace("px",""),t.face=i[1],t.color=i[2],!0}constrain(t){const e={constrainWidth:!1,maxWdt:-1,minWdt:-1,constrainHeight:!1,minHgt:-1,valign:"middle"},i=Ys(t,"widthConstraint");if("number"==typeof i)e.maxWdt=Number(i),e.minWdt=Number(i);else if("object"==typeof i){const i=Ys(t,["widthConstraint","maximum"]);"number"==typeof i&&(e.maxWdt=Number(i));const o=Ys(t,["widthConstraint","minimum"]);"number"==typeof o&&(e.minWdt=Number(o))}const o=Ys(t,"heightConstraint");if("number"==typeof o)e.minHgt=Number(o);else if("object"==typeof o){const i=Ys(t,["heightConstraint","minimum"]);"number"==typeof i&&(e.minHgt=Number(i));const o=Ys(t,["heightConstraint","valign"]);"string"==typeof o&&("top"!==o&&"bottom"!==o||(e.valign=o))}return e}update(t,e){this.setOptions(t,!0),this.propagateFonts(e),Es(this.fontOptions,this.constrain(e)),this.fontOptions.chooser=nb("label",e)}adjustSizes(t){const e=t?t.right+t.left:0;this.fontOptions.constrainWidth&&(this.fontOptions.maxWdt-=e,this.fontOptions.minWdt-=e);const i=t?t.top+t.bottom:0;this.fontOptions.constrainHeight&&(this.fontOptions.minHgt-=i)}addFontOptionsToPile(t,e){for(let i=0;i{void 0!==t&&(Object.prototype.hasOwnProperty.call(e,i)||(-1!==Zr(jb).call(jb,i)?e[i]={}:e[i]=t))})}return e}getFontOption(t,e,i){let o;for(let n=0;n{o[e]=t}),o.size=Number(o.size),o.vadjust=Number(o.vadjust)}}draw(t,e,i,o,n){let s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"middle";if(void 0===this.elementOptions.label)return;let r=this.fontOptions.size*this.body.view.scale;this.elementOptions.label&&r=this.elementOptions.scaling.label.maxVisible&&(r=Number(this.elementOptions.scaling.label.maxVisible)/this.body.view.scale),this.calculateLabelSize(t,o,n,e,i,s),this._drawBackground(t),this._drawText(t,e,this.size.yLine,s,r))}_drawBackground(t){if(void 0!==this.fontOptions.background&&"none"!==this.fontOptions.background){t.fillStyle=this.fontOptions.background;const e=this.getSize();t.fillRect(e.left,e.top,e.width,e.height)}}_drawText(t,e,i){let o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"middle",n=arguments.length>4?arguments[4]:void 0;[e,i]=this._setAlignment(t,e,i,o),t.textAlign="left",e-=this.size.width/2,this.fontOptions.valign&&this.size.height>this.size.labelHeight&&("top"===this.fontOptions.valign&&(i-=(this.size.height-this.size.labelHeight)/2),"bottom"===this.fontOptions.valign&&(i+=(this.size.height-this.size.labelHeight)/2));for(let o=0;o0&&(t.lineWidth=a.strokeWidth,t.strokeStyle=d,t.lineJoin="round"),t.fillStyle=h,a.strokeWidth>0&&t.strokeText(a.text,e+o,i+a.vadjust),t.fillText(a.text,e+o,i+a.vadjust),o+=a.width}i+=s.height}}}_setAlignment(t,e,i,o){if(this.isEdgeLabel&&"horizontal"!==this.fontOptions.align&&!1===this.pointToSelf){e=0,i=0;const o=2;"top"===this.fontOptions.align?(t.textBaseline="alphabetic",i-=2*o):"bottom"===this.fontOptions.align?(t.textBaseline="hanging",i+=2*o):t.textBaseline="middle"}else t.textBaseline=o;return[e,i]}_getColor(t,e,i){let o=t||"#000000",n=i||"#ffffff";if(e<=this.elementOptions.scaling.label.drawThreshold){const t=Math.max(0,Math.min(1,1-(this.elementOptions.scaling.label.drawThreshold-e)));o=Ps(o,t),n=Ps(n,t)}return[o,n]}getTextSize(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return this._processLabel(t,e,i),{width:this.size.width,height:this.size.height,lineCount:this.lineCount}}getSize(){let t=this.size.left,e=this.size.top-1;if(this.isEdgeLabel){const i=.5*-this.size.width;switch(this.fontOptions.align){case"middle":t=i,e=.5*-this.size.height;break;case"top":t=i,e=-(this.size.height+2);break;case"bottom":t=i,e=2}}return{left:t,top:e,width:this.size.width,height:this.size.height}}calculateLabelSize(t,e,i){let o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,n=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"middle";this._processLabel(t,e,i),this.size.left=o-.5*this.size.width,this.size.top=n-.5*this.size.height,this.size.yLine=n+.5*(1-this.lineCount)*this.fontOptions.size,"hanging"===s&&(this.size.top+=.5*this.fontOptions.size,this.size.top+=4,this.size.yLine+=4)}getFormattingValues(t,e,i,o){const n=function(t,e,i){return"normal"===e?"mod"===i?"":t[i]:void 0!==t[e][i]?t[e][i]:t[i]},s={color:n(this.fontOptions,o,"color"),size:n(this.fontOptions,o,"size"),face:n(this.fontOptions,o,"face"),mod:n(this.fontOptions,o,"mod"),vadjust:n(this.fontOptions,o,"vadjust"),strokeWidth:this.fontOptions.strokeWidth,strokeColor:this.fontOptions.strokeColor};(e||i)&&("normal"===o&&!0===this.fontOptions.chooser&&this.elementOptions.labelHighlightBold?s.mod="bold":"function"==typeof this.fontOptions.chooser&&this.fontOptions.chooser(s,this.elementOptions.id,e,i));let r="";return void 0!==s.mod&&""!==s.mod&&(r+=s.mod+" "),r+=s.size+"px "+s.face,t.font=r.replace(/"/g,""),s.font=t.font,s.height=s.size,s}differentState(t,e){return t!==this.selectedState||e!==this.hoverState}_processLabelText(t,e,i,o){return new Ab(t,this,e,i).process(o)}_processLabel(t,e,i){if(!1===this.labelDirty&&!this.differentState(e,i))return;const o=this._processLabelText(t,e,i,this.elementOptions.label);this.fontOptions.minWdt>0&&o.width0&&o.height1?arguments[1]:void 0,s),h=r>2?arguments[2]:void 0,d=void 0===h?s:e(h,s);d>a;)n[a++]=o;return n},Lb}function Jb(){return qb?Vb:(qb=1,function(){if(Wb)return Qb;Wb=1;var t=hi(),e=$b(),i=$r();t({target:"Array",proto:!0},{fill:e}),i("fill")}(),Vb=Ji()("Array","fill"))}function tw(){if(Yb)return Ub;Yb=1;var t=Tt(),e=Jb(),i=Array.prototype;return Ub=function(o){var n=o.fill;return o===i||t(i,o)&&n===i.fill?e:n},Ub}function ew(){return Gb?Xb:(Gb=1,Xb=tw())}var iw=i(Zb?Kb:(Zb=1,Kb=ew()));class ow{constructor(t,e,i){this.body=e,this.labelModule=i,this.setOptions(t),this.top=void 0,this.left=void 0,this.height=void 0,this.width=void 0,this.radius=void 0,this.margin=void 0,this.refreshNeeded=!0,this.boundingBox={top:0,left:0,right:0,bottom:0}}setOptions(t){this.options=t}_setMargins(t){this.margin={},this.options.margin&&("object"==typeof this.options.margin?(this.margin.top=this.options.margin.top,this.margin.right=this.options.margin.right,this.margin.bottom=this.options.margin.bottom,this.margin.left=this.options.margin.left):(this.margin.top=this.options.margin,this.margin.right=this.options.margin,this.margin.bottom=this.options.margin,this.margin.left=this.options.margin)),t.adjustSizes(this.margin)}_distanceToBorder(t,e){const i=this.options.borderWidth;return t&&this.resize(t),Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i}enableShadow(t,e){e.shadow&&(t.shadowColor=e.shadowColor,t.shadowBlur=e.shadowSize,t.shadowOffsetX=e.shadowX,t.shadowOffsetY=e.shadowY)}disableShadow(t,e){e.shadow&&(t.shadowColor="rgba(0,0,0,0)",t.shadowBlur=0,t.shadowOffsetX=0,t.shadowOffsetY=0)}enableBorderDashes(t,e){if(!1!==e.borderDashes)if(void 0!==t.setLineDash){let i=e.borderDashes;!0===i&&(i=[5,15]),t.setLineDash(i)}else console.warn("setLineDash is not supported in this browser. The dashed borders cannot be used."),this.options.shapeProperties.borderDashes=!1,e.borderDashes=!1}disableBorderDashes(t,e){!1!==e.borderDashes&&(void 0!==t.setLineDash?t.setLineDash([0]):(console.warn("setLineDash is not supported in this browser. The dashed borders cannot be used."),this.options.shapeProperties.borderDashes=!1,e.borderDashes=!1))}needsRefresh(t,e){return!0===this.refreshNeeded?(this.refreshNeeded=!1,!0):void 0===this.width||this.labelModule.differentState(t,e)}initContextForDraw(t,e){const i=e.borderWidth/this.body.view.scale;t.lineWidth=Math.min(this.width,i),t.strokeStyle=e.borderColor,t.fillStyle=e.color}performStroke(t,e){const i=e.borderWidth/this.body.view.scale;t.save(),i>0&&(this.enableBorderDashes(t,e),t.stroke(),this.disableBorderDashes(t,e)),t.restore()}performFill(t,e){t.save(),t.fillStyle=e.color,this.enableShadow(t,e),iw(t).call(t),this.disableShadow(t,e),t.restore(),this.performStroke(t,e)}_addBoundingBoxMargin(t){this.boundingBox.left-=t,this.boundingBox.top-=t,this.boundingBox.bottom+=t,this.boundingBox.right+=t}_updateBoundingBox(t,e,i,o,n){void 0!==i&&this.resize(i,o,n),this.left=t-this.width/2,this.top=e-this.height/2,this.boundingBox.left=this.left,this.boundingBox.top=this.top,this.boundingBox.bottom=this.top+this.height,this.boundingBox.right=this.left+this.width}updateBoundingBox(t,e,i,o,n){this._updateBoundingBox(t,e,i,o,n)}getDimensionsFromLabel(t,e,i){this.textSize=this.labelModule.getTextSize(t,e,i);let o=this.textSize.width,n=this.textSize.height;return 0===o&&(o=14,n=14),{width:o,height:n}}}let nw=class extends ow{constructor(t,e,i){super(t,e,i),this._setMargins(i)}resize(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.hover;if(this.needsRefresh(e,i)){const o=this.getDimensionsFromLabel(t,e,i);this.width=o.width+this.margin.right+this.margin.left,this.height=o.height+this.margin.top+this.margin.bottom,this.radius=this.width/2}}draw(t,e,i,o,n,s){this.resize(t,o,n),this.left=e-this.width/2,this.top=i-this.height/2,this.initContextForDraw(t,s),so(t,this.left,this.top,this.width,this.height,s.borderRadius),this.performFill(t,s),this.updateBoundingBox(e,i,t,o,n),this.labelModule.draw(t,this.left+this.textSize.width/2+this.margin.left,this.top+this.textSize.height/2+this.margin.top,o,n)}updateBoundingBox(t,e,i,o,n){this._updateBoundingBox(t,e,i,o,n);const s=this.options.shapeProperties.borderRadius;this._addBoundingBoxMargin(s)}distanceToBorder(t,e){t&&this.resize(t);const i=this.options.borderWidth;return Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i}};class sw extends ow{constructor(t,e,i){super(t,e,i),this.labelOffset=0,this.selected=!1}setOptions(t,e,i){this.options=t,void 0===e&&void 0===i||this.setImages(e,i)}setImages(t,e){e&&this.selected?(this.imageObj=e,this.imageObjAlt=t):(this.imageObj=t,this.imageObjAlt=e)}switchImages(t){const e=t&&!this.selected||!t&&this.selected;if(this.selected=t,void 0!==this.imageObjAlt&&e){const t=this.imageObj;this.imageObj=this.imageObjAlt,this.imageObjAlt=t}}_getImagePadding(){const t={top:0,right:0,bottom:0,left:0};if(this.options.imagePadding){const e=this.options.imagePadding;"object"==typeof e?(t.top=e.top,t.right=e.right,t.bottom=e.bottom,t.left=e.left):(t.top=e,t.right=e,t.bottom=e,t.left=e)}return t}_resizeImage(){let t,e;if(!1===this.options.shapeProperties.useImageSize){let i=1,o=1;this.imageObj.width&&this.imageObj.height&&(this.imageObj.width>this.imageObj.height?i=this.imageObj.width/this.imageObj.height:o=this.imageObj.height/this.imageObj.width),t=2*this.options.size*i,e=2*this.options.size*o}else{const i=this._getImagePadding();t=this.imageObj.width+i.left+i.right,e=this.imageObj.height+i.top+i.bottom}this.width=t,this.height=e,this.radius=.5*this.width}_drawRawCircle(t,e,i,o){this.initContextForDraw(t,o),no(t,e,i,o.size),this.performFill(t,o)}_drawImageAtPosition(t,e){if(0!=this.imageObj.width){t.globalAlpha=void 0!==e.opacity?e.opacity:1,this.enableShadow(t,e);let i=1;!0===this.options.shapeProperties.interpolation&&(i=this.imageObj.width/this.width/this.body.view.scale);const o=this._getImagePadding(),n=this.left+o.left,s=this.top+o.top,r=this.width-o.left-o.right,a=this.height-o.top-o.bottom;this.imageObj.drawImageAtPosition(t,i,n,s,r,a),this.disableShadow(t,e)}}_drawImageLabel(t,e,i,o,n){let s=0;if(void 0!==this.height){s=.5*this.height;const e=this.labelModule.getTextSize(t,o,n);e.lineCount>=1&&(s+=e.height/2)}const r=i+s;this.options.label&&(this.labelOffset=s),this.labelModule.draw(t,e,r,o,n,"hanging")}}let rw=class extends sw{constructor(t,e,i){super(t,e,i),this._setMargins(i)}resize(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.hover;if(this.needsRefresh(e,i)){const o=this.getDimensionsFromLabel(t,e,i),n=Math.max(o.width+this.margin.right+this.margin.left,o.height+this.margin.top+this.margin.bottom);this.options.size=n/2,this.width=n,this.height=n,this.radius=this.width/2}}draw(t,e,i,o,n,s){this.resize(t,o,n),this.left=e-this.width/2,this.top=i-this.height/2,this._drawRawCircle(t,e,i,s),this.updateBoundingBox(e,i),this.labelModule.draw(t,this.left+this.textSize.width/2+this.margin.left,i,o,n)}updateBoundingBox(t,e){this.boundingBox.top=e-this.options.size,this.boundingBox.left=t-this.options.size,this.boundingBox.right=t+this.options.size,this.boundingBox.bottom=e+this.options.size}distanceToBorder(t){return t&&this.resize(t),.5*this.width}};class aw extends sw{constructor(t,e,i,o,n){super(t,e,i),this.setImages(o,n)}resize(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.hover;if(void 0===this.imageObj.src||void 0===this.imageObj.width||void 0===this.imageObj.height){const t=2*this.options.size;return this.width=t,this.height=t,void(this.radius=.5*this.width)}this.needsRefresh(e,i)&&this._resizeImage()}draw(t,e,i,o,n,s){this.switchImages(o),this.resize();let r=e,a=i;"top-left"===this.options.shapeProperties.coordinateOrigin?(this.left=e,this.top=i,r+=this.width/2,a+=this.height/2):(this.left=e-this.width/2,this.top=i-this.height/2),this._drawRawCircle(t,r,a,s),t.save(),t.clip(),this._drawImageAtPosition(t,s),t.restore(),this._drawImageLabel(t,r,a,o,n),this.updateBoundingBox(e,i)}updateBoundingBox(t,e){"top-left"===this.options.shapeProperties.coordinateOrigin?(this.boundingBox.top=e,this.boundingBox.left=t,this.boundingBox.right=t+2*this.options.size,this.boundingBox.bottom=e+2*this.options.size):(this.boundingBox.top=e-this.options.size,this.boundingBox.left=t-this.options.size,this.boundingBox.right=t+this.options.size,this.boundingBox.bottom=e+this.options.size),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelOffset)}distanceToBorder(t){return t&&this.resize(t),.5*this.width}}class hw extends ow{constructor(t,e,i){super(t,e,i)}resize(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.hover,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{size:this.options.size};if(this.needsRefresh(e,i)){var n,s;this.labelModule.getTextSize(t,e,i);const r=2*o.size;this.width=null!==(n=this.customSizeWidth)&&void 0!==n?n:r,this.height=null!==(s=this.customSizeHeight)&&void 0!==s?s:r,this.radius=.5*this.width}}_drawShape(t,e,i,o,n,s,r,a){var h;return this.resize(t,s,r,a),this.left=o-this.width/2,this.top=n-this.height/2,this.initContextForDraw(t,a),(h=e,Object.prototype.hasOwnProperty.call(lo,h)?lo[h]:function(t){for(var e=arguments.length,i=new Array(e>1?e-1:0),o=1;o{if(void 0!==this.options.label){this.labelModule.calculateLabelSize(t,s,r,o,n,"hanging");const e=n+.5*this.height+.5*this.labelModule.size.height;this.labelModule.draw(t,o,e,s,r,"hanging")}this.updateBoundingBox(o,n)}}}updateBoundingBox(t,e){this.boundingBox.top=e-this.options.size,this.boundingBox.left=t-this.options.size,this.boundingBox.right=t+this.options.size,this.boundingBox.bottom=e+this.options.size,void 0!==this.options.label&&this.labelModule.size.width>0&&(this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelModule.size.height))}}function dw(t,e){var i=Sp(t);if(Ey){var o=Ey(t);e&&(o=oy(o).call(o,function(e){return Ay(t,e).enumerable})),i.push.apply(i,o)}return i}function lw(t){for(var e=1;e{t.save(),e(),t.restore()}}return r.nodeDimensions&&(this.customSizeWidth=r.nodeDimensions.width,this.customSizeHeight=r.nodeDimensions.height),r}distanceToBorder(t,e){return this._distanceToBorder(t,e)}}class uw extends ow{constructor(t,e,i){super(t,e,i),this._setMargins(i)}resize(t,e,i){if(this.needsRefresh(e,i)){const o=this.getDimensionsFromLabel(t,e,i).width+this.margin.right+this.margin.left;this.width=o,this.height=o,this.radius=this.width/2}}draw(t,e,i,o,n,s){this.resize(t,o,n),this.left=e-this.width/2,this.top=i-this.height/2,this.initContextForDraw(t,s),ao(t,e-this.width/2,i-this.height/2,this.width,this.height),this.performFill(t,s),this.updateBoundingBox(e,i,t,o,n),this.labelModule.draw(t,this.left+this.textSize.width/2+this.margin.left,this.top+this.textSize.height/2+this.margin.top,o,n)}distanceToBorder(t,e){return this._distanceToBorder(t,e)}}let pw=class extends hw{constructor(t,e,i){super(t,e,i)}draw(t,e,i,o,n,s){return this._drawShape(t,"diamond",4,e,i,o,n,s)}distanceToBorder(t,e){return this._distanceToBorder(t,e)}};class fw extends hw{constructor(t,e,i){super(t,e,i)}draw(t,e,i,o,n,s){return this._drawShape(t,"circle",2,e,i,o,n,s)}distanceToBorder(t){return t&&this.resize(t),this.options.size}}class gw extends ow{constructor(t,e,i){super(t,e,i)}resize(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.hover;if(this.needsRefresh(e,i)){const o=this.getDimensionsFromLabel(t,e,i);this.height=2*o.height,this.width=o.width+o.height,this.radius=.5*this.width}}draw(t,e,i,o,n,s){this.resize(t,o,n),this.left=e-.5*this.width,this.top=i-.5*this.height,this.initContextForDraw(t,s),ro(t,this.left,this.top,this.width,this.height),this.performFill(t,s),this.updateBoundingBox(e,i,t,o,n),this.labelModule.draw(t,e,i,o,n)}distanceToBorder(t,e){t&&this.resize(t);const i=.5*this.width,o=.5*this.height,n=Math.sin(e)*i,s=Math.cos(e)*o;return i*o/Math.sqrt(n*n+s*s)}}class mw extends ow{constructor(t,e,i){super(t,e,i),this._setMargins(i)}resize(t,e,i){this.needsRefresh(e,i)&&(this.iconSize={width:Number(this.options.icon.size),height:Number(this.options.icon.size)},this.width=this.iconSize.width+this.margin.right+this.margin.left,this.height=this.iconSize.height+this.margin.top+this.margin.bottom,this.radius=.5*this.width)}draw(t,e,i,o,n,s){return this.resize(t,o,n),this.options.icon.size=this.options.icon.size||50,this.left=e-this.width/2,this.top=i-this.height/2,this._icon(t,e,i,o,n,s),{drawExternalLabel:()=>{if(void 0!==this.options.label){const e=5;this.labelModule.draw(t,this.left+this.iconSize.width/2+this.margin.left,i+this.height/2+e,o)}this.updateBoundingBox(e,i)}}}updateBoundingBox(t,e){if(this.boundingBox.top=e-.5*this.options.icon.size,this.boundingBox.left=t-.5*this.options.icon.size,this.boundingBox.right=t+.5*this.options.icon.size,this.boundingBox.bottom=e+.5*this.options.icon.size,void 0!==this.options.label&&this.labelModule.size.width>0){const t=5;this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelModule.size.height+t)}}_icon(t,e,i,o,n,s){const r=Number(this.options.icon.size);void 0!==this.options.icon.code?(t.font=[null!=this.options.icon.weight?this.options.icon.weight:o?"bold":"",(null!=this.options.icon.weight&&o?5:0)+r+"px",this.options.icon.face].join(" "),t.fillStyle=this.options.icon.color||"black",t.textAlign="center",t.textBaseline="middle",this.enableShadow(t,s),t.fillText(this.options.icon.code,e,i),this.disableShadow(t,s)):console.error("When using the icon shape, you need to define the code in the icon options object. This can be done per node or globally.")}distanceToBorder(t,e){return this._distanceToBorder(t,e)}}let vw=class extends sw{constructor(t,e,i,o,n){super(t,e,i),this.setImages(o,n)}resize(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.hover;if(void 0===this.imageObj.src||void 0===this.imageObj.width||void 0===this.imageObj.height){const t=2*this.options.size;return this.width=t,void(this.height=t)}this.needsRefresh(e,i)&&this._resizeImage()}draw(t,e,i,o,n,s){t.save(),this.switchImages(o),this.resize();let r=e,a=i;if("top-left"===this.options.shapeProperties.coordinateOrigin?(this.left=e,this.top=i,r+=this.width/2,a+=this.height/2):(this.left=e-this.width/2,this.top=i-this.height/2),!0===this.options.shapeProperties.useBorderWithImage){const e=this.options.borderWidth,i=this.options.borderWidthSelected||2*this.options.borderWidth,r=(o?i:e)/this.body.view.scale;t.lineWidth=Math.min(this.width,r),t.beginPath();let a=o?this.options.color.highlight.border:n?this.options.color.hover.border:this.options.color.border,h=o?this.options.color.highlight.background:n?this.options.color.hover.background:this.options.color.background;void 0!==s.opacity&&(a=Ps(a,s.opacity),h=Ps(h,s.opacity)),t.strokeStyle=a,t.fillStyle=h,t.rect(this.left-.5*t.lineWidth,this.top-.5*t.lineWidth,this.width+t.lineWidth,this.height+t.lineWidth),iw(t).call(t),this.performStroke(t,s),t.closePath()}this._drawImageAtPosition(t,s),this._drawImageLabel(t,r,a,o,n),this.updateBoundingBox(e,i),t.restore()}updateBoundingBox(t,e){this.resize(),"top-left"===this.options.shapeProperties.coordinateOrigin?(this.left=t,this.top=e):(this.left=t-this.width/2,this.top=e-this.height/2),this.boundingBox.left=this.left,this.boundingBox.top=this.top,this.boundingBox.bottom=this.top+this.height,this.boundingBox.right=this.left+this.width,void 0!==this.options.label&&this.labelModule.size.width>0&&(this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelOffset))}distanceToBorder(t,e){return this._distanceToBorder(t,e)}};class yw extends hw{constructor(t,e,i){super(t,e,i)}draw(t,e,i,o,n,s){return this._drawShape(t,"square",2,e,i,o,n,s)}distanceToBorder(t,e){return this._distanceToBorder(t,e)}}class bw extends hw{constructor(t,e,i){super(t,e,i)}draw(t,e,i,o,n,s){return this._drawShape(t,"hexagon",4,e,i,o,n,s)}distanceToBorder(t,e){return this._distanceToBorder(t,e)}}class ww extends hw{constructor(t,e,i){super(t,e,i)}draw(t,e,i,o,n,s){return this._drawShape(t,"star",4,e,i,o,n,s)}distanceToBorder(t,e){return this._distanceToBorder(t,e)}}class _w extends ow{constructor(t,e,i){super(t,e,i),this._setMargins(i)}resize(t,e,i){this.needsRefresh(e,i)&&(this.textSize=this.labelModule.getTextSize(t,e,i),this.width=this.textSize.width+this.margin.right+this.margin.left,this.height=this.textSize.height+this.margin.top+this.margin.bottom,this.radius=.5*this.width)}draw(t,e,i,o,n,s){this.resize(t,o,n),this.left=e-this.width/2,this.top=i-this.height/2,this.enableShadow(t,s),this.labelModule.draw(t,this.left+this.textSize.width/2+this.margin.left,this.top+this.textSize.height/2+this.margin.top,o,n),this.disableShadow(t,s),this.updateBoundingBox(e,i,t,o,n)}distanceToBorder(t,e){return this._distanceToBorder(t,e)}}let xw=class extends hw{constructor(t,e,i){super(t,e,i)}draw(t,e,i,o,n,s){return this._drawShape(t,"triangle",3,e,i,o,n,s)}distanceToBorder(t,e){return this._distanceToBorder(t,e)}};class Ew extends hw{constructor(t,e,i){super(t,e,i)}draw(t,e,i,o,n,s){return this._drawShape(t,"triangleDown",3,e,i,o,n,s)}distanceToBorder(t,e){return this._distanceToBorder(t,e)}}function Ow(t,e){var i=Sp(t);if(Ey){var o=Ey(t);e&&(o=oy(o).call(o,function(e){return Ay(t,e).enumerable})),i.push.apply(i,o)}return i}function Cw(t){for(var e=1;enull!=e[t]);r.push("font"),xs(r,t,s),t.color=Bs(t.color)}static parseOptions(t,e){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},n=arguments.length>4?arguments[4]:void 0;if(xs(["color","fixed","shadow"],t,e,i),kw.checkMass(e),void 0!==t.opacity&&(kw.checkOpacity(t.opacity)||(console.error("Invalid option for node opacity. Value must be between 0 and 1, found: "+t.opacity),t.opacity=void 0)),void 0!==e.opacity&&(kw.checkOpacity(e.opacity)||(console.error("Invalid option for node opacity. Value must be between 0 and 1, found: "+e.opacity),e.opacity=void 0)),e.shapeProperties&&!kw.checkCoordinateOrigin(e.shapeProperties.coordinateOrigin)&&console.error("Invalid option for node coordinateOrigin, found: "+e.shapeProperties.coordinateOrigin),qs(t,e,"shadow",o),void 0!==e.color&&null!==e.color){const i=Bs(e.color);bs(t.color,i)}else!0===i&&null===e.color&&(t.color=Vs(o.color));void 0!==e.fixed&&null!==e.fixed&&("boolean"==typeof e.fixed?(t.fixed.x=e.fixed,t.fixed.y=e.fixed):(void 0!==e.fixed.x&&"boolean"==typeof e.fixed.x&&(t.fixed.x=e.fixed.x),void 0!==e.fixed.y&&"boolean"==typeof e.fixed.y&&(t.fixed.y=e.fixed.y))),!0===i&&null===e.font&&(t.font=Vs(o.font)),kw.updateGroupOptions(t,e,n),void 0!==e.scaling&&qs(t.scaling,e.scaling,"label",o.scaling)}getFormattingValues(){const t={color:this.options.color.background,opacity:this.options.opacity,borderWidth:this.options.borderWidth,borderColor:this.options.color.border,size:this.options.size,borderDashes:this.options.shapeProperties.borderDashes,borderRadius:this.options.shapeProperties.borderRadius,shadow:this.options.shadow.enabled,shadowColor:this.options.shadow.color,shadowSize:this.options.shadow.size,shadowX:this.options.shadow.x,shadowY:this.options.shadow.y};if(this.selected||this.hover?!0===this.chooser?this.selected?(null!=this.options.borderWidthSelected?t.borderWidth=this.options.borderWidthSelected:t.borderWidth*=2,t.color=this.options.color.highlight.background,t.borderColor=this.options.color.highlight.border,t.shadow=this.options.shadow.enabled):this.hover&&(t.color=this.options.color.hover.background,t.borderColor=this.options.color.hover.border,t.shadow=this.options.shadow.enabled):"function"==typeof this.chooser&&(this.chooser(t,this.options.id,this.selected,this.hover),!1===t.shadow&&(t.shadowColor===this.options.shadow.color&&t.shadowSize===this.options.shadow.size&&t.shadowX===this.options.shadow.x&&t.shadowY===this.options.shadow.y||(t.shadow=!0))):t.shadow=this.options.shadow.enabled,void 0!==this.options.opacity){const e=this.options.opacity;t.borderColor=Ps(t.borderColor,e),t.color=Ps(t.color,e),t.shadowColor=Ps(t.shadowColor,e)}return t}updateLabelModule(t){void 0!==this.options.label&&null!==this.options.label||(this.options.label=""),kw.updateGroupOptions(this.options,Cw(Cw({},t),{},{color:t&&t.color||this._localColor||void 0}),this.grouplist);const e=this.grouplist.get(this.options.group,!1),i=[t,this.options,e,this.globalOptions,this.defaultOptions];this.labelModule.update(this.options,i),void 0!==this.labelModule.baseSize&&(this.baseFontSize=this.labelModule.baseSize)}updateShape(t){if(t===this.options.shape&&this.shape)this.shape.setOptions(this.options,this.imageObj,this.imageObjAlt);else switch(this.options.shape){case"box":this.shape=new nw(this.options,this.body,this.labelModule);break;case"circle":this.shape=new rw(this.options,this.body,this.labelModule);break;case"circularImage":this.shape=new aw(this.options,this.body,this.labelModule,this.imageObj,this.imageObjAlt);break;case"custom":this.shape=new cw(this.options,this.body,this.labelModule,this.options.ctxRenderer);break;case"database":this.shape=new uw(this.options,this.body,this.labelModule);break;case"diamond":this.shape=new pw(this.options,this.body,this.labelModule);break;case"dot":this.shape=new fw(this.options,this.body,this.labelModule);break;case"ellipse":default:this.shape=new gw(this.options,this.body,this.labelModule);break;case"icon":this.shape=new mw(this.options,this.body,this.labelModule);break;case"image":this.shape=new vw(this.options,this.body,this.labelModule,this.imageObj,this.imageObjAlt);break;case"square":this.shape=new yw(this.options,this.body,this.labelModule);break;case"hexagon":this.shape=new bw(this.options,this.body,this.labelModule);break;case"star":this.shape=new ww(this.options,this.body,this.labelModule);break;case"text":this.shape=new _w(this.options,this.body,this.labelModule);break;case"triangle":this.shape=new xw(this.options,this.body,this.labelModule);break;case"triangleDown":this.shape=new Ew(this.options,this.body,this.labelModule)}this.needsRefresh()}select(){this.selected=!0,this.needsRefresh()}unselect(){this.selected=!1,this.needsRefresh()}needsRefresh(){this.shape.refreshNeeded=!0}getTitle(){return this.options.title}distanceToBorder(t,e){return this.shape.distanceToBorder(t,e)}isFixed(){return this.options.fixed.x&&this.options.fixed.y}isSelected(){return this.selected}getValue(){return this.options.value}getLabelSize(){return this.labelModule.size()}setValueRange(t,e,i){if(void 0!==this.options.value){const o=this.options.scaling.customScalingFunction(t,e,i,this.options.value),n=this.options.scaling.max-this.options.scaling.min;if(!0===this.options.scaling.label.enabled){const t=this.options.scaling.label.max-this.options.scaling.label.min;this.options.font.size=this.options.scaling.label.min+o*t}this.options.size=this.options.scaling.min+o*n}else this.options.size=this.baseSize,this.options.font.size=this.baseFontSize;this.updateLabelModule()}draw(t){const e=this.getFormattingValues();return this.shape.draw(t,this.x,this.y,this.selected,this.hover,e)||{}}updateBoundingBox(t){this.shape.updateBoundingBox(this.x,this.y,t)}resize(t){const e=this.getFormattingValues();this.shape.resize(t,this.selected,this.hover,e)}getItemsOnPoint(t){const e=[];return this.labelModule.visible()&&sb(this.labelModule.getSize(),t)&&e.push({nodeId:this.id,labelId:0}),sb(this.shape.boundingBox,t)&&e.push({nodeId:this.id}),e}isOverlappingWith(t){return this.shape.leftt.left&&this.shape.topt.top}isBoundingBoxOverlappingWith(t){return this.shape.boundingBox.leftt.left&&this.shape.boundingBox.topt.top}static checkMass(t,e){if(void 0!==t.mass&&t.mass<=0){let i="";void 0!==e&&(i=" in node id: "+e),console.error("%cNegative or zero mass disallowed"+i+", setting mass to 1.",nr),t.mass=1}}}class Sw{constructor(t,e,i,o){var n;if(this.body=t,this.images=e,this.groups=i,this.layoutEngine=o,this.body.functions.createNode=oo(n=this.create).call(n,this),this.nodesListeners={add:(t,e)=>{this.add(e.items)},update:(t,e)=>{this.update(e.items,e.data,e.oldData)},remove:(t,e)=>{this.remove(e.items)}},this.defaultOptions={borderWidth:1,borderWidthSelected:void 0,brokenImage:void 0,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},opacity:void 0,fixed:{x:!1,y:!1},font:{color:"#343434",size:14,face:"arial",background:"none",strokeWidth:0,strokeColor:"#ffffff",align:"center",vadjust:0,multi:!1,bold:{mod:"bold"},boldital:{mod:"bold italic"},ital:{mod:"italic"},mono:{mod:"",size:15,face:"monospace",vadjust:2}},group:void 0,hidden:!1,icon:{face:"FontAwesome",code:void 0,size:50,color:"#2B7CE9"},image:void 0,imagePadding:{top:0,right:0,bottom:0,left:0},label:void 0,labelHighlightBold:!0,level:void 0,margin:{top:5,right:5,bottom:5,left:5},mass:1,physics:!0,scaling:{min:10,max:30,label:{enabled:!1,min:14,max:30,maxVisible:30,drawThreshold:5},customScalingFunction:function(t,e,i,o){if(e===t)return.5;{const i=1/(e-t);return Math.max(0,(o-t)*i)}}},shadow:{enabled:!1,color:"rgba(0,0,0,0.5)",size:10,x:5,y:5},shape:"ellipse",shapeProperties:{borderDashes:!1,borderRadius:6,interpolation:!0,useImageSize:!1,useBorderWithImage:!1,coordinateOrigin:"center"},size:25,title:void 0,value:void 0,x:void 0,y:void 0},this.defaultOptions.mass<=0)throw"Internal error: mass in defaultOptions of NodesHandler may not be zero or negative";this.options=Vs(this.defaultOptions),this.bindEventListeners()}bindEventListeners(){var t,e;this.body.emitter.on("refreshNodes",oo(t=this.refresh).call(t,this)),this.body.emitter.on("refresh",oo(e=this.refresh).call(e,this)),this.body.emitter.on("destroy",()=>{Ts(this.nodesListeners,(t,e)=>{this.body.data.nodes&&this.body.data.nodes.off(e,t)}),delete this.body.functions.createNode,delete this.nodesListeners.add,delete this.nodesListeners.update,delete this.nodesListeners.remove,delete this.nodesListeners})}setOptions(t){if(void 0!==t){if(kw.parseOptions(this.options,t),void 0!==t.opacity&&(op(t.opacity)||!fp(t.opacity)||t.opacity<0||t.opacity>1?console.error("Invalid option for node opacity. Value must be between 0 and 1, found: "+t.opacity):this.options.opacity=t.opacity),void 0!==t.shape)for(const t in this.body.nodes)Object.prototype.hasOwnProperty.call(this.body.nodes,t)&&this.body.nodes[t].updateShape();if(void 0!==t.font||void 0!==t.widthConstraint||void 0!==t.heightConstraint)for(const t of Sp(this.body.nodes))this.body.nodes[t].updateLabelModule(),this.body.nodes[t].needsRefresh();if(void 0!==t.size)for(const t in this.body.nodes)Object.prototype.hasOwnProperty.call(this.body.nodes,t)&&this.body.nodes[t].needsRefresh();void 0===t.hidden&&void 0===t.physics||this.body.emitter.emit("_dataChanged")}}setData(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const i=this.body.data.nodes;if(vf("id",t))this.body.data.nodes=t;else if(qh(t))this.body.data.nodes=new ff,this.body.data.nodes.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.body.data.nodes=new ff}if(i&&Ts(this.nodesListeners,function(t,e){i.off(e,t)}),this.body.nodes={},this.body.data.nodes){const t=this;Ts(this.nodesListeners,function(e,i){t.body.data.nodes.on(i,e)});const e=this.body.data.nodes.getIds();this.add(e,!0)}!1===e&&this.body.emitter.emit("_dataChanged")}add(t){let e,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const o=[];for(let i=0;i1&&void 0!==arguments[1]?arguments[1]:kw)(t,this.body,this.images,this.groups,this.options,this.defaultOptions)}refresh(){let t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];Ts(this.body.nodes,(e,i)=>{const o=this.body.data.nodes.get(i);void 0!==o&&(!0===t&&e.setOptions({x:null,y:null}),e.setOptions({fixed:!1}),e.setOptions(o))})}getPositions(t){const e={};if(void 0!==t){if(!0===qh(t)){for(let i=0;i{this.body.emitter.emit("startSimulation")},0)):console.error("Node id supplied to moveNode does not exist. Provided: ",t)}}var Tw,Dw,Mw,Iw,Pw,Nw,Bw,zw,Fw,Aw,jw,Rw,Lw,Hw={};function Ww(){if(Dw)return Tw;Dw=1;var t=li(),e=ka(),i=Et(),o=RangeError;return Tw=function(n){var s=e(i(this)),r="",a=t(n);if(a<0||a===1/0)throw new o("Wrong number of repetitions");for(;a>0;(a>>>=1)&&(s+=s))1&a&&(r+=s);return r}}function Vw(){if(Iw)return Mw;Iw=1;var t=O(),e=ui(),i=ka(),o=Ww(),n=Et(),s=t(o),r=t("".slice),a=Math.ceil,h=function(t){return function(o,h,d){var l,c,u=i(n(o)),p=e(h),f=u.length,g=void 0===d?" ":i(d);return p<=f||""===g?u:((c=s(g,a((l=p-f)/g.length))).length>l&&(c=r(c,0,l)),t?u+c:c+u)}};return Mw={start:h(!1),end:h(!0)}}function qw(){if(Nw)return Pw;Nw=1;var t=O(),e=_(),i=Vw().start,o=RangeError,n=isFinite,s=Math.abs,r=Date.prototype,a=r.toISOString,h=t(r.getTime),d=t(r.getUTCDate),l=t(r.getUTCFullYear),c=t(r.getUTCHours),u=t(r.getUTCMilliseconds),p=t(r.getUTCMinutes),f=t(r.getUTCMonth),g=t(r.getUTCSeconds);return Pw=e(function(){return"0385-07-25T07:06:39.999Z"!==a.call(new Date(-50000000000001))})||!e(function(){a.call(new Date(NaN))})?function(){if(!n(h(this)))throw new o("Invalid time value");var t=this,e=l(t),r=u(t),a=e<0?"-":e>9999?"+":"";return a+i(s(e),a?6:4,0)+"-"+i(f(t)+1,2,0)+"-"+i(d(t),2,0)+"T"+i(c(t),2,0)+":"+i(p(t),2,0)+":"+i(g(t),2,0)+"."+i(r,3,0)+"Z"}:a}function Uw(){if(Fw)return zw;Fw=1,function(){if(Bw)return Hw;Bw=1;var t=hi(),e=B(),i=ve(),o=_e(),n=qw(),s=C();t({target:"Date",proto:!0,forced:_()(function(){return null!==new Date(NaN).toJSON()||1!==e(Date.prototype.toJSON,{toISOString:function(){return 1}})})},{toJSON:function(t){var r=i(this),a=o(r,"number");return"number"!=typeof a||isFinite(a)?"toISOString"in r||"Date"!==s(r)?r.toISOString():e(n,r):null}})}(),hg();var t=kt(),e=E();return t.JSON||(t.JSON={stringify:JSON.stringify}),zw=function(i,o,n){return e(t.JSON.stringify,null,arguments)},zw}function Yw(){return jw?Aw:(jw=1,Aw=Uw())}var Xw,Gw,Kw,Zw,Qw,$w,Jw,t_=i(Lw?Rw:(Lw=1,Rw=Yw())),e_={};function i_(){return Kw?Gw:(Kw=1,function(){if(Xw)return e_;Xw=1;var t=hi(),e=Math.hypot,i=Math.abs,o=Math.sqrt;t({target:"Math",stat:!0,arity:2,forced:!!e&&e(1/0,NaN)!==1/0},{hypot:function(t,e){for(var n,s,r=0,a=0,h=arguments.length,d=0;a0?(s=n/d)*s:n;return d===1/0?1/0:d*o(r)}})}(),Gw=kt().Math.hypot)}function o_(){return Qw?Zw:(Qw=1,Zw=i_())}var n_=i(Jw?$w:(Jw=1,$w=o_()));class s_{static transform(t,e){qh(t)||(t=[t]);const i=e.point.x,o=e.point.y,n=e.angle,s=e.length;for(let e=0;e4&&void 0!==arguments[4]?arguments[4]:this.getViaNode();t.strokeStyle=this.getColor(t,e),t.lineWidth=e.width,!1!==e.dashes?this._drawDashedLine(t,e,n):this._drawLine(t,e,n)}_drawLine(t,e,i,o,n){if(this.from!=this.to)this._line(t,e,i,o,n);else{const[i,o,n]=this._getCircleData(t);this._circle(t,e,i,o,n)}}_drawDashedLine(t,e,i,o,n){t.lineCap="round";const s=qh(e.dashes)?e.dashes:[5,5];if(void 0!==t.setLineDash){if(t.save(),t.setLineDash(s),t.lineDashOffset=0,this.from!=this.to)this._line(t,e,i);else{const[i,o,n]=this._getCircleData(t);this._circle(t,e,i,o,n)}t.setLineDash([0]),t.lineDashOffset=0,t.restore()}else{if(this.from!=this.to)ho(t,this.from.x,this.from.y,this.to.x,this.to.y,s);else{const[i,o,n]=this._getCircleData(t);this._circle(t,e,i,o,n)}this.enableShadow(t,e),t.stroke(),this.disableShadow(t,e)}}findBorderPosition(t,e,i){return this.from!=this.to?this._findBorderPosition(t,e,i):this._findBorderPositionCircle(t,e,i)}findBorderPositions(t){if(this.from!=this.to)return{from:this._findBorderPosition(this.from,t),to:this._findBorderPosition(this.to,t)};{var e;const[i,o]=Db(e=this._getCircleData(t)).call(e,0,2);return{from:this._findBorderPositionCircle(this.from,t,{x:i,y:o,low:.25,high:.6,direction:-1}),to:this._findBorderPositionCircle(this.from,t,{x:i,y:o,low:.6,high:.8,direction:1})}}}_getCircleData(t){const e=this.options.selfReference.size;void 0!==t&&void 0===this.from.shape.width&&this.from.shape.resize(t);const i=ab(t,this.options.selfReference.angle,e,this.from);return[i.x,i.y,e]}_pointOnCircle(t,e,i,o){const n=2*o*Math.PI;return{x:t+i*Math.cos(n),y:e-i*Math.sin(n)}}_findBorderPositionCircle(t,e,i){const o=i.x,n=i.y;let s=i.low,r=i.high;const a=i.direction,h=this.options.selfReference.size;let d,l=.5*(s+r),c=0;!0===this.options.arrowStrikethrough&&(-1===a?c=this.options.endPointOffset.from:1===a&&(c=this.options.endPointOffset.to));let u=0;do{l=.5*(s+r),d=this._pointOnCircle(o,n,h,l);const i=Math.atan2(t.y-d.y,t.x-d.x),p=t.distanceToBorder(e,i)+c-Math.sqrt(Math.pow(d.x-t.x,2)+Math.pow(d.y-t.y,2));if(Math.abs(p)<.05)break;p>0?a>0?s=l:r=l:a>0?r=l:s=l,++u}while(s<=r&&u<10);return w_(w_({},d),{},{t:l})}getLineWidth(t,e){return!0===t?Math.max(this.selectionWidth,.3/this._body.view.scale):!0===e?Math.max(this.hoverWidth,.3/this._body.view.scale):Math.max(this.options.width,.3/this._body.view.scale)}getColor(t,e){if(!1!==e.inheritsColor){if("both"===e.inheritsColor&&this.from.id!==this.to.id){const i=t.createLinearGradient(this.from.x,this.from.y,this.to.x,this.to.y);let o=this.from.options.color.highlight.border,n=this.to.options.color.highlight.border;return!1===this.from.selected&&!1===this.to.selected?(o=Ps(this.from.options.color.border,e.opacity),n=Ps(this.to.options.color.border,e.opacity)):!0===this.from.selected&&!1===this.to.selected?n=this.to.options.color.border:!1===this.from.selected&&!0===this.to.selected&&(o=this.from.options.color.border),i.addColorStop(0,o),i.addColorStop(1,n),i}return"to"===e.inheritsColor?Ps(this.to.options.color.border,e.opacity):Ps(this.from.options.color.border,e.opacity)}return Ps(e.color,e.opacity)}_circle(t,e,i,o,n){this.enableShadow(t,e);let s=0,r=2*Math.PI;if(!this.options.selfReference.renderBehindTheNode){const e=this.options.selfReference.angle,n=this.options.selfReference.angle+Math.PI,a=this._findBorderPositionCircle(this.from,t,{x:i,y:o,low:e,high:n,direction:-1}),h=this._findBorderPositionCircle(this.from,t,{x:i,y:o,low:e,high:n,direction:1});s=Math.atan2(a.y-o,a.x-i),r=Math.atan2(h.y-o,h.x-i)}t.beginPath(),t.arc(i,o,n,s,r,!1),t.stroke(),this.disableShadow(t,e)}getDistanceToEdge(t,e,i,o,n,s){if(this.from!=this.to)return this._getDistanceToEdge(t,e,i,o,n,s);{const[t,e,i]=this._getCircleData(void 0),o=t-n,r=e-s;return Math.abs(Math.sqrt(o*o+r*r)-i)}}_getDistanceToLine(t,e,i,o,n,s){const r=i-t,a=o-e;let h=((n-t)*r+(s-e)*a)/(r*r+a*a);h>1?h=1:h<0&&(h=0);const d=t+h*r-n,l=e+h*a-s;return Math.sqrt(d*d+l*l)}getArrowData(t,e,i,o,n,s){let r,a,h,d,l,c,u;const p=s.width;"from"===e?(h=this.from,d=this.to,l=s.fromArrowScale<0,c=Math.abs(s.fromArrowScale),u=s.fromArrowType):"to"===e?(h=this.to,d=this.from,l=s.toArrowScale<0,c=Math.abs(s.toArrowScale),u=s.toArrowType):(h=this.to,d=this.from,l=s.middleArrowScale<0,c=Math.abs(s.middleArrowScale),u=s.middleArrowType);const f=15*c+3*p;if(h!=d){const o=f/n_(h.x-d.x,h.y-d.y);if("middle"!==e)if(!0===this.options.smooth.enabled){const n=this._findBorderPosition(h,t,{via:i}),s=this.getPoint(n.t+o*("from"===e?1:-1),i);r=Math.atan2(n.y-s.y,n.x-s.x),a=n}else r=Math.atan2(h.y-d.y,h.x-d.x),a=this._findBorderPosition(h,t);else{const t=(l?-o:o)/2,e=this.getPoint(.5+t,i),n=this.getPoint(.5-t,i);r=Math.atan2(e.y-n.y,e.x-n.x),a=this.getPoint(.5,i)}}else{const[i,o,n]=this._getCircleData(t);if("from"===e){const e=this.options.selfReference.angle,n=this.options.selfReference.angle+Math.PI,s=this._findBorderPositionCircle(this.from,t,{x:i,y:o,low:e,high:n,direction:-1});r=-2*s.t*Math.PI+1.5*Math.PI+.1*Math.PI,a=s}else if("to"===e){const e=this.options.selfReference.angle,n=this.options.selfReference.angle+Math.PI,s=this._findBorderPositionCircle(this.from,t,{x:i,y:o,low:e,high:n,direction:1});r=-2*s.t*Math.PI+1.5*Math.PI-1.1*Math.PI,a=s}else{const t=this.options.selfReference.angle/(2*Math.PI);a=this._pointOnCircle(i,o,n,t),r=-2*t*Math.PI+1.5*Math.PI+.1*Math.PI}}return{point:a,core:{x:a.x-.9*f*Math.cos(r),y:a.y-.9*f*Math.sin(r)},angle:r,length:f,type:u}}drawArrowHead(t,e,i,o,n){t.strokeStyle=this.getColor(t,e),t.fillStyle=t.strokeStyle,t.lineWidth=e.width;y_.draw(t,n)&&(this.enableShadow(t,e),iw(t).call(t),this.disableShadow(t,e))}enableShadow(t,e){!0===e.shadow&&(t.shadowColor=e.shadowColor,t.shadowBlur=e.shadowSize,t.shadowOffsetX=e.shadowX,t.shadowOffsetY=e.shadowY)}disableShadow(t,e){!0===e.shadow&&(t.shadowColor="rgba(0,0,0,0)",t.shadowBlur=0,t.shadowOffsetX=0,t.shadowOffsetY=0)}drawBackground(t,e){if(!1!==e.background){const i={strokeStyle:t.strokeStyle,lineWidth:t.lineWidth,dashes:t.dashes};t.strokeStyle=e.backgroundColor,t.lineWidth=e.backgroundSize,this.setStrokeDashed(t,e.backgroundDashes),t.stroke(),t.strokeStyle=i.strokeStyle,t.lineWidth=i.lineWidth,t.dashes=i.dashes,this.setStrokeDashed(t,e.dashes)}}setStrokeDashed(t,e){if(!1!==e)if(void 0!==t.setLineDash){const i=qh(e)?e:[5,5];t.setLineDash(i)}else console.warn("setLineDash is not supported in this browser. The dashed stroke cannot be used.");else void 0!==t.setLineDash?t.setLineDash([]):console.warn("setLineDash is not supported in this browser. The dashed stroke cannot be used.")}}function x_(t,e){var i=Sp(t);if(Ey){var o=Ey(t);e&&(o=oy(o).call(o,function(e){return Ay(t,e).enumerable})),i.push.apply(i,o)}return i}function E_(t){for(var e=1;e2&&void 0!==arguments[2]?arguments[2]:this._getViaCoordinates();let o,n,s=!1,r=1,a=0,h=this.to,d=this.options.endPointOffset?this.options.endPointOffset.to:0;t.id===this.from.id&&(h=this.from,s=!0,d=this.options.endPointOffset?this.options.endPointOffset.from:0),!1===this.options.arrowStrikethrough&&(d=0);let l=0;do{n=.5*(a+r),o=this.getPoint(n,i);const t=Math.atan2(h.y-o.y,h.x-o.x),c=h.distanceToBorder(e,t)+d-Math.sqrt(Math.pow(o.x-h.x,2)+Math.pow(o.y-h.y,2));if(Math.abs(c)<.2)break;c<0?!1===s?a=n:r=n:!1===s?r=n:a=n,++l}while(a<=r&&l<10);return E_(E_({},o),{},{t:n})}_getDistanceToBezierEdge(t,e,i,o,n,s,r){let a,h,d,l,c,u=1e9,p=t,f=e;for(h=1;h<10;h++)d=.1*h,l=Math.pow(1-d,2)*t+2*d*(1-d)*r.x+Math.pow(d,2)*i,c=Math.pow(1-d,2)*e+2*d*(1-d)*r.y+Math.pow(d,2)*o,h>0&&(a=this._getDistanceToLine(p,f,l,c,n,s),u=a{this.positionBezierNode()},this._body.emitter.on("_repositionBezierNodes",this._boundFunction)}setOptions(t){super.setOptions(t);let e=!1;this.options.physics!==t.physics&&(e=!0),this.options=t,this.id=this.options.id,this.from=this._body.nodes[this.options.from],this.to=this._body.nodes[this.options.to],this.setupSupportNode(),this.connect(),!0===e&&(this.via.setOptions({physics:this.options.physics}),this.positionBezierNode())}connect(){this.from=this._body.nodes[this.options.from],this.to=this._body.nodes[this.options.to],void 0===this.from||void 0===this.to||!1===this.options.physics||this.from.id===this.to.id?this.via.setOptions({physics:!1}):this.via.setOptions({physics:!0})}cleanup(){return this._body.emitter.off("_repositionBezierNodes",this._boundFunction),void 0!==this.via&&(delete this._body.nodes[this.via.id],this.via=void 0,!0)}setupSupportNode(){if(void 0===this.via){const t="edgeId:"+this.id,e=this._body.functions.createNode({id:t,shape:"circle",physics:!0,hidden:!0});this._body.nodes[t]=e,this.via=e,this.via.parentEdgeId=this.id,this.positionBezierNode()}}positionBezierNode(){void 0!==this.via&&void 0!==this.from&&void 0!==this.to?(this.via.x=.5*(this.from.x+this.to.x),this.via.y=.5*(this.from.y+this.to.y)):void 0!==this.via&&(this.via.x=0,this.via.y=0)}_line(t,e,i){this._bezierCurve(t,e,i)}_getViaCoordinates(){return this.via}getViaNode(){return this.via}getPoint(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.via;if(this.from===this.to){const[e,i,o]=this._getCircleData(),n=2*Math.PI*(1-t);return{x:e+o*Math.sin(n),y:i+o-o*(1-Math.cos(n))}}return{x:Math.pow(1-t,2)*this.fromPoint.x+2*t*(1-t)*e.x+Math.pow(t,2)*this.toPoint.x,y:Math.pow(1-t,2)*this.fromPoint.y+2*t*(1-t)*e.y+Math.pow(t,2)*this.toPoint.y}}_findBorderPosition(t,e){return this._findBorderPositionBezier(t,e,this.via)}_getDistanceToEdge(t,e,i,o,n,s){return this._getDistanceToBezierEdge(t,e,i,o,n,s,this.via)}}class k_ extends O_{constructor(t,e,i){super(t,e,i)}_line(t,e,i){this._bezierCurve(t,e,i)}getViaNode(){return this._getViaCoordinates()}_getViaCoordinates(){const t=this.options.smooth.roundness,e=this.options.smooth.type;let i=Math.abs(this.from.x-this.to.x),o=Math.abs(this.from.y-this.to.y);if("discrete"===e||"diagonalCross"===e){let n,s;n=s=i<=o?t*o:t*i,this.from.x>this.to.x&&(n=-n),this.from.y>=this.to.y&&(s=-s);let r=this.from.x+n,a=this.from.y+s;return"discrete"===e&&(i<=o?r=ithis.to.x&&(e=-e),this.from.y>=this.to.y&&(n=-n);let s=this.from.x+e,r=this.from.y+n;return i<=o?s=this.from.x<=this.to.x?this.to.xs?this.to.x:s:r=this.from.y>=this.to.y?this.to.y>r?this.to.y:r:this.to.y2&&void 0!==arguments[2]?arguments[2]:{};return this._findBorderPositionBezier(t,e,i.via)}_getDistanceToEdge(t,e,i,o,n,s){let r=arguments.length>6&&void 0!==arguments[6]?arguments[6]:this._getViaCoordinates();return this._getDistanceToBezierEdge(t,e,i,o,n,s,r)}getPoint(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this._getViaCoordinates();const i=t;return{x:Math.pow(1-i,2)*this.fromPoint.x+2*i*(1-i)*e.x+Math.pow(i,2)*this.toPoint.x,y:Math.pow(1-i,2)*this.fromPoint.y+2*i*(1-i)*e.y+Math.pow(i,2)*this.toPoint.y}}}class S_ extends O_{constructor(t,e,i){super(t,e,i)}_getDistanceToBezierEdge2(t,e,i,o,n,s,r,a){let h=1e9,d=t,l=e;const c=[0,0,0,0];for(let u=1;u<10;u++){const p=.1*u;c[0]=Math.pow(1-p,3),c[1]=3*p*Math.pow(1-p,2),c[2]=3*Math.pow(p,2)*(1-p),c[3]=Math.pow(p,3);const f=c[0]*t+c[1]*r.x+c[2]*a.x+c[3]*i,g=c[0]*e+c[1]*r.y+c[2]*a.y+c[3]*o;if(u>0){const t=this._getDistanceToLine(d,l,f,g,n,s);h=tMath.abs(e)||!0===this.options.smooth.forceDirection||"horizontal"===this.options.smooth.forceDirection)&&"vertical"!==this.options.smooth.forceDirection?(o=this.from.y,s=this.to.y,i=this.from.x-r*t,n=this.to.x+r*t):(o=this.from.y-r*e,s=this.to.y+r*e,i=this.from.x,n=this.to.x),[{x:i,y:o},{x:n,y:s}]}getViaNode(){return this._getViaCoordinates()}_findBorderPosition(t,e){return this._findBorderPositionBezier(t,e)}_getDistanceToEdge(t,e,i,o,n,s){let[r,a]=arguments.length>6&&void 0!==arguments[6]?arguments[6]:this._getViaCoordinates();return this._getDistanceToBezierEdge2(t,e,i,o,n,s,r,a)}getPoint(t){let[e,i]=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this._getViaCoordinates();const o=t,n=[Math.pow(1-o,3),3*o*Math.pow(1-o,2),3*Math.pow(o,2)*(1-o),Math.pow(o,3)];return{x:n[0]*this.fromPoint.x+n[1]*e.x+n[2]*i.x+n[3]*this.toPoint.x,y:n[0]*this.fromPoint.y+n[1]*e.y+n[2]*i.y+n[3]*this.toPoint.y}}}class D_ extends __{constructor(t,e,i){super(t,e,i)}_line(t,e){t.beginPath(),t.moveTo(this.fromPoint.x,this.fromPoint.y),t.lineTo(this.toPoint.x,this.toPoint.y),this.enableShadow(t,e),t.stroke(),this.disableShadow(t,e)}getViaNode(){}getPoint(t){return{x:(1-t)*this.fromPoint.x+t*this.toPoint.x,y:(1-t)*this.fromPoint.y+t*this.toPoint.y}}_findBorderPosition(t,e){let i=this.to,o=this.from;t.id===this.from.id&&(i=this.from,o=this.to);const n=Math.atan2(i.y-o.y,i.x-o.x),s=i.x-o.x,r=i.y-o.y,a=Math.sqrt(s*s+r*r),h=(a-t.distanceToBorder(e,n))/a;return{x:(1-h)*o.x+h*i.x,y:(1-h)*o.y+h*i.y,t:0}}_getDistanceToEdge(t,e,i,o,n,s){return this._getDistanceToLine(t,e,i,o,n,s)}}class M_{constructor(t,e,i,o,n){if(void 0===e)throw new Error("No body provided");this.options=Vs(o),this.globalOptions=o,this.defaultOptions=n,this.body=e,this.imagelist=i,this.id=void 0,this.fromId=void 0,this.toId=void 0,this.selected=!1,this.hover=!1,this.labelDirty=!0,this.baseWidth=this.options.width,this.baseFontSize=this.options.font.size,this.from=void 0,this.to=void 0,this.edgeType=void 0,this.connected=!1,this.labelModule=new Rb(this.body,this.options,!0),this.setOptions(t)}setOptions(t){if(!t)return;let e=void 0!==t.physics&&this.options.physics!==t.physics||void 0!==t.hidden&&(this.options.hidden||!1)!==(t.hidden||!1)||void 0!==t.from&&this.options.from!==t.from||void 0!==t.to&&this.options.to!==t.to;M_.parseOptions(this.options,t,!0,this.globalOptions),void 0!==t.id&&(this.id=t.id),void 0!==t.from&&(this.fromId=t.from),void 0!==t.to&&(this.toId=t.to),void 0!==t.title&&(this.title=t.title),void 0!==t.value&&(t.value=Uv(t.value));const i=[t,this.options,this.defaultOptions];return this.chooser=nb("edge",i),this.updateLabelModule(t),e=this.updateEdgeType()||e,this._setInteractionWidths(),this.connect(),e}static parseOptions(t,e){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},n=arguments.length>4&&void 0!==arguments[4]&&arguments[4];if(_s(["endPointOffset","arrowStrikethrough","id","from","hidden","hoverWidth","labelHighlightBold","length","line","opacity","physics","scaling","selectionWidth","selfReferenceSize","selfReference","to","title","value","width","font","chosen","widthConstraint"],t,e,i),void 0!==e.endPointOffset&&void 0!==e.endPointOffset.from&&(fp(e.endPointOffset.from)?t.endPointOffset.from=e.endPointOffset.from:(t.endPointOffset.from=void 0!==o.endPointOffset.from?o.endPointOffset.from:0,console.error("endPointOffset.from is not a valid number"))),void 0!==e.endPointOffset&&void 0!==e.endPointOffset.to&&(fp(e.endPointOffset.to)?t.endPointOffset.to=e.endPointOffset.to:(t.endPointOffset.to=void 0!==o.endPointOffset.to?o.endPointOffset.to:0,console.error("endPointOffset.to is not a valid number"))),rb(e.label)?t.label=e.label:rb(t.label)||(t.label=void 0),qs(t,e,"smooth",o),qs(t,e,"shadow",o),qs(t,e,"background",o),void 0!==e.dashes&&null!==e.dashes?t.dashes=e.dashes:!0===i&&null===e.dashes&&(t.dashes=Rr(o.dashes)),void 0!==e.scaling&&null!==e.scaling?(void 0!==e.scaling.min&&(t.scaling.min=e.scaling.min),void 0!==e.scaling.max&&(t.scaling.max=e.scaling.max),qs(t.scaling,e.scaling,"label",o.scaling)):!0===i&&null===e.scaling&&(t.scaling=Rr(o.scaling)),void 0!==e.arrows&&null!==e.arrows)if("string"==typeof e.arrows){const i=e.arrows.toLowerCase();t.arrows.to.enabled=-1!=Zr(i).call(i,"to"),t.arrows.middle.enabled=-1!=Zr(i).call(i,"middle"),t.arrows.from.enabled=-1!=Zr(i).call(i,"from")}else{if("object"!=typeof e.arrows)throw new Error("The arrow newOptions can only be an object or a string. Refer to the documentation. You used:"+t_(e.arrows));qs(t.arrows,e.arrows,"to",o.arrows),qs(t.arrows,e.arrows,"middle",o.arrows),qs(t.arrows,e.arrows,"from",o.arrows)}else!0===i&&null===e.arrows&&(t.arrows=Rr(o.arrows));if(void 0!==e.color&&null!==e.color){const s=ms(e.color)?{color:e.color,highlight:e.color,hover:e.color,inherit:!1,opacity:1}:e.color,r=t.color;if(n)Es(r,o.color,!1,i);else for(const t in r)Object.prototype.hasOwnProperty.call(r,t)&&delete r[t];if(ms(r))r.color=r,r.highlight=r,r.hover=r,r.inherit=!1,void 0===s.opacity&&(r.opacity=1);else{let t=!1;void 0!==s.color&&(r.color=s.color,t=!0),void 0!==s.highlight&&(r.highlight=s.highlight,t=!0),void 0!==s.hover&&(r.hover=s.hover,t=!0),void 0!==s.inherit&&(r.inherit=s.inherit),void 0!==s.opacity&&(r.opacity=Math.min(1,Math.max(0,s.opacity))),!0===t?r.inherit=!1:void 0===r.inherit&&(r.inherit="from")}}else!0===i&&null===e.color&&(t.color=Vs(o.color));!0===i&&null===e.font&&(t.font=Vs(o.font)),Object.prototype.hasOwnProperty.call(e,"selfReferenceSize")&&(console.warn("The selfReferenceSize property has been deprecated. Please use selfReference property instead. The selfReference can be set like thise selfReference:{size:30, angle:Math.PI / 4}"),t.selfReference.size=e.selfReferenceSize)}getFormattingValues(){const t=!0===this.options.arrows.to||!0===this.options.arrows.to.enabled,e=!0===this.options.arrows.from||!0===this.options.arrows.from.enabled,i=!0===this.options.arrows.middle||!0===this.options.arrows.middle.enabled,o=this.options.color.inherit,n={toArrow:t,toArrowScale:this.options.arrows.to.scaleFactor,toArrowType:this.options.arrows.to.type,toArrowSrc:this.options.arrows.to.src,toArrowImageWidth:this.options.arrows.to.imageWidth,toArrowImageHeight:this.options.arrows.to.imageHeight,middleArrow:i,middleArrowScale:this.options.arrows.middle.scaleFactor,middleArrowType:this.options.arrows.middle.type,middleArrowSrc:this.options.arrows.middle.src,middleArrowImageWidth:this.options.arrows.middle.imageWidth,middleArrowImageHeight:this.options.arrows.middle.imageHeight,fromArrow:e,fromArrowScale:this.options.arrows.from.scaleFactor,fromArrowType:this.options.arrows.from.type,fromArrowSrc:this.options.arrows.from.src,fromArrowImageWidth:this.options.arrows.from.imageWidth,fromArrowImageHeight:this.options.arrows.from.imageHeight,arrowStrikethrough:this.options.arrowStrikethrough,color:o?void 0:this.options.color.color,inheritsColor:o,opacity:this.options.color.opacity,hidden:this.options.hidden,length:this.options.length,shadow:this.options.shadow.enabled,shadowColor:this.options.shadow.color,shadowSize:this.options.shadow.size,shadowX:this.options.shadow.x,shadowY:this.options.shadow.y,dashes:this.options.dashes,width:this.options.width,background:this.options.background.enabled,backgroundColor:this.options.background.color,backgroundSize:this.options.background.size,backgroundDashes:this.options.background.dashes};if(this.selected||this.hover)if(!0===this.chooser){if(this.selected){const t=this.options.selectionWidth;"function"==typeof t?n.width=t(n.width):"number"==typeof t&&(n.width+=t),n.width=Math.max(n.width,.3/this.body.view.scale),n.color=this.options.color.highlight,n.shadow=this.options.shadow.enabled}else if(this.hover){const t=this.options.hoverWidth;"function"==typeof t?n.width=t(n.width):"number"==typeof t&&(n.width+=t),n.width=Math.max(n.width,.3/this.body.view.scale),n.color=this.options.color.hover,n.shadow=this.options.shadow.enabled}}else"function"==typeof this.chooser&&(this.chooser(n,this.options.id,this.selected,this.hover),void 0!==n.color&&(n.inheritsColor=!1),!1===n.shadow&&(n.shadowColor===this.options.shadow.color&&n.shadowSize===this.options.shadow.size&&n.shadowX===this.options.shadow.x&&n.shadowY===this.options.shadow.y||(n.shadow=!0)));else n.shadow=this.options.shadow.enabled,n.width=Math.max(n.width,.3/this.body.view.scale);return n}updateLabelModule(t){const e=[t,this.options,this.globalOptions,this.defaultOptions];this.labelModule.update(this.options,e),void 0!==this.labelModule.baseSize&&(this.baseFontSize=this.labelModule.baseSize)}updateEdgeType(){const t=this.options.smooth;let e=!1,i=!0;return void 0!==this.edgeType&&((this.edgeType instanceof C_&&!0===t.enabled&&"dynamic"===t.type||this.edgeType instanceof T_&&!0===t.enabled&&"cubicBezier"===t.type||this.edgeType instanceof k_&&!0===t.enabled&&"dynamic"!==t.type&&"cubicBezier"!==t.type||this.edgeType instanceof D_&&!1===t.type.enabled)&&(i=!1),!0===i&&(e=this.cleanup())),!0===i?!0===t.enabled?"dynamic"===t.type?(e=!0,this.edgeType=new C_(this.options,this.body,this.labelModule)):"cubicBezier"===t.type?this.edgeType=new T_(this.options,this.body,this.labelModule):this.edgeType=new k_(this.options,this.body,this.labelModule):this.edgeType=new D_(this.options,this.body,this.labelModule):this.edgeType.setOptions(this.options),e}connect(){this.disconnect(),this.from=this.body.nodes[this.fromId]||void 0,this.to=this.body.nodes[this.toId]||void 0,this.connected=void 0!==this.from&&void 0!==this.to,!0===this.connected?(this.from.attachEdge(this),this.to.attachEdge(this)):(this.from&&this.from.detachEdge(this),this.to&&this.to.detachEdge(this)),this.edgeType.connect()}disconnect(){this.from&&(this.from.detachEdge(this),this.from=void 0),this.to&&(this.to.detachEdge(this),this.to=void 0),this.connected=!1}getTitle(){return this.title}isSelected(){return this.selected}getValue(){return this.options.value}setValueRange(t,e,i){if(void 0!==this.options.value){const o=this.options.scaling.customScalingFunction(t,e,i,this.options.value),n=this.options.scaling.max-this.options.scaling.min;if(!0===this.options.scaling.label.enabled){const t=this.options.scaling.label.max-this.options.scaling.label.min;this.options.font.size=this.options.scaling.label.min+o*t}this.options.width=this.options.scaling.min+o*n}else this.options.width=this.baseWidth,this.options.font.size=this.baseFontSize;this._setInteractionWidths(),this.updateLabelModule()}_setInteractionWidths(){"function"==typeof this.options.hoverWidth?this.edgeType.hoverWidth=this.options.hoverWidth(this.options.width):this.edgeType.hoverWidth=this.options.hoverWidth+this.options.width,"function"==typeof this.options.selectionWidth?this.edgeType.selectionWidth=this.options.selectionWidth(this.options.width):this.edgeType.selectionWidth=this.options.selectionWidth+this.options.width}draw(t){const e=this.getFormattingValues();if(e.hidden)return;const i=this.edgeType.getViaNode();this.edgeType.drawLine(t,e,this.selected,this.hover,i),this.drawLabel(t,i)}drawArrows(t){const e=this.getFormattingValues();if(e.hidden)return;const i=this.edgeType.getViaNode(),o={};this.edgeType.fromPoint=this.edgeType.from,this.edgeType.toPoint=this.edgeType.to,e.fromArrow&&(o.from=this.edgeType.getArrowData(t,"from",i,this.selected,this.hover,e),!1===e.arrowStrikethrough&&(this.edgeType.fromPoint=o.from.core),e.fromArrowSrc&&(o.from.image=this.imagelist.load(e.fromArrowSrc)),e.fromArrowImageWidth&&(o.from.imageWidth=e.fromArrowImageWidth),e.fromArrowImageHeight&&(o.from.imageHeight=e.fromArrowImageHeight)),e.toArrow&&(o.to=this.edgeType.getArrowData(t,"to",i,this.selected,this.hover,e),!1===e.arrowStrikethrough&&(this.edgeType.toPoint=o.to.core),e.toArrowSrc&&(o.to.image=this.imagelist.load(e.toArrowSrc)),e.toArrowImageWidth&&(o.to.imageWidth=e.toArrowImageWidth),e.toArrowImageHeight&&(o.to.imageHeight=e.toArrowImageHeight)),e.middleArrow&&(o.middle=this.edgeType.getArrowData(t,"middle",i,this.selected,this.hover,e),e.middleArrowSrc&&(o.middle.image=this.imagelist.load(e.middleArrowSrc)),e.middleArrowImageWidth&&(o.middle.imageWidth=e.middleArrowImageWidth),e.middleArrowImageHeight&&(o.middle.imageHeight=e.middleArrowImageHeight)),e.fromArrow&&this.edgeType.drawArrowHead(t,e,this.selected,this.hover,o.from),e.middleArrow&&this.edgeType.drawArrowHead(t,e,this.selected,this.hover,o.middle),e.toArrow&&this.edgeType.drawArrowHead(t,e,this.selected,this.hover,o.to)}drawLabel(t,e){if(void 0!==this.options.label){const i=this.from,o=this.to;let n;if(this.labelModule.differentState(this.selected,this.hover)&&this.labelModule.getTextSize(t,this.selected,this.hover),i.id!=o.id){this.labelModule.pointToSelf=!1,n=this.edgeType.getPoint(.5,e),t.save();const i=this._getRotation(t);0!=i.angle&&(t.translate(i.x,i.y),t.rotate(i.angle)),this.labelModule.draw(t,n.x,n.y,this.selected,this.hover),t.restore()}else{this.labelModule.pointToSelf=!0;const e=ab(t,this.options.selfReference.angle,this.options.selfReference.size,i);n=this._pointOnCircle(e.x,e.y,this.options.selfReference.size,this.options.selfReference.angle),this.labelModule.draw(t,n.x,n.y,this.selected,this.hover)}}}getItemsOnPoint(t){const e=[];if(this.labelModule.visible()){const i=this._getRotation();sb(this.labelModule.getSize(),t,i)&&e.push({edgeId:this.id,labelId:0})}const i={left:t.x,top:t.y};return this.isOverlappingWith(i)&&e.push({edgeId:this.id}),e}isOverlappingWith(t){if(this.connected){const e=10,i=this.from.x,o=this.from.y,n=this.to.x,s=this.to.y,r=t.left,a=t.top;return this.edgeType.getDistanceToEdge(i,o,n,s,r,a)0&&s<0)&&(r+=Math.PI),o.angle=r,o}_pointOnCircle(t,e,i,o){return{x:t+i*Math.cos(o),y:e-i*Math.sin(o)}}select(){this.selected=!0}unselect(){this.selected=!1}cleanup(){return this.edgeType.cleanup()}remove(){this.cleanup(),this.disconnect(),delete this.body.edges[this.id]}endPointsValid(){return void 0!==this.body.nodes[this.fromId]&&void 0!==this.body.nodes[this.toId]}}class I_{constructor(t,e,i){var o;this.body=t,this.images=e,this.groups=i,this.body.functions.createEdge=oo(o=this.create).call(o,this),this.edgesListeners={add:(t,e)=>{this.add(e.items)},update:(t,e)=>{this.update(e.items)},remove:(t,e)=>{this.remove(e.items)}},this.options={},this.defaultOptions={arrows:{to:{enabled:!1,scaleFactor:1,type:"arrow"},middle:{enabled:!1,scaleFactor:1,type:"arrow"},from:{enabled:!1,scaleFactor:1,type:"arrow"}},endPointOffset:{from:0,to:0},arrowStrikethrough:!0,color:{color:"#848484",highlight:"#848484",hover:"#848484",inherit:"from",opacity:1},dashes:!1,font:{color:"#343434",size:14,face:"arial",background:"none",strokeWidth:2,strokeColor:"#ffffff",align:"horizontal",multi:!1,vadjust:0,bold:{mod:"bold"},boldital:{mod:"bold italic"},ital:{mod:"italic"},mono:{mod:"",size:15,face:"courier new",vadjust:2}},hidden:!1,hoverWidth:1.5,label:void 0,labelHighlightBold:!0,length:void 0,physics:!0,scaling:{min:1,max:15,label:{enabled:!0,min:14,max:30,maxVisible:30,drawThreshold:5},customScalingFunction:function(t,e,i,o){if(e===t)return.5;{const i=1/(e-t);return Math.max(0,(o-t)*i)}}},selectionWidth:1.5,selfReference:{size:20,angle:Math.PI/4,renderBehindTheNode:!0},shadow:{enabled:!1,color:"rgba(0,0,0,0.5)",size:10,x:5,y:5},background:{enabled:!1,color:"rgba(111,111,111,1)",size:10,dashes:!1},smooth:{enabled:!0,type:"dynamic",forceDirection:"none",roundness:.5},title:void 0,width:1,value:void 0},Es(this.options,this.defaultOptions),this.bindEventListeners()}bindEventListeners(){var t,e,i=this;this.body.emitter.on("_forceDisableDynamicCurves",function(t){let e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];"dynamic"===t&&(t="continuous");let o=!1;for(const e in i.body.edges)if(Object.prototype.hasOwnProperty.call(i.body.edges,e)){const n=i.body.edges[e],s=i.body.data.edges.get(e);if(null!=s){const e=s.smooth;void 0!==e&&!0===e.enabled&&"dynamic"===e.type&&(void 0===t?n.setOptions({smooth:!1}):n.setOptions({smooth:{type:t}}),o=!0)}}!0===e&&!0===o&&i.body.emitter.emit("_dataChanged")}),this.body.emitter.on("_dataUpdated",()=>{this.reconnectEdges()}),this.body.emitter.on("refreshEdges",oo(t=this.refresh).call(t,this)),this.body.emitter.on("refresh",oo(e=this.refresh).call(e,this)),this.body.emitter.on("destroy",()=>{Ts(this.edgesListeners,(t,e)=>{this.body.data.edges&&this.body.data.edges.off(e,t)}),delete this.body.functions.createEdge,delete this.edgesListeners.add,delete this.edgesListeners.update,delete this.edgesListeners.remove,delete this.edgesListeners})}setOptions(t){if(void 0!==t){M_.parseOptions(this.options,t,!0,this.defaultOptions,!0);let e=!1;if(void 0!==t.smooth)for(const t in this.body.edges)Object.prototype.hasOwnProperty.call(this.body.edges,t)&&(e=this.body.edges[t].updateEdgeType()||e);if(void 0!==t.font)for(const t in this.body.edges)Object.prototype.hasOwnProperty.call(this.body.edges,t)&&this.body.edges[t].updateLabelModule();void 0===t.hidden&&void 0===t.physics&&!0!==e||this.body.emitter.emit("_dataChanged")}}setData(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const i=this.body.data.edges;if(vf("id",t))this.body.data.edges=t;else if(qh(t))this.body.data.edges=new ff,this.body.data.edges.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.body.data.edges=new ff}if(i&&Ts(this.edgesListeners,(t,e)=>{i.off(e,t)}),this.body.edges={},this.body.data.edges){Ts(this.edgesListeners,(t,e)=>{this.body.data.edges.on(e,t)});const t=this.body.data.edges.getIds();this.add(t,!0)}this.body.emitter.emit("_adjustEdgesForHierarchicalLayout"),!1===e&&this.body.emitter.emit("_dataChanged")}add(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const i=this.body.edges,o=this.body.data.edges;for(let e=0;e1&&void 0!==arguments[1])||arguments[1];if(0===t.length)return;const i=this.body.edges;Ts(t,t=>{const e=i[t];void 0!==e&&e.remove()}),e&&this.body.emitter.emit("_dataChanged")}refresh(){Ts(this.body.edges,(t,e)=>{const i=this.body.data.edges.get(e);void 0!==i&&t.setOptions(i)})}create(t){return new M_(t,this.body,this.images,this.options,this.defaultOptions)}reconnectEdges(){let t;const e=this.body.nodes,i=this.body.edges;for(t in e)Object.prototype.hasOwnProperty.call(e,t)&&(e[t].edges=[]);for(t in i)if(Object.prototype.hasOwnProperty.call(i,t)){const e=i[t];e.from=null,e.to=null,e.connect()}}getConnectedNodes(t){const e=[];if(void 0!==this.body.edges[t]){const i=this.body.edges[t];void 0!==i.fromId&&e.push(i.fromId),void 0!==i.toId&&e.push(i.toId)}return e}_updateState(){this._addMissingEdges(),this._removeInvalidEdges()}_removeInvalidEdges(){const t=[];Ts(this.body.edges,(e,i)=>{const o=this.body.nodes[e.toId],n=this.body.nodes[e.fromId];void 0!==o&&!0===o.isCluster||void 0!==n&&!0===n.isCluster||void 0!==o&&void 0!==n||t.push(i)}),this.remove(t,!1)}_addMissingEdges(){const t=this.body.data.edges;if(null==t)return;const e=this.body.edges,i=[];Qh(t).call(t,(t,o)=>{void 0===e[o]&&i.push(o)}),this.add(i,!0)}}var P_,N_,B_,z_,F_,A_,j_,R_={};function L_(){return B_?N_:(B_=1,function(){if(P_)return R_;P_=1;var t=hi(),e=Date,i=O()(e.prototype.getTime);t({target:"Date",stat:!0},{now:function(){return i(new e)}})}(),N_=kt().Date.now)}function H_(){return F_?z_:(F_=1,z_=L_())}var W_=i(j_?A_:(j_=1,A_=H_()));class V_{constructor(t,e,i){this.body=t,this.physicsBody=e,this.barnesHutTree,this.setOptions(i),this._rng=rs("BARNES HUT SOLVER")}setOptions(t){this.options=t,this.thetaInversed=1/this.options.theta,this.overlapAvoidanceFactor=1-Math.max(0,Math.min(1,this.options.avoidOverlap))}solve(){if(0!==this.options.gravitationalConstant&&this.physicsBody.physicsNodeIndices.length>0){let t;const e=this.body.nodes,i=this.physicsBody.physicsNodeIndices,o=i.length,n=this._formBarnesHutTree(e,i);this.barnesHutTree=n;for(let s=0;s0&&this._getForceContributions(n.root,t)}}_getForceContributions(t,e){this._getForceContribution(t.children.NW,e),this._getForceContribution(t.children.NE,e),this._getForceContribution(t.children.SW,e),this._getForceContribution(t.children.SE,e)}_getForceContribution(t,e){if(t.childrenCount>0){const i=t.centerOfMass.x-e.x,o=t.centerOfMass.y-e.y,n=Math.sqrt(i*i+o*o);n*t.calcSize>this.thetaInversed?this._calculateForces(n,i,o,e,t):4===t.childrenCount?this._getForceContributions(t,e):t.children.data.id!=e.id&&this._calculateForces(n,i,o,e,t)}}_calculateForces(t,e,i,o,n){0===t&&(e=t=.1),this.overlapAvoidanceFactor<1&&o.shape.radius&&(t=Math.max(.1+this.overlapAvoidanceFactor*o.shape.radius,t-o.shape.radius));const s=this.options.gravitationalConstant*n.mass*o.options.mass/Math.pow(t,3),r=e*s,a=i*s;this.physicsBody.forces[o.id].x+=r,this.physicsBody.forces[o.id].y+=a}_formBarnesHutTree(t,e){let i;const o=e.length;let n=t[e[0]].x,s=t[e[0]].y,r=t[e[0]].x,a=t[e[0]].y;for(let i=1;i0&&(hr&&(r=h),da&&(a=d))}const h=Math.abs(r-n)-Math.abs(a-s);h>0?(s-=.5*h,a+=.5*h):(n+=.5*h,r-=.5*h);const d=Math.max(1e-5,Math.abs(r-n)),l=.5*d,c=.5*(n+r),u=.5*(s+a),p={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:c-l,maxX:c+l,minY:u-l,maxY:u+l},size:d,calcSize:1/d,children:{data:null},maxWidth:0,level:0,childrenCount:4}};this._splitBranch(p.root);for(let n=0;n0&&this._placeInTree(p.root,i);return p}_updateBranchMass(t,e){const i=t.centerOfMass,o=t.mass+e.options.mass,n=1/o;i.x=i.x*t.mass+e.x*e.options.mass,i.x*=n,i.y=i.y*t.mass+e.y*e.options.mass,i.y*=n,t.mass=o;const s=Math.max(Math.max(e.height,e.radius),e.width);t.maxWidth=t.maxWidthe.x?o.maxY>e.y?"NW":"SW":o.maxY>e.y?"NE":"SE",this._placeInRegion(t,e,n)}_placeInRegion(t,e,i){const o=t.children[i];switch(o.childrenCount){case 0:o.children.data=e,o.childrenCount=1,this._updateBranchMass(o,e);break;case 1:o.children.data.x===e.x&&o.children.data.y===e.y?(e.x+=this._rng(),e.y+=this._rng()):(this._splitBranch(o),this._placeInTree(o,e));break;case 4:this._placeInTree(o,e)}}_splitBranch(t){let e=null;1===t.childrenCount&&(e=t.children.data,t.mass=0,t.centerOfMass.x=0,t.centerOfMass.y=0),t.childrenCount=4,t.children.data=null,this._insertRegion(t,"NW"),this._insertRegion(t,"NE"),this._insertRegion(t,"SW"),this._insertRegion(t,"SE"),null!=e&&this._placeInTree(t,e)}_insertRegion(t,e){let i,o,n,s;const r=.5*t.size;switch(e){case"NW":i=t.range.minX,o=t.range.minX+r,n=t.range.minY,s=t.range.minY+r;break;case"NE":i=t.range.minX+r,o=t.range.maxX,n=t.range.minY,s=t.range.minY+r;break;case"SW":i=t.range.minX,o=t.range.minX+r,n=t.range.minY+r,s=t.range.maxY;break;case"SE":i=t.range.minX+r,o=t.range.maxX,n=t.range.minY+r,s=t.range.maxY}t.children[e]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:o,minY:n,maxY:s},size:.5*t.size,calcSize:2*t.calcSize,children:{data:null},maxWidth:0,level:t.level+1,childrenCount:0}}_debug(t,e){void 0!==this.barnesHutTree&&(t.lineWidth=1,this._drawBranch(this.barnesHutTree.root,t,e))}_drawBranch(t,e,i){void 0===i&&(i="#FF0000"),4===t.childrenCount&&(this._drawBranch(t.children.NW,e),this._drawBranch(t.children.NE,e),this._drawBranch(t.children.SE,e),this._drawBranch(t.children.SW,e)),e.strokeStyle=i,e.beginPath(),e.moveTo(t.range.minX,t.range.minY),e.lineTo(t.range.maxX,t.range.minY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.minY),e.lineTo(t.range.maxX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.maxY),e.lineTo(t.range.minX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.minX,t.range.maxY),e.lineTo(t.range.minX,t.range.minY),e.stroke()}}class q_{constructor(t,e,i){this._rng=rs("REPULSION SOLVER"),this.body=t,this.physicsBody=e,this.setOptions(i)}setOptions(t){this.options=t}solve(){let t,e,i,o,n,s,r,a;const h=this.body.nodes,d=this.physicsBody.physicsNodeIndices,l=this.physicsBody.forces,c=this.options.nodeDistance,u=-2/3/c,p=4/3;for(let f=0;f0){const t=n.edges.length+1,s=this.options.centralGravity*t*n.options.mass;o[n.id].x=e*s,o[n.id].y=i*s}}}class Q_{constructor(t){this.body=t,this.physicsBody={physicsNodeIndices:[],physicsEdgeIndices:[],forces:{},velocities:{}},this.physicsEnabled=!0,this.simulationInterval=1e3/60,this.requiresTimeout=!0,this.previousStates={},this.referenceState={},this.freezeCache={},this.renderTimer=void 0,this.adaptiveTimestep=!1,this.adaptiveTimestepEnabled=!1,this.adaptiveCounter=0,this.adaptiveInterval=3,this.stabilized=!1,this.startedStabilization=!1,this.stabilizationIterations=0,this.ready=!1,this.options={},this.defaultOptions={enabled:!0,barnesHut:{theta:.5,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09,avoidOverlap:0},forceAtlas2Based:{theta:.5,gravitationalConstant:-50,centralGravity:.01,springConstant:.08,springLength:100,damping:.4,avoidOverlap:0},repulsion:{centralGravity:.2,springLength:200,springConstant:.05,nodeDistance:100,damping:.09,avoidOverlap:0},hierarchicalRepulsion:{centralGravity:0,springLength:100,springConstant:.01,nodeDistance:120,damping:.09},maxVelocity:50,minVelocity:.75,solver:"barnesHut",stabilization:{enabled:!0,iterations:1e3,updateInterval:50,onlyDynamicEdges:!1,fit:!0},timestep:.5,adaptiveTimestep:!0,wind:{x:0,y:0}},Ki(this.options,this.defaultOptions),this.timestep=.5,this.layoutFailed=!1,this.bindEventListeners()}bindEventListeners(){this.body.emitter.on("initPhysics",()=>{this.initPhysics()}),this.body.emitter.on("_layoutFailed",()=>{this.layoutFailed=!0}),this.body.emitter.on("resetPhysics",()=>{this.stopSimulation(),this.ready=!1}),this.body.emitter.on("disablePhysics",()=>{this.physicsEnabled=!1,this.stopSimulation()}),this.body.emitter.on("restorePhysics",()=>{this.setOptions(this.options),!0===this.ready&&this.startSimulation()}),this.body.emitter.on("startSimulation",()=>{!0===this.ready&&this.startSimulation()}),this.body.emitter.on("stopSimulation",()=>{this.stopSimulation()}),this.body.emitter.on("destroy",()=>{this.stopSimulation(!1),this.body.emitter.off()}),this.body.emitter.on("_dataChanged",()=>{this.updatePhysicsData()})}setOptions(t){if(void 0!==t)if(!1===t)this.options.enabled=!1,this.physicsEnabled=!1,this.stopSimulation();else if(!0===t)this.options.enabled=!0,this.physicsEnabled=!0,this.startSimulation();else{this.physicsEnabled=!0,xs(["stabilization"],this.options,t),qs(this.options,t,"stabilization"),void 0===t.enabled&&(this.options.enabled=!0),!1===this.options.enabled&&(this.physicsEnabled=!1,this.stopSimulation());const e=this.options.wind;e&&(("number"!=typeof e.x||op(e.x))&&(e.x=0),("number"!=typeof e.y||op(e.y))&&(e.y=0)),this.timestep=this.options.timestep}this.init()}init(){let t;"forceAtlas2Based"===this.options.solver?(t=this.options.forceAtlas2Based,this.nodesSolver=new K_(this.body,this.physicsBody,t),this.edgesSolver=new Y_(this.body,this.physicsBody,t),this.gravitySolver=new Z_(this.body,this.physicsBody,t)):"repulsion"===this.options.solver?(t=this.options.repulsion,this.nodesSolver=new q_(this.body,this.physicsBody,t),this.edgesSolver=new Y_(this.body,this.physicsBody,t),this.gravitySolver=new G_(this.body,this.physicsBody,t)):"hierarchicalRepulsion"===this.options.solver?(t=this.options.hierarchicalRepulsion,this.nodesSolver=new U_(this.body,this.physicsBody,t),this.edgesSolver=new X_(this.body,this.physicsBody,t),this.gravitySolver=new G_(this.body,this.physicsBody,t)):(t=this.options.barnesHut,this.nodesSolver=new V_(this.body,this.physicsBody,t),this.edgesSolver=new Y_(this.body,this.physicsBody,t),this.gravitySolver=new G_(this.body,this.physicsBody,t)),this.modelOptions=t}initPhysics(){!0===this.physicsEnabled&&!0===this.options.enabled?!0===this.options.stabilization.enabled?this.stabilize():(this.stabilized=!1,this.ready=!0,this.body.emitter.emit("fit",{},this.layoutFailed),this.startSimulation()):(this.ready=!0,this.body.emitter.emit("fit"))}startSimulation(){var t;!0===this.physicsEnabled&&!0===this.options.enabled?(this.stabilized=!1,this.adaptiveTimestep=!1,this.body.emitter.emit("_resizeNodes"),void 0===this.viewFunction&&(this.viewFunction=oo(t=this.simulationStep).call(t,this),this.body.emitter.on("initRedraw",this.viewFunction),this.body.emitter.emit("_startRendering"))):this.body.emitter.emit("_redraw")}stopSimulation(){let t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this.stabilized=!0,!0===t&&this._emitStabilized(),void 0!==this.viewFunction&&(this.body.emitter.off("initRedraw",this.viewFunction),this.viewFunction=void 0,!0===t&&this.body.emitter.emit("_stopRendering"))}simulationStep(){const t=W_();this.physicsTick();(W_()-t<.4*this.simulationInterval||!0===this.runDoubleSpeed)&&!1===this.stabilized&&(this.physicsTick(),this.runDoubleSpeed=!0),!0===this.stabilized&&this.stopSimulation()}_emitStabilized(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.stabilizationIterations;(this.stabilizationIterations>1||!0===this.startedStabilization)&&tf(()=>{this.body.emitter.emit("stabilized",{iterations:t}),this.startedStabilization=!1,this.stabilizationIterations=0},0)}physicsStep(){this.gravitySolver.solve(),this.nodesSolver.solve(),this.edgesSolver.solve(),this.moveNodes()}adjustTimeStep(){!0===this._evaluateStepQuality()?this.timestep=1.2*this.timestep:this.timestep/1.2.3))return!1;return!0}moveNodes(){const t=this.physicsBody.physicsNodeIndices;let e=0,i=0;for(let o=0;oo&&(t=t>0?o:-o),t}_performStep(t){const e=this.body.nodes[t],i=this.physicsBody.forces[t];this.options.wind&&(i.x+=this.options.wind.x,i.y+=this.options.wind.y);const o=this.physicsBody.velocities[t];this.previousStates[t]={x:e.x,y:e.y,vx:o.x,vy:o.y},!1===e.options.fixed.x?(o.x=this.calculateComponentVelocity(o.x,i.x,e.options.mass),e.x+=o.x*this.timestep):(i.x=0,o.x=0),!1===e.options.fixed.y?(o.y=this.calculateComponentVelocity(o.y,i.y,e.options.mass),e.y+=o.y*this.timestep):(i.y=0,o.y=0);return Math.sqrt(Math.pow(o.x,2)+Math.pow(o.y,2))}_freezeNodes(){const t=this.body.nodes;for(const e in t)if(Object.prototype.hasOwnProperty.call(t,e)&&t[e].x&&t[e].y){const i=t[e].options.fixed;this.freezeCache[e]={x:i.x,y:i.y},i.x=!0,i.y=!0}}_restoreFrozenNodes(){const t=this.body.nodes;for(const e in t)Object.prototype.hasOwnProperty.call(t,e)&&void 0!==this.freezeCache[e]&&(t[e].options.fixed.x=this.freezeCache[e].x,t[e].options.fixed.y=this.freezeCache[e].y);this.freezeCache={}}stabilize(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.options.stabilization.iterations;"number"!=typeof t&&(t=this.options.stabilization.iterations,console.error("The stabilize method needs a numeric amount of iterations. Switching to default: ",t)),0!==this.physicsBody.physicsNodeIndices.length?(this.adaptiveTimestep=this.options.adaptiveTimestep,this.body.emitter.emit("_resizeNodes"),this.stopSimulation(),this.stabilized=!1,this.body.emitter.emit("_blockRedraw"),this.targetIterations=t,!0===this.options.stabilization.onlyDynamicEdges&&this._freezeNodes(),this.stabilizationIterations=0,tf(()=>this._stabilizationBatch(),0)):this.ready=!0}_startStabilizing(){return!0!==this.startedStabilization&&(this.body.emitter.emit("startStabilizing"),this.startedStabilization=!0,!0)}_stabilizationBatch(){const t=()=>!1===this.stabilized&&this.stabilizationIterations{this.body.emitter.emit("stabilizationProgress",{iterations:this.stabilizationIterations,total:this.targetIterations})};this._startStabilizing()&&e();let i=0;for(;t()&&i1&&void 0!==arguments[1]?arguments[1]:[],o=1e9,n=-1e9,s=1e9,r=-1e9;if(i.length>0)for(let a=0;ae.shape.boundingBox.left&&(s=e.shape.boundingBox.left),re.shape.boundingBox.top&&(o=e.shape.boundingBox.top),n1&&void 0!==arguments[1]?arguments[1]:[],o=1e9,n=-1e9,s=1e9,r=-1e9;if(i.length>0)for(let a=0;ae.x&&(s=e.x),re.y&&(o=e.y),n{delete this.containedEdges[t.id]}),Ts(e.containedNodes,(t,e)=>{this.containedNodes[e]=t}),e.containedNodes={},Ts(e.containedEdges,(t,e)=>{this.containedEdges[e]=t}),e.containedEdges={},Ts(e.edges,t=>{Ts(this.edges,e=>{var i,o;const n=Zr(i=e.clusteringEdgeReplacingIds).call(i,t.id);-1!==n&&(Ts(t.clusteringEdgeReplacingIds,t=>{e.clusteringEdgeReplacingIds.push(t),this.body.edges[t].edgeReplacedById=e.id}),Th(o=e.clusteringEdgeReplacingIds).call(o,n,1))})}),e.edges=[]}}class yx{constructor(t){this.body=t,this.clusteredNodes={},this.clusteredEdges={},this.options={},this.defaultOptions={},Ki(this.options,this.defaultOptions),this.body.emitter.on("_resetData",()=>{this.clusteredNodes={},this.clusteredEdges={}})}clusterByHubsize(t,e){void 0===t?t=this._getHubSize():"object"==typeof t&&(e=this._checkOptions(t),t=this._getHubSize());const i=[];for(let e=0;e=t&&i.push(o.id)}for(let t=0;t0&&void 0!==arguments[0]?arguments[0]:{},e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(void 0===t.joinCondition)throw new Error("Cannot call clusterByNodeData without a joinCondition function in the options.");t=this._checkOptions(t);const i={},o={};Ts(this.body.nodes,(e,n)=>{e.options&&!0===t.joinCondition(e.options)&&(i[n]=e,Ts(e.edges,t=>{void 0===this.clusteredEdges[t.id]&&(o[t.id]=t)}))}),this._cluster(i,o,t,e)}clusterByEdgeCount(t,e){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];e=this._checkOptions(e);const o=[],n={};let s,r,a;for(let i=0;i0&&Sp(d).length>0&&!0===i){const t=function(){for(let t=0;t1&&void 0!==arguments[1])||arguments[1];this.clusterByEdgeCount(1,t,e)}clusterBridges(t){let e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];this.clusterByEdgeCount(2,t,e)}clusterByConnection(t,e){var i;let o=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(void 0===t)throw new Error("No nodeId supplied to clusterByConnection!");if(void 0===this.body.nodes[t])throw new Error("The nodeId given to clusterByConnection does not exist!");const n=this.body.nodes[t];void 0===(e=this._checkOptions(e,n)).clusterNodeProperties.x&&(e.clusterNodeProperties.x=n.x),void 0===e.clusterNodeProperties.y&&(e.clusterNodeProperties.y=n.y),void 0===e.clusterNodeProperties.fixed&&(e.clusterNodeProperties.fixed={},e.clusterNodeProperties.fixed.x=n.options.fixed.x,e.clusterNodeProperties.fixed.y=n.options.fixed.y);const s={},r={},a=n.id,h=mx.cloneOptions(n);s[a]=n;for(let t=0;t-1&&(r[i.id]=i)}}this._cluster(s,r,e,o)}_createClusterEdges(t,e,i,o){let n,s,r,a,h,d;const l=Sp(t),c=[];for(let o=0;o0&&void 0!==arguments[0]?arguments[0]:{};return void 0===t.clusterEdgeProperties&&(t.clusterEdgeProperties={}),void 0===t.clusterNodeProperties&&(t.clusterNodeProperties={}),t}_cluster(t,e,i){let o=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];const n=[];for(const e in t)Object.prototype.hasOwnProperty.call(t,e)&&void 0!==this.clusteredNodes[e]&&n.push(e);for(let e=0;en?i.x:n,s=i.yr?i.y:r;return{x:.5*(o+n),y:.5*(s+r)}}openCluster(t,e){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(void 0===t)throw new Error("No clusterNodeId supplied to openCluster.");const o=this.body.nodes[t];if(void 0===o)throw new Error("The clusterNodeId supplied to openCluster does not exist.");if(!0!==o.isCluster||void 0===o.containedNodes||void 0===o.containedEdges)throw new Error("The node:"+t+" is not a valid cluster.");const n=this.findNode(t),s=Zr(n).call(n,t)-1;if(s>=0){const e=n[s];return this.body.nodes[e]._openChildCluster(t),delete this.body.nodes[t],void(!0===i&&this.body.emitter.emit("_dataChanged"))}const r=o.containedNodes,a=o.containedEdges;if(void 0!==e&&void 0!==e.releaseFunction&&"function"==typeof e.releaseFunction){const t={},i={x:o.x,y:o.y};for(const e in r)if(Object.prototype.hasOwnProperty.call(r,e)){const i=this.body.nodes[e];t[e]={x:i.x,y:i.y}}const n=e.releaseFunction(i,t);for(const t in r)if(Object.prototype.hasOwnProperty.call(r,t)){const e=this.body.nodes[t];void 0!==n[t]&&(e.x=void 0===n[t].x?o.x:n[t].x,e.y=void 0===n[t].y?o.y:n[t].y)}}else Ts(r,function(t){!1===t.options.fixed.x&&(t.x=o.x),!1===t.options.fixed.y&&(t.y=o.y)});for(const t in r)if(Object.prototype.hasOwnProperty.call(r,t)){const e=this.body.nodes[t];e.vx=o.vx,e.vy=o.vy,e.setOptions({physics:!0}),delete this.clusteredNodes[t]}const h=[];for(let t=0;t0&&n<100;){const t=e.pop();if(void 0===t)continue;const s=this.body.edges[t];if(void 0===s)continue;n++;const r=s.clusteringEdgeReplacingIds;if(void 0===r)o.push(t);else for(let t=0;to&&(o=s.edges.length),t+=s.edges.length,e+=Math.pow(s.edges.length,2),i+=1}t/=i,e/=i;const n=e-Math.pow(t,2),s=Math.sqrt(n);let r=Math.floor(t+2*s);return r>o&&(r=o),r}_createClusteredEdge(t,e,i,o,n){const s=mx.cloneOptions(i,"edge");Es(s,o),s.from=t,s.to=e,s.id="clusterEdge:"+af(),void 0!==n&&Es(s,n);const r=this.body.functions.createEdge(s);return r.clusteringEdgeReplacingIds=[i.id],r.connect(),this.body.edges[r.id]=r,r}_clusterEdges(t,e,i,o){if(e instanceof M_){const t=e,i={};i[t.id]=t,e=i}if(t instanceof kw){const e=t,i={};i[e.id]=e,t=i}if(null==i)throw new Error("_clusterEdges: parameter clusterNode required");void 0===o&&(o=i.clusterEdgeProperties),this._createClusterEdges(t,e,i,o);for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&void 0!==this.body.edges[t]){const e=this.body.edges[t];this._backupEdgeOptions(e),e.setOptions({physics:!1})}for(const e in t)Object.prototype.hasOwnProperty.call(t,e)&&(this.clusteredNodes[e]={clusterId:i.id,node:this.body.nodes[e]},this.body.nodes[e].setOptions({physics:!1}))}_getClusterNodeForNode(t){if(void 0===t)return;const e=this.clusteredNodes[t];if(void 0===e)return;const i=e.clusterId;return void 0!==i?this.body.nodes[i]:void 0}_filter(t,e){const i=[];return Ts(t,t=>{e(t)&&i.push(t)}),i}_updateState(){let t;const e=[],i={},o=t=>{Ts(this.body.nodes,e=>{!0===e.isCluster&&t(e)})};for(t in this.clusteredNodes){if(!Object.prototype.hasOwnProperty.call(this.clusteredNodes,t))continue;void 0===this.body.nodes[t]&&e.push(t)}o(function(t){for(let i=0;i{const e=this.body.edges[t];void 0!==e&&e.endPointsValid()||(i[t]=t)}),o(function(t){Ts(t.containedEdges,(t,e)=>{t.endPointsValid()||i[e]||(i[e]=e)})}),Ts(this.body.edges,(t,e)=>{let o=!0;const n=t.clusteringEdgeReplacingIds;if(void 0!==n){let t=0;Ts(n,e=>{const i=this.body.edges[e];void 0!==i&&i.endPointsValid()&&(t+=1)}),o=t>0}t.endPointsValid()&&o||(i[e]=e)}),o(t=>{Ts(i,e=>{delete t.containedEdges[e],Ts(t.edges,(o,n)=>{o.id!==e?o.clusteringEdgeReplacingIds=this._filter(o.clusteringEdgeReplacingIds,function(t){return!i[t]}):t.edges[n]=null}),t.edges=this._filter(t.edges,function(t){return null!==t})})}),Ts(i,t=>{delete this.clusteredEdges[t]}),Ts(i,t=>{delete this.body.edges[t]});Ts(Sp(this.body.edges),t=>{const e=this.body.edges[t],i=this._isClusteredNode(e.fromId)||this._isClusteredNode(e.toId);if(i!==this._isClusteredEdge(e.id))if(i){const t=this._getClusterNodeForNode(e.fromId);void 0!==t&&this._clusterEdges(this.body.nodes[e.fromId],e,t);const i=this._getClusterNodeForNode(e.toId);void 0!==i&&this._clusterEdges(this.body.nodes[e.toId],e,i)}else delete this._clusterEdges[t],this._restoreEdge(e)});let n=!1,s=!0;for(;s;){const t=[];o(function(e){const i=Sp(e.containedNodes).length,o=!0===e.options.allowSingleNodeCluster;(o&&i<1||!o&&i<2)&&t.push(e.id)});for(let e=0;e0,n=n||s}n&&this._updateState()}_isClusteredNode(t){return void 0!==this.clusteredNodes[t]}_isClusteredEdge(t){return void 0!==this.clusteredEdges[t]}}class bx{constructor(t,e){this.body=t,this.canvas=e,this.redrawRequested=!1,this.requestAnimationFrameRequestId=void 0,this.renderingActive=!1,this.renderRequests=0,this.allowRedraw=!0,this.dragging=!1,this.zooming=!1,this.options={},this.defaultOptions={hideEdgesOnDrag:!1,hideEdgesOnZoom:!1,hideNodesOnDrag:!1},Ki(this.options,this.defaultOptions),this.bindEventListeners()}bindEventListeners(){var t;this.body.emitter.on("dragStart",()=>{this.dragging=!0}),this.body.emitter.on("dragEnd",()=>{this.dragging=!1}),this.body.emitter.on("zoom",()=>{this.zooming=!0,window.clearTimeout(this.zoomTimeoutId),this.zoomTimeoutId=tf(()=>{var t;this.zooming=!1,oo(t=this._requestRedraw).call(t,this)()},250)}),this.body.emitter.on("_resizeNodes",()=>{this._resizeNodes()}),this.body.emitter.on("_redraw",()=>{!1===this.renderingActive&&this._redraw()}),this.body.emitter.on("_blockRedraw",()=>{this.allowRedraw=!1}),this.body.emitter.on("_allowRedraw",()=>{this.allowRedraw=!0,this.redrawRequested=!1}),this.body.emitter.on("_requestRedraw",oo(t=this._requestRedraw).call(t,this)),this.body.emitter.on("_startRendering",()=>{this.renderRequests+=1,this.renderingActive=!0,this._startRendering()}),this.body.emitter.on("_stopRendering",()=>{this.renderRequests-=1,this.renderingActive=this.renderRequests>0,this.requestAnimationFrameRequestId=void 0}),this.body.emitter.on("destroy",()=>{this.renderRequests=0,this.allowRedraw=!1,this.renderingActive=!1,window.cancelAnimationFrame(this.requestAnimationFrameRequestId),this.body.emitter.off()})}setOptions(t){if(void 0!==t){_s(["hideEdgesOnDrag","hideEdgesOnZoom","hideNodesOnDrag"],this.options,t)}}_startRendering(){var t;!0===this.renderingActive&&(void 0===this.requestAnimationFrameRequestId&&(this.requestAnimationFrameRequestId=window.requestAnimationFrame(oo(t=this._renderStep).call(t,this),this.simulationInterval)))}_renderStep(){!0===this.renderingActive&&(this.requestAnimationFrameRequestId=void 0,this._startRendering(),this._redraw())}redraw(){this.body.emitter.emit("setSize"),this._redraw()}_requestRedraw(){!0!==this.redrawRequested&&!1===this.renderingActive&&!0===this.allowRedraw&&(this.redrawRequested=!0,window.requestAnimationFrame(()=>{this._redraw(!1)}))}_redraw(){let t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(!0===this.allowRedraw){this.body.emitter.emit("initRedraw"),this.redrawRequested=!1;const e={drawExternalLabels:null};0!==this.canvas.frame.canvas.width&&0!==this.canvas.frame.canvas.height||this.canvas.setSize(),this.canvas.setTransform();const i=this.canvas.getContext(),o=this.canvas.frame.canvas.clientWidth,n=this.canvas.frame.canvas.clientHeight;if(i.clearRect(0,0,o,n),0===this.canvas.frame.clientWidth)return;if(i.save(),i.translate(this.body.view.translation.x,this.body.view.translation.y),i.scale(this.body.view.scale,this.body.view.scale),i.beginPath(),this.body.emitter.emit("beforeDrawing",i),i.closePath(),!1===t&&(!1===this.dragging||!0===this.dragging&&!1===this.options.hideEdgesOnDrag)&&(!1===this.zooming||!0===this.zooming&&!1===this.options.hideEdgesOnZoom)&&this._drawEdges(i),!1===this.dragging||!0===this.dragging&&!1===this.options.hideNodesOnDrag){const{drawExternalLabels:o}=this._drawNodes(i,t);e.drawExternalLabels=o}!1===t&&(!1===this.dragging||!0===this.dragging&&!1===this.options.hideEdgesOnDrag)&&(!1===this.zooming||!0===this.zooming&&!1===this.options.hideEdgesOnZoom)&&this._drawArrows(i),null!=e.drawExternalLabels&&e.drawExternalLabels(),!1===t&&this._drawSelectionBox(i),i.beginPath(),this.body.emitter.emit("afterDrawing",i),i.closePath(),i.restore(),!0===t&&i.clearRect(0,0,o,n)}}_resizeNodes(){this.canvas.setTransform();const t=this.canvas.getContext();t.save(),t.translate(this.body.view.translation.x,this.body.view.translation.y),t.scale(this.body.view.scale,this.body.view.scale);const e=this.body.nodes;let i;for(const o in e)Object.prototype.hasOwnProperty.call(e,o)&&(i=e[o],i.resize(t),i.updateBoundingBox(t,i.selected));t.restore()}_drawNodes(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const i=this.body.nodes,o=this.body.nodeIndices;let n;const s=[],r=[],a=this.canvas.DOMtoCanvas({x:-20,y:-20}),h=this.canvas.DOMtoCanvas({x:this.canvas.frame.canvas.clientWidth+20,y:this.canvas.frame.canvas.clientHeight+20}),d={top:a.y,left:a.x,bottom:h.y,right:h.x},l=[];for(let a=0;a{for(const t of l)t()}}}_drawEdges(t){const e=this.body.edges,i=this.body.edgeIndices;for(let o=0;o{0!==t.width&&(this.body.view.translation.x=.5*t.width),0!==t.height&&(this.body.view.translation.y=.5*t.height)}),this.body.emitter.on("setSize",oo(t=this.setSize).call(t,this)),this.body.emitter.on("destroy",()=>{this.hammerFrame.destroy(),this.hammer.destroy(),this._cleanUp()})}setOptions(t){if(void 0!==t){_s(["width","height","autoResize"],this.options,t)}if(this._cleanUp(),!0===this.options.autoResize){var e;if(window.ResizeObserver){const t=new ResizeObserver(()=>{!0===this.setSize()&&this.body.emitter.emit("_requestRedraw")}),{frame:e}=this;t.observe(e),this._cleanupCallbacks.push(()=>{t.unobserve(e)})}else{const t=_x(()=>{!0===this.setSize()&&this.body.emitter.emit("_requestRedraw")},1e3);this._cleanupCallbacks.push(()=>{clearInterval(t)})}const t=oo(e=this._onResize).call(e,this);window.addEventListener("resize",t),this._cleanupCallbacks.push(()=>{window.removeEventListener("resize",t)})}}_cleanUp(){var t,e,i;Qh(t=gx(e=Th(i=this._cleanupCallbacks).call(i,0)).call(e)).call(t,t=>{try{t()}catch(t){console.error(t)}})}_onResize(){this.setSize(),this.body.emitter.emit("_redraw")}_getCameraState(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.pixelRatio;!0===this.initialized&&(this.cameraState.previousWidth=this.frame.canvas.width/t,this.cameraState.previousHeight=this.frame.canvas.height/t,this.cameraState.scale=this.body.view.scale,this.cameraState.position=this.DOMtoCanvas({x:.5*this.frame.canvas.width/t,y:.5*this.frame.canvas.height/t}))}_setCameraState(){if(void 0!==this.cameraState.scale&&0!==this.frame.canvas.clientWidth&&0!==this.frame.canvas.clientHeight&&0!==this.pixelRatio&&this.cameraState.previousWidth>0&&this.cameraState.previousHeight>0){const t=this.frame.canvas.width/this.pixelRatio/this.cameraState.previousWidth,e=this.frame.canvas.height/this.pixelRatio/this.cameraState.previousHeight;let i=this.cameraState.scale;1!=t&&1!=e?i=.5*this.cameraState.scale*(t+e):1!=t?i=this.cameraState.scale*t:1!=e&&(i=this.cameraState.scale*e),this.body.view.scale=i;const o=this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight}),n={x:o.x-this.cameraState.position.x,y:o.y-this.cameraState.position.y};this.body.view.translation.x+=n.x*this.body.view.scale,this.body.view.translation.y+=n.y*this.body.view.scale}}_prepareValue(t){if("number"==typeof t)return t+"px";if("string"==typeof t){if(-1!==Zr(t).call(t,"%")||-1!==Zr(t).call(t,"px"))return t;if(-1===Zr(t).call(t,"%"))return t+"px"}throw new Error("Could not use the value supplied for width or height:"+t)}_create(){for(;this.body.container.hasChildNodes();)this.body.container.removeChild(this.body.container.firstChild);if(this.frame=document.createElement("div"),this.frame.className="vis-network",this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.tabIndex=0,this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas),this.frame.canvas.getContext)this._setPixelRatio(),this.setTransform();else{const t=document.createElement("DIV");t.style.color="red",t.style.fontWeight="bold",t.style.padding="10px",t.innerText="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(t)}this.body.container.appendChild(this.frame),this.body.view.scale=1,this.body.view.translation={x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight},this._bindHammer()}_bindHammer(){void 0!==this.hammer&&this.hammer.destroy(),this.drag={},this.pinch={},this.hammer=new ir(this.frame.canvas),this.hammer.get("pinch").set({enable:!0}),this.hammer.get("pan").set({threshold:5,direction:ir.DIRECTION_ALL}),xx(this.hammer,t=>{this.body.eventListeners.onTouch(t)}),this.hammer.on("tap",t=>{this.body.eventListeners.onTap(t)}),this.hammer.on("doubletap",t=>{this.body.eventListeners.onDoubleTap(t)}),this.hammer.on("press",t=>{this.body.eventListeners.onHold(t)}),this.hammer.on("panstart",t=>{this.body.eventListeners.onDragStart(t)}),this.hammer.on("panmove",t=>{this.body.eventListeners.onDrag(t)}),this.hammer.on("panend",t=>{this.body.eventListeners.onDragEnd(t)}),this.hammer.on("pinch",t=>{this.body.eventListeners.onPinch(t)}),this.frame.canvas.addEventListener("wheel",t=>{this.body.eventListeners.onMouseWheel(t)}),this.frame.canvas.addEventListener("mousemove",t=>{this.body.eventListeners.onMouseMove(t)}),this.frame.canvas.addEventListener("contextmenu",t=>{this.body.eventListeners.onContext(t)}),this.hammerFrame=new ir(this.frame),Ex(this.hammerFrame,t=>{this.body.eventListeners.onRelease(t)})}setSize(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.options.width,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.options.height;t=this._prepareValue(t),e=this._prepareValue(e);let i=!1;const o=this.frame.canvas.width,n=this.frame.canvas.height,s=this.pixelRatio;if(this._setPixelRatio(),t!=this.options.width||e!=this.options.height||this.frame.style.width!=t||this.frame.style.height!=e)this._getCameraState(s),this.frame.style.width=t,this.frame.style.height=e,this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=Math.round(this.frame.canvas.clientWidth*this.pixelRatio),this.frame.canvas.height=Math.round(this.frame.canvas.clientHeight*this.pixelRatio),this.options.width=t,this.options.height=e,this.canvasViewCenter={x:.5*this.frame.clientWidth,y:.5*this.frame.clientHeight},i=!0;else{const t=Math.round(this.frame.canvas.clientWidth*this.pixelRatio),e=Math.round(this.frame.canvas.clientHeight*this.pixelRatio);this.frame.canvas.width===t&&this.frame.canvas.height===e||this._getCameraState(s),this.frame.canvas.width!==t&&(this.frame.canvas.width=t,i=!0),this.frame.canvas.height!==e&&(this.frame.canvas.height=e,i=!0)}return!0===i&&(this.body.emitter.emit("resize",{width:Math.round(this.frame.canvas.width/this.pixelRatio),height:Math.round(this.frame.canvas.height/this.pixelRatio),oldWidth:Math.round(o/this.pixelRatio),oldHeight:Math.round(n/this.pixelRatio)}),this._setCameraState()),this.initialized=!0,i}getContext(){return this.frame.canvas.getContext("2d")}_determinePixelRatio(){const t=this.getContext();if(void 0===t)throw new Error("Could not get canvax context");let e=1;"undefined"!=typeof window&&(e=window.devicePixelRatio||1);return e/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1)}_setPixelRatio(){this.pixelRatio=this._determinePixelRatio()}setTransform(){const t=this.getContext();if(void 0===t)throw new Error("Could not get canvax context");t.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}_XconvertDOMtoCanvas(t){return(t-this.body.view.translation.x)/this.body.view.scale}_XconvertCanvasToDOM(t){return t*this.body.view.scale+this.body.view.translation.x}_YconvertDOMtoCanvas(t){return(t-this.body.view.translation.y)/this.body.view.scale}_YconvertCanvasToDOM(t){return t*this.body.view.scale+this.body.view.translation.y}canvasToDOM(t){return{x:this._XconvertCanvasToDOM(t.x),y:this._YconvertCanvasToDOM(t.y)}}DOMtoCanvas(t){return{x:this._XconvertDOMtoCanvas(t.x),y:this._YconvertDOMtoCanvas(t.y)}}}class Cx{constructor(t,e){var i,o;this.body=t,this.canvas=e,this.animationSpeed=1/this.renderRefreshRate,this.animationEasingFunction="easeInOutQuint",this.easingTime=0,this.sourceScale=0,this.targetScale=0,this.sourceTranslation=0,this.targetTranslation=0,this.lockedOnNodeId=void 0,this.lockedOnNodeOffset=void 0,this.touchTime=0,this.viewFunction=void 0,this.body.emitter.on("fit",oo(i=this.fit).call(i,this)),this.body.emitter.on("animationFinished",()=>{this.body.emitter.emit("_stopRendering")}),this.body.emitter.on("unlockNode",oo(o=this.releaseNode).call(o,this))}setOptions(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.options=t}fit(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];t=function(t,e){const i=Ki({nodes:e,minZoomLevel:Number.MIN_VALUE,maxZoomLevel:1},null!=t?t:{});if(!qh(i.nodes))throw new TypeError("Nodes has to be an array of ids.");if(0===i.nodes.length&&(i.nodes=e),!("number"==typeof i.minZoomLevel&&i.minZoomLevel>0))throw new TypeError("Min zoom level has to be a number higher than zero.");if(!("number"==typeof i.maxZoomLevel&&i.minZoomLevel<=i.maxZoomLevel))throw new TypeError("Max zoom level has to be a number higher than min zoom level.");return i}(t,this.body.nodeIndices);const i=this.canvas.frame.canvas.clientWidth,o=this.canvas.frame.canvas.clientHeight;let n,s;if(0===i||0===o)s=1,n=mx.getRange(this.body.nodes,t.nodes);else if(!0===e){let e=0;for(const t in this.body.nodes)if(Object.prototype.hasOwnProperty.call(this.body.nodes,t)){!0===this.body.nodes[t].predefinedPosition&&(e+=1)}if(e>.5*this.body.nodeIndices.length)return void this.fit(t,!1);n=mx.getRange(this.body.nodes,t.nodes);s=12.662/(this.body.nodeIndices.length+7.4147)+.0964822;s*=Math.min(i/600,o/600)}else{this.body.emitter.emit("_resizeNodes"),n=mx.getRange(this.body.nodes,t.nodes);const e=i/(1.1*Math.abs(n.maxX-n.minX)),r=o/(1.1*Math.abs(n.maxY-n.minY));s=e<=r?e:r}s>t.maxZoomLevel?s=t.maxZoomLevel:s1&&void 0!==arguments[1]?arguments[1]:{};if(void 0!==this.body.nodes[t]){const i={x:this.body.nodes[t].x,y:this.body.nodes[t].y};e.position=i,e.lockedOnNode=t,this.moveTo(e)}else console.error("Node: "+t+" cannot be found.")}moveTo(t){if(void 0!==t){if(null!=t.offset){if(null!=t.offset.x){if(t.offset.x=+t.offset.x,!fp(t.offset.x))throw new TypeError('The option "offset.x" has to be a finite number.')}else t.offset.x=0;if(null!=t.offset.y){if(t.offset.y=+t.offset.y,!fp(t.offset.y))throw new TypeError('The option "offset.y" has to be a finite number.')}else t.offset.x=0}else t.offset={x:0,y:0};if(null!=t.position){if(null!=t.position.x){if(t.position.x=+t.position.x,!fp(t.position.x))throw new TypeError('The option "position.x" has to be a finite number.')}else t.position.x=0;if(null!=t.position.y){if(t.position.y=+t.position.y,!fp(t.position.y))throw new TypeError('The option "position.y" has to be a finite number.')}else t.position.x=0}else t.position=this.getViewPosition();if(null!=t.scale){if(t.scale=+t.scale,!(t.scale>0))throw new TypeError('The option "scale" has to be a number greater than zero.')}else t.scale=this.body.view.scale;void 0===t.animation&&(t.animation={duration:0}),!1===t.animation&&(t.animation={duration:0}),!0===t.animation&&(t.animation={}),void 0===t.animation.duration&&(t.animation.duration=1e3),void 0===t.animation.easingFunction&&(t.animation.easingFunction="easeInOutQuad"),this.animateView(t)}else t={}}animateView(t){if(void 0===t)return;this.animationEasingFunction=t.animation.easingFunction,this.releaseNode(),!0===t.locked&&(this.lockedOnNodeId=t.lockedOnNode,this.lockedOnNodeOffset=t.offset),0!=this.easingTime&&this._transitionRedraw(!0),this.sourceScale=this.body.view.scale,this.sourceTranslation=this.body.view.translation,this.targetScale=t.scale,this.body.view.scale=this.targetScale;const e=this.canvas.DOMtoCanvas({x:.5*this.canvas.frame.canvas.clientWidth,y:.5*this.canvas.frame.canvas.clientHeight}),i=e.x-t.position.x,o=e.y-t.position.y;var n,s;(this.targetTranslation={x:this.sourceTranslation.x+i*this.targetScale+t.offset.x,y:this.sourceTranslation.y+o*this.targetScale+t.offset.y},0===t.animation.duration)?null!=this.lockedOnNodeId?(this.viewFunction=oo(n=this._lockedRedraw).call(n,this),this.body.emitter.on("initRedraw",this.viewFunction)):(this.body.view.scale=this.targetScale,this.body.view.translation=this.targetTranslation,this.body.emitter.emit("_requestRedraw")):(this.animationSpeed=1/(60*t.animation.duration*.001)||1/60,this.animationEasingFunction=t.animation.easingFunction,this.viewFunction=oo(s=this._transitionRedraw).call(s,this),this.body.emitter.on("initRedraw",this.viewFunction),this.body.emitter.emit("_startRendering"))}_lockedRedraw(){const t=this.body.nodes[this.lockedOnNodeId].x,e=this.body.nodes[this.lockedOnNodeId].y,i=this.canvas.DOMtoCanvas({x:.5*this.canvas.frame.canvas.clientWidth,y:.5*this.canvas.frame.canvas.clientHeight}),o=i.x-t,n=i.y-e,s=this.body.view.translation,r={x:s.x+o*this.body.view.scale+this.lockedOnNodeOffset.x,y:s.y+n*this.body.view.scale+this.lockedOnNodeOffset.y};this.body.view.translation=r}releaseNode(){void 0!==this.lockedOnNodeId&&void 0!==this.viewFunction&&(this.body.emitter.off("initRedraw",this.viewFunction),this.lockedOnNodeId=void 0,this.lockedOnNodeOffset=void 0)}_transitionRedraw(){let t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.easingTime+=this.animationSpeed,this.easingTime=!0===t?1:this.easingTime;const e=Us[this.animationEasingFunction](this.easingTime);if(this.body.view.scale=this.sourceScale+(this.targetScale-this.sourceScale)*e,this.body.view.translation={x:this.sourceTranslation.x+(this.targetTranslation.x-this.sourceTranslation.x)*e,y:this.sourceTranslation.y+(this.targetTranslation.y-this.sourceTranslation.y)*e},this.easingTime>=1){var i;if(this.body.emitter.off("initRedraw",this.viewFunction),this.easingTime=0,null!=this.lockedOnNodeId)this.viewFunction=oo(i=this._lockedRedraw).call(i,this),this.body.emitter.on("initRedraw",this.viewFunction);this.body.emitter.emit("animationFinished")}}getScale(){return this.body.view.scale}getViewPosition(){return this.canvas.DOMtoCanvas({x:.5*this.canvas.frame.canvas.clientWidth,y:.5*this.canvas.frame.canvas.clientHeight})}}function kx(t){var e,i=t&&t.preventDefault||!1,o=t&&t.container||window,n={},s={keydown:{},keyup:{}},r={};for(e=97;e<=122;e++)r[String.fromCharCode(e)]={code:e-97+65,shift:!1};for(e=65;e<=90;e++)r[String.fromCharCode(e)]={code:e,shift:!0};for(e=0;e<=9;e++)r[""+e]={code:48+e,shift:!1};for(e=1;e<=12;e++)r["F"+e]={code:111+e,shift:!1};for(e=0;e<=9;e++)r["num"+e]={code:96+e,shift:!1};r["num*"]={code:106,shift:!1},r["num+"]={code:107,shift:!1},r["num-"]={code:109,shift:!1},r["num/"]={code:111,shift:!1},r["num."]={code:110,shift:!1},r.left={code:37,shift:!1},r.up={code:38,shift:!1},r.right={code:39,shift:!1},r.down={code:40,shift:!1},r.space={code:32,shift:!1},r.enter={code:13,shift:!1},r.shift={code:16,shift:void 0},r.esc={code:27,shift:!1},r.backspace={code:8,shift:!1},r.tab={code:9,shift:!1},r.ctrl={code:17,shift:!1},r.alt={code:18,shift:!1},r.delete={code:46,shift:!1},r.pageup={code:33,shift:!1},r.pagedown={code:34,shift:!1},r["="]={code:187,shift:!1},r["-"]={code:189,shift:!1},r["]"]={code:221,shift:!1},r["["]={code:219,shift:!1};var a=function(t){d(t,"keydown")},h=function(t){d(t,"keyup")},d=function(t,e){if(void 0!==s[e][t.keyCode]){for(var o=s[e][t.keyCode],n=0;n{this.activated=!0,this.configureKeyboardBindings()}),this.body.emitter.on("deactivate",()=>{this.activated=!1,this.configureKeyboardBindings()}),this.body.emitter.on("destroy",()=>{void 0!==this.keycharm&&this.keycharm.destroy()}),this.options={}}setOptions(t){void 0!==t&&(this.options=t,this.create())}create(){!0===this.options.navigationButtons?!1===this.iconsCreated&&this.loadNavigationElements():!0===this.iconsCreated&&this.cleanNavigation(),this.configureKeyboardBindings()}cleanNavigation(){if(0!=this.navigationHammers.length){for(let t=0;t{this._stopMovement()}),this.navigationHammers.push(n),this.iconsCreated=!0}bindToRedraw(t){var e;void 0===this.boundFunctions[t]&&(this.boundFunctions[t]=oo(e=this[t]).call(e,this),this.body.emitter.on("initRedraw",this.boundFunctions[t]),this.body.emitter.emit("_startRendering"))}unbindFromRedraw(t){void 0!==this.boundFunctions[t]&&(this.body.emitter.off("initRedraw",this.boundFunctions[t]),this.body.emitter.emit("_stopRendering"),delete this.boundFunctions[t])}_fit(){(new Date).valueOf()-this.touchTime>700&&(this.body.emitter.emit("fit",{duration:700}),this.touchTime=(new Date).valueOf())}_stopMovement(){for(const t in this.boundFunctions)Object.prototype.hasOwnProperty.call(this.boundFunctions,t)&&(this.body.emitter.off("initRedraw",this.boundFunctions[t]),this.body.emitter.emit("_stopRendering"));this.boundFunctions={}}_moveUp(){this.body.view.translation.y+=this.options.keyboard.speed.y}_moveDown(){this.body.view.translation.y-=this.options.keyboard.speed.y}_moveLeft(){this.body.view.translation.x+=this.options.keyboard.speed.x}_moveRight(){this.body.view.translation.x-=this.options.keyboard.speed.x}_zoomIn(){const t=this.body.view.scale,e=this.body.view.scale*(1+this.options.keyboard.speed.zoom),i=this.body.view.translation,o=e/t,n=(1-o)*this.canvas.canvasViewCenter.x+i.x*o,s=(1-o)*this.canvas.canvasViewCenter.y+i.y*o;this.body.view.scale=e,this.body.view.translation={x:n,y:s},this.body.emitter.emit("zoom",{direction:"+",scale:this.body.view.scale,pointer:null})}_zoomOut(){const t=this.body.view.scale,e=this.body.view.scale/(1+this.options.keyboard.speed.zoom),i=this.body.view.translation,o=e/t,n=(1-o)*this.canvas.canvasViewCenter.x+i.x*o,s=(1-o)*this.canvas.canvasViewCenter.y+i.y*o;this.body.view.scale=e,this.body.view.translation={x:n,y:s},this.body.emitter.emit("zoom",{direction:"-",scale:this.body.view.scale,pointer:null})}configureKeyboardBindings(){var t,e,i,o,n,s,r,a,h,d,l,c,u,p,f,g,m,v,y,b,w,_,x,E;(void 0!==this.keycharm&&this.keycharm.destroy(),!0===this.options.keyboard.enabled)&&(!0===this.options.keyboard.bindToWindow?this.keycharm=kx({container:window,preventDefault:!0}):this.keycharm=kx({container:this.canvas.frame,preventDefault:!0}),this.keycharm.reset(),!0===this.activated&&(oo(t=this.keycharm).call(t,"up",()=>{this.bindToRedraw("_moveUp")},"keydown"),oo(e=this.keycharm).call(e,"down",()=>{this.bindToRedraw("_moveDown")},"keydown"),oo(i=this.keycharm).call(i,"left",()=>{this.bindToRedraw("_moveLeft")},"keydown"),oo(o=this.keycharm).call(o,"right",()=>{this.bindToRedraw("_moveRight")},"keydown"),oo(n=this.keycharm).call(n,"=",()=>{this.bindToRedraw("_zoomIn")},"keydown"),oo(s=this.keycharm).call(s,"num+",()=>{this.bindToRedraw("_zoomIn")},"keydown"),oo(r=this.keycharm).call(r,"num-",()=>{this.bindToRedraw("_zoomOut")},"keydown"),oo(a=this.keycharm).call(a,"-",()=>{this.bindToRedraw("_zoomOut")},"keydown"),oo(h=this.keycharm).call(h,"[",()=>{this.bindToRedraw("_zoomOut")},"keydown"),oo(d=this.keycharm).call(d,"]",()=>{this.bindToRedraw("_zoomIn")},"keydown"),oo(l=this.keycharm).call(l,"pageup",()=>{this.bindToRedraw("_zoomIn")},"keydown"),oo(c=this.keycharm).call(c,"pagedown",()=>{this.bindToRedraw("_zoomOut")},"keydown"),oo(u=this.keycharm).call(u,"up",()=>{this.unbindFromRedraw("_moveUp")},"keyup"),oo(p=this.keycharm).call(p,"down",()=>{this.unbindFromRedraw("_moveDown")},"keyup"),oo(f=this.keycharm).call(f,"left",()=>{this.unbindFromRedraw("_moveLeft")},"keyup"),oo(g=this.keycharm).call(g,"right",()=>{this.unbindFromRedraw("_moveRight")},"keyup"),oo(m=this.keycharm).call(m,"=",()=>{this.unbindFromRedraw("_zoomIn")},"keyup"),oo(v=this.keycharm).call(v,"num+",()=>{this.unbindFromRedraw("_zoomIn")},"keyup"),oo(y=this.keycharm).call(y,"num-",()=>{this.unbindFromRedraw("_zoomOut")},"keyup"),oo(b=this.keycharm).call(b,"-",()=>{this.unbindFromRedraw("_zoomOut")},"keyup"),oo(w=this.keycharm).call(w,"[",()=>{this.unbindFromRedraw("_zoomOut")},"keyup"),oo(_=this.keycharm).call(_,"]",()=>{this.unbindFromRedraw("_zoomIn")},"keyup"),oo(x=this.keycharm).call(x,"pageup",()=>{this.unbindFromRedraw("_zoomIn")},"keyup"),oo(E=this.keycharm).call(E,"pagedown",()=>{this.unbindFromRedraw("_zoomOut")},"keyup")))}}class Dx{constructor(t,e,i){var o,n,s,r,a,h,d,l,c,u,p,f,g;this.body=t,this.canvas=e,this.selectionHandler=i,this.navigationHandler=new Tx(t,e),this.body.eventListeners.onTap=oo(o=this.onTap).call(o,this),this.body.eventListeners.onTouch=oo(n=this.onTouch).call(n,this),this.body.eventListeners.onDoubleTap=oo(s=this.onDoubleTap).call(s,this),this.body.eventListeners.onHold=oo(r=this.onHold).call(r,this),this.body.eventListeners.onDragStart=oo(a=this.onDragStart).call(a,this),this.body.eventListeners.onDrag=oo(h=this.onDrag).call(h,this),this.body.eventListeners.onDragEnd=oo(d=this.onDragEnd).call(d,this),this.body.eventListeners.onMouseWheel=oo(l=this.onMouseWheel).call(l,this),this.body.eventListeners.onPinch=oo(c=this.onPinch).call(c,this),this.body.eventListeners.onMouseMove=oo(u=this.onMouseMove).call(u,this),this.body.eventListeners.onRelease=oo(p=this.onRelease).call(p,this),this.body.eventListeners.onContext=oo(f=this.onContext).call(f,this),this.touchTime=0,this.drag={},this.pinch={},this.popup=void 0,this.popupObj=void 0,this.popupTimer=void 0,this.body.functions.getPointer=oo(g=this.getPointer).call(g,this),this.options={},this.defaultOptions={dragNodes:!0,dragView:!0,hover:!1,keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02},bindToWindow:!0,autoFocus:!0},navigationButtons:!1,tooltipDelay:300,zoomView:!0,zoomSpeed:1},Ki(this.options,this.defaultOptions),this.bindEventListeners()}bindEventListeners(){this.body.emitter.on("destroy",()=>{clearTimeout(this.popupTimer),delete this.body.functions.getPointer})}setOptions(t){if(void 0!==t){xs(["hideEdgesOnDrag","hideEdgesOnZoom","hideNodesOnDrag","keyboard","multiselect","selectable","selectConnectedEdges"],this.options,t),qs(this.options,t,"keyboard"),t.tooltip&&(Ki(this.options.tooltip,t.tooltip),t.tooltip.color&&(this.options.tooltip.color=Bs(t.tooltip.color)))}this.navigationHandler.setOptions(this.options)}getPointer(t){return{x:t.x-ks(this.canvas.frame.canvas),y:t.y-Ss(this.canvas.frame.canvas)}}onTouch(t){(new Date).valueOf()-this.touchTime>50&&(this.drag.pointer=this.getPointer(t.center),this.drag.pinched=!1,this.pinch.scale=this.body.view.scale,this.touchTime=(new Date).valueOf())}onTap(t){const e=this.getPointer(t.center),i=this.selectionHandler.options.multiselect&&(t.changedPointers[0].ctrlKey||t.changedPointers[0].metaKey);this.checkSelectionChanges(e,i),this.selectionHandler.commitAndEmit(e,t),this.selectionHandler.generateClickEvent("click",t,e)}onDoubleTap(t){const e=this.getPointer(t.center);this.selectionHandler.generateClickEvent("doubleClick",t,e)}onHold(t){const e=this.getPointer(t.center),i=this.selectionHandler.options.multiselect;this.checkSelectionChanges(e,i),this.selectionHandler.commitAndEmit(e,t),this.selectionHandler.generateClickEvent("click",t,e),this.selectionHandler.generateClickEvent("hold",t,e)}onRelease(t){if((new Date).valueOf()-this.touchTime>10){const e=this.getPointer(t.center);this.selectionHandler.generateClickEvent("release",t,e),this.touchTime=(new Date).valueOf()}}onContext(t){const e=this.getPointer({x:t.clientX,y:t.clientY});this.selectionHandler.generateClickEvent("oncontext",t,e)}checkSelectionChanges(t){!0===(arguments.length>1&&void 0!==arguments[1]&&arguments[1])?this.selectionHandler.selectAdditionalOnPoint(t):this.selectionHandler.selectOnPoint(t)}_determineDifference(t,e){const i=function(t,e){const i=[];for(let o=0;o{const e=t.node;!1===t.xFixed&&(e.x=this.canvas._XconvertDOMtoCanvas(this.canvas._XconvertCanvasToDOM(t.x)+o)),!1===t.yFixed&&(e.y=this.canvas._YconvertDOMtoCanvas(this.canvas._YconvertCanvasToDOM(t.y)+n))}),this.body.emitter.emit("startSimulation")}else{if(t.srcEvent.shiftKey){if(this.selectionHandler.generateClickEvent("dragging",t,e,void 0,!0),void 0===this.drag.pointer)return void this.onDragStart(t);this.body.selectionBox.position.end={x:this.canvas._XconvertDOMtoCanvas(e.x),y:this.canvas._YconvertDOMtoCanvas(e.y)},this.body.emitter.emit("_requestRedraw")}if(!0===this.options.dragView&&!t.srcEvent.shiftKey){if(this.selectionHandler.generateClickEvent("dragging",t,e,void 0,!0),void 0===this.drag.pointer)return void this.onDragStart(t);const i=e.x-this.drag.pointer.x,o=e.y-this.drag.pointer.y;this.body.view.translation={x:this.drag.translation.x+i,y:this.drag.translation.y+o},this.body.emitter.emit("_requestRedraw")}}}onDragEnd(t){if(this.drag.dragging=!1,this.body.selectionBox.show){var e;this.body.selectionBox.show=!1;const i=this.body.selectionBox.position,o={minX:Math.min(i.start.x,i.end.x),minY:Math.min(i.start.y,i.end.y),maxX:Math.max(i.start.x,i.end.x),maxY:Math.max(i.start.y,i.end.y)},n=oy(e=this.body.nodeIndices).call(e,t=>{const e=this.body.nodes[t];return e.x>=o.minX&&e.x<=o.maxX&&e.y>=o.minY&&e.y<=o.maxY});Qh(n).call(n,t=>this.selectionHandler.selectObject(this.body.nodes[t]));const s=this.getPointer(t.center);this.selectionHandler.commitAndEmit(s,t),this.selectionHandler.generateClickEvent("dragEnd",t,this.getPointer(t.center),void 0,!0),this.body.emitter.emit("_requestRedraw")}else{const e=this.drag.selection;e&&e.length?(Qh(e).call(e,function(t){t.node.options.fixed.x=t.xFixed,t.node.options.fixed.y=t.yFixed}),this.selectionHandler.generateClickEvent("dragEnd",t,this.getPointer(t.center)),this.body.emitter.emit("startSimulation")):(this.selectionHandler.generateClickEvent("dragEnd",t,this.getPointer(t.center),void 0,!0),this.body.emitter.emit("_requestRedraw"))}}onPinch(t){const e=this.getPointer(t.center);this.drag.pinched=!0,void 0===this.pinch.scale&&(this.pinch.scale=1);const i=this.pinch.scale*t.scale;this.zoom(i,e)}zoom(t,e){if(!0===this.options.zoomView){const i=this.body.view.scale;let o;t<1e-5&&(t=1e-5),t>10&&(t=10),void 0!==this.drag&&!0===this.drag.dragging&&(o=this.canvas.DOMtoCanvas(this.drag.pointer));const n=this.body.view.translation,s=t/i,r=(1-s)*e.x+n.x*s,a=(1-s)*e.y+n.y*s;if(this.body.view.scale=t,this.body.view.translation={x:r,y:a},null!=o){const t=this.canvas.canvasToDOM(o);this.drag.pointer.x=t.x,this.drag.pointer.y=t.y}this.body.emitter.emit("_requestRedraw"),ithis._checkShowPopup(e),this.options.tooltipDelay))),!0===this.options.hover&&this.selectionHandler.hoverObject(t,e)}_checkShowPopup(t){const e=this.canvas._XconvertDOMtoCanvas(t.x),i=this.canvas._YconvertDOMtoCanvas(t.y),o={left:e,top:i,right:e,bottom:i},n=void 0===this.popupObj?void 0:this.popupObj.id;let s=!1,r="node";if(void 0===this.popupObj){const t=this.body.nodeIndices,e=this.body.nodes;let i;const n=[];for(let r=0;r0&&(this.popupObj=e[n[n.length-1]],s=!0)}if(void 0===this.popupObj&&!1===s){const t=this.body.edgeIndices,e=this.body.edges;let i;const n=[];for(let s=0;s0&&(this.popupObj=e[n[n.length-1]],r="edge")}void 0!==this.popupObj?this.popupObj.id!==n&&(void 0===this.popup&&(this.popup=new or(this.canvas.frame)),this.popup.popupTargetType=r,this.popup.popupTargetId=this.popupObj.id,this.popup.setPosition(t.x+3,t.y-5),this.popup.setText(this.popupObj.getTitle()),this.popup.show(),this.body.emitter.emit("showPopup",this.popupObj.id)):void 0!==this.popup&&(this.popup.hide(),this.body.emitter.emit("hidePopup"))}_checkHidePopup(t){const e=this.selectionHandler._pointerToPositionObject(t);let i=!1;if("node"===this.popup.popupTargetType){if(void 0!==this.body.nodes[this.popup.popupTargetId]&&(i=this.body.nodes[this.popup.popupTargetId].isOverlappingWith(e),!0===i)){const e=this.selectionHandler.getNodeAt(t);i=void 0!==e&&e.id===this.popup.popupTargetId}}else void 0===this.selectionHandler.getNodeAt(t)&&void 0!==this.body.edges[this.popup.popupTargetId]&&(i=this.body.edges[this.popup.popupTargetId].isOverlappingWith(e));!1===i&&(this.popupObj=void 0,this.popup.hide(),this.body.emitter.emit("hidePopup"))}}var Mx,Ix,Px={};function Nx(){return Ix||(Ix=1,Mx||(Mx=1,ou()("Set",function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}},au()))),Px}var Bx,zx,Fx,Ax,jx,Rx,Lx,Hx,Wx,Vx,qx,Ux,Yx,Xx,Gx,Kx,Zx,Qx,$x,Jx,tE,eE={};function iE(){if(zx)return Bx;zx=1;var t=Bt(),e=TypeError;return Bx=function(i){if("object"==typeof i&&"size"in i&&"has"in i&&"add"in i&&"delete"in i&&"keys"in i)return i;throw new e(t(i)+" is not a set")},Bx}function oE(){if(Ax)return Fx;Ax=1;var t=St(),e=gu(),i=t("Set"),o=i.prototype;return Fx={Set:i,add:e("add",1),has:e("has",1),remove:e("delete",1),proto:o}}function nE(){if(Rx)return jx;Rx=1;var t=B();return jx=function(e,i,o){for(var n,s,r=o?e:e.iterator,a=e.next;!(n=t(a,r)).done;)if(void 0!==(s=i(n.value)))return s},jx}function sE(){if(Hx)return Lx;Hx=1;var t=nE();return Lx=function(e,i,o){return o?t(e.keys(),i,!0):e.forEach(i)},Lx}function rE(){if(Vx)return Wx;Vx=1;var t=oE(),e=sE(),i=t.Set,o=t.add;return Wx=function(t){var n=new i;return e(t,function(t){o(n,t)}),n},Wx}function aE(){return Ux||(Ux=1,qx=function(t){return t.size}),qx}function hE(){return Xx?Yx:(Xx=1,Yx=function(t){return{iterator:t,next:t.next,done:!1}})}function dE(){if(Kx)return Gx;Kx=1;var t=zt(),e=si(),i=B(),o=li(),n=hE(),s="Invalid size",r=RangeError,a=TypeError,h=Math.max,d=function(e,i){this.set=e,this.size=h(i,0),this.has=t(e.has),this.keys=t(e.keys)};return d.prototype={getIterator:function(){return n(e(i(this.keys,this.set)))},includes:function(t){return i(this.has,this.set,t)}},Gx=function(t){e(t);var i=+t.size;if(i!=i)throw new a(s);var n=o(i);if(n<0)throw new r(s);return new d(t,n)}}function lE(){if(Qx)return Zx;Qx=1;var t=iE(),e=oE(),i=rE(),o=aE(),n=dE(),s=sE(),r=nE(),a=e.has,h=e.remove;return Zx=function(e){var d=t(this),l=n(e),c=i(d);return o(d)<=l.size?s(d,function(t){l.includes(t)&&h(c,t)}):r(l.getIterator(),function(t){a(c,t)&&h(c,t)}),c}}function cE(){return Jx?$x:(Jx=1,$x=function(){return!1})}var uE,pE,fE,gE={};function mE(){if(pE)return uE;pE=1;var t=iE(),e=oE(),i=aE(),o=dE(),n=sE(),s=nE(),r=e.Set,a=e.add,h=e.has;return uE=function(e){var d=t(this),l=o(e),c=new r;return i(d)>l.size?s(l.getIterator(),function(t){h(d,t)&&a(c,t)}):n(d,function(t){l.includes(t)&&a(c,t)}),c}}var vE,yE,bE,wE={};function _E(){if(yE)return vE;yE=1;var t=iE(),e=oE().has,i=aE(),o=dE(),n=sE(),s=nE(),r=tu();return vE=function(a){var h=t(this),d=o(a);if(i(h)<=d.size)return!1!==n(h,function(t){if(d.includes(t))return!1},!0);var l=d.getIterator();return!1!==s(l,function(t){if(e(h,t))return r(l,"normal",!1)})},vE}var xE,EE,OE,CE={};function kE(){if(EE)return xE;EE=1;var t=iE(),e=aE(),i=sE(),o=dE();return xE=function(n){var s=t(this),r=o(n);return!(e(s)>r.size)&&!1!==i(s,function(t){if(!r.includes(t))return!1},!0)}}var SE,TE,DE,ME={};function IE(){if(TE)return SE;TE=1;var t=iE(),e=oE().has,i=aE(),o=dE(),n=nE(),s=tu();return SE=function(r){var a=t(this),h=o(r);if(i(a)1;return e.has(1)&&e.clear(),{done:i,value:2}}}}},e=new Set([1,2,3,4]);return 3!==e.difference(t).size});t({target:"Set",proto:!0,real:!0,forced:o},{difference:e})}(),function(){if(fE)return gE;fE=1;var t=hi(),e=_(),i=mE();t({target:"Set",proto:!0,real:!0,forced:!cE()("intersection",function(t){return 2===t.size&&t.has(1)&&t.has(2)})||e(function(){return"3,2"!==String(Array.from(new Set([1,2,3]).intersection(new Set([3,2]))))})},{intersection:i})}(),function(){if(bE)return wE;bE=1;var t=hi(),e=_E();t({target:"Set",proto:!0,real:!0,forced:!cE()("isDisjointFrom",function(t){return!t})},{isDisjointFrom:e})}(),function(){if(OE)return CE;OE=1;var t=hi(),e=kE();t({target:"Set",proto:!0,real:!0,forced:!cE()("isSubsetOf",function(t){return t})},{isSubsetOf:e})}(),function(){if(DE)return ME;DE=1;var t=hi(),e=IE();t({target:"Set",proto:!0,real:!0,forced:!cE()("isSupersetOf",function(t){return!t})},{isSupersetOf:e})}(),function(){if(FE)return AE;FE=1;var t=hi(),e=jE(),i=RE();t({target:"Set",proto:!0,real:!0,forced:!cE()("symmetricDifference")||!i("symmetricDifference")},{symmetricDifference:e})}(),function(){if(WE)return KE;WE=1;var t=hi(),e=ZE(),i=RE();t({target:"Set",proto:!0,real:!0,forced:!cE()("union")||!i("union")},{union:e})}(),Ou(),VE=kt().Set)}function $E(){if(YE)return UE;YE=1;var t=QE();return zu(),UE=t}var JE,tO,eO,iO,oO,nO,sO,rO,aO,hO,dO=i(GE?XE:(GE=1,XE=$E())),lO={},cO={};function uO(){if(tO)return JE;tO=1;var t=O(),e=su(),i=Zc().getWeakData,o=iu(),n=si(),s=xt(),r=Ct(),a=eu(),h=Yh(),d=ye(),l=Yl(),c=l.set,u=l.getterFor,p=h.find,f=h.findIndex,g=t([].splice),m=0,v=function(t){return t.frozen||(t.frozen=new y)},y=function(){this.entries=[]},b=function(t,e){return p(t.entries,function(t){return t[0]===e})};return y.prototype={get:function(t){var e=b(this,t);if(e)return e[1]},has:function(t){return!!b(this,t)},set:function(t,e){var i=b(this,t);i?i[1]=e:this.entries.push([t,e])},delete:function(t){var e=f(this.entries,function(e){return e[0]===t});return~e&&g(this.entries,e,1),!!~e}},JE={getConstructor:function(t,h,l,p){var f=t(function(t,e){o(t,g),c(t,{type:h,id:m++,frozen:null}),s(e)||a(e,t[p],{that:t,AS_ENTRIES:l})}),g=f.prototype,y=u(h),b=function(t,e,o){var s=y(t),r=i(n(e),!0);return!0===r?v(s).set(e,o):r[s.id]=o,t};return e(g,{delete:function(t){var e=y(this);if(!r(t))return!1;var o=i(t);return!0===o?v(e).delete(t):o&&d(o,e.id)&&delete o[e.id]},has:function(t){var e=y(this);if(!r(t))return!1;var o=i(t);return!0===o?v(e).has(t):o&&d(o,e.id)}}),e(g,l?{get:function(t){var e=y(this);if(r(t)){var o=i(t);if(!0===o)return v(e).get(t);if(o)return o[e.id]}},set:function(t,e){return b(this,t,e)}}:{add:function(t){return b(this,t,!0)}}),f}}}function pO(){return iO||(iO=1,function(){if(eO)return cO;eO=1;var t,e=Kc(),i=w(),o=O(),n=su(),s=Zc(),r=ou(),a=uO(),h=Ct(),d=Yl().enforce,l=_(),c=Ul(),u=Object,p=Array.isArray,f=u.isExtensible,g=u.isFrozen,m=u.isSealed,v=u.freeze,y=u.seal,b=!i.ActiveXObject&&"ActiveXObject"in i,x=function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}},E=r("WeakMap",x,a),C=E.prototype,k=o(C.set);if(c)if(b){t=a.getConstructor(x,"WeakMap",!0),s.enable();var S=o(C.delete),T=o(C.has),D=o(C.get);n(C,{delete:function(e){if(h(e)&&!f(e)){var i=d(this);return i.frozen||(i.frozen=new t),S(this,e)||i.frozen.delete(e)}return S(this,e)},has:function(e){if(h(e)&&!f(e)){var i=d(this);return i.frozen||(i.frozen=new t),T(this,e)||i.frozen.has(e)}return T(this,e)},get:function(e){if(h(e)&&!f(e)){var i=d(this);return i.frozen||(i.frozen=new t),T(this,e)?D(this,e):i.frozen.get(e)}return D(this,e)},set:function(e,i){if(h(e)&&!f(e)){var o=d(this);o.frozen||(o.frozen=new t),T(this,e)?k(this,e,i):o.frozen.set(e,i)}else k(this,e,i);return this}})}else e&&l(function(){var t=v([]);return k(new E,t,1),!g(t)})&&n(C,{set:function(t,e){var i;return p(t)&&(g(t)?i=v:m(t)&&(i=y)),k(this,t,e),i&&i(t),this}})}()),lO}function fO(){return nO?oO:(nO=1,ac(),pO(),oO=kt().WeakMap)}function gO(){if(rO)return sO;rO=1;var t=fO();return zu(),sO=t}var mO=i(hO?aO:(hO=1,aO=gO()));function vO(t,e,i){(function(t,e){if(e.has(t))throw new TypeError("Cannot initialize the same private elements twice on an object")})(t,e),e.set(t,i)}function yO(t,e,i){return t.set(wO(t,e),i),i}function bO(t,e){return t.get(wO(t,e))}function wO(t,e,i){if("function"==typeof t?t===e:t.has(e))return arguments.length<3?e:i;throw new TypeError("Private element is not present on this object")}function _O(t,e){const i=new dO;for(const o of e)t.has(o)||i.add(o);return i}var xO=new mO,EO=new mO;class OO{constructor(){vO(this,xO,new dO),vO(this,EO,new dO)}get size(){return bO(EO,this).size}add(){for(var t=arguments.length,e=new Array(t),i=0;i0&&void 0!==arguments[0]?arguments[0]:()=>{};vO(this,CO,new OO),vO(this,kO,new OO),vO(this,SO,void 0),yO(SO,this,t)}get sizeNodes(){return bO(CO,this).size}get sizeEdges(){return bO(kO,this).size}getNodes(){return bO(CO,this).getSelection()}getEdges(){return bO(kO,this).getSelection()}addNodes(){bO(CO,this).add(...arguments)}addEdges(){bO(kO,this).add(...arguments)}deleteNodes(t){bO(CO,this).delete(t)}deleteEdges(t){bO(kO,this).delete(t)}clear(){bO(CO,this).clear(),bO(kO,this).clear()}commit(){const t={nodes:bO(CO,this).commit(),edges:bO(kO,this).commit()};for(var e=arguments.length,i=new Array(e),o=0;o{this.updateSelection()})}setOptions(t){if(void 0!==t){_s(["multiselect","hoverConnectedEdges","selectable","selectConnectedEdges"],this.options,t)}}selectOnPoint(t){let e=!1;if(!0===this.options.selectable){const i=this.getNodeAt(t)||this.getEdgeAt(t);this.unselectAll(),void 0!==i&&(e=this.selectObject(i)),this.body.emitter.emit("_requestRedraw")}return e}selectAdditionalOnPoint(t){let e=!1;if(!0===this.options.selectable){const i=this.getNodeAt(t)||this.getEdgeAt(t);void 0!==i&&(e=!0,!0===i.isSelected()?this.deselectObject(i):this.selectObject(i),this.body.emitter.emit("_requestRedraw"))}return e}_initBaseEvent(t,e){const i={};return i.pointer={DOM:{x:e.x,y:e.y},canvas:this.canvas.DOMtoCanvas(e)},i.event=t,i}generateClickEvent(t,e,i,o){let n=arguments.length>4&&void 0!==arguments[4]&&arguments[4];const s=this._initBaseEvent(e,i);if(!0===n)s.nodes=[],s.edges=[];else{const t=this.getSelection();s.nodes=t.nodes,s.edges=t.edges}void 0!==o&&(s.previousSelection=o),"click"==t&&(s.items=this.getClickedItems(i)),void 0!==e.controlEdge&&(s.controlEdge=e.controlEdge),this.body.emitter.emit(t,s)}selectObject(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.options.selectConnectedEdges;return void 0!==t&&(t instanceof kw?(!0===e&&this._selectionAccumulator.addEdges(...t.edges),this._selectionAccumulator.addNodes(t)):this._selectionAccumulator.addEdges(t),!0)}deselectObject(t){!0===t.isSelected()&&(t.selected=!1,this._removeFromSelection(t))}_getAllNodesOverlappingWith(t){const e=[],i=this.body.nodes;for(let o=0;o1&&void 0!==arguments[1])||arguments[1];const i=this._pointerToPositionObject(t),o=this._getAllNodesOverlappingWith(i);return o.length>0?!0===e?this.body.nodes[o[o.length-1]]:o[o.length-1]:void 0}_getEdgesOverlappingWith(t,e){const i=this.body.edges;for(let o=0;o1&&void 0!==arguments[1])||arguments[1];const i=this.canvas.DOMtoCanvas(t);let o=10,n=null;const s=this.body.edges;for(let t=0;t0&&(this.generateClickEvent("deselectEdge",e,t,n),i=!0),o.nodes.deleted.length>0&&(this.generateClickEvent("deselectNode",e,t,n),i=!0),o.nodes.added.length>0&&(this.generateClickEvent("selectNode",e,t),i=!0),o.edges.added.length>0&&(this.generateClickEvent("selectEdge",e,t),i=!0),!0===i&&this.generateClickEvent("select",e,t)}getSelection(){return{nodes:this.getSelectedNodeIds(),edges:this.getSelectedEdgeIds()}}getSelectedNodes(){return this._selectionAccumulator.getNodes()}getSelectedEdges(){return this._selectionAccumulator.getEdges()}getSelectedNodeIds(){var t;return Hd(t=this._selectionAccumulator.getNodes()).call(t,t=>t.id)}getSelectedEdgeIds(){var t;return Hd(t=this._selectionAccumulator.getEdges()).call(t,t=>t.id)}setSelection(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!t||!t.nodes&&!t.edges)throw new TypeError("Selection must be an object with nodes and/or edges properties");if((e.unselectAll||void 0===e.unselectAll)&&this.unselectAll(),t.nodes)for(const i of t.nodes){const t=this.body.nodes[i];if(!t)throw new RangeError('Node with id "'+i+'" not found');this.selectObject(t,e.highlightEdges)}if(t.edges)for(const e of t.edges){const t=this.body.edges[e];if(!t)throw new RangeError('Edge with id "'+e+'" not found');this.selectObject(t)}this.body.emitter.emit("_requestRedraw"),this._selectionAccumulator.commit()}selectNodes(t){let e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(!t||void 0===t.length)throw"Selection must be an array with ids";this.setSelection({nodes:t},{highlightEdges:e})}selectEdges(t){if(!t||void 0===t.length)throw"Selection must be an array with ids";this.setSelection({edges:t})}updateSelection(){for(const t in this._selectionAccumulator.getNodes())Object.prototype.hasOwnProperty.call(this.body.nodes,t.id)||this._selectionAccumulator.deleteNodes(t);for(const t in this._selectionAccumulator.getEdges())Object.prototype.hasOwnProperty.call(this.body.edges,t.id)||this._selectionAccumulator.deleteEdges(t)}getClickedItems(t){const e=this.canvas.DOMtoCanvas(t),i=[],o=this.body.nodeIndices,n=this.body.nodes;for(let t=o.length-1;t>=0;t--){const s=n[o[t]].getItemsOnPoint(e);i.push.apply(i,s)}const s=this.body.edgeIndices,r=this.body.edges;for(let t=s.length-1;t>=0;t--){const o=r[s[t]].getItemsOnPoint(e);i.push.apply(i,o)}return i}}var MO,IO,PO,NO,BO,zO,FO,AO,jO,RO,LO,HO,WO,VO,qO,UO,YO,XO={};function GO(){if(IO)return MO;IO=1;var t=Qi(),e=Math.floor,i=function(o,n){var s=o.length;if(s<8)for(var r,a,h=1;h0;)o[a]=o[--a];a!==h++&&(o[a]=r)}else for(var d=e(s/2),l=i(t(o,0,d),n),c=i(t(o,d),n),u=l.length,p=c.length,f=0,g=0;f3)){if(c)return!0;if(p)return p<603;var t,e,i,o,n="";for(t=65;t<76;t++){switch(e=String.fromCharCode(t),t){case 66:case 69:case 70:case 72:i=3;break;case 68:case 71:i=4;break;default:i=2}for(o=0;o<47;o++)f.push({k:e+o,v:i})}for(f.sort(function(t,e){return e.v-t.v}),o=0;or(i)?1:-1}}(t)),a=n(l),d=0;df;)d=c[f++],t&&!(u?d in l:r(l,d))||a(g,e?[d,l[d]]:l[d]);return g}};return iC={entries:d(!0),values:d(!1)}}function fC(){return rC?sC:(rC=1,function(){if(nC)return uC;nC=1;var t=hi(),e=pC().values;t({target:"Object",stat:!0},{values:function(t){return e(t)}})}(),sC=kt().Object.values)}function gC(){return hC?aC:(hC=1,aC=fC())}var mC,vC,yC,bC,wC,_C,xC,EC,OC,CC,kC,SC,TC,DC=i(lC?dC:(lC=1,dC=gC())),MC={};function IC(){if(vC)return mC;vC=1;var t=zt(),e=ve(),i=_t(),o=pi(),n=TypeError,s="Reduce of empty array with no initial value",r=function(r){return function(a,h,d,l){var c=e(a),u=i(c),p=o(c);if(t(h),0===p&&d<2)throw new n(s);var f=r?p-1:0,g=r?-1:1;if(d<2)for(;;){if(f in u){l=u[f],f+=g;break}if(f+=g,r?f<0:p<=f)throw new n(s)}for(;r?f>=0:p>f;f+=g)f in u&&(l=h(l,u[f],f,c));return l}};return mC={left:r(!1),right:r(!0)}}function PC(){return bC?yC:(bC=1,yC="NODE"===Wp())}function NC(){return xC?_C:(xC=1,function(){if(wC)return MC;wC=1;var t=hi(),e=IC().left,i=Hr(),o=Mt();t({target:"Array",proto:!0,forced:!PC()&&o>79&&o<83||!i("reduce")},{reduce:function(t){var i=arguments.length;return e(this,t,i,i>1?arguments[1]:void 0)}})}(),_C=Ji()("Array","reduce"))}function BC(){if(OC)return EC;OC=1;var t=Tt(),e=NC(),i=Array.prototype;return EC=function(o){var n=o.reduce;return o===i||t(i,o)&&n===i.reduce?e:n},EC}function zC(){return kC?CC:(kC=1,CC=BC())}var FC=i(TC?SC:(TC=1,SC=zC()));class AC{abstract(){throw new Error("Can't instantiate abstract class!")}fake_use(){}curveType(){return this.abstract()}getPosition(t){return this.fake_use(t),this.abstract()}setPosition(t,e){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;this.fake_use(t,e,i),this.abstract()}getTreeSize(t){return this.fake_use(t),this.abstract()}sort(t){this.fake_use(t),this.abstract()}fix(t,e){this.fake_use(t,e),this.abstract()}shift(t,e){this.fake_use(t,e),this.abstract()}}class jC extends AC{constructor(t){super(),this.layout=t}curveType(){return"horizontal"}getPosition(t){return t.x}setPosition(t,e){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;void 0!==i&&this.layout.hierarchical.addToOrdering(t,i),t.x=e}getTreeSize(t){const e=this.layout.hierarchical.getTreeSize(this.layout.body.nodes,t);return{min:e.min_x,max:e.max_x}}sort(t){cC(t).call(t,function(t,e){return t.x-e.x})}fix(t,e){t.y=this.layout.options.hierarchical.levelSeparation*e,t.options.fixed.y=!0}shift(t,e){this.layout.body.nodes[t].x+=e}}class RC extends AC{constructor(t){super(),this.layout=t}curveType(){return"vertical"}getPosition(t){return t.y}setPosition(t,e){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;void 0!==i&&this.layout.hierarchical.addToOrdering(t,i),t.y=e}getTreeSize(t){const e=this.layout.hierarchical.getTreeSize(this.layout.body.nodes,t);return{min:e.min_y,max:e.max_y}}sort(t){cC(t).call(t,function(t,e){return t.y-e.y})}fix(t,e){t.x=this.layout.options.hierarchical.levelSeparation*e,t.options.fixed.x=!0}shift(t,e){this.layout.body.nodes[t].y+=e}}var LC,HC,WC,VC,qC,UC,YC,XC,GC,KC={};function ZC(){return WC?HC:(WC=1,function(){if(LC)return KC;LC=1;var t=hi(),e=Yh().every;t({target:"Array",proto:!0,forced:!Hr()("every")},{every:function(t){return e(this,t,arguments.length>1?arguments[1]:void 0)}})}(),HC=Ji()("Array","every"))}function QC(){if(qC)return VC;qC=1;var t=Tt(),e=ZC(),i=Array.prototype;return VC=function(o){var n=o.every;return o===i||t(i,o)&&n===i.every?e:n},VC}function $C(){return YC?UC:(YC=1,UC=QC())}var JC=i(GC?XC:(GC=1,XC=$C()));function tk(t,e){const i=new dO;return Qh(t).call(t,t=>{var e;Qh(e=t.edges).call(e,t=>{t.connected&&i.add(t)})}),Qh(i).call(i,t=>{const i=t.from.id,o=t.to.id;null==e[i]&&(e[i]=0),(null==e[o]||e[i]>=e[o])&&(e[o]=e[i]+1)}),e}function ek(t,e,i,o){var n;const s=Rr(null),r=FC(n=[...Nb(o).call(o)]).call(n,(t,e)=>t+1+e.edges.length,0),a=i+"Id",h="to"===i?1:-1;for(const[n,c]of o){if(!o.has(n)||!t(c))continue;s[n]=0;const u=[c];let p,f=0;for(;p=u.pop();){var d,l;if(!o.has(n))continue;const t=s[p.id]+h;if(Qh(d=oy(l=p.edges).call(l,t=>t.connected&&t.to!==t.from&&t[i]!==p&&o.has(t.toId)&&o.has(t.fromId))).call(d,o=>{const n=o[a],r=s[n];(null==r||e(t,r))&&(s[n]=t,u.push(o[i]))}),f>r)return tk(o,s);++f}}return s}class ik{constructor(){this.childrenReference={},this.parentReference={},this.trees={},this.distributionOrdering={},this.levels={},this.distributionIndex={},this.isTree=!1,this.treeIndex=-1}addRelation(t,e){void 0===this.childrenReference[t]&&(this.childrenReference[t]=[]),this.childrenReference[t].push(e),void 0===this.parentReference[e]&&(this.parentReference[e]=[]),this.parentReference[e].push(t)}checkIfTree(){for(const t in this.parentReference)if(this.parentReference[t].length>1)return void(this.isTree=!1);this.isTree=!0}numTrees(){return this.treeIndex+1}setTreeIndex(t,e){void 0!==e&&void 0===this.trees[t.id]&&(this.trees[t.id]=e,this.treeIndex=Math.max(e,this.treeIndex))}ensureLevel(t){void 0===this.levels[t]&&(this.levels[t]=0)}getMaxLevel(t){const e={},i=t=>{if(void 0!==e[t])return e[t];let o=this.levels[t];if(this.childrenReference[t]){const e=this.childrenReference[t];if(e.length>0)for(let t=0;tt-e);for(const t of o)e.set(t,i++);for(const t in this.levels)Object.prototype.hasOwnProperty.call(this.levels,t)&&(this.levels[t]=e.get(this.levels[t]))}getTreeSize(t,e){let i=1e9,o=-1e9,n=1e9,s=-1e9;for(const r in this.trees)if(Object.prototype.hasOwnProperty.call(this.trees,r)&&this.trees[r]===e){const e=t[r];i=Math.min(e.x,i),o=Math.max(e.x,o),n=Math.min(e.y,n),s=Math.max(e.y,s)}return{min_x:i,max_x:o,min_y:n,max_y:s}}hasSameParent(t,e){const i=this.parentReference[t.id],o=this.parentReference[e.id];if(void 0===i||void 0===o)return!1;for(let t=0;t{this.setupHierarchicalLayout()}),this.body.emitter.on("_dataLoaded",()=>{this.layoutNetwork()}),this.body.emitter.on("_resetHierarchicalLayout",()=>{this.setupHierarchicalLayout()}),this.body.emitter.on("_adjustEdgesForHierarchicalLayout",()=>{if(!0!==this.options.hierarchical.enabled)return;const t=this.direction.curveType();this.body.emitter.emit("_forceDisableDynamicCurves",t,!1)})}setOptions(t,e){if(void 0!==t){const i=this.options.hierarchical,o=i.enabled;if(_s(["randomSeed","improvedLayout","clusterThreshold"],this.options,t),qs(this.options,t,"hierarchical"),void 0!==t.randomSeed&&this._resetRNG(t.randomSeed),!0===i.enabled)return!0===o&&this.body.emitter.emit("refresh",!0),"RL"===i.direction||"DU"===i.direction?i.levelSeparation>0&&(i.levelSeparation*=-1):i.levelSeparation<0&&(i.levelSeparation*=-1),this.setDirectionStrategy(),this.body.emitter.emit("_resetHierarchicalLayout"),this.adaptAllOptionsForHierarchicalLayout(e);if(!0===o)return this.body.emitter.emit("refresh"),Es(e,this.optionsBackup)}return e}_resetRNG(t){this.initialRandomSeed=t,this._rng=rs(this.initialRandomSeed)}adaptAllOptionsForHierarchicalLayout(t){if(!0===this.options.hierarchical.enabled){const e=this.optionsBackup.physics;void 0===t.physics||!0===t.physics?(t.physics={enabled:void 0===e.enabled||e.enabled,solver:"hierarchicalRepulsion"},e.enabled=void 0===e.enabled||e.enabled,e.solver=e.solver||"barnesHut"):"object"==typeof t.physics?(e.enabled=void 0===t.physics.enabled||t.physics.enabled,e.solver=t.physics.solver||"barnesHut",t.physics.solver="hierarchicalRepulsion"):!1!==t.physics&&(e.solver="barnesHut",t.physics={solver:"hierarchicalRepulsion"});let i=this.direction.curveType();if(void 0===t.edges)this.optionsBackup.edges={smooth:{enabled:!0,type:"dynamic"}},t.edges={smooth:!1};else if(void 0===t.edges.smooth)this.optionsBackup.edges={smooth:{enabled:!0,type:"dynamic"}},t.edges.smooth=!1;else if("boolean"==typeof t.edges.smooth)this.optionsBackup.edges={smooth:t.edges.smooth},t.edges.smooth={enabled:t.edges.smooth,type:i};else{const e=t.edges.smooth;void 0!==e.type&&"dynamic"!==e.type&&(i=e.type),this.optionsBackup.edges={smooth:{enabled:void 0===e.enabled||e.enabled,type:void 0===e.type?"dynamic":e.type,roundness:void 0===e.roundness?.5:e.roundness,forceDirection:void 0!==e.forceDirection&&e.forceDirection}},t.edges.smooth={enabled:void 0===e.enabled||e.enabled,type:i,roundness:void 0===e.roundness?.5:e.roundness,forceDirection:void 0!==e.forceDirection&&e.forceDirection}}this.body.emitter.emit("_forceDisableDynamicCurves",i)}return t}positionInitially(t){if(!0!==this.options.hierarchical.enabled){this._resetRNG(this.initialRandomSeed);const e=t.length+50;for(let i=0;io){const s=t.length;for(;t.length>o&&i<=e;){i+=1;const e=t.length;i%3==0?this.body.modules.clustering.clusterBridges(n):this.body.modules.clustering.clusterOutliers(n);if(e==t.length&&i%3!=0)return this._declusterAll(),this.body.emitter.emit("_layoutFailed"),void console.info("This network could not be positioned by this version of the improved layout algorithm. Please disable improvedLayout for better performance.")}this.body.modules.kamadaKawai.setOptions({springLength:Math.max(150,2*s)})}i>e&&console.info("The clustering didn't succeed within the amount of interations allowed, progressing with partial result."),this.body.modules.kamadaKawai.solve(t,this.body.edgeIndices,!0),this._shiftToCenter();const s=70;for(let e=0;e0){let t,e,i=!1,o=!1;for(e in this.lastNodeOnLevel={},this.hierarchical=new ik,this.body.nodes)Object.prototype.hasOwnProperty.call(this.body.nodes,e)&&(t=this.body.nodes[e],void 0!==t.options.level?(i=!0,this.hierarchical.levels[e]=t.options.level):o=!0);if(!0===o&&!0===i)throw new Error("To use the hierarchical layout, nodes require either no predefined levels or levels have to be defined for all nodes.");{if(!0===o){const t=this.options.hierarchical.sortMethod;"hubsize"===t?this._determineLevelsByHubsize():"directed"===t?this._determineLevelsDirected():"custom"===t&&this._determineLevelsCustomCallback()}for(const t in this.body.nodes)Object.prototype.hasOwnProperty.call(this.body.nodes,t)&&this.hierarchical.ensureLevel(t);const t=this._getDistribution();this._generateMap(),this._placeNodesByHierarchy(t),this._condenseHierarchy(),this._shiftToCenter()}}}_condenseHierarchy(){var t=this;let e=!1;const i={},o=(t,e)=>{const i=this.hierarchical.trees;for(const o in i)Object.prototype.hasOwnProperty.call(i,o)&&i[o]===t&&this.direction.shift(o,e)},n=()=>{const t=[];for(let e=0;e{if(!e[t.id]&&(e[t.id]=!0,this.hierarchical.childrenReference[t.id])){const i=this.hierarchical.childrenReference[t.id];if(i.length>0)for(let t=0;t1&&void 0!==arguments[1]?arguments[1]:1e9,o=1e9,n=1e9,s=1e9,r=-1e9;for(const a in e)if(Object.prototype.hasOwnProperty.call(e,a)){const h=t.body.nodes[a],d=t.hierarchical.levels[h.id],l=t.direction.getPosition(h),[c,u]=t._getSpaceAroundNode(h,e);o=Math.min(c,o),n=Math.min(u,n),d<=i&&(s=Math.min(l,s),r=Math.max(l,r))}return[s,r,o,n]},a=(t,e)=>{const i=this.hierarchical.getMaxLevel(t.id),o=this.hierarchical.getMaxLevel(e.id);return Math.min(i,o)},h=(t,e,i)=>{const o=this.hierarchical;for(let n=0;n1)for(let e=0;e2&&void 0!==arguments[2]&&arguments[2];const h=t.direction.getPosition(i),d=t.direction.getPosition(o),l=Math.abs(d-h),c=t.options.hierarchical.nodeSpacing;if(l>c){const h={},d={};s(i,h),s(o,d);const l=a(i,o),u=r(h,l),p=r(d,l),f=u[1],g=p[0],m=p[2];if(Math.abs(f-g)>c){let i=f-g+c;i<-m+c&&(i=-m+c),i<0&&(t._shiftBlock(o.id,i),e=!0,!0===n&&t._centerParent(o))}}},l=(t,o)=>{const n=o.id,a=o.edges,h=this.hierarchical.levels[o.id],d=this.options.hierarchical.levelSeparation*this.options.hierarchical.levelSeparation,l={},c=[];for(let t=0;t{let i=0;for(let o=0;o{let i=0;for(let o=0;o{let i=this.direction.getPosition(o);const n={};for(let o=0;o{const n=this.direction.getPosition(o);if(void 0===i[o.id]){const t={};s(o,t),i[o.id]=t}const a=r(i[o.id]),h=a[2],d=a[3],l=t-n;let c=0;l>0?c=Math.min(l,d-this.options.hierarchical.nodeSpacing):l<0&&(c=-Math.min(-l,h-this.options.hierarchical.nodeSpacing)),0!=c&&(this._shiftBlock(o.id,c),e=!0)})(g),g=f(t,a),(t=>{const i=this.direction.getPosition(o),[n,s]=this._getSpaceAroundNode(o),r=t-i;let a=i;r>0?a=Math.min(i+(s-this.options.hierarchical.nodeSpacing),t):r<0&&(a=Math.max(i-(n-this.options.hierarchical.nodeSpacing),t)),a!==i&&(this.direction.setPosition(o,a),e=!0)})(g)},c=t=>{let i=this.hierarchical.getLevels();i=gx(i).call(i);for(let o=0;o{let i=this.hierarchical.getLevels();i=gx(i).call(i);for(let o=0;o{for(const t in this.body.nodes)Object.prototype.hasOwnProperty.call(this.body.nodes,t)&&this._centerParent(this.body.nodes[t])},f=()=>{let t=this.hierarchical.getLevels();t=gx(t).call(t);for(let e=0;e{const t=n();let e=0;for(let i=0;i0&&Math.abs(r)0&&(r=this.direction.getPosition(o[t-1])+s),this.direction.setPosition(e,r,i),this._validatePositionAndContinue(e,i,r),n++}}}}_placeBranchNodes(t,e){var i;const o=this.hierarchical.childrenReference[t];if(void 0===o)return;const n=[];for(let t=0;te&&void 0===this.positionedNodes[o.id]))return;{const e=this.options.hierarchical.nodeSpacing;let r;r=0===i?this.direction.getPosition(this.body.nodes[t]):this.direction.getPosition(n[i-1])+e,this.direction.setPosition(o,r,s),this._validatePositionAndContinue(o,s,r)}}const s=this._getCenterPosition(n);this.direction.setPosition(this.body.nodes[t],s,e)}_validatePositionAndContinue(t,e,i){if(this.hierarchical.isTree){if(void 0!==this.lastNodeOnLevel[e]){const o=this.direction.getPosition(this.body.nodes[this.lastNodeOnLevel[e]]);if(i-o{var i;-1!==Zr(i=this.body.edgeIndices).call(i,t.id)&&e.push(t)}),e}_getHubSizes(){const t={};Ts(this.body.nodeIndices,e=>{const i=this.body.nodes[e],o=this._getActiveEdges(i).length;t[o]=!0});const e=[];return Ts(t,t=>{e.push(Number(t))}),cC(e).call(e,function(t,e){return e-t}),e}_determineLevelsByHubsize(){const t=(t,e)=>{this.hierarchical.levelDownstream(t,e)},e=this._getHubSizes();for(let i=0;i{const i=this.body.nodes[e];o===this._getActiveEdges(i).length&&this._crawlNetwork(t,e)})}}_determineLevelsCustomCallback(){this._crawlNetwork((t,e,i)=>{let o=this.hierarchical.levels[t.id];void 0===o&&(o=this.hierarchical.levels[t.id]=1e5);const n=(mx.cloneOptions(t,"node"),mx.cloneOptions(e,"node"),void mx.cloneOptions(i,"edge"));this.hierarchical.levels[e.id]=o+n}),this.hierarchical.setMinLevelToZero()}_determineLevelsDirected(){var t;const e=FC(t=this.body.nodeIndices).call(t,(t,e)=>(t.set(e,this.body.nodes[e]),t),new Au);"roots"===this.options.hierarchical.shakeTowards?this.hierarchical.levels=function(t){return ek(e=>{var i,o;return JC(i=oy(o=e.edges).call(o,e=>t.has(e.toId))).call(i,t=>t.from===e)},(t,e)=>e{var i,o;return JC(i=oy(o=e.edges).call(o,e=>t.has(e.toId))).call(i,t=>t.to===e)},(t,e)=>e>t,"from",t)}(e),this.hierarchical.setMinLevelToZero()}_generateMap(){this._crawlNetwork((t,e)=>{this.hierarchical.levels[e.id]>this.hierarchical.levels[t.id]&&this.hierarchical.addRelation(t.id,e.id)}),this.hierarchical.checkIfTree()}_crawlNetwork(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){},e=arguments.length>1?arguments[1]:void 0;const i={},o=(e,n)=>{if(void 0===i[e.id]){let s;this.hierarchical.setTreeIndex(e,n),i[e.id]=!0;const r=this._getActiveEdges(e);for(let i=0;i{if(i[t])return;i[t]=!0,this.direction.shift(t,e);const n=this.hierarchical.childrenReference[t];if(void 0!==n)for(let t=0;t{const i=this.hierarchical.parentReference[e];if(void 0!==i)for(let e=0;e{const i=this.hierarchical.parentReference[e];if(void 0!==i)for(let o=0;o{this._clean()}),this.body.emitter.on("_dataChanged",oo(n=this._restore).call(n,this)),this.body.emitter.on("_resetData",oo(s=this._restore).call(s,this))}_restore(){!1!==this.inMode&&(!0===this.options.initiallyActive?this.enableEditMode():this.disableEditMode())}setOptions(t,e,i){void 0!==e&&(void 0!==e.locale?this.options.locale=e.locale:this.options.locale=i.locale,void 0!==e.locales?this.options.locales=e.locales:this.options.locales=i.locales),void 0!==t&&("boolean"==typeof t?this.options.enabled=t:(this.options.enabled=!0,Es(this.options,t)),!0===this.options.initiallyActive&&(this.editMode=!0),this._setup())}toggleEditMode(){!0===this.editMode?this.disableEditMode():this.enableEditMode()}enableEditMode(){this.editMode=!0,this._clean(),!0===this.guiEnabled&&(this.manipulationDiv.style.display="block",this.closeDiv.style.display="block",this.editModeDiv.style.display="none",this.showManipulatorToolbar())}disableEditMode(){this.editMode=!1,this._clean(),!0===this.guiEnabled&&(this.manipulationDiv.style.display="none",this.closeDiv.style.display="none",this.editModeDiv.style.display="block",this._createEditButton())}showManipulatorToolbar(){if(this._clean(),this.manipulationDOM={},!0===this.guiEnabled){var t,e;this.editMode=!0,this.manipulationDiv.style.display="block",this.closeDiv.style.display="block";const i=this.selectionHandler.getSelectedNodeCount(),o=this.selectionHandler.getSelectedEdgeCount(),n=i+o,s=this.options.locales[this.options.locale];let r=!1;!1!==this.options.addNode&&(this._createAddNodeButton(s),r=!0),!1!==this.options.addEdge&&(!0===r?this._createSeperator(1):r=!0,this._createAddEdgeButton(s)),1===i&&"function"==typeof this.options.editNode?(!0===r?this._createSeperator(2):r=!0,this._createEditNodeButton(s)):1===o&&0===i&&!1!==this.options.editEdge&&(!0===r?this._createSeperator(3):r=!0,this._createEditEdgeButton(s)),0!==n&&(i>0&&!1!==this.options.deleteNode||0===i&&!1!==this.options.deleteEdge)&&(!0===r&&this._createSeperator(4),this._createDeleteButton(s)),this._bindElementEvents(this.closeDiv,oo(t=this.toggleEditMode).call(t,this)),this._temporaryBindEvent("select",oo(e=this.showManipulatorToolbar).call(e,this))}this.body.emitter.emit("_redraw")}addNodeMode(){var t;if(!0!==this.editMode&&this.enableEditMode(),this._clean(),this.inMode="addNode",!0===this.guiEnabled){var e;const t=this.options.locales[this.options.locale];this.manipulationDOM={},this._createBackButton(t),this._createSeperator(),this._createDescription(t.addDescription||this.options.locales.en.addDescription),this._bindElementEvents(this.closeDiv,oo(e=this.toggleEditMode).call(e,this))}this._temporaryBindEvent("click",oo(t=this._performAddNode).call(t,this))}editNode(){!0!==this.editMode&&this.enableEditMode(),this._clean();const t=this.selectionHandler.getSelectedNodes()[0];if(void 0!==t){if(this.inMode="editNode","function"!=typeof this.options.editNode)throw new Error("No function has been configured to handle the editing of nodes.");if(!0!==t.isCluster){const e=Es({},t.options,!1);if(e.x=t.x,e.y=t.y,2!==this.options.editNode.length)throw new Error("The function for edit does not support two arguments (data, callback)");this.options.editNode(e,t=>{null!=t&&"editNode"===this.inMode&&this.body.data.nodes.getDataSet().update(t),this.showManipulatorToolbar()})}else alert(this.options.locales[this.options.locale].editClusterError||this.options.locales.en.editClusterError)}else this.showManipulatorToolbar()}addEdgeMode(){var t,e,i,o,n;if(!0!==this.editMode&&this.enableEditMode(),this._clean(),this.inMode="addEdge",!0===this.guiEnabled){var s;const t=this.options.locales[this.options.locale];this.manipulationDOM={},this._createBackButton(t),this._createSeperator(),this._createDescription(t.edgeDescription||this.options.locales.en.edgeDescription),this._bindElementEvents(this.closeDiv,oo(s=this.toggleEditMode).call(s,this))}this._temporaryBindUI("onTouch",oo(t=this._handleConnect).call(t,this)),this._temporaryBindUI("onDragEnd",oo(e=this._finishConnect).call(e,this)),this._temporaryBindUI("onDrag",oo(i=this._dragControlNode).call(i,this)),this._temporaryBindUI("onRelease",oo(o=this._finishConnect).call(o,this)),this._temporaryBindUI("onDragStart",oo(n=this._dragStartEdge).call(n,this)),this._temporaryBindUI("onHold",()=>{})}editEdgeMode(){if(!0!==this.editMode&&this.enableEditMode(),this._clean(),this.inMode="editEdge","object"==typeof this.options.editEdge&&"function"==typeof this.options.editEdge.editWithoutDrag&&(this.edgeBeingEditedId=this.selectionHandler.getSelectedEdgeIds()[0],void 0!==this.edgeBeingEditedId)){const t=this.body.edges[this.edgeBeingEditedId];return void this._performEditEdge(t.from.id,t.to.id)}if(!0===this.guiEnabled){var t;const e=this.options.locales[this.options.locale];this.manipulationDOM={},this._createBackButton(e),this._createSeperator(),this._createDescription(e.editEdgeDescription||this.options.locales.en.editEdgeDescription),this._bindElementEvents(this.closeDiv,oo(t=this.toggleEditMode).call(t,this))}if(this.edgeBeingEditedId=this.selectionHandler.getSelectedEdgeIds()[0],void 0!==this.edgeBeingEditedId){var e,i,o,n;const t=this.body.edges[this.edgeBeingEditedId],s=this._getNewTargetNode(t.from.x,t.from.y),r=this._getNewTargetNode(t.to.x,t.to.y);this.temporaryIds.nodes.push(s.id),this.temporaryIds.nodes.push(r.id),this.body.nodes[s.id]=s,this.body.nodeIndices.push(s.id),this.body.nodes[r.id]=r,this.body.nodeIndices.push(r.id),this._temporaryBindUI("onTouch",oo(e=this._controlNodeTouch).call(e,this)),this._temporaryBindUI("onTap",()=>{}),this._temporaryBindUI("onHold",()=>{}),this._temporaryBindUI("onDragStart",oo(i=this._controlNodeDragStart).call(i,this)),this._temporaryBindUI("onDrag",oo(o=this._controlNodeDrag).call(o,this)),this._temporaryBindUI("onDragEnd",oo(n=this._controlNodeDragEnd).call(n,this)),this._temporaryBindUI("onMouseMove",()=>{}),this._temporaryBindEvent("beforeDrawing",e=>{const i=t.edgeType.findBorderPositions(e);!1===s.selected&&(s.x=i.from.x,s.y=i.from.y),!1===r.selected&&(r.x=i.to.x,r.y=i.to.y)}),this.body.emitter.emit("_redraw")}else this.showManipulatorToolbar()}deleteSelected(){!0!==this.editMode&&this.enableEditMode(),this._clean(),this.inMode="delete";const t=this.selectionHandler.getSelectedNodeIds(),e=this.selectionHandler.getSelectedEdgeIds();let i;if(t.length>0){for(let e=0;e0&&"function"==typeof this.options.deleteEdge&&(i=this.options.deleteEdge);if("function"==typeof i){const o={nodes:t,edges:e};if(2!==i.length)throw new Error("The function for delete does not support two arguments (data, callback)");i(o,t=>{null!=t&&"delete"===this.inMode?(this.body.data.edges.getDataSet().remove(t.edges),this.body.data.nodes.getDataSet().remove(t.nodes),this.body.emitter.emit("startSimulation"),this.showManipulatorToolbar()):(this.body.emitter.emit("startSimulation"),this.showManipulatorToolbar())})}else this.body.data.edges.getDataSet().remove(e),this.body.data.nodes.getDataSet().remove(t),this.body.emitter.emit("startSimulation"),this.showManipulatorToolbar()}_setup(){!0===this.options.enabled?(this.guiEnabled=!0,this._createWrappers(),!1===this.editMode?this._createEditButton():this.showManipulatorToolbar()):(this._removeManipulationDOM(),this.guiEnabled=!1)}_createWrappers(){var t,e;(void 0===this.manipulationDiv&&(this.manipulationDiv=document.createElement("div"),this.manipulationDiv.className="vis-manipulation",!0===this.editMode?this.manipulationDiv.style.display="block":this.manipulationDiv.style.display="none",this.canvas.frame.appendChild(this.manipulationDiv)),void 0===this.editModeDiv&&(this.editModeDiv=document.createElement("div"),this.editModeDiv.className="vis-edit-mode",!0===this.editMode?this.editModeDiv.style.display="none":this.editModeDiv.style.display="block",this.canvas.frame.appendChild(this.editModeDiv)),void 0===this.closeDiv)&&(this.closeDiv=document.createElement("button"),this.closeDiv.className="vis-close",this.closeDiv.setAttribute("aria-label",null!==(t=null===(e=this.options.locales[this.options.locale])||void 0===e?void 0:e.close)&&void 0!==t?t:this.options.locales.en.close),this.closeDiv.style.display=this.manipulationDiv.style.display,this.canvas.frame.appendChild(this.closeDiv))}_getNewTargetNode(t,e){const i=Es({},this.options.controlNodeStyle);i.id="targetNode"+af(),i.hidden=!1,i.physics=!1,i.x=t,i.y=e;const o=this.body.functions.createNode(i);return o.shape.boundingBox={left:t,right:t,top:e,bottom:e},o}_createEditButton(){var t;this._clean(),this.manipulationDOM={},gs(this.editModeDiv);const e=this.options.locales[this.options.locale],i=this._createButton("editMode","vis-edit vis-edit-mode",e.edit||this.options.locales.en.edit);this.editModeDiv.appendChild(i),this._bindElementEvents(i,oo(t=this.toggleEditMode).call(t,this))}_clean(){this.inMode=!1,!0===this.guiEnabled&&(gs(this.editModeDiv),gs(this.manipulationDiv),this._cleanupDOMEventListeners()),this._cleanupTemporaryNodesAndEdges(),this._unbindTemporaryUIs(),this._unbindTemporaryEvents(),this.body.emitter.emit("restorePhysics")}_cleanupDOMEventListeners(){for(const e of Th(t=this._domEventListenerCleanupQueue).call(t,0)){var t;e()}}_removeManipulationDOM(){this._clean(),gs(this.manipulationDiv),gs(this.editModeDiv),gs(this.closeDiv),this.manipulationDiv&&this.canvas.frame.removeChild(this.manipulationDiv),this.editModeDiv&&this.canvas.frame.removeChild(this.editModeDiv),this.closeDiv&&this.canvas.frame.removeChild(this.closeDiv),this.manipulationDiv=void 0,this.editModeDiv=void 0,this.closeDiv=void 0}_createSeperator(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;this.manipulationDOM["seperatorLineDiv"+t]=document.createElement("div"),this.manipulationDOM["seperatorLineDiv"+t].className="vis-separator-line",this.manipulationDiv.appendChild(this.manipulationDOM["seperatorLineDiv"+t])}_createAddNodeButton(t){var e;const i=this._createButton("addNode","vis-add",t.addNode||this.options.locales.en.addNode);this.manipulationDiv.appendChild(i),this._bindElementEvents(i,oo(e=this.addNodeMode).call(e,this))}_createAddEdgeButton(t){var e;const i=this._createButton("addEdge","vis-connect",t.addEdge||this.options.locales.en.addEdge);this.manipulationDiv.appendChild(i),this._bindElementEvents(i,oo(e=this.addEdgeMode).call(e,this))}_createEditNodeButton(t){var e;const i=this._createButton("editNode","vis-edit",t.editNode||this.options.locales.en.editNode);this.manipulationDiv.appendChild(i),this._bindElementEvents(i,oo(e=this.editNode).call(e,this))}_createEditEdgeButton(t){var e;const i=this._createButton("editEdge","vis-edit",t.editEdge||this.options.locales.en.editEdge);this.manipulationDiv.appendChild(i),this._bindElementEvents(i,oo(e=this.editEdgeMode).call(e,this))}_createDeleteButton(t){var e;let i;i=this.options.rtl?"vis-delete-rtl":"vis-delete";const o=this._createButton("delete",i,t.del||this.options.locales.en.del);this.manipulationDiv.appendChild(o),this._bindElementEvents(o,oo(e=this.deleteSelected).call(e,this))}_createBackButton(t){var e;const i=this._createButton("back","vis-back",t.back||this.options.locales.en.back);this.manipulationDiv.appendChild(i),this._bindElementEvents(i,oo(e=this.showManipulatorToolbar).call(e,this))}_createButton(t,e,i){let o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"vis-label";return this.manipulationDOM[t+"Div"]=document.createElement("button"),this.manipulationDOM[t+"Div"].className="vis-button "+e,this.manipulationDOM[t+"Label"]=document.createElement("div"),this.manipulationDOM[t+"Label"].className=o,this.manipulationDOM[t+"Label"].innerText=i,this.manipulationDOM[t+"Div"].appendChild(this.manipulationDOM[t+"Label"]),this.manipulationDOM[t+"Div"]}_createDescription(t){this.manipulationDOM.descriptionLabel=document.createElement("div"),this.manipulationDOM.descriptionLabel.className="vis-none",this.manipulationDOM.descriptionLabel.innerText=t,this.manipulationDiv.appendChild(this.manipulationDOM.descriptionLabel)}_temporaryBindEvent(t,e){this.temporaryEventFunctions.push({event:t,boundFunction:e}),this.body.emitter.on(t,e)}_temporaryBindUI(t,e){if(void 0===this.body.eventListeners[t])throw new Error("This UI function does not exist. Typo? You tried: "+t+" possible are: "+t_(Sp(this.body.eventListeners)));this.temporaryUIFunctions[t]=this.body.eventListeners[t],this.body.eventListeners[t]=e}_unbindTemporaryUIs(){for(const t in this.temporaryUIFunctions)Object.prototype.hasOwnProperty.call(this.temporaryUIFunctions,t)&&(this.body.eventListeners[t]=this.temporaryUIFunctions[t],delete this.temporaryUIFunctions[t]);this.temporaryUIFunctions={}}_unbindTemporaryEvents(){for(let t=0;t{i.destroy()});const o=t=>{let{keyCode:i,key:o}=t;"Enter"!==o&&" "!==o&&13!==i&&32!==i||e()};t.addEventListener("keyup",o,!1),this._domEventListenerCleanupQueue.push(()=>{t.removeEventListener("keyup",o,!1)})}_cleanupTemporaryNodesAndEdges(){for(let i=0;i=0;t--)if(n[t]!==this.selectedControlNode.id){s=this.body.nodes[n[t]];break}if(void 0!==s&&void 0!==this.selectedControlNode)if(!0===s.isCluster)alert(this.options.locales[this.options.locale].createEdgeError||this.options.locales.en.createEdgeError);else{const t=this.body.nodes[this.temporaryIds.nodes[0]];this.selectedControlNode.id===t.id?this._performEditEdge(s.id,o.to.id):this._performEditEdge(o.from.id,s.id)}else o.updateEdgeType(),this.body.emitter.emit("restorePhysics");this.body.emitter.emit("_redraw")}_handleConnect(t){if((new Date).valueOf()-this.touchTime>100){this.lastTouch=this.body.functions.getPointer(t.center),this.lastTouch.translation=Ki({},this.body.view.translation),this.interactionHandler.drag.pointer=this.lastTouch,this.interactionHandler.drag.translation=this.lastTouch.translation;const e=this.lastTouch,i=this.selectionHandler.getNodeAt(e);if(void 0!==i)if(!0===i.isCluster)alert(this.options.locales[this.options.locale].createEdgeError||this.options.locales.en.createEdgeError);else{const t=this._getNewTargetNode(i.x,i.y);this.body.nodes[t.id]=t,this.body.nodeIndices.push(t.id);const e=this.body.functions.createEdge({id:"connectionEdge"+af(),from:i.id,to:t.id,physics:!1,smooth:{enabled:!0,type:"continuous",roundness:.5}});this.body.edges[e.id]=e,this.body.edgeIndices.push(e.id),this.temporaryIds.nodes.push(t.id),this.temporaryIds.edges.push(e.id)}this.touchTime=(new Date).valueOf()}}_dragControlNode(t){const e=this.body.functions.getPointer(t.center),i=this.selectionHandler._pointerToPositionObject(e);let o;void 0!==this.temporaryIds.edges[0]&&(o=this.body.edges[this.temporaryIds.edges[0]].fromId);const n=this.selectionHandler._getAllNodesOverlappingWith(i);let s;for(let t=n.length-1;t>=0;t--){var r;if(-1===Zr(r=this.temporaryIds.nodes).call(r,n[t])){s=this.body.nodes[n[t]];break}}if(t.controlEdge={from:o,to:s?s.id:void 0},this.selectionHandler.generateClickEvent("controlNodeDragging",t,e),void 0!==this.temporaryIds.nodes[0]){const t=this.body.nodes[this.temporaryIds.nodes[0]];t.x=this.canvas._XconvertDOMtoCanvas(e.x),t.y=this.canvas._YconvertDOMtoCanvas(e.y),this.body.emitter.emit("_redraw")}else this.interactionHandler.onDrag(t)}_finishConnect(t){const e=this.body.functions.getPointer(t.center),i=this.selectionHandler._pointerToPositionObject(e);let o;void 0!==this.temporaryIds.edges[0]&&(o=this.body.edges[this.temporaryIds.edges[0]].fromId);const n=this.selectionHandler._getAllNodesOverlappingWith(i);let s;for(let t=n.length-1;t>=0;t--){var r;if(-1===Zr(r=this.temporaryIds.nodes).call(r,n[t])){s=this.body.nodes[n[t]];break}}this._cleanupTemporaryNodesAndEdges(),void 0!==s&&(!0===s.isCluster?alert(this.options.locales[this.options.locale].createEdgeError||this.options.locales.en.createEdgeError):void 0!==this.body.nodes[o]&&void 0!==this.body.nodes[s.id]&&this._performAddEdge(o,s.id)),t.controlEdge={from:o,to:s?s.id:void 0},this.selectionHandler.generateClickEvent("controlNodeDragEnd",t,e),this.body.emitter.emit("_redraw")}_dragStartEdge(t){const e=this.lastTouch;this.selectionHandler.generateClickEvent("dragStart",t,e,void 0,!0)}_performAddNode(t){const e={id:af(),x:t.pointer.canvas.x,y:t.pointer.canvas.y,label:"new"};if("function"==typeof this.options.addNode){if(2!==this.options.addNode.length)throw this.showManipulatorToolbar(),new Error("The function for add does not support two arguments (data,callback)");this.options.addNode(e,t=>{null!=t&&"addNode"===this.inMode&&this.body.data.nodes.getDataSet().add(t),this.showManipulatorToolbar()})}else this.body.data.nodes.getDataSet().add(e),this.showManipulatorToolbar()}_performAddEdge(t,e){const i={from:t,to:e};if("function"==typeof this.options.addEdge){if(2!==this.options.addEdge.length)throw new Error("The function for connect does not support two arguments (data,callback)");this.options.addEdge(i,t=>{null!=t&&"addEdge"===this.inMode&&(this.body.data.edges.getDataSet().add(t),this.selectionHandler.unselectAll(),this.showManipulatorToolbar())})}else this.body.data.edges.getDataSet().add(i),this.selectionHandler.unselectAll(),this.showManipulatorToolbar()}_performEditEdge(t,e){const i={id:this.edgeBeingEditedId,from:t,to:e,label:this.body.data.edges.get(this.edgeBeingEditedId).label};let o=this.options.editEdge;if("object"==typeof o&&(o=o.editWithoutDrag),"function"==typeof o){if(2!==o.length)throw new Error("The function for edit does not support two arguments (data, callback)");o(i,t=>{null==t||"editEdge"!==this.inMode?(this.body.edges[i.id].updateEdgeType(),this.body.emitter.emit("_redraw"),this.showManipulatorToolbar()):(this.body.data.edges.getDataSet().update(t),this.selectionHandler.unselectAll(),this.showManipulatorToolbar())})}else this.body.data.edges.getDataSet().update(i),this.selectionHandler.unselectAll(),this.showManipulatorToolbar()}}const sk="string",rk="boolean",ak="number",hk="array",dk="object",lk=["arrow","bar","box","circle","crow","curve","diamond","image","inv_curve","inv_triangle","triangle","vee"],ck={borderWidth:{number:ak},borderWidthSelected:{number:ak,undefined:"undefined"},brokenImage:{string:sk,undefined:"undefined"},chosen:{label:{boolean:rk,function:"function"},node:{boolean:rk,function:"function"},__type__:{object:dk,boolean:rk}},color:{border:{string:sk},background:{string:sk},highlight:{border:{string:sk},background:{string:sk},__type__:{object:dk,string:sk}},hover:{border:{string:sk},background:{string:sk},__type__:{object:dk,string:sk}},__type__:{object:dk,string:sk}},opacity:{number:ak,undefined:"undefined"},fixed:{x:{boolean:rk},y:{boolean:rk},__type__:{object:dk,boolean:rk}},font:{align:{string:sk},color:{string:sk},size:{number:ak},face:{string:sk},background:{string:sk},strokeWidth:{number:ak},strokeColor:{string:sk},vadjust:{number:ak},multi:{boolean:rk,string:sk},bold:{color:{string:sk},size:{number:ak},face:{string:sk},mod:{string:sk},vadjust:{number:ak},__type__:{object:dk,string:sk}},boldital:{color:{string:sk},size:{number:ak},face:{string:sk},mod:{string:sk},vadjust:{number:ak},__type__:{object:dk,string:sk}},ital:{color:{string:sk},size:{number:ak},face:{string:sk},mod:{string:sk},vadjust:{number:ak},__type__:{object:dk,string:sk}},mono:{color:{string:sk},size:{number:ak},face:{string:sk},mod:{string:sk},vadjust:{number:ak},__type__:{object:dk,string:sk}},__type__:{object:dk,string:sk}},group:{string:sk,number:ak,undefined:"undefined"},heightConstraint:{minimum:{number:ak},valign:{string:sk},__type__:{object:dk,boolean:rk,number:ak}},hidden:{boolean:rk},icon:{face:{string:sk},code:{string:sk},size:{number:ak},color:{string:sk},weight:{string:sk,number:ak},__type__:{object:dk}},id:{string:sk,number:ak},image:{selected:{string:sk,undefined:"undefined"},unselected:{string:sk,undefined:"undefined"},__type__:{object:dk,string:sk}},imagePadding:{top:{number:ak},right:{number:ak},bottom:{number:ak},left:{number:ak},__type__:{object:dk,number:ak}},label:{string:sk,undefined:"undefined"},labelHighlightBold:{boolean:rk},level:{number:ak,undefined:"undefined"},margin:{top:{number:ak},right:{number:ak},bottom:{number:ak},left:{number:ak},__type__:{object:dk,number:ak}},mass:{number:ak},physics:{boolean:rk},scaling:{min:{number:ak},max:{number:ak},label:{enabled:{boolean:rk},min:{number:ak},max:{number:ak},maxVisible:{number:ak},drawThreshold:{number:ak},__type__:{object:dk,boolean:rk}},customScalingFunction:{function:"function"},__type__:{object:dk}},shadow:{enabled:{boolean:rk},color:{string:sk},size:{number:ak},x:{number:ak},y:{number:ak},__type__:{object:dk,boolean:rk}},shape:{string:["custom","ellipse","circle","database","box","text","image","circularImage","diamond","dot","star","triangle","triangleDown","square","icon","hexagon"]},ctxRenderer:{function:"function"},shapeProperties:{borderDashes:{boolean:rk,array:hk},borderRadius:{number:ak},interpolation:{boolean:rk},useImageSize:{boolean:rk},useBorderWithImage:{boolean:rk},coordinateOrigin:{string:["center","top-left"]},__type__:{object:dk}},size:{number:ak},title:{string:sk,dom:"dom",undefined:"undefined"},value:{number:ak,undefined:"undefined"},widthConstraint:{minimum:{number:ak},maximum:{number:ak},__type__:{object:dk,boolean:rk,number:ak}},x:{number:ak},y:{number:ak},__type__:{object:dk}},uk={configure:{enabled:{boolean:rk},filter:{boolean:rk,string:sk,array:hk,function:"function"},container:{dom:"dom"},showButton:{boolean:rk},__type__:{object:dk,boolean:rk,string:sk,array:hk,function:"function"}},edges:{arrows:{to:{enabled:{boolean:rk},scaleFactor:{number:ak},type:{string:lk},imageHeight:{number:ak},imageWidth:{number:ak},src:{string:sk},__type__:{object:dk,boolean:rk}},middle:{enabled:{boolean:rk},scaleFactor:{number:ak},type:{string:lk},imageWidth:{number:ak},imageHeight:{number:ak},src:{string:sk},__type__:{object:dk,boolean:rk}},from:{enabled:{boolean:rk},scaleFactor:{number:ak},type:{string:lk},imageWidth:{number:ak},imageHeight:{number:ak},src:{string:sk},__type__:{object:dk,boolean:rk}},__type__:{string:["from","to","middle"],object:dk}},endPointOffset:{from:{number:ak},to:{number:ak},__type__:{object:dk,number:ak}},arrowStrikethrough:{boolean:rk},background:{enabled:{boolean:rk},color:{string:sk},size:{number:ak},dashes:{boolean:rk,array:hk},__type__:{object:dk,boolean:rk}},chosen:{label:{boolean:rk,function:"function"},edge:{boolean:rk,function:"function"},__type__:{object:dk,boolean:rk}},color:{color:{string:sk},highlight:{string:sk},hover:{string:sk},inherit:{string:["from","to","both"],boolean:rk},opacity:{number:ak},__type__:{object:dk,string:sk}},dashes:{boolean:rk,array:hk},font:{color:{string:sk},size:{number:ak},face:{string:sk},background:{string:sk},strokeWidth:{number:ak},strokeColor:{string:sk},align:{string:["horizontal","top","middle","bottom"]},vadjust:{number:ak},multi:{boolean:rk,string:sk},bold:{color:{string:sk},size:{number:ak},face:{string:sk},mod:{string:sk},vadjust:{number:ak},__type__:{object:dk,string:sk}},boldital:{color:{string:sk},size:{number:ak},face:{string:sk},mod:{string:sk},vadjust:{number:ak},__type__:{object:dk,string:sk}},ital:{color:{string:sk},size:{number:ak},face:{string:sk},mod:{string:sk},vadjust:{number:ak},__type__:{object:dk,string:sk}},mono:{color:{string:sk},size:{number:ak},face:{string:sk},mod:{string:sk},vadjust:{number:ak},__type__:{object:dk,string:sk}},__type__:{object:dk,string:sk}},hidden:{boolean:rk},hoverWidth:{function:"function",number:ak},label:{string:sk,undefined:"undefined"},labelHighlightBold:{boolean:rk},length:{number:ak,undefined:"undefined"},physics:{boolean:rk},scaling:{min:{number:ak},max:{number:ak},label:{enabled:{boolean:rk},min:{number:ak},max:{number:ak},maxVisible:{number:ak},drawThreshold:{number:ak},__type__:{object:dk,boolean:rk}},customScalingFunction:{function:"function"},__type__:{object:dk}},selectionWidth:{function:"function",number:ak},selfReferenceSize:{number:ak},selfReference:{size:{number:ak},angle:{number:ak},renderBehindTheNode:{boolean:rk},__type__:{object:dk}},shadow:{enabled:{boolean:rk},color:{string:sk},size:{number:ak},x:{number:ak},y:{number:ak},__type__:{object:dk,boolean:rk}},smooth:{enabled:{boolean:rk},type:{string:["dynamic","continuous","discrete","diagonalCross","straightCross","horizontal","vertical","curvedCW","curvedCCW","cubicBezier"]},roundness:{number:ak},forceDirection:{string:["horizontal","vertical","none"],boolean:rk},__type__:{object:dk,boolean:rk}},title:{string:sk,undefined:"undefined"},width:{number:ak},widthConstraint:{maximum:{number:ak},__type__:{object:dk,boolean:rk,number:ak}},value:{number:ak,undefined:"undefined"},__type__:{object:dk}},groups:{useDefaultGroups:{boolean:rk},__any__:ck,__type__:{object:dk}},interaction:{dragNodes:{boolean:rk},dragView:{boolean:rk},hideEdgesOnDrag:{boolean:rk},hideEdgesOnZoom:{boolean:rk},hideNodesOnDrag:{boolean:rk},hover:{boolean:rk},keyboard:{enabled:{boolean:rk},speed:{x:{number:ak},y:{number:ak},zoom:{number:ak},__type__:{object:dk}},bindToWindow:{boolean:rk},autoFocus:{boolean:rk},__type__:{object:dk,boolean:rk}},multiselect:{boolean:rk},navigationButtons:{boolean:rk},selectable:{boolean:rk},selectConnectedEdges:{boolean:rk},hoverConnectedEdges:{boolean:rk},tooltipDelay:{number:ak},zoomView:{boolean:rk},zoomSpeed:{number:ak},__type__:{object:dk}},layout:{randomSeed:{undefined:"undefined",number:ak,string:sk},improvedLayout:{boolean:rk},clusterThreshold:{number:ak},hierarchical:{enabled:{boolean:rk},levelSeparation:{number:ak},nodeSpacing:{number:ak},treeSpacing:{number:ak},blockShifting:{boolean:rk},edgeMinimization:{boolean:rk},parentCentralization:{boolean:rk},direction:{string:["UD","DU","LR","RL"]},sortMethod:{string:["hubsize","directed"]},shakeTowards:{string:["leaves","roots"]},__type__:{object:dk,boolean:rk}},__type__:{object:dk}},manipulation:{enabled:{boolean:rk},initiallyActive:{boolean:rk},addNode:{boolean:rk,function:"function"},addEdge:{boolean:rk,function:"function"},editNode:{function:"function"},editEdge:{editWithoutDrag:{function:"function"},__type__:{object:dk,boolean:rk,function:"function"}},deleteNode:{boolean:rk,function:"function"},deleteEdge:{boolean:rk,function:"function"},controlNodeStyle:ck,__type__:{object:dk,boolean:rk}},nodes:ck,physics:{enabled:{boolean:rk},barnesHut:{theta:{number:ak},gravitationalConstant:{number:ak},centralGravity:{number:ak},springLength:{number:ak},springConstant:{number:ak},damping:{number:ak},avoidOverlap:{number:ak},__type__:{object:dk}},forceAtlas2Based:{theta:{number:ak},gravitationalConstant:{number:ak},centralGravity:{number:ak},springLength:{number:ak},springConstant:{number:ak},damping:{number:ak},avoidOverlap:{number:ak},__type__:{object:dk}},repulsion:{centralGravity:{number:ak},springLength:{number:ak},springConstant:{number:ak},nodeDistance:{number:ak},damping:{number:ak},__type__:{object:dk}},hierarchicalRepulsion:{centralGravity:{number:ak},springLength:{number:ak},springConstant:{number:ak},nodeDistance:{number:ak},damping:{number:ak},avoidOverlap:{number:ak},__type__:{object:dk}},maxVelocity:{number:ak},minVelocity:{number:ak},solver:{string:["barnesHut","repulsion","hierarchicalRepulsion","forceAtlas2Based"]},stabilization:{enabled:{boolean:rk},iterations:{number:ak},updateInterval:{number:ak},onlyDynamicEdges:{boolean:rk},fit:{boolean:rk},__type__:{object:dk,boolean:rk}},timestep:{number:ak},adaptiveTimestep:{boolean:rk},wind:{x:{number:ak},y:{number:ak},__type__:{object:dk}},__type__:{object:dk,boolean:rk}},autoResize:{boolean:rk},clickToUse:{boolean:rk},locale:{string:sk},locales:{__any__:{any:"any"},__type__:{object:dk}},height:{string:sk},width:{string:sk},__type__:{object:dk}},pk={nodes:{borderWidth:[1,0,10,1],borderWidthSelected:[2,0,10,1],color:{border:["color","#2B7CE9"],background:["color","#97C2FC"],highlight:{border:["color","#2B7CE9"],background:["color","#D2E5FF"]},hover:{border:["color","#2B7CE9"],background:["color","#D2E5FF"]}},opacity:[0,0,1,.1],fixed:{x:!1,y:!1},font:{color:["color","#343434"],size:[14,0,100,1],face:["arial","verdana","tahoma"],background:["color","none"],strokeWidth:[0,0,50,1],strokeColor:["color","#ffffff"]},hidden:!1,labelHighlightBold:!0,physics:!0,scaling:{min:[10,0,200,1],max:[30,0,200,1],label:{enabled:!1,min:[14,0,200,1],max:[30,0,200,1],maxVisible:[30,0,200,1],drawThreshold:[5,0,20,1]}},shadow:{enabled:!1,color:"rgba(0,0,0,0.5)",size:[10,0,20,1],x:[5,-30,30,1],y:[5,-30,30,1]},shape:["ellipse","box","circle","database","diamond","dot","square","star","text","triangle","triangleDown","hexagon"],shapeProperties:{borderDashes:!1,borderRadius:[6,0,20,1],interpolation:!0,useImageSize:!1},size:[25,0,200,1]},edges:{arrows:{to:{enabled:!1,scaleFactor:[1,0,3,.05],type:"arrow"},middle:{enabled:!1,scaleFactor:[1,0,3,.05],type:"arrow"},from:{enabled:!1,scaleFactor:[1,0,3,.05],type:"arrow"}},endPointOffset:{from:[0,-10,10,1],to:[0,-10,10,1]},arrowStrikethrough:!0,color:{color:["color","#848484"],highlight:["color","#848484"],hover:["color","#848484"],inherit:["from","to","both",!0,!1],opacity:[1,0,1,.05]},dashes:!1,font:{color:["color","#343434"],size:[14,0,100,1],face:["arial","verdana","tahoma"],background:["color","none"],strokeWidth:[2,0,50,1],strokeColor:["color","#ffffff"],align:["horizontal","top","middle","bottom"]},hidden:!1,hoverWidth:[1.5,0,5,.1],labelHighlightBold:!0,physics:!0,scaling:{min:[1,0,100,1],max:[15,0,100,1],label:{enabled:!0,min:[14,0,200,1],max:[30,0,200,1],maxVisible:[30,0,200,1],drawThreshold:[5,0,20,1]}},selectionWidth:[1.5,0,5,.1],selfReferenceSize:[20,0,200,1],selfReference:{size:[20,0,200,1],angle:[Math.PI/2,-6*Math.PI,6*Math.PI,Math.PI/8],renderBehindTheNode:!0},shadow:{enabled:!1,color:"rgba(0,0,0,0.5)",size:[10,0,20,1],x:[5,-30,30,1],y:[5,-30,30,1]},smooth:{enabled:!0,type:["dynamic","continuous","discrete","diagonalCross","straightCross","horizontal","vertical","curvedCW","curvedCCW","cubicBezier"],forceDirection:["horizontal","vertical","none"],roundness:[.5,0,1,.05]},width:[1,0,30,1]},layout:{hierarchical:{enabled:!1,levelSeparation:[150,20,500,5],nodeSpacing:[100,20,500,5],treeSpacing:[200,20,500,5],blockShifting:!0,edgeMinimization:!0,parentCentralization:!0,direction:["UD","DU","LR","RL"],sortMethod:["hubsize","directed"],shakeTowards:["leaves","roots"]}},interaction:{dragNodes:!0,dragView:!0,hideEdgesOnDrag:!1,hideEdgesOnZoom:!1,hideNodesOnDrag:!1,hover:!1,keyboard:{enabled:!1,speed:{x:[10,0,40,1],y:[10,0,40,1],zoom:[.02,0,.1,.005]},bindToWindow:!0,autoFocus:!0},multiselect:!1,navigationButtons:!1,selectable:!0,selectConnectedEdges:!0,hoverConnectedEdges:!0,tooltipDelay:[300,0,1e3,25],zoomView:!0,zoomSpeed:[1,.1,2,.1]},manipulation:{enabled:!1,initiallyActive:!1},physics:{enabled:!0,barnesHut:{theta:[.5,.1,1,.05],gravitationalConstant:[-2e3,-3e4,0,50],centralGravity:[.3,0,10,.05],springLength:[95,0,500,5],springConstant:[.04,0,1.2,.005],damping:[.09,0,1,.01],avoidOverlap:[0,0,1,.01]},forceAtlas2Based:{theta:[.5,.1,1,.05],gravitationalConstant:[-50,-500,0,1],centralGravity:[.01,0,1,.005],springLength:[95,0,500,5],springConstant:[.08,0,1.2,.005],damping:[.4,0,1,.01],avoidOverlap:[0,0,1,.01]},repulsion:{centralGravity:[.2,0,10,.05],springLength:[200,0,500,5],springConstant:[.05,0,1.2,.005],nodeDistance:[100,0,500,5],damping:[.09,0,1,.01]},hierarchicalRepulsion:{centralGravity:[.2,0,10,.05],springLength:[100,0,500,5],springConstant:[.01,0,1.2,.005],nodeDistance:[120,0,500,5],damping:[.09,0,1,.01],avoidOverlap:[0,0,1,.01]},maxVelocity:[50,0,150,1],minVelocity:[.1,.01,.5,.01],solver:["barnesHut","forceAtlas2Based","repulsion","hierarchicalRepulsion"],timestep:[.5,.01,1,.01],wind:{x:[0,-10,10,.1],y:[0,-10,10,.1]}}},fk=(t,e,i)=>{var o;return!(!rh(t).call(t,"physics")||!rh(o=pk.physics.solver).call(o,e)||i.physics.solver===e||"wind"===e)};var gk=Object.freeze({__proto__:null,allOptions:uk,configuratorHideOption:fk,configureOptions:pk});class mk{constructor(){}getDistances(t,e,i){const o={},n=t.edges;for(let t=0;t2&&void 0!==arguments[2]&&arguments[2];const o=this.distanceSolver.getDistances(this.body,t,e);this._createL_matrix(o),this._createK_matrix(o),this._createE_matrix();let n=0;const s=Math.max(1e3,Math.min(10*this.body.nodeIndices.length,6e3));let r=1e9,a=0,h=0,d=0,l=0,c=0;for(;r>.01&&n1&&c<5;)c+=1,this._moveNode(a,h,d),[l,h,d]=this._getEnergy(a)}_getHighestEnergyNode(t){const e=this.body.nodeIndices,i=this.body.nodes;let o=0,n=e[0],s=0,r=0;for(let a=0;athis.body.emitter.emit("_requestRedraw")),this.groups=new ju,this.canvas=new Ox(this.body),this.selectionHandler=new DO(this.body,this.canvas),this.interactionHandler=new Dx(this.body,this.canvas,this.selectionHandler),this.view=new Cx(this.body,this.canvas),this.renderer=new bx(this.body,this.canvas),this.physics=new Q_(this.body),this.layoutEngine=new ok(this.body),this.clustering=new yx(this.body),this.manipulation=new nk(this.body,this.canvas,this.selectionHandler,this.interactionHandler),this.nodesHandler=new Sw(this.body,this.images,this.groups,this.layoutEngine),this.edgesHandler=new I_(this.body,this.images,this.groups),this.body.modules.kamadaKawai=new vk(this.body,150,.05),this.body.modules.clustering=this.clustering,this.canvas._create(),this.setOptions(i),this.setData(e)}function bk(t){for(const e in t)Object.prototype.hasOwnProperty.call(t,e)&&(t[e].redundant=t[e].used,t[e].used=[])}function wk(t){for(const e in t)if(Object.prototype.hasOwnProperty.call(t,e)&&t[e].redundant){for(let i=0;i0?(o=e[t].redundant[0],e[t].redundant.shift()):(o=document.createElementNS("http://www.w3.org/2000/svg",t),i.appendChild(o)):(o=document.createElementNS("http://www.w3.org/2000/svg",t),e[t]={used:[],redundant:[]},i.appendChild(o)),e[t].used.push(o),o}go(yk.prototype),yk.prototype.setOptions=function(t){if(null===t&&(t=void 0),void 0!==t){!0===sr.validate(t,uk)&&console.error("%cErrors have been found in the supplied options object.",nr);if(_s(["locale","locales","clickToUse"],this.options,t),void 0!==t.locale&&(t.locale=function(t,e){try{const[o,n]=e.split(/[-_ /]/,2),s=null!=o?o.toLowerCase():null,r=null!=n?n.toUpperCase():null;if(s&&r){const e=s+"-"+r;if(Object.prototype.hasOwnProperty.call(t,e))return e;var i;console.warn(Hl(i="Unknown variant ".concat(r," of language ")).call(i,s,"."))}if(s){const e=s;if(Object.prototype.hasOwnProperty.call(t,e))return e;console.warn("Unknown language ".concat(s))}return console.warn("Unknown locale ".concat(e,", falling back to English.")),"en"}catch(t){return console.error(t),console.warn("Unexpected error while normalizing locale ".concat(e,", falling back to English.")),"en"}}(t.locales||this.options.locales,t.locale)),t=this.layoutEngine.setOptions(t.layout,t),this.canvas.setOptions(t),this.groups.setOptions(t.groups),this.nodesHandler.setOptions(t.nodes),this.edgesHandler.setOptions(t.edges),this.physics.setOptions(t.physics),this.manipulation.setOptions(t.manipulation,t,this.options),this.interactionHandler.setOptions(t.interaction),this.renderer.setOptions(t.interaction),this.selectionHandler.setOptions(t.interaction),void 0!==t.groups&&this.body.emitter.emit("refreshNodes"),"configure"in t&&(this.configurator||(this.configurator=new er(this,this.body.container,pk,this.canvas.pixelRatio,fk)),this.configurator.setOptions(t.configure)),this.configurator&&!0===this.configurator.options.enabled){const t={nodes:{},edges:{},layout:{},interaction:{},manipulation:{},physics:{},global:{}};Es(t.nodes,this.nodesHandler.options),Es(t.edges,this.edgesHandler.options),Es(t.layout,this.layoutEngine.options),Es(t.interaction,this.selectionHandler.options),Es(t.interaction,this.renderer.options),Es(t.interaction,this.interactionHandler.options),Es(t.manipulation,this.manipulation.options),Es(t.physics,this.physics.options),Es(t.global,this.canvas.options),Es(t.global,this.options),this.configurator.setModuleOptions(t)}void 0!==t.clickToUse?!0===t.clickToUse?void 0===this.activator&&(this.activator=new Js(this.canvas.frame),this.activator.on("change",()=>{this.body.emitter.emit("activate")})):(void 0!==this.activator&&(this.activator.destroy(),delete this.activator),this.body.emitter.emit("activate")):this.body.emitter.emit("activate"),this.canvas.setSize(),this.body.emitter.emit("startSimulation")}},yk.prototype._updateVisibleIndices=function(){const t=this.body.nodes,e=this.body.edges;this.body.nodeIndices=[],this.body.edgeIndices=[];for(const e in t)Object.prototype.hasOwnProperty.call(t,e)&&(this.clustering._isClusteredNode(e)||!1!==t[e].options.hidden||this.body.nodeIndices.push(t[e].id));for(const i in e)if(Object.prototype.hasOwnProperty.call(e,i)){const o=e[i],n=t[o.fromId],s=t[o.toId],r=void 0!==n&&void 0!==s;!this.clustering._isClusteredEdge(i)&&!1===o.options.hidden&&r&&!1===n.options.hidden&&!1===s.options.hidden&&this.body.edgeIndices.push(o.id)}},yk.prototype.bindEventListeners=function(){this.body.emitter.on("_dataChanged",()=>{this.edgesHandler._updateState(),this.body.emitter.emit("_dataUpdated")}),this.body.emitter.on("_dataUpdated",()=>{this.clustering._updateState(),this._updateVisibleIndices(),this._updateValueRange(this.body.nodes),this._updateValueRange(this.body.edges),this.body.emitter.emit("startSimulation"),this.body.emitter.emit("_requestRedraw")})},yk.prototype.setData=function(t){if(this.body.emitter.emit("resetPhysics"),this.body.emitter.emit("_resetData"),this.selectionHandler.unselectAll(),t&&t.dot&&(t.nodes||t.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.');if(this.setOptions(t&&t.options),t&&t.dot){console.warn("The dot property has been deprecated. Please use the static convertDot method to convert DOT into vis.network format and use the normal data format with nodes and edges. This converter is used like this: var data = vis.network.convertDot(dotString);");const e=kd(t.dot);return void this.setData(e)}if(t&&t.gephi){console.warn("The gephi property has been deprecated. Please use the static convertGephi method to convert gephi into vis.network format and use the normal data format with nodes and edges. This converter is used like this: var data = vis.network.convertGephi(gephiJson);");const e=Wd(t.gephi);return void this.setData(e)}this.nodesHandler.setData(t&&t.nodes,!0),this.edgesHandler.setData(t&&t.edges,!0),this.body.emitter.emit("_dataChanged"),this.body.emitter.emit("_dataLoaded"),this.body.emitter.emit("initPhysics")},yk.prototype.destroy=function(){this.body.emitter.emit("destroy"),this.body.emitter.off(),this.off(),delete this.groups,delete this.canvas,delete this.selectionHandler,delete this.interactionHandler,delete this.view,delete this.renderer,delete this.physics,delete this.layoutEngine,delete this.clustering,delete this.manipulation,delete this.nodesHandler,delete this.edgesHandler,delete this.configurator,delete this.images;for(const t in this.body.nodes)Object.prototype.hasOwnProperty.call(this.body.nodes,t)&&delete this.body.nodes[t];for(const t in this.body.edges)Object.prototype.hasOwnProperty.call(this.body.edges,t)&&delete this.body.edges[t];gs(this.body.container)},yk.prototype._updateValueRange=function(t){let e,i,o,n=0;for(e in t)if(Object.prototype.hasOwnProperty.call(t,e)){const s=t[e].getValue();void 0!==s&&(i=void 0===i?s:Math.min(s,i),o=void 0===o?s:Math.max(s,o),n+=s)}if(void 0!==i&&void 0!==o)for(e in t)Object.prototype.hasOwnProperty.call(t,e)&&t[e].setValueRange(i,o,n)},yk.prototype.isActive=function(){return!this.activator||this.activator.active},yk.prototype.setSize=function(){return this.canvas.setSize.apply(this.canvas,arguments)},yk.prototype.canvasToDOM=function(){return this.canvas.canvasToDOM.apply(this.canvas,arguments)},yk.prototype.DOMtoCanvas=function(){return this.canvas.DOMtoCanvas.apply(this.canvas,arguments)},yk.prototype.findNode=function(){return this.clustering.findNode.apply(this.clustering,arguments)},yk.prototype.isCluster=function(){return this.clustering.isCluster.apply(this.clustering,arguments)},yk.prototype.openCluster=function(){return this.clustering.openCluster.apply(this.clustering,arguments)},yk.prototype.cluster=function(){return this.clustering.cluster.apply(this.clustering,arguments)},yk.prototype.getNodesInCluster=function(){return this.clustering.getNodesInCluster.apply(this.clustering,arguments)},yk.prototype.clusterByConnection=function(){return this.clustering.clusterByConnection.apply(this.clustering,arguments)},yk.prototype.clusterByHubsize=function(){return this.clustering.clusterByHubsize.apply(this.clustering,arguments)},yk.prototype.updateClusteredNode=function(){return this.clustering.updateClusteredNode.apply(this.clustering,arguments)},yk.prototype.getClusteredEdges=function(){return this.clustering.getClusteredEdges.apply(this.clustering,arguments)},yk.prototype.getBaseEdge=function(){return this.clustering.getBaseEdge.apply(this.clustering,arguments)},yk.prototype.getBaseEdges=function(){return this.clustering.getBaseEdges.apply(this.clustering,arguments)},yk.prototype.updateEdge=function(){return this.clustering.updateEdge.apply(this.clustering,arguments)},yk.prototype.clusterOutliers=function(){return this.clustering.clusterOutliers.apply(this.clustering,arguments)},yk.prototype.getSeed=function(){return this.layoutEngine.getSeed.apply(this.layoutEngine,arguments)},yk.prototype.enableEditMode=function(){return this.manipulation.enableEditMode.apply(this.manipulation,arguments)},yk.prototype.disableEditMode=function(){return this.manipulation.disableEditMode.apply(this.manipulation,arguments)},yk.prototype.addNodeMode=function(){return this.manipulation.addNodeMode.apply(this.manipulation,arguments)},yk.prototype.editNode=function(){return this.manipulation.editNode.apply(this.manipulation,arguments)},yk.prototype.editNodeMode=function(){return console.warn("Deprecated: Please use editNode instead of editNodeMode."),this.manipulation.editNode.apply(this.manipulation,arguments)},yk.prototype.addEdgeMode=function(){return this.manipulation.addEdgeMode.apply(this.manipulation,arguments)},yk.prototype.editEdgeMode=function(){return this.manipulation.editEdgeMode.apply(this.manipulation,arguments)},yk.prototype.deleteSelected=function(){return this.manipulation.deleteSelected.apply(this.manipulation,arguments)},yk.prototype.getPositions=function(){return this.nodesHandler.getPositions.apply(this.nodesHandler,arguments)},yk.prototype.getPosition=function(){return this.nodesHandler.getPosition.apply(this.nodesHandler,arguments)},yk.prototype.storePositions=function(){return this.nodesHandler.storePositions.apply(this.nodesHandler,arguments)},yk.prototype.moveNode=function(){return this.nodesHandler.moveNode.apply(this.nodesHandler,arguments)},yk.prototype.getBoundingBox=function(){return this.nodesHandler.getBoundingBox.apply(this.nodesHandler,arguments)},yk.prototype.getConnectedNodes=function(t){return void 0!==this.body.nodes[t]?this.nodesHandler.getConnectedNodes.apply(this.nodesHandler,arguments):this.edgesHandler.getConnectedNodes.apply(this.edgesHandler,arguments)},yk.prototype.getConnectedEdges=function(){return this.nodesHandler.getConnectedEdges.apply(this.nodesHandler,arguments)},yk.prototype.startSimulation=function(){return this.physics.startSimulation.apply(this.physics,arguments)},yk.prototype.stopSimulation=function(){return this.physics.stopSimulation.apply(this.physics,arguments)},yk.prototype.stabilize=function(){return this.physics.stabilize.apply(this.physics,arguments)},yk.prototype.getSelection=function(){return this.selectionHandler.getSelection.apply(this.selectionHandler,arguments)},yk.prototype.setSelection=function(){return this.selectionHandler.setSelection.apply(this.selectionHandler,arguments)},yk.prototype.getSelectedNodes=function(){return this.selectionHandler.getSelectedNodeIds.apply(this.selectionHandler,arguments)},yk.prototype.getSelectedEdges=function(){return this.selectionHandler.getSelectedEdgeIds.apply(this.selectionHandler,arguments)},yk.prototype.getNodeAt=function(){const t=this.selectionHandler.getNodeAt.apply(this.selectionHandler,arguments);return void 0!==t&&void 0!==t.id?t.id:t},yk.prototype.getEdgeAt=function(){const t=this.selectionHandler.getEdgeAt.apply(this.selectionHandler,arguments);return void 0!==t&&void 0!==t.id?t.id:t},yk.prototype.selectNodes=function(){return this.selectionHandler.selectNodes.apply(this.selectionHandler,arguments)},yk.prototype.selectEdges=function(){return this.selectionHandler.selectEdges.apply(this.selectionHandler,arguments)},yk.prototype.unselectAll=function(){this.selectionHandler.unselectAll.apply(this.selectionHandler,arguments),this.selectionHandler.commitWithoutEmitting.apply(this.selectionHandler),this.redraw()},yk.prototype.redraw=function(){return this.renderer.redraw.apply(this.renderer,arguments)},yk.prototype.getScale=function(){return this.view.getScale.apply(this.view,arguments)},yk.prototype.getViewPosition=function(){return this.view.getViewPosition.apply(this.view,arguments)},yk.prototype.fit=function(){return this.view.fit.apply(this.view,arguments)},yk.prototype.moveTo=function(){return this.view.moveTo.apply(this.view,arguments)},yk.prototype.focus=function(){return this.view.focus.apply(this.view,arguments)},yk.prototype.releaseNode=function(){return this.view.releaseNode.apply(this.view,arguments)},yk.prototype.getOptionsFromConfigurator=function(){let t={};return this.configurator&&(t=this.configurator.getOptions.apply(this.configurator)),t};var xk=Object.freeze({__proto__:null,cleanupElements:wk,drawBar:function(t,e,i,o,n,s,r,a){if(0!=o){o<0&&(e-=o*=-1);const h=_k("rect",s,r);h.setAttributeNS(null,"x",t-.5*i),h.setAttributeNS(null,"y",e),h.setAttributeNS(null,"width",i),h.setAttributeNS(null,"height",o),h.setAttributeNS(null,"class",n),a&&h.setAttributeNS(null,"style",a)}},drawPoint:function(t,e,i,o,n,s){let r;if("circle"==i.style?(r=_k("circle",o,n),r.setAttributeNS(null,"cx",t),r.setAttributeNS(null,"cy",e),r.setAttributeNS(null,"r",.5*i.size)):(r=_k("rect",o,n),r.setAttributeNS(null,"x",t-.5*i.size),r.setAttributeNS(null,"y",e-.5*i.size),r.setAttributeNS(null,"width",i.size),r.setAttributeNS(null,"height",i.size)),void 0!==i.styles&&r.setAttributeNS(null,"style",i.styles),r.setAttributeNS(null,"class",i.className+" vis-point"),s){const i=_k("text",o,n);s.xOffset&&(t+=s.xOffset),s.yOffset&&(e+=s.yOffset),s.content&&(i.textContent=s.content),s.className&&i.setAttributeNS(null,"class",s.className+" vis-label"),i.setAttributeNS(null,"x",t),i.setAttributeNS(null,"y",e)}return r},getDOMElement:function(t,e,i,o){let n;return Object.prototype.hasOwnProperty.call(e,t)?e[t].redundant.length>0?(n=e[t].redundant[0],e[t].redundant.shift()):(n=document.createElement(t),void 0!==o?i.insertBefore(n,o):i.appendChild(n)):(n=document.createElement(t),e[t]={used:[],redundant:[]},void 0!==o?i.insertBefore(n,o):i.appendChild(n)),e[t].used.push(n),n},getSVGElement:_k,prepareElements:bk,resetElements:function(t){bk(t),wk(t),bk(t)}});const Ek={Images:Vl,dotparser:Fd,gephiParser:Vd,allOptions:gk,convertDot:kd,convertGephi:Wd};var Ok=Object.freeze({__proto__:null,DOMutil:xk,DataSet:ff,DataView:gf,Hammer:ir,Network:yk,Queue:cf,data:Tf,keycharm:Sx,network:Ek,util:wr});t.DOMutil=xk,t.DataSet=ff,t.DataView=gf,t.Hammer=ir,t.Network=yk,t.Queue=cf,t.data=Tf,t.default=Ok,t.keycharm=Sx,t.network=Ek,t.util=wr,Object.defineProperty(t,"__esModule",{value:!0})}); +//# sourceMappingURL=vis-network.min.js.map diff --git a/backend/documentation/js/libs/zepto.min.js b/backend/documentation/js/libs/zepto.min.js new file mode 100644 index 0000000..4821a1c --- /dev/null +++ b/backend/documentation/js/libs/zepto.min.js @@ -0,0 +1,2 @@ +/* Zepto v1.2.0 - zepto event ajax form ie - zeptojs.com/license */ +!function(t,e){"function"==typeof define&&define.amd?define(function(){return e(t)}):e(t)}(this,function(t){var e=function(){function $(t){return null==t?String(t):S[C.call(t)]||"object"}function F(t){return"function"==$(t)}function k(t){return null!=t&&t==t.window}function M(t){return null!=t&&t.nodeType==t.DOCUMENT_NODE}function R(t){return"object"==$(t)}function Z(t){return R(t)&&!k(t)&&Object.getPrototypeOf(t)==Object.prototype}function z(t){var e=!!t&&"length"in t&&t.length,n=r.type(t);return"function"!=n&&!k(t)&&("array"==n||0===e||"number"==typeof e&&e>0&&e-1 in t)}function q(t){return a.call(t,function(t){return null!=t})}function H(t){return t.length>0?r.fn.concat.apply([],t):t}function I(t){return t.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/_/g,"-").toLowerCase()}function V(t){return t in l?l[t]:l[t]=new RegExp("(^|\\s)"+t+"(\\s|$)")}function _(t,e){return"number"!=typeof e||h[I(t)]?e:e+"px"}function B(t){var e,n;return c[t]||(e=f.createElement(t),f.body.appendChild(e),n=getComputedStyle(e,"").getPropertyValue("display"),e.parentNode.removeChild(e),"none"==n&&(n="block"),c[t]=n),c[t]}function U(t){return"children"in t?u.call(t.children):r.map(t.childNodes,function(t){return 1==t.nodeType?t:void 0})}function X(t,e){var n,r=t?t.length:0;for(n=0;r>n;n++)this[n]=t[n];this.length=r,this.selector=e||""}function J(t,r,i){for(n in r)i&&(Z(r[n])||L(r[n]))?(Z(r[n])&&!Z(t[n])&&(t[n]={}),L(r[n])&&!L(t[n])&&(t[n]=[]),J(t[n],r[n],i)):r[n]!==e&&(t[n]=r[n])}function W(t,e){return null==e?r(t):r(t).filter(e)}function Y(t,e,n,r){return F(e)?e.call(t,n,r):e}function G(t,e,n){null==n?t.removeAttribute(e):t.setAttribute(e,n)}function K(t,n){var r=t.className||"",i=r&&r.baseVal!==e;return n===e?i?r.baseVal:r:void(i?r.baseVal=n:t.className=n)}function Q(t){try{return t?"true"==t||("false"==t?!1:"null"==t?null:+t+""==t?+t:/^[\[\{]/.test(t)?r.parseJSON(t):t):t}catch(e){return t}}function tt(t,e){e(t);for(var n=0,r=t.childNodes.length;r>n;n++)tt(t.childNodes[n],e)}var e,n,r,i,O,P,o=[],s=o.concat,a=o.filter,u=o.slice,f=t.document,c={},l={},h={"column-count":1,columns:1,"font-weight":1,"line-height":1,opacity:1,"z-index":1,zoom:1},p=/^\s*<(\w+|!)[^>]*>/,d=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,m=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,g=/^(?:body|html)$/i,v=/([A-Z])/g,y=["val","css","html","text","data","width","height","offset"],x=["after","prepend","before","append"],b=f.createElement("table"),E=f.createElement("tr"),j={tr:f.createElement("tbody"),tbody:b,thead:b,tfoot:b,td:E,th:E,"*":f.createElement("div")},w=/complete|loaded|interactive/,T=/^[\w-]*$/,S={},C=S.toString,N={},A=f.createElement("div"),D={tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},L=Array.isArray||function(t){return t instanceof Array};return N.matches=function(t,e){if(!e||!t||1!==t.nodeType)return!1;var n=t.matches||t.webkitMatchesSelector||t.mozMatchesSelector||t.oMatchesSelector||t.matchesSelector;if(n)return n.call(t,e);var r,i=t.parentNode,o=!i;return o&&(i=A).appendChild(t),r=~N.qsa(i,e).indexOf(t),o&&A.removeChild(t),r},O=function(t){return t.replace(/-+(.)?/g,function(t,e){return e?e.toUpperCase():""})},P=function(t){return a.call(t,function(e,n){return t.indexOf(e)==n})},N.fragment=function(t,n,i){var o,s,a;return d.test(t)&&(o=r(f.createElement(RegExp.$1))),o||(t.replace&&(t=t.replace(m,"<$1>")),n===e&&(n=p.test(t)&&RegExp.$1),n in j||(n="*"),a=j[n],a.innerHTML=""+t,o=r.each(u.call(a.childNodes),function(){a.removeChild(this)})),Z(i)&&(s=r(o),r.each(i,function(t,e){y.indexOf(t)>-1?s[t](e):s.attr(t,e)})),o},N.Z=function(t,e){return new X(t,e)},N.isZ=function(t){return t instanceof N.Z},N.init=function(t,n){var i;if(!t)return N.Z();if("string"==typeof t)if(t=t.trim(),"<"==t[0]&&p.test(t))i=N.fragment(t,RegExp.$1,n),t=null;else{if(n!==e)return r(n).find(t);i=N.qsa(f,t)}else{if(F(t))return r(f).ready(t);if(N.isZ(t))return t;if(L(t))i=q(t);else if(R(t))i=[t],t=null;else if(p.test(t))i=N.fragment(t.trim(),RegExp.$1,n),t=null;else{if(n!==e)return r(n).find(t);i=N.qsa(f,t)}}return N.Z(i,t)},r=function(t,e){return N.init(t,e)},r.extend=function(t){var e,n=u.call(arguments,1);return"boolean"==typeof t&&(e=t,t=n.shift()),n.forEach(function(n){J(t,n,e)}),t},N.qsa=function(t,e){var n,r="#"==e[0],i=!r&&"."==e[0],o=r||i?e.slice(1):e,s=T.test(o);return t.getElementById&&s&&r?(n=t.getElementById(o))?[n]:[]:1!==t.nodeType&&9!==t.nodeType&&11!==t.nodeType?[]:u.call(s&&!r&&t.getElementsByClassName?i?t.getElementsByClassName(o):t.getElementsByTagName(e):t.querySelectorAll(e))},r.contains=f.documentElement.contains?function(t,e){return t!==e&&t.contains(e)}:function(t,e){for(;e&&(e=e.parentNode);)if(e===t)return!0;return!1},r.type=$,r.isFunction=F,r.isWindow=k,r.isArray=L,r.isPlainObject=Z,r.isEmptyObject=function(t){var e;for(e in t)return!1;return!0},r.isNumeric=function(t){var e=Number(t),n=typeof t;return null!=t&&"boolean"!=n&&("string"!=n||t.length)&&!isNaN(e)&&isFinite(e)||!1},r.inArray=function(t,e,n){return o.indexOf.call(e,t,n)},r.camelCase=O,r.trim=function(t){return null==t?"":String.prototype.trim.call(t)},r.uuid=0,r.support={},r.expr={},r.noop=function(){},r.map=function(t,e){var n,i,o,r=[];if(z(t))for(i=0;i=0?t:t+this.length]},toArray:function(){return this.get()},size:function(){return this.length},remove:function(){return this.each(function(){null!=this.parentNode&&this.parentNode.removeChild(this)})},each:function(t){return o.every.call(this,function(e,n){return t.call(e,n,e)!==!1}),this},filter:function(t){return F(t)?this.not(this.not(t)):r(a.call(this,function(e){return N.matches(e,t)}))},add:function(t,e){return r(P(this.concat(r(t,e))))},is:function(t){return this.length>0&&N.matches(this[0],t)},not:function(t){var n=[];if(F(t)&&t.call!==e)this.each(function(e){t.call(this,e)||n.push(this)});else{var i="string"==typeof t?this.filter(t):z(t)&&F(t.item)?u.call(t):r(t);this.forEach(function(t){i.indexOf(t)<0&&n.push(t)})}return r(n)},has:function(t){return this.filter(function(){return R(t)?r.contains(this,t):r(this).find(t).size()})},eq:function(t){return-1===t?this.slice(t):this.slice(t,+t+1)},first:function(){var t=this[0];return t&&!R(t)?t:r(t)},last:function(){var t=this[this.length-1];return t&&!R(t)?t:r(t)},find:function(t){var e,n=this;return e=t?"object"==typeof t?r(t).filter(function(){var t=this;return o.some.call(n,function(e){return r.contains(e,t)})}):1==this.length?r(N.qsa(this[0],t)):this.map(function(){return N.qsa(this,t)}):r()},closest:function(t,e){var n=[],i="object"==typeof t&&r(t);return this.each(function(r,o){for(;o&&!(i?i.indexOf(o)>=0:N.matches(o,t));)o=o!==e&&!M(o)&&o.parentNode;o&&n.indexOf(o)<0&&n.push(o)}),r(n)},parents:function(t){for(var e=[],n=this;n.length>0;)n=r.map(n,function(t){return(t=t.parentNode)&&!M(t)&&e.indexOf(t)<0?(e.push(t),t):void 0});return W(e,t)},parent:function(t){return W(P(this.pluck("parentNode")),t)},children:function(t){return W(this.map(function(){return U(this)}),t)},contents:function(){return this.map(function(){return this.contentDocument||u.call(this.childNodes)})},siblings:function(t){return W(this.map(function(t,e){return a.call(U(e.parentNode),function(t){return t!==e})}),t)},empty:function(){return this.each(function(){this.innerHTML=""})},pluck:function(t){return r.map(this,function(e){return e[t]})},show:function(){return this.each(function(){"none"==this.style.display&&(this.style.display=""),"none"==getComputedStyle(this,"").getPropertyValue("display")&&(this.style.display=B(this.nodeName))})},replaceWith:function(t){return this.before(t).remove()},wrap:function(t){var e=F(t);if(this[0]&&!e)var n=r(t).get(0),i=n.parentNode||this.length>1;return this.each(function(o){r(this).wrapAll(e?t.call(this,o):i?n.cloneNode(!0):n)})},wrapAll:function(t){if(this[0]){r(this[0]).before(t=r(t));for(var e;(e=t.children()).length;)t=e.first();r(t).append(this)}return this},wrapInner:function(t){var e=F(t);return this.each(function(n){var i=r(this),o=i.contents(),s=e?t.call(this,n):t;o.length?o.wrapAll(s):i.append(s)})},unwrap:function(){return this.parent().each(function(){r(this).replaceWith(r(this).children())}),this},clone:function(){return this.map(function(){return this.cloneNode(!0)})},hide:function(){return this.css("display","none")},toggle:function(t){return this.each(function(){var n=r(this);(t===e?"none"==n.css("display"):t)?n.show():n.hide()})},prev:function(t){return r(this.pluck("previousElementSibling")).filter(t||"*")},next:function(t){return r(this.pluck("nextElementSibling")).filter(t||"*")},html:function(t){return 0 in arguments?this.each(function(e){var n=this.innerHTML;r(this).empty().append(Y(this,t,e,n))}):0 in this?this[0].innerHTML:null},text:function(t){return 0 in arguments?this.each(function(e){var n=Y(this,t,e,this.textContent);this.textContent=null==n?"":""+n}):0 in this?this.pluck("textContent").join(""):null},attr:function(t,r){var i;return"string"!=typeof t||1 in arguments?this.each(function(e){if(1===this.nodeType)if(R(t))for(n in t)G(this,n,t[n]);else G(this,t,Y(this,r,e,this.getAttribute(t)))}):0 in this&&1==this[0].nodeType&&null!=(i=this[0].getAttribute(t))?i:e},removeAttr:function(t){return this.each(function(){1===this.nodeType&&t.split(" ").forEach(function(t){G(this,t)},this)})},prop:function(t,e){return t=D[t]||t,1 in arguments?this.each(function(n){this[t]=Y(this,e,n,this[t])}):this[0]&&this[0][t]},removeProp:function(t){return t=D[t]||t,this.each(function(){delete this[t]})},data:function(t,n){var r="data-"+t.replace(v,"-$1").toLowerCase(),i=1 in arguments?this.attr(r,n):this.attr(r);return null!==i?Q(i):e},val:function(t){return 0 in arguments?(null==t&&(t=""),this.each(function(e){this.value=Y(this,t,e,this.value)})):this[0]&&(this[0].multiple?r(this[0]).find("option").filter(function(){return this.selected}).pluck("value"):this[0].value)},offset:function(e){if(e)return this.each(function(t){var n=r(this),i=Y(this,e,t,n.offset()),o=n.offsetParent().offset(),s={top:i.top-o.top,left:i.left-o.left};"static"==n.css("position")&&(s.position="relative"),n.css(s)});if(!this.length)return null;if(f.documentElement!==this[0]&&!r.contains(f.documentElement,this[0]))return{top:0,left:0};var n=this[0].getBoundingClientRect();return{left:n.left+t.pageXOffset,top:n.top+t.pageYOffset,width:Math.round(n.width),height:Math.round(n.height)}},css:function(t,e){if(arguments.length<2){var i=this[0];if("string"==typeof t){if(!i)return;return i.style[O(t)]||getComputedStyle(i,"").getPropertyValue(t)}if(L(t)){if(!i)return;var o={},s=getComputedStyle(i,"");return r.each(t,function(t,e){o[e]=i.style[O(e)]||s.getPropertyValue(e)}),o}}var a="";if("string"==$(t))e||0===e?a=I(t)+":"+_(t,e):this.each(function(){this.style.removeProperty(I(t))});else for(n in t)t[n]||0===t[n]?a+=I(n)+":"+_(n,t[n])+";":this.each(function(){this.style.removeProperty(I(n))});return this.each(function(){this.style.cssText+=";"+a})},index:function(t){return t?this.indexOf(r(t)[0]):this.parent().children().indexOf(this[0])},hasClass:function(t){return t?o.some.call(this,function(t){return this.test(K(t))},V(t)):!1},addClass:function(t){return t?this.each(function(e){if("className"in this){i=[];var n=K(this),o=Y(this,t,e,n);o.split(/\s+/g).forEach(function(t){r(this).hasClass(t)||i.push(t)},this),i.length&&K(this,n+(n?" ":"")+i.join(" "))}}):this},removeClass:function(t){return this.each(function(n){if("className"in this){if(t===e)return K(this,"");i=K(this),Y(this,t,n,i).split(/\s+/g).forEach(function(t){i=i.replace(V(t)," ")}),K(this,i.trim())}})},toggleClass:function(t,n){return t?this.each(function(i){var o=r(this),s=Y(this,t,i,K(this));s.split(/\s+/g).forEach(function(t){(n===e?!o.hasClass(t):n)?o.addClass(t):o.removeClass(t)})}):this},scrollTop:function(t){if(this.length){var n="scrollTop"in this[0];return t===e?n?this[0].scrollTop:this[0].pageYOffset:this.each(n?function(){this.scrollTop=t}:function(){this.scrollTo(this.scrollX,t)})}},scrollLeft:function(t){if(this.length){var n="scrollLeft"in this[0];return t===e?n?this[0].scrollLeft:this[0].pageXOffset:this.each(n?function(){this.scrollLeft=t}:function(){this.scrollTo(t,this.scrollY)})}},position:function(){if(this.length){var t=this[0],e=this.offsetParent(),n=this.offset(),i=g.test(e[0].nodeName)?{top:0,left:0}:e.offset();return n.top-=parseFloat(r(t).css("margin-top"))||0,n.left-=parseFloat(r(t).css("margin-left"))||0,i.top+=parseFloat(r(e[0]).css("border-top-width"))||0,i.left+=parseFloat(r(e[0]).css("border-left-width"))||0,{top:n.top-i.top,left:n.left-i.left}}},offsetParent:function(){return this.map(function(){for(var t=this.offsetParent||f.body;t&&!g.test(t.nodeName)&&"static"==r(t).css("position");)t=t.offsetParent;return t})}},r.fn.detach=r.fn.remove,["width","height"].forEach(function(t){var n=t.replace(/./,function(t){return t[0].toUpperCase()});r.fn[t]=function(i){var o,s=this[0];return i===e?k(s)?s["inner"+n]:M(s)?s.documentElement["scroll"+n]:(o=this.offset())&&o[t]:this.each(function(e){s=r(this),s.css(t,Y(this,i,e,s[t]()))})}}),x.forEach(function(n,i){var o=i%2;r.fn[n]=function(){var n,a,s=r.map(arguments,function(t){var i=[];return n=$(t),"array"==n?(t.forEach(function(t){return t.nodeType!==e?i.push(t):r.zepto.isZ(t)?i=i.concat(t.get()):void(i=i.concat(N.fragment(t)))}),i):"object"==n||null==t?t:N.fragment(t)}),u=this.length>1;return s.length<1?this:this.each(function(e,n){a=o?n:n.parentNode,n=0==i?n.nextSibling:1==i?n.firstChild:2==i?n:null;var c=r.contains(f.documentElement,a);s.forEach(function(e){if(u)e=e.cloneNode(!0);else if(!a)return r(e).remove();a.insertBefore(e,n),c&&tt(e,function(e){if(!(null==e.nodeName||"SCRIPT"!==e.nodeName.toUpperCase()||e.type&&"text/javascript"!==e.type||e.src)){var n=e.ownerDocument?e.ownerDocument.defaultView:t;n.eval.call(n,e.innerHTML)}})})})},r.fn[o?n+"To":"insert"+(i?"Before":"After")]=function(t){return r(t)[n](this),this}}),N.Z.prototype=X.prototype=r.fn,N.uniq=P,N.deserializeValue=Q,r.zepto=N,r}();return t.Zepto=e,void 0===t.$&&(t.$=e),function(e){function h(t){return t._zid||(t._zid=n++)}function p(t,e,n,r){if(e=d(e),e.ns)var i=m(e.ns);return(a[h(t)]||[]).filter(function(t){return t&&(!e.e||t.e==e.e)&&(!e.ns||i.test(t.ns))&&(!n||h(t.fn)===h(n))&&(!r||t.sel==r)})}function d(t){var e=(""+t).split(".");return{e:e[0],ns:e.slice(1).sort().join(" ")}}function m(t){return new RegExp("(?:^| )"+t.replace(" "," .* ?")+"(?: |$)")}function g(t,e){return t.del&&!f&&t.e in c||!!e}function v(t){return l[t]||f&&c[t]||t}function y(t,n,i,o,s,u,f){var c=h(t),p=a[c]||(a[c]=[]);n.split(/\s/).forEach(function(n){if("ready"==n)return e(document).ready(i);var a=d(n);a.fn=i,a.sel=s,a.e in l&&(i=function(t){var n=t.relatedTarget;return!n||n!==this&&!e.contains(this,n)?a.fn.apply(this,arguments):void 0}),a.del=u;var c=u||i;a.proxy=function(e){if(e=T(e),!e.isImmediatePropagationStopped()){e.data=o;var n=c.apply(t,e._args==r?[e]:[e].concat(e._args));return n===!1&&(e.preventDefault(),e.stopPropagation()),n}},a.i=p.length,p.push(a),"addEventListener"in t&&t.addEventListener(v(a.e),a.proxy,g(a,f))})}function x(t,e,n,r,i){var o=h(t);(e||"").split(/\s/).forEach(function(e){p(t,e,n,r).forEach(function(e){delete a[o][e.i],"removeEventListener"in t&&t.removeEventListener(v(e.e),e.proxy,g(e,i))})})}function T(t,n){return(n||!t.isDefaultPrevented)&&(n||(n=t),e.each(w,function(e,r){var i=n[e];t[e]=function(){return this[r]=b,i&&i.apply(n,arguments)},t[r]=E}),t.timeStamp||(t.timeStamp=Date.now()),(n.defaultPrevented!==r?n.defaultPrevented:"returnValue"in n?n.returnValue===!1:n.getPreventDefault&&n.getPreventDefault())&&(t.isDefaultPrevented=b)),t}function S(t){var e,n={originalEvent:t};for(e in t)j.test(e)||t[e]===r||(n[e]=t[e]);return T(n,t)}var r,n=1,i=Array.prototype.slice,o=e.isFunction,s=function(t){return"string"==typeof t},a={},u={},f="onfocusin"in t,c={focus:"focusin",blur:"focusout"},l={mouseenter:"mouseover",mouseleave:"mouseout"};u.click=u.mousedown=u.mouseup=u.mousemove="MouseEvents",e.event={add:y,remove:x},e.proxy=function(t,n){var r=2 in arguments&&i.call(arguments,2);if(o(t)){var a=function(){return t.apply(n,r?r.concat(i.call(arguments)):arguments)};return a._zid=h(t),a}if(s(n))return r?(r.unshift(t[n],t),e.proxy.apply(null,r)):e.proxy(t[n],t);throw new TypeError("expected function")},e.fn.bind=function(t,e,n){return this.on(t,e,n)},e.fn.unbind=function(t,e){return this.off(t,e)},e.fn.one=function(t,e,n,r){return this.on(t,e,n,r,1)};var b=function(){return!0},E=function(){return!1},j=/^([A-Z]|returnValue$|layer[XY]$|webkitMovement[XY]$)/,w={preventDefault:"isDefaultPrevented",stopImmediatePropagation:"isImmediatePropagationStopped",stopPropagation:"isPropagationStopped"};e.fn.delegate=function(t,e,n){return this.on(e,t,n)},e.fn.undelegate=function(t,e,n){return this.off(e,t,n)},e.fn.live=function(t,n){return e(document.body).delegate(this.selector,t,n),this},e.fn.die=function(t,n){return e(document.body).undelegate(this.selector,t,n),this},e.fn.on=function(t,n,a,u,f){var c,l,h=this;return t&&!s(t)?(e.each(t,function(t,e){h.on(t,n,a,e,f)}),h):(s(n)||o(u)||u===!1||(u=a,a=n,n=r),(u===r||a===!1)&&(u=a,a=r),u===!1&&(u=E),h.each(function(r,o){f&&(c=function(t){return x(o,t.type,u),u.apply(this,arguments)}),n&&(l=function(t){var r,s=e(t.target).closest(n,o).get(0);return s&&s!==o?(r=e.extend(S(t),{currentTarget:s,liveFired:o}),(c||u).apply(s,[r].concat(i.call(arguments,1)))):void 0}),y(o,t,u,a,n,l||c)}))},e.fn.off=function(t,n,i){var a=this;return t&&!s(t)?(e.each(t,function(t,e){a.off(t,n,e)}),a):(s(n)||o(i)||i===!1||(i=n,n=r),i===!1&&(i=E),a.each(function(){x(this,t,i,n)}))},e.fn.trigger=function(t,n){return t=s(t)||e.isPlainObject(t)?e.Event(t):T(t),t._args=n,this.each(function(){t.type in c&&"function"==typeof this[t.type]?this[t.type]():"dispatchEvent"in this?this.dispatchEvent(t):e(this).triggerHandler(t,n)})},e.fn.triggerHandler=function(t,n){var r,i;return this.each(function(o,a){r=S(s(t)?e.Event(t):t),r._args=n,r.target=a,e.each(p(a,t.type||t),function(t,e){return i=e.proxy(r),r.isImmediatePropagationStopped()?!1:void 0})}),i},"focusin focusout focus blur load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select keydown keypress keyup error".split(" ").forEach(function(t){e.fn[t]=function(e){return 0 in arguments?this.bind(t,e):this.trigger(t)}}),e.Event=function(t,e){s(t)||(e=t,t=e.type);var n=document.createEvent(u[t]||"Events"),r=!0;if(e)for(var i in e)"bubbles"==i?r=!!e[i]:n[i]=e[i];return n.initEvent(t,r,!0),T(n)}}(e),function(e){function p(t,n,r){var i=e.Event(n);return e(t).trigger(i,r),!i.isDefaultPrevented()}function d(t,e,n,i){return t.global?p(e||r,n,i):void 0}function m(t){t.global&&0===e.active++&&d(t,null,"ajaxStart")}function g(t){t.global&&!--e.active&&d(t,null,"ajaxStop")}function v(t,e){var n=e.context;return e.beforeSend.call(n,t,e)===!1||d(e,n,"ajaxBeforeSend",[t,e])===!1?!1:void d(e,n,"ajaxSend",[t,e])}function y(t,e,n,r){var i=n.context,o="success";n.success.call(i,t,o,e),r&&r.resolveWith(i,[t,o,e]),d(n,i,"ajaxSuccess",[e,n,t]),b(o,e,n)}function x(t,e,n,r,i){var o=r.context;r.error.call(o,n,e,t),i&&i.rejectWith(o,[n,e,t]),d(r,o,"ajaxError",[n,r,t||e]),b(e,n,r)}function b(t,e,n){var r=n.context;n.complete.call(r,e,t),d(n,r,"ajaxComplete",[e,n]),g(n)}function E(t,e,n){if(n.dataFilter==j)return t;var r=n.context;return n.dataFilter.call(r,t,e)}function j(){}function w(t){return t&&(t=t.split(";",2)[0]),t&&(t==c?"html":t==f?"json":a.test(t)?"script":u.test(t)&&"xml")||"text"}function T(t,e){return""==e?t:(t+"&"+e).replace(/[&?]{1,2}/,"?")}function S(t){t.processData&&t.data&&"string"!=e.type(t.data)&&(t.data=e.param(t.data,t.traditional)),!t.data||t.type&&"GET"!=t.type.toUpperCase()&&"jsonp"!=t.dataType||(t.url=T(t.url,t.data),t.data=void 0)}function C(t,n,r,i){return e.isFunction(n)&&(i=r,r=n,n=void 0),e.isFunction(r)||(i=r,r=void 0),{url:t,data:n,success:r,dataType:i}}function O(t,n,r,i){var o,s=e.isArray(n),a=e.isPlainObject(n);e.each(n,function(n,u){o=e.type(u),i&&(n=r?i:i+"["+(a||"object"==o||"array"==o?n:"")+"]"),!i&&s?t.add(u.name,u.value):"array"==o||!r&&"object"==o?O(t,u,r,n):t.add(n,u)})}var i,o,n=+new Date,r=t.document,s=/)<[^<]*)*<\/script>/gi,a=/^(?:text|application)\/javascript/i,u=/^(?:text|application)\/xml/i,f="application/json",c="text/html",l=/^\s*$/,h=r.createElement("a");h.href=t.location.href,e.active=0,e.ajaxJSONP=function(i,o){if(!("type"in i))return e.ajax(i);var c,p,s=i.jsonpCallback,a=(e.isFunction(s)?s():s)||"Zepto"+n++,u=r.createElement("script"),f=t[a],l=function(t){e(u).triggerHandler("error",t||"abort")},h={abort:l};return o&&o.promise(h),e(u).on("load error",function(n,r){clearTimeout(p),e(u).off().remove(),"error"!=n.type&&c?y(c[0],h,i,o):x(null,r||"error",h,i,o),t[a]=f,c&&e.isFunction(f)&&f(c[0]),f=c=void 0}),v(h,i)===!1?(l("abort"),h):(t[a]=function(){c=arguments},u.src=i.url.replace(/\?(.+)=\?/,"?$1="+a),r.head.appendChild(u),i.timeout>0&&(p=setTimeout(function(){l("timeout")},i.timeout)),h)},e.ajaxSettings={type:"GET",beforeSend:j,success:j,error:j,complete:j,context:null,global:!0,xhr:function(){return new t.XMLHttpRequest},accepts:{script:"text/javascript, application/javascript, application/x-javascript",json:f,xml:"application/xml, text/xml",html:c,text:"text/plain"},crossDomain:!1,timeout:0,processData:!0,cache:!0,dataFilter:j},e.ajax=function(n){var u,f,s=e.extend({},n||{}),a=e.Deferred&&e.Deferred();for(i in e.ajaxSettings)void 0===s[i]&&(s[i]=e.ajaxSettings[i]);m(s),s.crossDomain||(u=r.createElement("a"),u.href=s.url,u.href=u.href,s.crossDomain=h.protocol+"//"+h.host!=u.protocol+"//"+u.host),s.url||(s.url=t.location.toString()),(f=s.url.indexOf("#"))>-1&&(s.url=s.url.slice(0,f)),S(s);var c=s.dataType,p=/\?.+=\?/.test(s.url);if(p&&(c="jsonp"),s.cache!==!1&&(n&&n.cache===!0||"script"!=c&&"jsonp"!=c)||(s.url=T(s.url,"_="+Date.now())),"jsonp"==c)return p||(s.url=T(s.url,s.jsonp?s.jsonp+"=?":s.jsonp===!1?"":"callback=?")),e.ajaxJSONP(s,a);var P,d=s.accepts[c],g={},b=function(t,e){g[t.toLowerCase()]=[t,e]},C=/^([\w-]+:)\/\//.test(s.url)?RegExp.$1:t.location.protocol,N=s.xhr(),O=N.setRequestHeader;if(a&&a.promise(N),s.crossDomain||b("X-Requested-With","XMLHttpRequest"),b("Accept",d||"*/*"),(d=s.mimeType||d)&&(d.indexOf(",")>-1&&(d=d.split(",",2)[0]),N.overrideMimeType&&N.overrideMimeType(d)),(s.contentType||s.contentType!==!1&&s.data&&"GET"!=s.type.toUpperCase())&&b("Content-Type",s.contentType||"application/x-www-form-urlencoded"),s.headers)for(o in s.headers)b(o,s.headers[o]);if(N.setRequestHeader=b,N.onreadystatechange=function(){if(4==N.readyState){N.onreadystatechange=j,clearTimeout(P);var t,n=!1;if(N.status>=200&&N.status<300||304==N.status||0==N.status&&"file:"==C){if(c=c||w(s.mimeType||N.getResponseHeader("content-type")),"arraybuffer"==N.responseType||"blob"==N.responseType)t=N.response;else{t=N.responseText;try{t=E(t,c,s),"script"==c?(1,eval)(t):"xml"==c?t=N.responseXML:"json"==c&&(t=l.test(t)?null:e.parseJSON(t))}catch(r){n=r}if(n)return x(n,"parsererror",N,s,a)}y(t,N,s,a)}else x(N.statusText||null,N.status?"error":"abort",N,s,a)}},v(N,s)===!1)return N.abort(),x(null,"abort",N,s,a),N;var A="async"in s?s.async:!0;if(N.open(s.type,s.url,A,s.username,s.password),s.xhrFields)for(o in s.xhrFields)N[o]=s.xhrFields[o];for(o in g)O.apply(N,g[o]);return s.timeout>0&&(P=setTimeout(function(){N.onreadystatechange=j,N.abort(),x(null,"timeout",N,s,a)},s.timeout)),N.send(s.data?s.data:null),N},e.get=function(){return e.ajax(C.apply(null,arguments))},e.post=function(){var t=C.apply(null,arguments);return t.type="POST",e.ajax(t)},e.getJSON=function(){var t=C.apply(null,arguments);return t.dataType="json",e.ajax(t)},e.fn.load=function(t,n,r){if(!this.length)return this;var a,i=this,o=t.split(/\s/),u=C(t,n,r),f=u.success;return o.length>1&&(u.url=o[0],a=o[1]),u.success=function(t){i.html(a?e("
                                                                                                                  ").html(t.replace(s,"")).find(a):t),f&&f.apply(i,arguments)},e.ajax(u),this};var N=encodeURIComponent;e.param=function(t,n){var r=[];return r.add=function(t,n){e.isFunction(n)&&(n=n()),null==n&&(n=""),this.push(N(t)+"="+N(n))},O(r,t,n),r.join("&").replace(/%20/g,"+")}}(e),function(t){t.fn.serializeArray=function(){var e,n,r=[],i=function(t){return t.forEach?t.forEach(i):void r.push({name:e,value:t})};return this[0]&&t.each(this[0].elements,function(r,o){n=o.type,e=o.name,e&&"fieldset"!=o.nodeName.toLowerCase()&&!o.disabled&&"submit"!=n&&"reset"!=n&&"button"!=n&&"file"!=n&&("radio"!=n&&"checkbox"!=n||o.checked)&&i(t(o).val())}),r},t.fn.serialize=function(){var t=[];return this.serializeArray().forEach(function(e){t.push(encodeURIComponent(e.name)+"="+encodeURIComponent(e.value))}),t.join("&")},t.fn.submit=function(e){if(0 in arguments)this.bind("submit",e);else if(this.length){var n=t.Event("submit");this.eq(0).trigger(n),n.isDefaultPrevented()||this.get(0).submit()}return this}}(e),function(){try{getComputedStyle(void 0)}catch(e){var n=getComputedStyle;t.getComputedStyle=function(t,e){try{return n(t,e)}catch(r){return null}}}}(),e}); \ No newline at end of file diff --git a/backend/documentation/js/menu-wc.js b/backend/documentation/js/menu-wc.js new file mode 100644 index 0000000..0bf28e0 --- /dev/null +++ b/backend/documentation/js/menu-wc.js @@ -0,0 +1,389 @@ +'use strict'; + +customElements.define('compodoc-menu', class extends HTMLElement { + constructor() { + super(); + this.isNormalMode = this.getAttribute('mode') === 'normal'; + } + + connectedCallback() { + this.render(this.isNormalMode); + } + + render(isNormalMode) { + let tp = lithtml.html(` + + `); + this.innerHTML = tp.strings; + } +}); \ No newline at end of file diff --git a/backend/documentation/js/menu-wc_es5.js b/backend/documentation/js/menu-wc_es5.js new file mode 100644 index 0000000..321ab5a --- /dev/null +++ b/backend/documentation/js/menu-wc_es5.js @@ -0,0 +1,40 @@ +'use strict'; + +function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } +function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } } +function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } +function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } +function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); } +function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; } +function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); } +function _wrapNativeSuper(t) { var r = "function" == typeof Map ? new Map() : void 0; return _wrapNativeSuper = function _wrapNativeSuper(t) { if (null === t || !_isNativeFunction(t)) return t; if ("function" != typeof t) throw new TypeError("Super expression must either be null or a function"); if (void 0 !== r) { if (r.has(t)) return r.get(t); r.set(t, Wrapper); } function Wrapper() { return _construct(t, arguments, _getPrototypeOf(this).constructor); } return Wrapper.prototype = Object.create(t.prototype, { constructor: { value: Wrapper, enumerable: !1, writable: !0, configurable: !0 } }), _setPrototypeOf(Wrapper, t); }, _wrapNativeSuper(t); } +function _construct(t, e, r) { if (_isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments); var o = [null]; o.push.apply(o, e); var p = new (t.bind.apply(t, o))(); return r && _setPrototypeOf(p, r.prototype), p; } +function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } +function _isNativeFunction(t) { try { return -1 !== Function.toString.call(t).indexOf("[native code]"); } catch (n) { return "function" == typeof t; } } +function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); } +function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); } +customElements.define('compodoc-menu', /*#__PURE__*/function (_HTMLElement) { + function _class() { + var _this; + _classCallCheck(this, _class); + _this = _callSuper(this, _class); + _this.isNormalMode = _this.getAttribute('mode') === 'normal'; + return _this; + } + _inherits(_class, _HTMLElement); + return _createClass(_class, [{ + key: "connectedCallback", + value: function connectedCallback() { + this.render(this.isNormalMode); + } + }, { + key: "render", + value: function render(isNormalMode) { + var tp = lithtml.html("\n \n ")); + this.innerHTML = tp.strings; + } + }]); +}(/*#__PURE__*/_wrapNativeSuper(HTMLElement))); \ No newline at end of file diff --git a/backend/documentation/js/menu.js b/backend/documentation/js/menu.js new file mode 100644 index 0000000..9b6884a --- /dev/null +++ b/backend/documentation/js/menu.js @@ -0,0 +1,269 @@ +document.addEventListener('DOMContentLoaded', function () { + var menuCollapsed = false, + mobileMenu = document.getElementById('mobile-menu'); + + var localContextInUrl = ''; + + if (COMPODOC_CURRENT_PAGE_CONTEXT !== '') { + switch (COMPODOC_CURRENT_PAGE_CONTEXT) { + case 'additional-page': + localContextInUrl = 'additional-documentation'; + break; + case 'class': + localContextInUrl = 'classes'; + break; + case 'miscellaneous-functions': + case 'miscellaneous-variables': + case 'miscellaneous-typealiases': + case 'miscellaneous-enumerations': + localContextInUrl = 'miscellaneous'; + default: + break; + } + } + + function hasClass(el, cls) { + return el.className && new RegExp('(\\s|^)' + cls + '(\\s|$)').test(el.className); + } + + var processLink = function (link, url) { + if (url.charAt(0) !== '.') { + var prefix = ''; + switch (COMPODOC_CURRENT_PAGE_DEPTH) { + case 5: + prefix = '../../../../../'; + break; + case 4: + prefix = '../../../../'; + break; + case 3: + prefix = '../../../'; + break; + case 2: + prefix = '../../'; + break; + case 1: + prefix = '../'; + break; + case 0: + prefix = './'; + break; + } + link.setAttribute('href', prefix + url); + } + }; + + var processMenuLinks = function (links, dontAddClass) { + for (var i = 0; i < links.length; i++) { + var link = links[i]; + var linkHref = link.getAttribute('href'); + if (linkHref) { + var linkHrefFile = linkHref.substr(linkHref.lastIndexOf('/') + 1, linkHref.length); + if ( + linkHrefFile.toLowerCase() === COMPODOC_CURRENT_PAGE_URL.toLowerCase() && + link.innerHTML.indexOf('Getting started') == -1 && + !dontAddClass && + linkHref.toLowerCase().indexOf(localContextInUrl.toLowerCase()) !== -1 + ) { + link.classList.add('active'); + } + processLink(link, linkHref); + } + } + }; + var chapterLinks = document.querySelectorAll('[data-type="chapter-link"]'); + processMenuLinks(chapterLinks); + var entityLinks = document.querySelectorAll('[data-type="entity-link"]'); + processMenuLinks(entityLinks); + var indexLinks = document.querySelectorAll('[data-type="index-link"]'); + processMenuLinks(indexLinks, true); + var compodocLogos = document.querySelectorAll('[data-type="compodoc-logo"]'); + var customLogo = document.querySelectorAll('[data-type="custom-logo"]'); + var processLogos = function (entityLogos) { + for (var i = 0; i < entityLogos.length; i++) { + var entityLogo = entityLogos[i]; + if (entityLogo) { + var url = entityLogo.getAttribute('data-src'); + // Dark mode + logo + let isDarkMode = window.matchMedia('(prefers-color-scheme: dark)').matches; + if (isDarkMode && url.indexOf('compodoc') !== -1) { + url = 'images/compodoc-vectorise-inverted.png'; + } + if (url.charAt(0) !== '.') { + var prefix = ''; + switch (COMPODOC_CURRENT_PAGE_DEPTH) { + case 5: + prefix = '../../../../../'; + break; + case 4: + prefix = '../../../../'; + break; + case 3: + prefix = '../../../'; + break; + case 2: + prefix = '../../'; + break; + case 1: + prefix = '../'; + break; + case 0: + prefix = './'; + break; + } + entityLogo.src = prefix + url; + } + } + } + }; + processLogos(compodocLogos); + processLogos(customLogo); + + setTimeout(function () { + document.getElementById('btn-menu').addEventListener('click', function () { + if (menuCollapsed) { + mobileMenu.style.display = 'none'; + } else { + mobileMenu.style.display = 'block'; + document.getElementsByTagName('body')[0].style['overflow-y'] = 'hidden'; + } + menuCollapsed = !menuCollapsed; + }); + + /** + * Native bootstrap doesn't wait DOMContentLoaded event to start his job, re do it here + */ + var Collapses = document.querySelectorAll('[data-bs-toggle="collapse"]'); + for (var o = 0, cll = Collapses.length; o < cll; o++) { + var collapse = Collapses[o], + options = {}; + options.duration = collapse.getAttribute('data-duration'); + const targetId = collapse.getAttribute('data-bs-target'); + if (targetId !== '') { + options.parent = collapse; + const c = new BSN.Collapse(targetId, options); + } + } + + // collapse menu + var classnameMenuToggler = document.getElementsByClassName('menu-toggler'), + faAngleUpClass = 'ion-ios-arrow-up', + faAngleDownClass = 'ion-ios-arrow-down', + toggleItemMenu = function (e) { + var element = e.target, + parent = element.parentNode, + parentLink, + elementIconChild; + if (parent) { + if (!parent.classList.contains('linked')) { + e.preventDefault(); + } else { + parentLink = parent.parentNode; + if (parentLink && element.classList.contains('link-name')) { + parentLink.trigger('click'); + } + } + elementIconChild = parent.getElementsByClassName(faAngleUpClass)[0]; + if (!elementIconChild) { + elementIconChild = parent.getElementsByClassName(faAngleDownClass)[0]; + } + if (elementIconChild) { + if (elementIconChild.classList.contains(faAngleUpClass)) { + elementIconChild.classList.add(faAngleDownClass); + elementIconChild.classList.remove(faAngleUpClass); + } else { + elementIconChild.classList.add(faAngleUpClass); + elementIconChild.classList.remove(faAngleDownClass); + } + } + } + }; + + for (var i = 0; i < classnameMenuToggler.length; i++) { + classnameMenuToggler[i].addEventListener('click', toggleItemMenu, false); + } + + // Scroll to active link + var menus = document.querySelectorAll('.menu'), + i = 0, + len = menus.length, + activeMenu, + activeMenuClass, + activeLink; + + for (i; i < len; i++) { + if (getComputedStyle(menus[i]).display != 'none') { + activeMenu = menus[i]; + activeMenuClass = activeMenu.getAttribute('class').split(' ')[0]; + } + } + + if (activeMenu) { + activeLink = document.querySelector('.' + activeMenuClass + ' .active'); + if (activeLink) { + var linkType = activeLink.getAttribute('data-type'); + var linkContext = activeLink.getAttribute('data-context'); + if (linkType === 'entity-link') { + var parentLi = activeLink.parentNode, + parentUl, + parentChapterMenu; + if (parentLi) { + parentUl = parentLi.parentNode; + if (parentUl) { + parentChapterMenu = parentUl.parentNode; + if (parentChapterMenu) { + var toggler = parentChapterMenu.querySelector('.menu-toggler'), + elementIconChild = + toggler.getElementsByClassName(faAngleUpClass)[0]; + if (toggler && !elementIconChild) { + toggler.click(); + } + } + } + } + if (linkContext && linkContext === 'sub-entity') { + // Toggle also the master parent menu + var linkContextId = activeLink.getAttribute('data-context-id'); + var toggler = activeMenu.querySelector( + '.chapter.' + linkContextId + ' a .menu-toggler' + ); + if (toggler) { + toggler.click(); + } + if (linkContextId === 'additional') { + var mainToggler = activeMenu.querySelector( + '.chapter.' + linkContextId + ' div.menu-toggler' + ); + if (mainToggler) { + mainToggler.click(); + } + } + } + } else if (linkType === 'chapter-link') { + var linkContextId = activeLink.getAttribute('data-context-id'); + var toggler = activeLink.querySelector('.menu-toggler'); + if (toggler) { + toggler.click(); + } + if (linkContextId === 'additional') { + var mainToggler = activeMenu.querySelector( + '.chapter.' + linkContextId + ' div.menu-toggler' + ); + if (mainToggler) { + mainToggler.click(); + } + } + } + setTimeout(function () { + activeMenu.scrollTop = activeLink.offsetTop; + if ( + activeLink.innerHTML.toLowerCase().indexOf('readme') != -1 || + activeLink.innerHTML.toLowerCase().indexOf('overview') != -1 + ) { + activeMenu.scrollTop = 0; + } + }, 300); + } + } + }, 0); +}); diff --git a/backend/documentation/js/routes.js b/backend/documentation/js/routes.js new file mode 100644 index 0000000..5311cc1 --- /dev/null +++ b/backend/documentation/js/routes.js @@ -0,0 +1,308 @@ +document.addEventListener('DOMContentLoaded', function () { + function htmlEntities(str) { + return String(str) + .replace(/&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"'); + } + + function foundLazyModuleWithPath(path) { + //path is like app/customers/customers.module#CustomersModule + var split = path.split('#'), + lazyModulePath = split[0], + lazyModuleName = split[1]; + return lazyModuleName; + } + + function getBB(selection) { + selection.each(function (d) { + d.bbox = this.getBBox(); + }); + } + + var test_cases, test_case, test_case_num, engine; + + var tree = ROUTES_INDEX; + + function cleanStringChildren(obj) { + for (var property in obj) { + if (obj.hasOwnProperty(property)) { + if (property === 'children' && typeof obj[property] === 'object') { + for (var i = obj[property].length - 1; i >= 0; i--) { + if (typeof obj[property][i] === 'string') { + obj[property].splice(i, 1); + } + } + } + if (typeof obj[property] === 'object') { + cleanStringChildren(obj[property]); + } + } + } + } + cleanStringChildren(tree); + + engine = d3.layout.tree().setNodeSizes(true); + + engine.spacing(function (a, b) { + return a.parent == b.parent ? 0 : engine.rootXSize(); + }); + + engine.nodeSize(function (d) { + return [ + document.getElementById(d.id).getBBox()['height'] + 70, + document.getElementById(d.id).getBBox()['width'] + 30 + ]; + }); + + var nodes = d3.layout.hierarchy()(tree), + svg = d3.select('#body-routes').append('svg'), + svg_g = svg.append('g'), + svg_p = svg.append('g'), + last_id = 0, + node = svg_g + .selectAll('.node') + .data(nodes, function (d) { + return d.id || (d.id = ++last_id); + }) + .enter() + .append('g') + .attr('class', 'node'); + + svg.attr('id', 'main'); + + svg_g.attr('transform', 'translate(20,0)').attr('id', 'main-group'); + + svg_p.attr('transform', 'translate(20,0)').attr('id', 'paths'); + + var infos_group = node.append('g').attr({ + id: function (d) { + return d.id; + }, + dx: 0, + dy: 0 + }); + + //Node icon + infos_group + .append('text') + .attr('font-family', 'Ionicons') + .attr('y', 5) + .attr('x', 0) + .attr('class', function (d) { + return d.children || d._children ? 'icon has-children' : 'icon'; + }) + .attr('font-size', function (d) { + return '15px'; + }) + .text(function (d) { + return '\uf183'; + }); + + //node infos + infos_group + .append('svg:text') + .attr('x', function (d) { + return 0; + }) + .attr('y', function (d) { + return 10; + }) + .attr('dy', '.35em') + .attr('class', 'text') + .attr('text-anchor', function (d) { + return 'start'; + }) + .html(function (d) { + // if kind === module name + module + // if kind === component component + path + var _name = ''; + if (d.kind === 'module') { + if (d.module) { + _name += + '' + + d.module + + ''; + if (d.name) { + _name += '' + d.name + ''; + } + } else { + _name += '' + htmlEntities(d.name) + ''; + } + } else if (d.kind === 'component') { + _name += '' + (d.path || d.name) + ''; + if (d.component) { + _name += + '' + + d.component + + ''; + } else if (d.name && d.name.includes('Component')) { + _name += + '' + + d.name + + ''; + } + if (d.outlet) { + _name += '<outlet> : ' + d.outlet + ''; + } + } else { + _name += '/' + (d.path || d.name) + ''; + if (d.component) { + _name += + '' + + d.component + + ''; + } + if (d.loadChildren) { + var moduleName = foundLazyModuleWithPath(d.loadChildren); + _name += + '' + + moduleName + + ''; + } + if (d.canActivate) { + _name += '✓ canActivate'; + } + if (d.canDeactivate) { + _name += '×  canDeactivate'; + } + if (d.canActivateChild) { + _name += '✓ canActivateChild'; + } + if (d.canLoad) { + _name += '→ canLoad'; + } + if (d.redirectTo) { + _name += '→ ' + d.redirectTo + ''; + } + if (d.pathMatch) { + _name += '> ' + d.pathMatch + ''; + } + if (d.outlet) { + _name += '<outlet> : ' + d.outlet + ''; + } + } + return _name; + }) + .call(getBB); + + // + // Node lazy loaded ? + // + infos_group + .append('svg:text') + .attr('y', function (d) { + return 45; + }) + .attr('x', function (d) { + return -18; + }) + .attr('font-family', 'Ionicons') + .attr('class', function (d) { + return 'icon'; + }) + .attr('font-size', function (d) { + return '15px'; + }) + .text(function (d) { + var _text = ''; + if (d.loadChildren || d.loadComponent) { + _text = '\uf4c1'; + } + if (d.guarded) { + _text = '\uf1b0'; + } + return _text; + }); + + //Node text background + infos_group + .insert('rect', 'text') + .attr('width', function (d) { + return d.bbox.width; + }) + .attr('height', function (d) { + return d.bbox.height; + }) + .attr('y', function (d) { + return 15; + }) + .style('fill', 'white') + .style('fill-opacity', 0.75); + + nodes = engine.nodes(tree); + + function node_extents(n) { + return [n.x - n.x_size / 2, n.y, n.x + n.x_size / 2, n.y + n.y_size]; + } + var root_extents = node_extents(nodes[0]); + var xmin = root_extents[0], + ymin = root_extents[1], + xmax = root_extents[2], + ymax = root_extents[3], + area_sum = (xmax - xmin) * (ymax - ymin), + x_size_min = nodes[0].x_size, + y_size_min = nodes[0].y_size; + + nodes.slice(1).forEach(function (n) { + var ne = node_extents(n); + xmin = Math.min(xmin, ne[0]); + ymin = Math.min(ymin, ne[1]); + xmax = Math.max(xmax, ne[2]); + ymax = Math.max(ymax, ne[3]); + area_sum += (ne[2] - ne[0]) * (ne[3] - ne[1]); + x_size_min = Math.min(x_size_min, n.x_size); + y_size_min = Math.min(y_size_min, n.y_size); + }); + + var area_ave = area_sum / nodes.length; + var scale = 80 / Math.sqrt(area_ave); + + function svg_x(node_y) { + return node_y - ymin; + } + + function svg_y(node_x) { + return (node_x - xmin) * scale; + } + + var nodebox_right_margin = Math.min(x_size_min * scale, 10); + var nodebox_vertical_margin = Math.min(y_size_min * scale, 3); + + node.attr('transform', function (d) { + return 'translate(' + svg_x(d.y) + ',' + svg_y(d.x) + ')'; + }); + + var diagonal = d3.svg.diagonal().projection(function (d) { + return [svg_x(d.y), svg_y(d.x)]; + }); + + var links = engine.links(nodes); + var links = svg_p + .selectAll('.link') + .data(links) + .enter() + .append('path') + .attr('class', 'link') + .attr('d', diagonal); + + var _svg = document.getElementById('main'), + main_g = _svg.childNodes[0]; + + _svg.removeChild(main_g); + _svg.appendChild(main_g); + + svg.attr({ + width: document.getElementById('main-group').getBBox()['width'] + 30, + height: document.getElementById('main-group').getBBox()['height'] + 50 + }); +}); diff --git a/backend/documentation/js/routes/routes_index.js b/backend/documentation/js/routes/routes_index.js new file mode 100644 index 0000000..590168a --- /dev/null +++ b/backend/documentation/js/routes/routes_index.js @@ -0,0 +1 @@ +var ROUTES_INDEX = {"name":"","kind":"module","className":"TemplatePlaygroundModule","children":[]} diff --git a/backend/documentation/js/search/lunr.min.js b/backend/documentation/js/search/lunr.min.js new file mode 100644 index 0000000..cdc94cd --- /dev/null +++ b/backend/documentation/js/search/lunr.min.js @@ -0,0 +1,6 @@ +/** + * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9 + * Copyright (C) 2020 Oliver Nightingale + * @license MIT + */ +!function(){var e=function(t){var r=new e.Builder;return r.pipeline.add(e.trimmer,e.stopWordFilter,e.stemmer),r.searchPipeline.add(e.stemmer),t.call(r,r),r.build()};e.version="2.3.9",e.utils={},e.utils.warn=function(e){return function(t){e.console&&console.warn&&console.warn(t)}}(this),e.utils.asString=function(e){return void 0===e||null===e?"":e.toString()},e.utils.clone=function(e){if(null===e||void 0===e)return e;for(var t=Object.create(null),r=Object.keys(e),i=0;i0){var c=e.utils.clone(r)||{};c.position=[a,l],c.index=s.length,s.push(new e.Token(i.slice(a,o),c))}a=o+1}}return s},e.tokenizer.separator=/[\s\-]+/,e.Pipeline=function(){this._stack=[]},e.Pipeline.registeredFunctions=Object.create(null),e.Pipeline.registerFunction=function(t,r){r in this.registeredFunctions&&e.utils.warn("Overwriting existing registered function: "+r),t.label=r,e.Pipeline.registeredFunctions[t.label]=t},e.Pipeline.warnIfFunctionNotRegistered=function(t){var r=t.label&&t.label in this.registeredFunctions;r||e.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",t)},e.Pipeline.load=function(t){var r=new e.Pipeline;return t.forEach(function(t){var i=e.Pipeline.registeredFunctions[t];if(!i)throw new Error("Cannot load unregistered function: "+t);r.add(i)}),r},e.Pipeline.prototype.add=function(){var t=Array.prototype.slice.call(arguments);t.forEach(function(t){e.Pipeline.warnIfFunctionNotRegistered(t),this._stack.push(t)},this)},e.Pipeline.prototype.after=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");i+=1,this._stack.splice(i,0,r)},e.Pipeline.prototype.before=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");this._stack.splice(i,0,r)},e.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);t!=-1&&this._stack.splice(t,1)},e.Pipeline.prototype.run=function(e){for(var t=this._stack.length,r=0;r1&&(se&&(r=n),s!=e);)i=r-t,n=t+Math.floor(i/2),s=this.elements[2*n];return s==e?2*n:s>e?2*n:sa?l+=2:o==a&&(t+=r[u+1]*i[l+1],u+=2,l+=2);return t},e.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},e.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,r=0;t0){var o,a=s.str.charAt(0);a in s.node.edges?o=s.node.edges[a]:(o=new e.TokenSet,s.node.edges[a]=o),1==s.str.length&&(o["final"]=!0),n.push({node:o,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(0!=s.editsRemaining){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new e.TokenSet;s.node.edges["*"]=u}if(0==s.str.length&&(u["final"]=!0),n.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&n.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),1==s.str.length&&(s.node["final"]=!0),s.str.length>=1){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new e.TokenSet;s.node.edges["*"]=l}1==s.str.length&&(l["final"]=!0),n.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var c,h=s.str.charAt(0),d=s.str.charAt(1);d in s.node.edges?c=s.node.edges[d]:(c=new e.TokenSet,s.node.edges[d]=c),1==s.str.length&&(c["final"]=!0),n.push({node:c,editsRemaining:s.editsRemaining-1,str:h+s.str.slice(2)})}}}return i},e.TokenSet.fromString=function(t){for(var r=new e.TokenSet,i=r,n=0,s=t.length;n=e;t--){var r=this.uncheckedNodes[t],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r["char"]]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}},e.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},e.Index.prototype.search=function(t){return this.query(function(r){var i=new e.QueryParser(t,r);i.parse()})},e.Index.prototype.query=function(t){for(var r=new e.Query(this.fields),i=Object.create(null),n=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),u=0;u1?this._b=1:this._b=e},e.Builder.prototype.k1=function(e){this._k1=e},e.Builder.prototype.add=function(t,r){var i=t[this._ref],n=Object.keys(this._fields);this._documents[i]=r||{},this.documentCount+=1;for(var s=0;s=this.length)return e.QueryLexer.EOS;var t=this.str.charAt(this.pos);return this.pos+=1,t},e.QueryLexer.prototype.width=function(){return this.pos-this.start},e.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},e.QueryLexer.prototype.backup=function(){this.pos-=1},e.QueryLexer.prototype.acceptDigitRun=function(){var t,r;do t=this.next(),r=t.charCodeAt(0);while(r>47&&r<58);t!=e.QueryLexer.EOS&&this.backup()},e.QueryLexer.prototype.more=function(){return this.pos1&&(t.backup(),t.emit(e.QueryLexer.TERM)),t.ignore(),t.more())return e.QueryLexer.lexText},e.QueryLexer.lexEditDistance=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.EDIT_DISTANCE),e.QueryLexer.lexText},e.QueryLexer.lexBoost=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.BOOST),e.QueryLexer.lexText},e.QueryLexer.lexEOS=function(t){t.width()>0&&t.emit(e.QueryLexer.TERM)},e.QueryLexer.termSeparator=e.tokenizer.separator,e.QueryLexer.lexText=function(t){for(;;){var r=t.next();if(r==e.QueryLexer.EOS)return e.QueryLexer.lexEOS;if(92!=r.charCodeAt(0)){if(":"==r)return e.QueryLexer.lexField;if("~"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexEditDistance;if("^"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexBoost;if("+"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if("-"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if(r.match(e.QueryLexer.termSeparator))return e.QueryLexer.lexTerm}else t.escapeCharacter()}},e.QueryParser=function(t,r){this.lexer=new e.QueryLexer(t),this.query=r,this.currentClause={},this.lexemeIdx=0},e.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var t=e.QueryParser.parseClause;t;)t=t(this);return this.query},e.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},e.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},e.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},e.QueryParser.parseClause=function(t){var r=t.peekLexeme();if(void 0!=r)switch(r.type){case e.QueryLexer.PRESENCE:return e.QueryParser.parsePresence;case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(i+=" with value '"+r.str+"'"),new e.QueryParseError(i,r.start,r.end)}},e.QueryParser.parsePresence=function(t){var r=t.consumeLexeme();if(void 0!=r){switch(r.str){case"-":t.currentClause.presence=e.Query.presence.PROHIBITED;break;case"+":t.currentClause.presence=e.Query.presence.REQUIRED;break;default:var i="unrecognised presence operator'"+r.str+"'";throw new e.QueryParseError(i,r.start,r.end)}var n=t.peekLexeme();if(void 0==n){var i="expecting term or field, found nothing";throw new e.QueryParseError(i,r.start,r.end)}switch(n.type){case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expecting term or field, found '"+n.type+"'";throw new e.QueryParseError(i,n.start,n.end)}}},e.QueryParser.parseField=function(t){var r=t.consumeLexeme();if(void 0!=r){if(t.query.allFields.indexOf(r.str)==-1){var i=t.query.allFields.map(function(e){return"'"+e+"'"}).join(", "),n="unrecognised field '"+r.str+"', possible fields: "+i;throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.fields=[r.str];var s=t.peekLexeme();if(void 0==s){var n="expecting term, found nothing";throw new e.QueryParseError(n,r.start,r.end)}switch(s.type){case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var n="expecting term, found '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseTerm=function(t){var r=t.consumeLexeme();if(void 0!=r){t.currentClause.term=r.str.toLowerCase(),r.str.indexOf("*")!=-1&&(t.currentClause.usePipeline=!1);var i=t.peekLexeme();if(void 0==i)return void t.nextClause();switch(i.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+i.type+"'";throw new e.QueryParseError(n,i.start,i.end)}}},e.QueryParser.parseEditDistance=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="edit distance must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.editDistance=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseBoost=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="boost must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.boost=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.lunr=t()}(this,function(){return e})}(); diff --git a/backend/documentation/js/search/search-lunr.js b/backend/documentation/js/search/search-lunr.js new file mode 100644 index 0000000..24f483b --- /dev/null +++ b/backend/documentation/js/search/search-lunr.js @@ -0,0 +1,65 @@ +(function (compodoc) { + function LunrSearchEngine() { + this.index = undefined; + this.store = {}; + this.name = 'LunrSearchEngine'; + } + + LunrSearchEngine.prototype.init = function () { + var that = this, + d = new promise.Promise(); + + that.index = lunr.Index.load(COMPODOC_SEARCH_INDEX.index); + that.store = COMPODOC_SEARCH_INDEX.store; + d.done(); + + return d; + }; + + LunrSearchEngine.prototype.search = function (q, offset, length) { + var that = this, + results = [], + d = new promise.Promise(); + + if (this.index) { + results = this.index.search('*' + q + '*').map(function (result) { + var doc = that.store[result.ref]; + + return { + title: doc.title, + url: doc.url, + body: doc.summary || doc.body + }; + }); + } + + d.done({ + query: q, + results: length === 0 ? results : results.slice(0, length), + count: results.length + }); + + return d; + }; + + compodoc.addEventListener(compodoc.EVENTS.READY, function (event) { + var engine = new LunrSearchEngine(), + initialized = false; + + function query(q, offset, length) { + if (!initialized) throw new Error('Search has not been initialized'); + return engine.search(q, offset, length); + } + + compodoc.search = { + query: query + }; + + engine.init().then(function () { + initialized = true; + compodoc.dispatchEvent({ + type: compodoc.EVENTS.SEARCH_READY + }); + }); + }); +})(compodoc); diff --git a/backend/documentation/js/search/search.js b/backend/documentation/js/search/search.js new file mode 100644 index 0000000..5851086 --- /dev/null +++ b/backend/documentation/js/search/search.js @@ -0,0 +1,273 @@ +(function (compodoc) { + var usePushState = typeof history.pushState !== 'undefined', + // DOM Elements + $body = document.querySelector('body'), + $searchResults, + $searchInput, + $searchList, + $searchTitle, + $searchResultsCount, + $searchQuery, + $mainContainer, + $xsMenu; + + // Throttle search + function throttle(fn, wait) { + var timeout; + + return function () { + var ctx = this, + args = arguments; + if (!timeout) { + timeout = setTimeout(function () { + timeout = undefined; + fn.apply(ctx, args); + }, wait); + } + }; + } + + function displayResults(res) { + var noResults = res.count == 0; + var groups = {}; + if (noResults) { + $searchResults.classList.add('no-results'); + } else { + $searchResults.classList.remove('no-results'); + } + + // Clear old results + $searchList.innerText = ''; + + // Display title for research + $searchResultsCount.innerText = res.count; + $searchQuery.innerText = res.query; + + // Group result by context + res.results.forEach(function (res) { + var context = res.title.split(' - ')[0]; + if (typeof groups[context] === 'undefined') { + groups[context] = { + results: [res] + }; + } else { + groups[context].results.push(res); + } + }); + + var sortedGroups = Object.keys(groups).sort(); + + for (var i = 0; i < sortedGroups.length; i++) { + var property = sortedGroups[i]; + + var $li = document.createElement('li'); + $li.classList.add('search-results-group'); + var finalPropertyLabel = ''; + var propertyLabels = property.split('-'); + + if ( + propertyLabels.length === 2 && + propertyLabels[0] !== 'miscellaneous' && + propertyLabels[0] !== 'additional' + ) { + finalPropertyLabel = + propertyLabels[0].charAt(0).toUpperCase() + + propertyLabels[0].substring(1) + + ' - ' + + propertyLabels[1].charAt(0).toUpperCase() + + propertyLabels[1].substring(1) + + ' (' + + groups[property].results.length + + ')'; + } else if (propertyLabels[0] === 'additional') { + finalPropertyLabel = + 'Additional pages' + ' (' + groups[property].results.length + ')'; + } else { + finalPropertyLabel = + propertyLabels[0].charAt(0).toUpperCase() + + propertyLabels[0].substring(1) + + ' (' + + groups[property].results.length + + ')'; + } + var $groupTitle = document.createElement('h3'); + $groupTitle.innerText = finalPropertyLabel; + $li.appendChild($groupTitle); + + var $ulResults = document.createElement('ul'); + $ulResults.classList.add('search-results-list'); + + groups[property].results.forEach(function (res) { + var link = ''; + var $liResult = document.createElement('li'); + $liResult.classList.add('search-results-item'); + switch (COMPODOC_CURRENT_PAGE_DEPTH) { + case 0: + link = './'; + break; + case 1: + case 2: + case 3: + case 4: + case 5: + link = '../'.repeat(COMPODOC_CURRENT_PAGE_DEPTH); + break; + } + var finalResLabel = + res.title.split(' - ')[1].charAt(0).toUpperCase() + + res.title.split(' - ')[1].substring(1); + var $link = document.createElement('a'); + $link.innerText = finalResLabel; + $link.href = link + res.url; + $liResult.appendChild($link); + $ulResults.appendChild($liResult); + }); + $li.appendChild($ulResults); + + $searchList.appendChild($li); + } + } + + function launchSearch(q) { + $body.classList.add('with-search'); + + if ($xsMenu.style.display === 'block') { + $mainContainer.style.height = 'calc(100% - 100px)'; + $mainContainer.style.marginTop = '100px'; + } + + throttle( + compodoc.search.query(q, 0, MAX_SEARCH_RESULTS).then(function (results) { + displayResults(results); + }), + 1000 + ); + } + + function closeSearch() { + $body.classList.remove('with-search'); + if ($xsMenu.style.display === 'block') { + $mainContainer.style.height = 'calc(100% - 50px)'; + } + } + + function bindMenuButton() { + document.getElementById('btn-menu').addEventListener('click', function () { + if ($xsMenu.style.display === 'none') { + $body.classList.remove('with-search'); + $mainContainer.style.height = 'calc(100% - 50px)'; + } + $searchInputs.forEach((item, index) => { + item.value = ''; + }); + }); + } + + function bindSearch() { + // Bind DOM + $searchInputs = document.querySelectorAll('#book-search-input input'); + + $searchResults = document.querySelector('.search-results'); + $searchList = $searchResults.querySelector('.search-results-list'); + $searchTitle = $searchResults.querySelector('.search-results-title'); + $searchResultsCount = $searchTitle.querySelector('.search-results-count'); + $searchQuery = $searchTitle.querySelector('.search-query'); + $mainContainer = document.querySelector('.container-fluid'); + $xsMenu = document.querySelector('.xs-menu'); + + // Launch query based on input content + function handleUpdate(item) { + var q = item.value; + + if (q.length == 0) { + closeSearch(); + window.location.href = window.location.href.replace(window.location.search, ''); + } else { + launchSearch(q); + } + } + + // Detect true content change in search input + var propertyChangeUnbound = false; + + $searchInputs.forEach((item, index) => { + // HTML5 (IE9 & others) + item.addEventListener('input', function (e) { + handleUpdate(this); + }); + // Workaround for IE < 9 + item.addEventListener('propertychange', function (e) { + if (e.originalEvent.propertyName == 'value') { + handleUpdate(this); + } + }); + // Push to history on blur + item.addEventListener('blur', function (e) { + // Update history state + if (usePushState) { + var uri = updateQueryString('q', this.value); + if (this.value !== '') { + history.pushState({ path: uri }, null, uri); + } + } + }); + }); + } + + function launchSearchFromQueryString() { + var q = getParameterByName('q'); + if (q && q.length > 0) { + // Update search inputs + $searchInputs.forEach((item, index) => { + item.value = q; + }); + // Launch search + launchSearch(q); + } + } + + compodoc.addEventListener(compodoc.EVENTS.SEARCH_READY, function (event) { + bindSearch(); + + bindMenuButton(); + + launchSearchFromQueryString(); + }); + + function getParameterByName(name) { + var url = window.location.href; + name = name.replace(/[\[\]]/g, '\\$&'); + var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)', 'i'), + results = regex.exec(url); + if (!results) return null; + if (!results[2]) return ''; + return decodeURIComponent(results[2].replace(/\+/g, ' ')); + } + + function updateQueryString(key, value) { + value = encodeURIComponent(value); + + var url = window.location.href; + var re = new RegExp('([?&])' + key + '=.*?(&|#|$)(.*)', 'gi'), + hash; + + if (re.test(url)) { + if (typeof value !== 'undefined' && value !== null) + return url.replace(re, '$1' + key + '=' + value + '$2$3'); + else { + hash = url.split('#'); + url = hash[0].replace(re, '$1$3').replace(/(&|\?)$/, ''); + if (typeof hash[1] !== 'undefined' && hash[1] !== null) url += '#' + hash[1]; + return url; + } + } else { + if (typeof value !== 'undefined' && value !== null) { + var separator = url.indexOf('?') !== -1 ? '&' : '?'; + hash = url.split('#'); + url = hash[0] + separator + key + '=' + value; + if (typeof hash[1] !== 'undefined' && hash[1] !== null) url += '#' + hash[1]; + return url; + } else return url; + } + } +})(compodoc); diff --git a/backend/documentation/js/search/search_index.js b/backend/documentation/js/search/search_index.js new file mode 100644 index 0000000..4b810d4 --- /dev/null +++ b/backend/documentation/js/search/search_index.js @@ -0,0 +1,4 @@ +var COMPODOC_SEARCH_INDEX = { + "index": {"version":"2.3.9","fields":["title","body"],"fieldVectors":[["title/classes/AddWorkspaceMemberInput.html",[0,0.255,1,0.62]],["body/classes/AddWorkspaceMemberInput.html",[0,0.529,1,0.882,2,0.479,3,0.157,4,0.142,5,0.142,6,0.479,7,0.172,8,0.599,9,0.856,10,0.958,11,0.961,12,1.094,13,0.503,14,0.016,15,1.31,16,0.51,17,3.287,18,0.808,19,3.287,20,3.287,21,0.386,22,0.571,23,0.753,24,0.721,25,0.787,26,0.753,27,1.194,28,0.74,29,1.037,30,0.753,31,1.114,32,0.753,33,1.049,34,0.935,35,0.753,36,1.114,37,0.753,38,0.961,39,0.753,40,1.16,41,0.753,42,0.58,43,0.753,44,0.961,45,0.658,46,0.978,47,0.965,48,0.658,49,0.923,50,0.753,51,0.753,52,0.958,53,0.689,54,0.689,55,0.753,56,0.844,57,0.571,58,0.893,59,0.571,60,0.965,61,0.821,62,0.547,63,0.571,64,0.787,65,0.501,66,0.571,67,0.479,68,0.821,69,0.882,70,0.735,71,0.524,72,0.571,73,0.658,74,0.479,75,0.524,76,0.524,77,1.413,78,0.524,79,0.571,80,1.079,81,0.571,82,0.571,83,0.571,84,0.571,85,0.571,86,0.571,87,0.571,88,0.571,89,0.571,90,0.571,91,0.571,92,0.571,93,1.022,94,0.753,95,0.547,96,0.571,97,0.571,98,0.571,99,0.981,100,0.571,101,0.571,102,0.571,103,0.571,104,0.571,105,0.571,106,0.571,107,0.571,108,0.571,109,0.571,110,0.571,111,0.571,112,0.571,113,0.753,114,0.753,115,0.571,116,0.571,117,0.571,118,0.524,119,0.524,120,0.524,121,0.547,122,1.003,123,0.524,124,0.457,125,0.547,126,0.571,127,0.882,128,0.571,129,0.571,130,0.571,131,0.571,132,0.635,133,0.524,134,0.514,135,0.524,136,0.628,137,0.689,138,0.599,139,0.805,140,0.571,141,0.628,142,0.479,143,0.628,144,0.501,145,0.547,146,0.547,147,0.571,148,0.571,149,0.479,150,0.547,151,0.457,152,0.009,153,0.009]],["title/controllers/AppController.html",[154,2.778,155,2.778]],["body/controllers/AppController.html",[0,0.393,3,0.285,4,0.258,5,0.302,7,0.313,14,0.016,16,0.552,18,0.683,21,0.285,28,0.618,152,0.013,153,0.013,154,4.995,155,4.995,156,5.195,157,5.195,158,2.854,159,6.628,160,4.275,161,5.995,162,2.443,163,3.699,164,3.279,165,3.699,166,3.699,167,5.195,168,2.05,169,2.443,170,4.579,171,5.195,172,3.96,173,4.275,174,2.338,175,5.995]],["title/modules/AppModule.html",[176,1.587,177,2.778]],["body/modules/AppModule.html",[0,0.423,3,0.25,4,0.226,5,0.279,6,0.764,14,0.016,21,0.25,28,0.541,152,0.012,153,0.012,155,4.997,156,5.603,163,3.237,164,2.869,165,3.237,166,3.237,167,4.546,168,2.356,169,2.138,170,4.721,171,4.546,176,2.856,177,5.757,178,2.58,179,2.341,180,3.041,181,3.041,182,2.717,183,4.062,184,3.041,185,4.546,186,4.546,187,4.546,188,5.055,189,4.721,190,4.721,191,5.055,192,3.748,193,2.58,194,2.869,195,5.246,196,4.61,197,5.246,198,2.455,199,3.237,200,5.246,201,6.466,202,5.246,203,4.546,204,5.246,205,3.041,206,5.246,207,5.246,208,3.466,209,5.246,210,3.041,211,5.246,212,4.546,213,3.748,214,5.246,215,5.246,216,5.246,217,5.246,218,6.466,219,5.246,220,5.246,221,2.58,222,3.041,223,6.466,224,5.035,225,5.246,226,4.546,227,5.246]],["title/injectables/AppService.html",[170,2.404,228,1.396]],["body/injectables/AppService.html",[0,0.404,3,0.294,4,0.266,5,0.266,7,0.322,14,0.015,16,0.568,18,0.694,21,0.294,152,0.014,153,0.014,158,2.901,159,6.687,162,2.512,168,1.804,169,2.512,170,4.393,174,2.404,228,2.551,229,3.372,230,5.342,231,6.165,232,6.165,233,6.165]],["title/classes/Attachment.html",[0,0.255,71,0.62]],["body/classes/Attachment.html",[0,0.529,1,0.751,2,0.477,3,0.156,4,0.141,5,0.141,6,0.477,7,0.171,8,0.597,10,0.892,11,0.569,12,1.048,13,0.512,14,0.016,15,1.309,16,0.557,18,0.808,21,0.386,22,0.569,23,0.751,24,0.719,25,0.785,26,0.751,27,1.193,28,0.739,29,1.037,30,0.751,31,1.113,32,0.751,33,1.048,34,0.934,35,0.751,36,1.113,37,0.751,38,0.96,39,0.751,40,1.222,41,0.751,42,0.579,43,0.751,44,0.96,45,0.657,46,0.977,47,0.963,48,0.657,49,0.922,50,0.751,51,0.751,52,0.957,53,0.687,54,0.687,55,0.751,56,0.843,57,0.569,58,0.892,59,0.569,60,0.963,61,0.819,62,0.545,63,0.569,64,0.785,65,0.499,66,0.569,67,0.477,68,0.819,69,0.881,70,0.734,71,0.751,72,0.96,73,0.842,74,0.806,75,0.522,76,0.522,77,1.413,78,0.522,79,0.569,80,1.079,81,0.569,82,0.569,83,0.569,84,0.569,85,0.569,86,0.569,87,0.569,88,0.569,89,0.569,90,0.569,91,0.569,92,0.569,93,1.021,94,0.751,95,0.545,96,0.569,97,0.569,98,0.569,99,0.98,100,0.569,101,0.569,102,0.569,103,0.569,104,0.569,105,0.569,106,0.569,107,0.569,108,0.569,109,0.569,110,0.569,111,0.569,112,0.569,113,0.751,114,0.751,115,0.569,116,0.569,117,0.569,118,0.522,119,0.522,120,0.522,121,0.545,122,1.002,123,0.522,124,0.456,125,0.545,126,0.569,127,0.881,128,0.569,129,0.569,130,0.569,131,0.569,132,0.633,133,0.522,134,0.513,135,0.522,136,0.627,137,0.687,138,0.597,139,0.804,140,0.569,141,0.627,142,0.477,143,0.627,144,0.499,145,0.545,146,0.545,147,0.569,148,0.569,149,0.477,150,0.545,151,0.456,152,0.009,153,0.009,234,3.277,235,3.277,236,3.277,237,3.277]],["title/classes/AuthError.html",[0,0.255,143,0.517]],["body/classes/AuthError.html",[0,0.529,1,0.752,2,0.478,3,0.156,4,0.142,5,0.142,6,0.478,7,0.171,8,0.598,9,1.096,10,0.893,11,0.57,12,1.049,13,0.503,14,0.016,15,1.31,16,0.51,18,0.808,21,0.386,22,0.57,23,0.752,24,0.72,25,0.786,26,0.752,27,1.193,28,0.74,29,1.037,30,0.752,31,1.113,32,0.752,33,1.049,34,0.935,35,0.752,36,1.113,37,0.752,38,0.961,39,0.752,40,1.16,41,0.752,42,0.579,43,0.752,44,0.961,45,0.657,46,0.978,47,0.964,48,0.657,49,0.923,50,0.752,51,0.752,52,0.958,53,0.688,54,0.688,55,0.752,56,0.843,57,0.57,58,0.893,59,0.57,60,0.964,61,0.82,62,0.546,63,0.57,64,0.786,65,0.5,66,0.57,67,0.478,68,0.82,69,0.881,70,0.735,71,0.523,72,0.57,73,0.657,74,0.478,75,0.523,76,0.523,77,1.413,78,0.523,79,0.57,80,1.079,81,0.57,82,0.57,83,0.57,84,0.57,85,0.57,86,0.57,87,0.57,88,0.57,89,0.57,90,0.57,91,0.57,92,0.57,93,1.022,94,0.752,95,0.546,96,0.57,97,0.57,98,0.57,99,0.98,100,0.57,101,0.57,102,0.57,103,0.57,104,0.57,105,0.57,106,0.57,107,0.57,108,0.57,109,0.57,110,0.57,111,0.57,112,0.57,113,0.752,114,0.752,115,0.57,116,0.57,117,0.57,118,0.523,119,0.523,120,0.523,121,0.546,122,1.003,123,0.523,124,0.457,125,0.546,126,0.57,127,0.881,128,0.57,129,0.57,130,0.57,131,0.57,132,0.634,133,0.523,134,0.514,135,0.523,136,0.804,137,0.688,138,0.766,139,0.805,140,0.57,141,0.627,142,0.478,143,0.735,144,0.843,145,0.546,146,0.546,147,0.57,148,0.57,149,0.478,150,0.546,151,0.457,152,0.009,153,0.009,238,3.283,239,3.283,240,3.283]],["title/guards/AuthGuard.html",[241,3.034,242,2.404]],["body/guards/AuthGuard.html",[0,0.37,3,0.269,4,0.243,5,0.243,7,0.295,9,1.224,13,0.482,14,0.016,16,0.622,21,0.269,42,0.586,52,0.785,80,0.898,139,0.814,152,0.013,153,0.013,158,2.754,162,2.3,168,2.118,169,2.3,174,2.201,198,3.51,199,3.482,205,3.272,221,2.776,222,3.272,228,2.422,242,4.17,243,4.395,244,4.891,245,3.386,246,6.499,247,3.324,248,4.395,249,5.644,250,3.016,251,4.17,252,5.857,253,6.499,254,5.644,255,4.395,256,4.891,257,3.482,258,2.923,259,3.229,260,4.891,261,4.891,262,4.891,263,3.918,264,3.324,265,5.644,266,5.644,267,6.759,268,2.776,269,4.891,270,4.395,271,5.644,272,5.644]],["title/modules/AuthModule.html",[176,1.587,188,2.574]],["body/modules/AuthModule.html",[0,0.374,3,0.272,4,0.246,5,0.294,14,0.016,21,0.272,28,0.589,152,0.013,153,0.013,163,3.524,164,3.124,165,3.524,166,3.524,168,2.285,169,2.327,176,2.963,178,2.809,179,2.549,180,3.311,181,3.311,182,2.958,183,4.215,184,3.311,188,5.253,192,3.946,193,2.809,194,3.124,196,4.073,198,3.653,199,3.524,273,4.95,274,4.95,275,4.524,276,5.712,277,5.712,278,4.448,279,5.712,280,4.448,281,4.497,282,6.808,283,4.497,284,5.712,285,5.712,286,5.712,287,5.712,288,5.712,289,5.712]],["title/classes/AuthResolver.html",[0,0.255,281,2.574]],["body/classes/AuthResolver.html",[0,0.323,2,0.507,3,0.166,4,0.15,5,0.15,7,0.182,9,1.126,13,0.527,14,0.016,16,0.573,21,0.235,28,0.508,42,0.539,45,0.975,46,1.179,47,1.188,48,0.975,49,1.137,52,0.796,118,0.99,119,0.99,120,1.085,124,1.091,132,0.855,133,0.555,134,0.802,135,0.555,136,0.93,138,0.862,139,0.889,141,0.98,142,1.075,143,0.95,144,0.872,149,0.993,152,0.009,153,0.009,158,2.008,160,4.078,162,2.915,168,1.82,172,2.301,174,2.559,205,2.019,213,3.315,221,2.423,222,4.325,224,4.453,245,3.405,247,1.713,250,2.775,259,2.199,268,2.423,275,3.949,278,2.712,281,3.256,283,2.301,290,2.712,291,4.956,292,4.078,293,3.483,294,3.483,295,6.812,296,6.103,297,3.483,298,4.27,299,3.514,300,4.453,301,5.102,302,4.956,303,5.571,304,5.371,305,2.483,306,5.904,307,4.27,308,3.529,309,3.483,310,3.483,311,4.27,312,2.856,313,4.27,314,4.27,315,3.483,316,4.842,317,4.27,318,4.27,319,4.956,320,4.956,321,4.956,322,3.256,323,3.837,324,2.301,325,4.27,326,5.388,327,2.712,328,2.301,329,3.018,330,3.018,331,3.018,332,4.27,333,4.27,334,3.837,335,4.842,336,3.018,337,4.27,338,5.388,339,4.27,340,4.27,341,4.27,342,4.27,343,3.837,344,3.018,345,3.018,346,2.019,347,3.018,348,3.018,349,2.019,350,2.712,351,3.018]],["title/classes/AuthResultResolver.html",[0,0.255,283,2.574]],["body/classes/AuthResultResolver.html",[0,0.372,2,0.625,3,0.204,4,0.185,5,0.185,7,0.224,9,0.777,13,0.306,14,0.016,16,0.395,21,0.271,42,0.372,45,0.887,46,1.106,47,1.081,48,0.887,49,1.035,52,0.597,118,0.683,119,0.683,120,1.016,124,1.046,132,0.809,133,0.683,134,0.768,135,0.683,136,0.847,138,0.72,139,0.818,141,0.938,142,0.989,143,0.847,144,0.654,149,0.929,152,0.011,153,0.011,158,2.317,160,3.06,162,2.766,168,1.987,172,2.835,174,2.755,205,2.488,213,3.696,221,2.796,222,4.207,224,4.966,245,2.984,250,1.915,259,2.537,268,2.796,275,3.696,278,3.342,281,2.835,283,3.756,290,3.342,291,3.719,292,3.06,296,5.925,298,3.719,299,3.06,300,4.428,302,3.719,303,5.287,304,4.841,306,4.927,307,3.719,308,3.508,311,3.719,312,2.488,313,3.719,314,3.719,316,4.428,317,3.719,318,3.719,319,3.719,320,3.719,321,3.719,322,2.835,323,4.428,324,2.835,325,5.526,326,5.883,327,3.342,328,2.835,329,3.719,330,4.927,331,3.719,332,4.927,333,4.927,334,4.428,335,5.287,336,3.719,337,4.927,338,5.883,339,4.927,340,4.927,341,4.927,342,4.927,343,4.428,344,3.719,345,3.719,346,2.488,347,3.719,348,3.719,349,2.488,350,3.342,351,3.719,352,5.686,353,4.292,354,2.648]],["title/injectables/AuthService.html",[228,1.396,275,2.258]],["body/injectables/AuthService.html",[0,0.299,3,0.218,4,0.197,5,0.197,7,0.239,9,1.19,13,0.469,14,0.016,16,0.605,18,0.446,21,0.218,42,0.57,45,0.968,46,1.174,48,0.968,49,1.125,124,0.825,134,0.715,136,0.981,138,0.935,139,0.792,141,0.607,142,1.05,143,0.981,144,1.06,152,0.011,153,0.011,158,2.414,162,2.414,168,2.162,169,1.862,174,2.972,198,3.256,199,2.82,228,2.123,229,2.5,245,3.456,247,2.914,248,3.559,250,2.934,251,4.057,258,3.069,259,3.437,263,2.649,264,2.247,268,3.632,269,5.135,270,3.559,275,3.434,280,3.559,303,5.934,308,3.656,316,3.559,322,3.019,328,3.019,346,3.434,349,3.434,350,3.559,355,3.96,356,5.925,357,5.925,358,7.518,359,4.57,360,5.925,361,4.57,362,5.925,363,4.57,364,5.135,365,2.649,366,4.57,367,6.575,368,5.925,369,4.57,370,4.57,371,4.57,372,4.57,373,5.925,374,5.925,375,5.925,376,4.57,377,4.57,378,4.57,379,5.925,380,6.029,381,5.135,382,5.925,383,5.925,384,5.925,385,5.925,386,5.925,387,5.925,388,4.57,389,4.57,390,5.925,391,4.57,392,4.57,393,4.57,394,4.57,395,4.57,396,4.57,397,4.57,398,4.57,399,4.57,400,4.57,401,4.57,402,4.57,403,4.57,404,4.57]],["title/classes/AuthSuccess.html",[0,0.255,141,0.517]],["body/classes/AuthSuccess.html",[0,0.529,1,0.756,2,0.482,3,0.157,4,0.143,5,0.143,6,0.482,7,0.173,8,0.601,10,0.895,11,0.574,12,1.051,13,0.492,14,0.016,15,1.309,16,0.437,18,0.808,21,0.387,22,0.574,23,0.756,24,0.724,25,0.79,26,0.756,27,1.195,28,0.741,29,1.038,30,0.756,31,1.116,32,0.756,33,1.051,34,0.937,35,0.756,36,1.116,37,0.756,38,0.964,39,0.756,40,1.162,41,0.756,42,0.581,43,0.756,44,0.964,45,0.661,46,0.98,47,0.967,48,0.661,49,0.925,50,0.756,51,0.756,52,0.96,53,0.692,54,0.692,55,0.756,56,0.847,57,0.574,58,0.895,59,0.574,60,0.967,61,0.824,62,0.55,63,0.574,64,0.79,65,0.504,66,0.574,67,0.482,68,0.824,69,0.885,70,0.738,71,0.527,72,0.574,73,0.661,74,0.482,75,0.527,76,0.527,77,1.413,78,0.527,79,0.574,80,1.08,81,0.574,82,0.574,83,0.574,84,0.574,85,0.574,86,0.574,87,0.574,88,0.574,89,0.574,90,0.574,91,0.574,92,0.574,93,1.024,94,0.756,95,0.55,96,0.574,97,0.574,98,0.574,99,0.982,100,0.574,101,0.574,102,0.574,103,0.574,104,0.574,105,0.574,106,0.574,107,0.574,108,0.574,109,0.574,110,0.574,111,0.574,112,0.574,113,0.756,114,0.756,115,0.574,116,0.574,117,0.574,118,0.527,119,0.527,120,0.527,121,0.55,122,1.005,123,0.527,124,0.46,125,0.55,126,0.574,127,0.885,128,0.574,129,0.574,130,0.574,131,0.574,132,0.637,133,0.527,134,0.516,135,0.527,136,0.631,137,0.692,138,0.601,139,0.866,140,0.574,141,0.738,142,0.81,143,0.631,144,0.504,145,0.55,146,0.55,147,0.574,148,0.574,149,0.482,150,0.55,151,0.46,152,0.009,153,0.009,405,3.306,406,3.306]],["title/classes/Board.html",[0,0.255,56,0.594]],["body/classes/Board.html",[0,0.528,1,0.746,2,0.473,3,0.154,4,0.14,5,0.14,6,0.473,7,0.169,8,0.593,9,0.848,10,0.889,11,0.563,12,1.09,13,0.525,14,0.016,15,1.309,16,0.613,18,0.808,21,0.386,22,0.563,23,0.746,24,0.714,25,0.779,26,0.746,27,1.223,28,0.758,29,1.052,30,0.746,31,1.191,32,0.746,33,1.045,34,0.93,35,0.746,36,1.108,37,0.746,38,0.954,39,0.746,40,1.155,41,0.746,42,0.577,43,0.746,44,0.954,45,0.652,46,0.973,47,0.959,48,0.652,49,0.917,50,0.746,51,0.746,52,0.955,53,0.682,54,0.682,55,0.746,56,0.917,57,0.954,58,0.926,59,0.563,60,0.959,61,0.813,62,0.54,63,0.563,64,0.779,65,0.494,66,0.563,67,0.473,68,0.813,69,0.876,70,0.73,71,0.517,72,0.563,73,0.652,74,0.473,75,0.517,76,0.517,77,1.412,78,0.517,79,0.563,80,1.078,81,0.563,82,0.563,83,0.563,84,0.563,85,0.563,86,0.563,87,0.563,88,0.563,89,0.563,90,0.563,91,0.563,92,0.563,93,1.017,94,0.746,95,0.54,96,0.563,97,0.563,98,0.563,99,0.977,100,0.563,101,0.563,102,0.563,103,0.563,104,0.563,105,0.563,106,0.563,107,0.563,108,0.563,109,0.563,110,0.563,111,0.563,112,0.563,113,0.746,114,0.746,115,0.563,116,0.563,117,0.563,118,0.517,119,0.517,120,0.517,121,0.54,122,0.999,123,0.517,124,0.451,125,0.54,126,0.563,127,0.876,128,0.563,129,0.563,130,0.563,131,0.563,132,0.63,133,0.517,134,0.509,135,0.517,136,0.622,137,0.682,138,0.593,139,0.802,140,0.563,141,0.622,142,0.473,143,0.622,144,0.494,145,0.54,146,0.54,147,0.563,148,0.563,149,0.473,150,0.54,151,0.451,152,0.009,153,0.009,407,3.244,408,3.244,409,3.244,410,3.244,411,3.244,412,3.244]],["title/classes/Card.html",[0,0.255,60,0.62]],["body/classes/Card.html",[0,0.527,1,0.734,2,0.462,3,0.151,4,0.137,5,0.137,6,0.462,7,0.165,8,0.583,9,1.34,10,0.88,11,0.55,12,1.038,13,0.541,14,0.016,15,1.31,16,0.665,18,0.808,21,0.386,22,0.55,23,0.734,24,0.702,25,0.766,26,0.734,27,1.217,28,0.755,29,1.03,30,0.734,31,1.098,32,0.734,33,1.084,34,0.962,35,0.734,36,1.182,37,0.734,38,1.098,39,0.734,40,1.211,41,0.734,42,0.573,43,0.734,44,0.942,45,0.641,46,0.964,47,0.948,48,0.641,49,0.907,50,0.734,51,0.734,52,0.948,53,0.671,54,0.671,55,0.734,56,0.827,57,0.55,58,0.88,59,0.55,60,1.007,61,1.034,62,0.902,63,0.942,64,0.99,65,0.483,66,0.55,67,0.462,68,0.799,69,0.864,70,0.72,71,0.505,72,0.55,73,0.641,74,0.462,75,0.505,76,0.505,77,1.41,78,0.505,79,0.55,80,1.077,81,0.55,82,0.55,83,0.55,84,0.55,85,0.55,86,0.55,87,0.55,88,0.55,89,0.55,90,0.55,91,0.55,92,0.55,93,1.007,94,0.734,95,0.527,96,0.55,97,0.55,98,0.55,99,0.971,100,0.55,101,0.55,102,0.55,103,0.55,104,0.55,105,0.55,106,0.55,107,0.55,108,0.55,109,0.55,110,0.55,111,0.55,112,0.55,113,0.734,114,0.734,115,0.55,116,0.55,117,0.55,118,0.505,119,0.505,120,0.505,121,0.527,122,0.992,123,0.505,124,0.441,125,0.527,126,0.55,127,0.864,128,0.55,129,0.55,130,0.55,131,0.55,132,0.622,133,0.505,134,0.501,135,0.505,136,0.612,137,0.671,138,0.583,139,0.795,140,0.55,141,0.612,142,0.462,143,0.612,144,0.483,145,0.527,146,0.527,147,0.55,148,0.55,149,0.462,150,0.527,151,0.441,152,0.009,153,0.009,413,3.169,414,3.169,415,3.169,416,3.169,417,3.169,418,3.169,419,3.169,420,3.169,421,3.169,422,3.169]],["title/classes/CardLabel.html",[0,0.255,75,0.62]],["body/classes/CardLabel.html",[0,0.529,1,0.756,2,0.482,3,0.157,4,0.143,5,0.143,6,0.482,7,0.173,8,0.601,10,0.895,11,0.574,12,1.051,13,0.492,14,0.016,15,1.309,16,0.437,18,0.808,21,0.387,22,0.574,23,0.756,24,0.724,25,0.79,26,0.756,27,1.195,28,0.741,29,1.038,30,0.756,31,1.116,32,0.756,33,1.051,34,0.937,35,0.756,36,1.116,37,0.756,38,0.964,39,0.756,40,1.225,41,0.756,42,0.581,43,0.756,44,1.116,45,0.661,46,0.98,47,0.967,48,0.661,49,0.925,50,0.756,51,0.756,52,0.96,53,0.692,54,0.692,55,0.756,56,0.847,57,0.574,58,0.895,59,0.574,60,0.967,61,0.824,62,0.55,63,0.574,64,0.79,65,0.504,66,0.574,67,0.482,68,0.824,69,0.885,70,0.738,71,0.527,72,0.574,73,0.661,74,0.482,75,0.756,76,0.527,77,1.413,78,0.527,79,0.574,80,1.08,81,0.574,82,0.574,83,0.574,84,0.574,85,0.574,86,0.574,87,0.574,88,0.574,89,0.574,90,0.574,91,0.574,92,0.574,93,1.024,94,0.756,95,0.55,96,0.574,97,0.574,98,0.574,99,0.982,100,0.574,101,0.574,102,0.574,103,0.574,104,0.574,105,0.574,106,0.574,107,0.574,108,0.574,109,0.574,110,0.574,111,0.574,112,0.574,113,0.756,114,0.756,115,0.574,116,0.574,117,0.574,118,0.527,119,0.527,120,0.527,121,0.55,122,1.005,123,0.527,124,0.46,125,0.55,126,0.574,127,0.885,128,0.574,129,0.574,130,0.574,131,0.574,132,0.637,133,0.527,134,0.516,135,0.527,136,0.631,137,0.692,138,0.601,139,0.807,140,0.574,141,0.631,142,0.482,143,0.631,144,0.504,145,0.55,146,0.55,147,0.574,148,0.574,149,0.482,150,0.55,151,0.46,152,0.009,153,0.009,423,3.306,424,3.306]],["title/classes/CardMember.html",[0,0.255,76,0.62]],["body/classes/CardMember.html",[0,0.529,1,0.756,2,0.482,3,0.157,4,0.143,5,0.143,6,0.482,7,0.173,8,0.601,10,0.895,11,0.574,12,1.051,13,0.492,14,0.016,15,1.309,16,0.437,18,0.808,21,0.387,22,0.574,23,0.756,24,0.724,25,0.79,26,0.756,27,1.195,28,0.741,29,1.038,30,0.756,31,1.116,32,0.756,33,1.051,34,0.937,35,0.756,36,1.116,37,0.756,38,0.964,39,0.756,40,1.225,41,0.756,42,0.581,43,0.756,44,0.964,45,0.661,46,0.98,47,0.967,48,0.661,49,0.925,50,0.756,51,0.756,52,1,53,0.692,54,0.692,55,0.756,56,0.847,57,0.574,58,0.895,59,0.574,60,0.967,61,0.824,62,0.55,63,0.574,64,0.79,65,0.504,66,0.574,67,0.482,68,0.824,69,0.885,70,0.738,71,0.527,72,0.574,73,0.661,74,0.482,75,0.527,76,0.756,77,1.413,78,0.527,79,0.574,80,1.08,81,0.574,82,0.574,83,0.574,84,0.574,85,0.574,86,0.574,87,0.574,88,0.574,89,0.574,90,0.574,91,0.574,92,0.574,93,1.024,94,0.756,95,0.55,96,0.574,97,0.574,98,0.574,99,0.982,100,0.574,101,0.574,102,0.574,103,0.574,104,0.574,105,0.574,106,0.574,107,0.574,108,0.574,109,0.574,110,0.574,111,0.574,112,0.574,113,0.756,114,0.756,115,0.574,116,0.574,117,0.574,118,0.527,119,0.527,120,0.527,121,0.55,122,1.005,123,0.527,124,0.46,125,0.55,126,0.574,127,0.885,128,0.574,129,0.574,130,0.574,131,0.574,132,0.637,133,0.527,134,0.516,135,0.527,136,0.631,137,0.692,138,0.601,139,0.807,140,0.574,141,0.631,142,0.482,143,0.631,144,0.504,145,0.55,146,0.55,147,0.574,148,0.574,149,0.482,150,0.55,151,0.46,152,0.009,153,0.009,425,3.306,426,3.306]],["title/classes/Comment.html",[0,0.255,65,0.594]],["body/classes/Comment.html",[0,0.528,1,0.749,2,0.475,3,0.155,4,0.141,5,0.141,6,0.475,7,0.17,8,0.595,10,0.89,11,0.566,12,1.047,13,0.519,14,0.016,15,1.309,16,0.589,18,0.808,21,0.386,22,0.566,23,0.749,24,0.717,25,0.782,26,0.749,27,1.192,28,0.738,29,1.036,30,0.749,31,1.111,32,0.749,33,1.047,34,0.932,35,0.749,36,1.111,37,0.749,38,0.957,39,0.749,40,1.221,41,0.749,42,0.578,43,0.749,44,0.957,45,0.655,46,0.975,47,0.961,48,0.655,49,0.92,50,0.749,51,0.749,52,0.997,53,0.685,54,0.685,55,0.749,56,0.84,57,0.566,58,0.89,59,0.566,60,0.961,61,0.816,62,0.543,63,0.566,64,0.782,65,0.717,66,0.957,67,0.804,68,1.048,69,0.961,70,0.732,71,0.52,72,0.566,73,0.655,74,0.475,75,0.52,76,0.52,77,1.412,78,0.52,79,0.566,80,1.079,81,0.566,82,0.566,83,0.566,84,0.566,85,0.566,86,0.566,87,0.566,88,0.566,89,0.566,90,0.566,91,0.566,92,0.566,93,1.019,94,0.749,95,0.543,96,0.566,97,0.566,98,0.566,99,0.979,100,0.566,101,0.566,102,0.566,103,0.566,104,0.566,105,0.566,106,0.566,107,0.566,108,0.566,109,0.566,110,0.566,111,0.566,112,0.566,113,0.749,114,0.749,115,0.566,116,0.566,117,0.566,118,0.52,119,0.52,120,0.52,121,0.543,122,1.001,123,0.52,124,0.454,125,0.543,126,0.566,127,0.878,128,0.566,129,0.566,130,0.566,131,0.566,132,0.632,133,0.52,134,0.512,135,0.52,136,0.625,137,0.685,138,0.595,139,0.803,140,0.566,141,0.625,142,0.475,143,0.625,144,0.497,145,0.543,146,0.543,147,0.566,148,0.566,149,0.475,150,0.543,151,0.454,152,0.009,153,0.009,427,3.263,428,3.263,429,3.263,430,3.263,431,3.263]],["title/modules/CommonModule.html",[176,1.587,189,2.404]],["body/modules/CommonModule.html",[0,0.375,3,0.273,4,0.247,5,0.294,14,0.016,21,0.273,28,0.591,152,0.013,153,0.013,163,3.536,164,3.135,165,3.536,166,3.536,168,2.254,169,2.335,176,2.967,178,2.818,179,2.557,180,3.322,181,3.322,182,2.968,183,3.954,184,4.221,189,4.909,190,4.82,192,3.954,193,2.818,194,3.135,196,4.864,242,4.909,251,3.536,365,3.322,432,4.966,433,4.966,434,5.731,435,5.256,436,5.731,437,5.731,438,5.911,439,5.731,440,5.731,441,5.731]],["title/interfaces/CompoDocConfig.html",[442,2.258,443,2.574]],["body/interfaces/CompoDocConfig.html",[0,0.144,3,0.166,4,0.151,5,0.294,7,0.115,8,0.549,9,1.44,13,0.544,14,0.016,18,0.715,21,0.105,29,1.005,33,0.336,34,0.509,42,0.191,58,0.835,67,0.784,70,0.293,73,0.486,74,0.719,80,0.761,99,0.307,132,0.4,134,0.714,136,0.293,137,1.177,138,0.279,151,0.687,152,0.007,153,0.007,168,1.576,173,1.571,174,2.501,179,0.983,193,2.134,213,2.025,221,2.134,245,2.914,247,1.083,257,1.359,258,3.531,259,3.043,263,2.515,264,2.647,268,3.296,312,3.12,346,3.32,349,3.12,442,2.515,443,2.867,444,1.571,445,1.141,446,1.277,447,1.571,448,3.845,449,3.845,450,3.845,451,3.845,452,3.845,453,3.845,454,3.845,455,3.845,456,3.845,457,3.845,458,3.845,459,3.845,460,3.845,461,3.845,462,3.845,463,3.845,464,3.845,465,3.845,466,3.845,467,3.845,468,3.845,469,3.845,470,3.845,471,4.192,472,2.155,473,2.72,474,1.716,475,3.379,476,2.72,477,1.277,478,2.72,479,1.571,480,1.91,481,4.244,482,1.571,483,1.91,484,2.867,485,1.571,486,1.91,487,1.359,488,1.571,489,1.571,490,2.72,491,1.571,492,4.505,493,1.359,494,1.716,495,1.716,496,4.192,497,2.72,498,2.72,499,2.72,500,1.716,501,4.993,502,2.862,503,3.094,504,4.428,505,2.307,506,1.716,507,2.72,508,1.716,509,1.571,510,2.491,511,1.716,512,5.67,513,1.359,514,3.094,515,2.491,516,1.456,517,1.359,518,1.716,519,1.716,520,1.716,521,1.571,522,1.716,523,1.716,524,1.716,525,1.716,526,2.491,527,3.379,528,1.716,529,2.72,530,3.379,531,1.716,532,1.716,533,1.571,534,3.839,535,2.72,536,1.456,537,5.389,538,5.71,539,3.379,540,3.379,541,3.379,542,1.716,543,5.192,544,2.491,545,1.716,546,1.571,547,1.716,548,1.716,549,1.716,550,1.716,551,1.571,552,1.571,553,4.192,554,3.379,555,3.379,556,3.379,557,4.674,558,4.46,559,4.674,560,4.862,561,4.46,562,3.845,563,5.105,564,3.845,565,5.151,566,3.521,567,4.28,568,4.28,569,4.46,570,3.845,571,5.115,572,4.674,573,4.192,574,1.716,575,2.72,576,1.716,577,4.192,578,1.716,579,3.379,580,1.716,581,4.993,582,1.716,583,2.72,584,3.379,585,1.716,586,3.379,587,2.72,588,1.716,589,3.845,590,3.379,591,1.716,592,4.207,593,2.491,594,2.72,595,1.716,596,1.716,597,1.716,598,1.716,599,1.716,600,4.28,601,1.716,602,1.571,603,2.862,604,1.716,605,3.379,606,1.716,607,3.094,608,1.716,609,3.379,610,1.716,611,3.379,612,1.716,613,4.192,614,3.379,615,3.379,616,1.716,617,1.716,618,1.716,619,3.094,620,1.716,621,1.716,622,2.72,623,2.72,624,3.379,625,1.571,626,2.72,627,1.716,628,1.716,629,3.094,630,4.084,631,1.716,632,2.72,633,2.72,634,1.571,635,4.46,636,1.716,637,3.521,638,2.72,639,2.72,640,1.716,641,1.716,642,1.716,643,1.571,644,1.716,645,1.716,646,4.848,647,1.716,648,1.716,649,2.72,650,1.716,651,1.716,652,1.716,653,1.716,654,1.716,655,1.716,656,1.716,657,1.716,658,1.716,659,1.716,660,1.716,661,1.716,662,1.716,663,1.716,664,1.359,665,1.716,666,2.72,667,1.716,668,1.716,669,1.716,670,1.716,671,1.716,672,3.262,673,2.72,674,1.716,675,1.716,676,1.716,677,1.716,678,1.716,679,1.716,680,5.115,681,1.716,682,1.716,683,1.716,684,1.716,685,1.716,686,1.571,687,1.716,688,1.716,689,1.716,690,1.716,691,4.192,692,1.716,693,1.716,694,3.379,695,2.72,696,1.716,697,5.575,698,1.716,699,3.845,700,4.46,701,1.716,702,1.716,703,1.571,704,3.379,705,2.867,706,1.716,707,1.716,708,1.716,709,1.716,710,1.716,711,1.716,712,1.716,713,3.845,714,1.716,715,1.716,716,1.716,717,2.72,718,1.716,719,1.571,720,1.716,721,2.491,722,1.571,723,1.716,724,3.379,725,1.456,726,1.716,727,1.716,728,1.716,729,1.716,730,1.716,731,1.91,732,1.716,733,3.047,734,1.716,735,1.716,736,1.716,737,3.379,738,1.716,739,1.716,740,1.716,741,1.716,742,1.716,743,1.716,744,1.716,745,1.716,746,1.716,747,1.716,748,1.277,749,1.716,750,1.716,751,1.716,752,1.716,753,2.72,754,1.716,755,1.716,756,2.72,757,1.716,758,1.716,759,1.716,760,1.716,761,1.716,762,1.716,763,1.571,764,1.716,765,1.716,766,1.716,767,1.716,768,1.571,769,1.716,770,1.716,771,1.716,772,1.716,773,1.456,774,1.456,775,1.571,776,1.716,777,3.262,778,1.716,779,1.571,780,1.571,781,1.571,782,1.716,783,1.716,784,1.716,785,2.491,786,1.716,787,2.72,788,1.716,789,1.716,790,1.716,791,2.72,792,1.716,793,1.716,794,1.716,795,2.72,796,1.716,797,1.716,798,1.716,799,1.716,800,1.716,801,1.571,802,1.571,803,1.571,804,1.571,805,1.571,806,1.571,807,1.716,808,1.716,809,1.716,810,1.716,811,1.716,812,1.716,813,1.716,814,1.716]],["title/classes/CreateBoardInput.html",[0,0.255,26,0.62]],["body/classes/CreateBoardInput.html",[0,0.529,1,0.751,2,0.477,3,0.156,4,0.141,5,0.141,6,0.477,7,0.171,8,0.597,9,0.853,10,0.892,11,0.568,12,1.093,13,0.512,14,0.016,15,1.309,16,0.557,18,0.808,21,0.386,22,0.568,23,0.751,24,0.718,25,0.784,26,0.88,27,1.226,28,0.76,29,1.054,30,0.751,31,1.112,32,0.751,33,1.048,34,0.933,35,0.751,36,1.112,37,0.751,38,0.959,39,0.751,40,1.158,41,0.751,42,0.579,43,0.751,44,0.959,45,0.656,46,0.976,47,0.963,48,0.656,49,0.921,50,0.751,51,0.751,52,0.957,53,0.687,54,0.687,55,0.751,56,0.842,57,0.568,58,0.892,59,0.568,60,0.963,61,0.818,62,0.544,63,0.568,64,0.784,65,0.499,66,0.568,67,0.477,68,0.818,69,0.88,70,0.734,71,0.521,72,0.568,73,0.656,74,0.477,75,0.521,76,0.521,77,1.413,78,0.521,79,0.568,80,1.079,81,0.568,82,0.568,83,0.568,84,0.568,85,0.568,86,0.568,87,0.568,88,0.568,89,0.568,90,0.568,91,0.568,92,0.568,93,1.02,94,0.751,95,0.544,96,0.568,97,0.568,98,0.568,99,0.979,100,0.568,101,0.568,102,0.568,103,0.568,104,0.568,105,0.568,106,0.568,107,0.568,108,0.568,109,0.568,110,0.568,111,0.568,112,0.568,113,0.751,114,0.751,115,0.568,116,0.568,117,0.568,118,0.521,119,0.521,120,0.521,121,0.544,122,1.002,123,0.521,124,0.455,125,0.544,126,0.568,127,0.88,128,0.568,129,0.568,130,0.568,131,0.568,132,0.633,133,0.521,134,0.513,135,0.521,136,0.626,137,0.687,138,0.597,139,0.804,140,0.568,141,0.626,142,0.477,143,0.626,144,0.499,145,0.544,146,0.544,147,0.568,148,0.568,149,0.477,150,0.544,151,0.455,152,0.009,153,0.009,815,3.273,816,3.273,817,3.273,818,3.273]],["title/classes/CreateBoardPayload.html",[0,0.255,94,0.62]],["body/classes/CreateBoardPayload.html",[0,0.529,1,0.758,2,0.483,3,0.158,4,0.143,5,0.143,6,0.483,7,0.173,8,0.602,9,0.862,10,0.896,11,0.576,12,1.052,13,0.478,14,0.016,15,1.31,16,0.305,18,0.808,21,0.387,22,0.576,23,0.758,24,0.725,25,0.792,26,0.758,27,1.196,28,0.741,29,1.039,30,0.758,31,1.118,32,0.758,33,1.052,34,0.938,35,0.758,36,1.118,37,0.758,38,0.966,39,0.758,40,1.163,41,0.758,42,0.581,43,0.758,44,0.966,45,0.662,46,0.981,47,0.969,48,0.662,49,0.927,50,0.758,51,0.758,52,0.961,53,0.693,54,0.693,55,0.758,56,0.981,57,0.576,58,0.896,59,0.576,60,0.969,61,0.826,62,0.552,63,0.576,64,0.792,65,0.505,66,0.576,67,0.483,68,0.826,69,0.886,70,0.739,71,0.528,72,0.576,73,0.662,74,0.483,75,0.528,76,0.528,77,1.414,78,0.528,79,0.576,80,1.08,81,0.576,82,0.576,83,0.576,84,0.576,85,0.576,86,0.576,87,0.576,88,0.576,89,0.576,90,0.576,91,0.576,92,0.576,93,1.026,94,0.886,95,0.552,96,0.576,97,0.576,98,0.576,99,0.983,100,0.576,101,0.576,102,0.576,103,0.576,104,0.576,105,0.576,106,0.576,107,0.576,108,0.576,109,0.576,110,0.576,111,0.576,112,0.576,113,0.758,114,0.758,115,0.576,116,0.576,117,0.576,118,0.528,119,0.528,120,0.528,121,0.552,122,1.006,123,0.528,124,0.462,125,0.552,126,0.576,127,0.886,128,0.576,129,0.576,130,0.576,131,0.576,132,0.638,133,0.528,134,0.518,135,0.528,136,0.632,137,0.693,138,0.602,139,0.808,140,0.576,141,0.632,142,0.483,143,0.632,144,0.505,145,0.552,146,0.552,147,0.576,148,0.576,149,0.483,150,0.552,151,0.462,152,0.009,153,0.009,819,3.317]],["title/classes/CreateCardInput.html",[0,0.255,37,0.62]],["body/classes/CreateCardInput.html",[0,0.528,1,0.748,2,0.474,3,0.155,4,0.14,5,0.14,6,0.474,7,0.17,8,0.594,9,1.092,10,0.89,11,0.565,12,1.046,13,0.519,14,0.016,15,1.309,16,0.589,18,0.808,21,0.386,22,0.565,23,0.748,24,0.715,25,0.781,26,0.748,27,1.224,28,0.759,29,1.035,30,0.748,31,1.11,32,0.748,33,1.091,34,0.97,35,0.748,36,1.192,37,0.877,38,1.11,39,0.748,40,1.156,41,0.748,42,0.578,43,0.748,44,0.956,45,0.653,46,0.974,47,0.96,48,0.653,49,0.919,50,0.748,51,0.748,52,0.955,53,0.684,54,0.684,55,0.748,56,0.839,57,0.565,58,0.89,59,0.565,60,0.96,61,0.815,62,0.541,63,0.565,64,0.781,65,0.496,66,0.565,67,0.474,68,0.815,69,0.877,70,0.731,71,0.518,72,0.565,73,0.653,74,0.474,75,0.518,76,0.518,77,1.412,78,0.518,79,0.565,80,1.079,81,0.565,82,0.565,83,0.565,84,0.565,85,0.565,86,0.565,87,0.565,88,0.565,89,0.565,90,0.565,91,0.565,92,0.565,93,1.018,94,0.748,95,0.541,96,0.565,97,0.565,98,0.565,99,0.978,100,0.565,101,0.565,102,0.565,103,0.565,104,0.565,105,0.565,106,0.565,107,0.565,108,0.565,109,0.565,110,0.565,111,0.565,112,0.565,113,0.748,114,0.748,115,0.565,116,0.565,117,0.565,118,0.518,119,0.518,120,0.518,121,0.541,122,1,123,0.518,124,0.453,125,0.541,126,0.565,127,0.877,128,0.565,129,0.565,130,0.565,131,0.565,132,0.631,133,0.518,134,0.511,135,0.518,136,0.623,137,0.684,138,0.594,139,0.803,140,0.565,141,0.623,142,0.474,143,0.623,144,0.496,145,0.541,146,0.541,147,0.565,148,0.565,149,0.474,150,0.541,151,0.453,152,0.009,153,0.009,820,3.254,821,3.254,822,3.254,823,3.254,824,3.254]],["title/classes/CreateLabelInput.html",[0,0.255,41,0.62]],["body/classes/CreateLabelInput.html",[0,0.529,1,0.754,2,0.48,3,0.157,4,0.142,5,0.142,6,0.48,7,0.172,8,0.599,10,0.894,11,0.571,12,1.05,13,0.503,14,0.016,15,1.309,16,0.51,18,0.808,21,0.386,22,0.571,23,0.754,24,0.721,25,0.787,26,0.754,27,1.194,28,0.74,29,1.055,30,0.754,31,1.196,32,0.754,33,1.05,34,0.935,35,0.754,36,1.115,37,0.754,38,0.962,39,0.754,40,1.161,41,0.883,42,0.612,43,0.754,44,0.962,45,0.659,46,0.978,47,0.965,48,0.659,49,0.924,50,0.754,51,0.754,52,0.959,53,0.69,54,0.69,55,0.754,56,0.845,57,0.571,58,0.894,59,0.571,60,0.965,61,0.822,62,0.547,63,0.571,64,0.787,65,0.502,66,0.571,67,0.48,68,0.822,69,0.883,70,0.736,71,0.524,72,0.571,73,0.659,74,0.48,75,0.524,76,0.524,77,1.413,78,0.524,79,0.571,80,1.079,81,0.571,82,0.571,83,0.571,84,0.571,85,0.571,86,0.571,87,0.571,88,0.571,89,0.571,90,0.571,91,0.571,92,0.571,93,1.023,94,0.754,95,0.547,96,0.571,97,0.571,98,0.571,99,0.981,100,0.571,101,0.571,102,0.571,103,0.571,104,0.571,105,0.571,106,0.571,107,0.571,108,0.571,109,0.571,110,0.571,111,0.571,112,0.571,113,0.754,114,0.754,115,0.571,116,0.571,117,0.571,118,0.524,119,0.524,120,0.524,121,0.547,122,1.004,123,0.524,124,0.458,125,0.547,126,0.571,127,0.883,128,0.571,129,0.571,130,0.571,131,0.571,132,0.635,133,0.524,134,0.515,135,0.524,136,0.629,137,0.69,138,0.599,139,0.806,140,0.571,141,0.629,142,0.48,143,0.629,144,0.502,145,0.547,146,0.547,147,0.571,148,0.571,149,0.48,150,0.547,151,0.458,152,0.009,153,0.009,825,3.291,826,3.291,827,3.291]],["title/classes/CreateListInput.html",[0,0.255,32,0.62]],["body/classes/CreateListInput.html",[0,0.529,1,0.751,2,0.477,3,0.156,4,0.141,5,0.141,6,0.477,7,0.171,8,0.597,9,0.853,10,0.892,11,0.568,12,1.048,13,0.512,14,0.016,15,1.309,16,0.557,18,0.808,21,0.386,22,0.568,23,0.751,24,0.718,25,0.784,26,0.751,27,1.226,28,0.739,29,1.054,30,0.751,31,1.194,32,0.88,33,1.093,34,0.972,35,0.751,36,1.112,37,0.751,38,0.959,39,0.751,40,1.158,41,0.751,42,0.579,43,0.751,44,0.959,45,0.656,46,0.976,47,0.963,48,0.656,49,0.921,50,0.751,51,0.751,52,0.957,53,0.687,54,0.687,55,0.751,56,0.842,57,0.568,58,0.892,59,0.568,60,0.963,61,0.818,62,0.544,63,0.568,64,0.784,65,0.499,66,0.568,67,0.477,68,0.818,69,0.88,70,0.734,71,0.521,72,0.568,73,0.656,74,0.477,75,0.521,76,0.521,77,1.413,78,0.521,79,0.568,80,1.079,81,0.568,82,0.568,83,0.568,84,0.568,85,0.568,86,0.568,87,0.568,88,0.568,89,0.568,90,0.568,91,0.568,92,0.568,93,1.02,94,0.751,95,0.544,96,0.568,97,0.568,98,0.568,99,0.979,100,0.568,101,0.568,102,0.568,103,0.568,104,0.568,105,0.568,106,0.568,107,0.568,108,0.568,109,0.568,110,0.568,111,0.568,112,0.568,113,0.751,114,0.751,115,0.568,116,0.568,117,0.568,118,0.521,119,0.521,120,0.521,121,0.544,122,1.002,123,0.521,124,0.455,125,0.544,126,0.568,127,0.88,128,0.568,129,0.568,130,0.568,131,0.568,132,0.633,133,0.521,134,0.513,135,0.521,136,0.626,137,0.687,138,0.597,139,0.804,140,0.568,141,0.626,142,0.477,143,0.626,144,0.499,145,0.544,146,0.544,147,0.568,148,0.568,149,0.477,150,0.544,151,0.455,152,0.009,153,0.009,828,3.273,829,3.273,830,3.273,831,3.273]],["title/classes/CreateUserInput.html",[0,0.255,50,0.62]],["body/classes/CreateUserInput.html",[0,0.529,1,0.754,2,0.48,3,0.157,4,0.142,5,0.142,6,0.48,7,0.172,8,0.599,10,0.894,11,0.571,12,1.05,13,0.503,14,0.016,15,1.309,16,0.51,18,0.808,21,0.386,22,0.571,23,0.754,24,0.721,25,0.787,26,0.754,27,1.194,28,0.74,29,1.037,30,0.754,31,1.115,32,0.754,33,1.05,34,0.935,35,0.754,36,1.115,37,0.754,38,0.962,39,0.754,40,1.161,41,0.754,42,0.58,43,0.754,44,0.962,45,0.659,46,1.05,47,1.065,48,0.659,49,1.019,50,0.883,51,0.754,52,0.959,53,0.69,54,0.69,55,0.754,56,0.845,57,0.571,58,0.894,59,0.571,60,0.965,61,0.822,62,0.547,63,0.571,64,0.787,65,0.502,66,0.571,67,0.48,68,0.822,69,0.883,70,0.736,71,0.524,72,0.571,73,0.659,74,0.48,75,0.524,76,0.524,77,1.413,78,0.524,79,0.571,80,1.079,81,0.571,82,0.571,83,0.571,84,0.571,85,0.571,86,0.571,87,0.571,88,0.571,89,0.571,90,0.571,91,0.571,92,0.571,93,1.023,94,0.754,95,0.547,96,0.571,97,0.571,98,0.571,99,0.981,100,0.571,101,0.571,102,0.571,103,0.571,104,0.571,105,0.571,106,0.571,107,0.571,108,0.571,109,0.571,110,0.571,111,0.571,112,0.571,113,0.754,114,0.754,115,0.571,116,0.571,117,0.571,118,0.524,119,0.524,120,0.524,121,0.547,122,1.004,123,0.524,124,0.458,125,0.547,126,0.571,127,0.883,128,0.571,129,0.571,130,0.571,131,0.571,132,0.635,133,0.524,134,0.515,135,0.524,136,0.629,137,0.69,138,0.599,139,0.806,140,0.571,141,0.629,142,0.48,143,0.629,144,0.502,145,0.547,146,0.547,147,0.571,148,0.571,149,0.48,150,0.547,151,0.458,152,0.009,153,0.009,832,3.291,833,3.291,834,3.291]],["title/classes/CreateWorkspaceInput.html",[0,0.255,53,0.568]],["body/classes/CreateWorkspaceInput.html",[0,0.529,1,0.752,2,0.478,3,0.156,4,0.142,5,0.142,6,0.478,7,0.171,8,0.598,9,1.096,10,0.893,11,0.57,12,1.049,13,0.503,14,0.016,15,1.31,16,0.51,18,0.808,21,0.386,22,0.57,23,0.752,24,0.72,25,0.786,26,0.752,27,1.193,28,0.76,29,1.054,30,0.752,31,1.113,32,0.752,33,1.049,34,0.935,35,0.752,36,1.113,37,0.752,38,0.961,39,0.752,40,1.16,41,0.752,42,0.611,43,0.752,44,0.961,45,0.657,46,0.978,47,0.964,48,0.657,49,0.923,50,0.752,51,0.752,52,0.958,53,0.806,54,0.688,55,0.752,56,0.843,57,0.57,58,0.893,59,0.57,60,0.964,61,0.82,62,0.546,63,0.57,64,0.786,65,0.5,66,0.57,67,0.478,68,0.82,69,0.881,70,0.735,71,0.523,72,0.57,73,0.657,74,0.478,75,0.523,76,0.523,77,1.413,78,0.523,79,0.57,80,1.079,81,0.57,82,0.57,83,0.57,84,0.57,85,0.57,86,0.57,87,0.57,88,0.57,89,0.57,90,0.57,91,0.57,92,0.57,93,1.022,94,0.752,95,0.546,96,0.57,97,0.57,98,0.57,99,0.98,100,0.57,101,0.57,102,0.57,103,0.57,104,0.57,105,0.57,106,0.57,107,0.57,108,0.57,109,0.57,110,0.57,111,0.57,112,0.57,113,0.752,114,0.752,115,0.57,116,0.57,117,0.57,118,0.523,119,0.523,120,0.523,121,0.546,122,1.003,123,0.523,124,0.457,125,0.546,126,0.57,127,0.881,128,0.57,129,0.57,130,0.57,131,0.57,132,0.634,133,0.523,134,0.514,135,0.523,136,0.627,137,0.688,138,0.598,139,0.805,140,0.57,141,0.627,142,0.478,143,0.627,144,0.5,145,0.546,146,0.546,147,0.57,148,0.57,149,0.478,150,0.546,151,0.457,152,0.009,153,0.009,835,3.283,836,3.283,837,3.283]],["title/classes/Error.html",[0,0.255,134,0.424]],["body/classes/Error.html",[0,0.529,1,0.756,2,0.481,3,0.157,4,0.142,5,0.142,6,0.481,7,0.172,8,0.6,9,0.859,10,0.895,11,0.573,12,1.051,13,0.492,14,0.016,15,1.31,16,0.437,18,0.808,21,0.386,22,0.573,23,0.756,24,0.723,25,0.789,26,0.756,27,1.195,28,0.741,29,1.038,30,0.756,31,1.116,32,0.756,33,1.051,34,0.937,35,0.756,36,1.116,37,0.756,38,0.964,39,0.756,40,1.162,41,0.756,42,0.581,43,0.756,44,0.964,45,0.66,46,0.98,47,0.967,48,0.66,49,0.925,50,0.756,51,0.756,52,0.96,53,0.691,54,0.691,55,0.756,56,0.846,57,0.573,58,0.895,59,0.573,60,0.967,61,0.823,62,0.549,63,0.573,64,0.789,65,0.503,66,0.573,67,0.481,68,0.823,69,0.884,70,0.737,71,0.526,72,0.573,73,0.66,74,0.481,75,0.526,76,0.526,77,1.413,78,0.526,79,0.573,80,1.08,81,0.573,82,0.573,83,0.573,84,0.573,85,0.573,86,0.573,87,0.573,88,0.573,89,0.573,90,0.573,91,0.573,92,0.573,93,1.024,94,0.756,95,0.549,96,0.573,97,0.573,98,0.573,99,0.982,100,0.573,101,0.573,102,0.573,103,0.573,104,0.573,105,0.573,106,0.573,107,0.573,108,0.573,109,0.573,110,0.573,111,0.573,112,0.573,113,0.756,114,0.756,115,0.573,116,0.573,117,0.573,118,0.526,119,0.526,120,0.526,121,0.549,122,1.005,123,0.526,124,0.459,125,0.549,126,0.573,127,0.884,128,0.573,129,0.573,130,0.573,131,0.573,132,0.636,133,0.526,134,0.604,135,0.884,136,0.806,137,0.691,138,0.6,139,0.806,140,0.573,141,0.63,142,0.481,143,0.63,144,0.503,145,0.549,146,0.549,147,0.573,148,0.573,149,0.481,150,0.549,151,0.459,152,0.009,153,0.009,838,3.302,839,3.302]],["title/classes/FileResponse.html",[0,0.255,114,0.62]],["body/classes/FileResponse.html",[0,0.529,1,0.752,2,0.478,3,0.156,4,0.142,5,0.142,6,0.478,7,0.171,8,0.598,9,1.096,10,0.893,11,0.57,12,1.049,13,0.503,14,0.016,15,1.31,16,0.51,18,0.808,21,0.386,22,0.57,23,0.752,24,0.72,25,0.786,26,0.752,27,1.193,28,0.74,29,1.037,30,0.752,31,1.113,32,0.752,33,1.049,34,0.935,35,0.752,36,1.113,37,0.752,38,0.961,39,0.752,40,1.16,41,0.752,42,0.579,43,0.752,44,0.961,45,0.657,46,0.978,47,0.964,48,0.657,49,0.923,50,0.752,51,0.752,52,0.958,53,0.688,54,0.688,55,0.752,56,0.843,57,0.57,58,0.893,59,0.57,60,0.964,61,0.82,62,0.546,63,0.57,64,0.786,65,0.5,66,0.57,67,0.478,68,0.82,69,0.881,70,0.735,71,0.523,72,0.57,73,0.842,74,0.478,75,0.523,76,0.523,77,1.413,78,0.523,79,0.57,80,1.079,81,0.57,82,0.57,83,0.57,84,0.57,85,0.57,86,0.57,87,0.57,88,0.57,89,0.57,90,0.57,91,0.57,92,0.57,93,1.022,94,0.752,95,0.546,96,0.57,97,0.57,98,0.57,99,0.98,100,0.57,101,0.57,102,0.57,103,0.57,104,0.57,105,0.57,106,0.57,107,0.57,108,0.57,109,0.57,110,0.57,111,0.57,112,0.57,113,0.752,114,0.881,115,0.57,116,0.57,117,0.57,118,0.523,119,0.523,120,0.523,121,0.546,122,1.003,123,0.523,124,0.457,125,0.546,126,0.57,127,0.881,128,0.57,129,0.57,130,0.57,131,0.57,132,0.735,133,0.523,134,0.514,135,0.523,136,0.627,137,0.806,138,0.766,139,0.805,140,0.57,141,0.627,142,0.478,143,0.627,144,0.5,145,0.546,146,0.546,147,0.57,148,0.57,149,0.478,150,0.546,151,0.457,152,0.009,153,0.009,840,3.283,841,3.283,842,3.283]],["title/injectables/HbsRenderService.html",[228,1.396,486,2.131]],["body/injectables/HbsRenderService.html",[0,0.238,3,0.318,4,0.298,5,0.273,7,0.265,8,0.844,9,0.659,13,0.453,14,0.016,16,0.636,18,0.74,21,0.173,27,0.846,28,0.731,29,0.507,34,0.53,42,0.599,70,0.778,73,0.507,134,0.725,137,0.53,152,0.01,153,0.01,158,2.718,162,2.584,168,1.066,174,2.935,176,2.072,178,2.5,222,2.947,228,1.822,229,1.991,247,2.881,250,1.625,258,3.807,259,3.28,264,1.79,292,5.159,301,4.757,304,4.521,305,3.625,322,4.407,324,2.405,335,5.523,346,2.947,349,2.11,354,3.137,445,3.673,472,4.264,477,2.11,481,4.072,486,2.781,491,4.177,492,2.405,493,2.246,502,2.11,504,2.405,505,2.405,513,3.137,521,2.596,526,3.625,533,2.596,534,5.241,536,3.359,543,3.625,544,3.625,551,3.625,552,3.625,560,4.177,563,3.625,565,4.177,566,2.596,567,3.625,568,4.177,592,4.116,593,4.927,600,4.177,602,3.625,603,2.947,607,4.757,625,2.596,629,2.596,634,4.927,672,2.405,686,3.625,705,3.359,731,2.781,733,3.912,748,2.11,763,3.625,773,2.405,774,2.405,775,2.596,843,5.523,844,2.835,845,5.858,846,6.341,847,6.341,848,6.341,849,5.084,850,5.084,851,3.641,852,3.641,853,3.641,854,5.084,855,3.641,856,3.641,857,2.835,858,2.835,859,3.641,860,3.641,861,3.641,862,3.641,863,3.641,864,3.641,865,3.641,866,3.641,867,3.641,868,7.092,869,3.641,870,5.084,871,3.155,872,6.341,873,6.91,874,6.91,875,3.641,876,3.641,877,5.858,878,3.641,879,3.641,880,3.641,881,3.641,882,3.641,883,5.084,884,3.155,885,3.641,886,3.641,887,3.641,888,4.406,889,2.835,890,5.858,891,5.084,892,5.084,893,3.641,894,3.641,895,3.641,896,3.641,897,3.641,898,5.084,899,3.641,900,3.641,901,6.671,902,6.341,903,3.641,904,3.641,905,3.641,906,3.641,907,5.084,908,3.641,909,3.641,910,3.641,911,3.641,912,3.641,913,5.084,914,3.641,915,3.641,916,3.155,917,5.084,918,6.671,919,3.641,920,3.641,921,3.641,922,3.641,923,3.641,924,3.641,925,5.084,926,3.641,927,3.641,928,3.155,929,3.155,930,3.641,931,5.858,932,3.641,933,3.641,934,3.641,935,3.641,936,3.641,937,3.641,938,3.155,939,3.641,940,5.084,941,3.641,942,3.641,943,3.641,944,3.641,945,3.641,946,3.641,947,4.562,948,5.858]],["title/classes/IQuery.html",[0,0.255,78,0.62]],["body/classes/IQuery.html",[0,0.523,1,0.682,2,0.418,3,0.137,4,0.124,5,0.124,6,0.418,7,0.15,9,1.297,10,0.845,11,0.498,12,1.092,13,0.536,14,0.016,15,1.308,16,0.681,18,0.808,21,0.383,22,0.498,23,0.682,24,0.653,25,0.712,26,0.682,27,1.153,28,0.715,29,1.009,30,0.682,31,1.146,32,0.682,33,1.006,34,0.885,35,0.682,36,1.146,37,0.682,38,0.889,39,0.682,40,1.177,41,0.682,42,0.656,43,0.682,44,0.889,45,0.596,46,0.926,47,0.904,48,0.596,49,0.865,50,0.682,51,0.682,52,0.944,53,0.624,54,0.624,55,0.682,56,0.926,57,0.889,58,0.918,59,0.889,60,1.014,61,0.986,62,0.852,63,0.498,64,0.712,65,0.437,66,0.498,67,0.418,68,0.743,69,0.816,70,0.68,71,0.457,72,0.498,73,0.596,74,0.418,75,0.457,76,0.457,77,1.424,78,0.682,79,0.743,80,1.082,81,0.743,82,0.743,83,0.743,84,0.743,85,0.743,86,0.743,87,0.743,88,0.986,89,0.743,90,0.986,91,0.743,92,0.743,93,1.051,94,0.682,95,0.477,96,0.498,97,0.498,98,0.498,99,0.944,100,0.498,101,0.498,102,0.498,103,0.498,104,0.498,105,0.498,106,0.498,107,0.498,108,0.498,109,0.498,110,0.498,111,0.498,112,0.498,113,0.682,114,0.682,115,0.498,116,0.498,117,0.498,118,0.457,119,0.457,120,0.457,121,0.477,122,1.01,123,0.457,124,0.4,125,0.477,126,0.498,127,0.816,128,0.498,129,0.498,130,0.498,131,0.498,132,0.587,133,0.457,134,0.466,135,0.457,136,0.569,137,0.624,138,0.542,139,0.817,140,0.498,141,0.569,142,0.418,143,0.569,144,0.437,145,0.477,146,0.477,147,0.889,148,0.498,149,0.418,150,0.477,151,0.4,152,0.008,153,0.008,158,1.745,162,3.015,250,3.196,949,2.871,950,2.871,951,2.871,952,2.871,953,2.871,954,2.871,955,2.871,956,2.871,957,2.871,958,2.871,959,2.871,960,2.871,961,2.871,962,2.871]],["title/classes/Label.html",[0,0.255,70,0.517]],["body/classes/Label.html",[0,0.529,1,0.751,2,0.477,3,0.156,4,0.141,5,0.141,6,0.477,7,0.171,8,0.597,10,0.892,11,0.569,12,1.093,13,0.512,14,0.016,15,1.309,16,0.557,18,0.808,21,0.386,22,0.569,23,0.751,24,0.719,25,0.785,26,0.751,27,1.193,28,0.739,29,1.054,30,0.751,31,1.113,32,0.751,33,1.048,34,0.934,35,0.751,36,1.113,37,0.751,38,0.96,39,0.751,40,1.159,41,0.751,42,0.611,43,0.751,44,1.113,45,0.657,46,0.977,47,0.963,48,0.657,49,0.922,50,0.751,51,0.751,52,0.957,53,0.687,54,0.687,55,0.751,56,0.843,57,0.569,58,0.892,59,0.569,60,0.963,61,0.819,62,0.545,63,0.569,64,0.785,65,0.499,66,0.569,67,0.477,68,0.819,69,0.881,70,0.803,71,0.522,72,0.569,73,0.657,74,0.477,75,0.522,76,0.522,77,1.413,78,0.522,79,0.569,80,1.079,81,0.569,82,0.569,83,0.569,84,0.569,85,0.569,86,0.569,87,0.569,88,0.569,89,0.569,90,0.569,91,0.569,92,0.569,93,1.021,94,0.751,95,0.545,96,0.569,97,0.569,98,0.569,99,0.98,100,0.569,101,0.569,102,0.569,103,0.569,104,0.569,105,0.569,106,0.569,107,0.569,108,0.569,109,0.569,110,0.569,111,0.569,112,0.569,113,0.751,114,0.751,115,0.569,116,0.569,117,0.569,118,0.522,119,0.522,120,0.522,121,0.545,122,1.002,123,0.522,124,0.456,125,0.545,126,0.569,127,0.881,128,0.569,129,0.569,130,0.569,131,0.569,132,0.633,133,0.522,134,0.513,135,0.522,136,0.627,137,0.687,138,0.597,139,0.804,140,0.569,141,0.627,142,0.477,143,0.627,144,0.499,145,0.545,146,0.545,147,0.569,148,0.569,149,0.477,150,0.545,151,0.456,152,0.009,153,0.009,963,3.277,964,3.277,965,3.277,966,3.277]],["title/classes/List.html",[0,0.255,58,0.542]],["body/classes/List.html",[0,0.528,1,0.746,2,0.473,3,0.154,4,0.14,5,0.14,6,0.473,7,0.169,8,0.593,9,0.848,10,0.889,11,0.563,12,1.045,13,0.525,14,0.016,15,1.309,16,0.613,18,0.808,21,0.386,22,0.563,23,0.746,24,0.714,25,0.779,26,0.746,27,1.223,28,0.737,29,1.052,30,0.746,31,1.191,32,0.746,33,1.09,34,0.969,35,0.746,36,1.191,37,0.746,38,0.954,39,0.746,40,1.155,41,0.746,42,0.577,43,0.746,44,0.954,45,0.652,46,0.973,47,0.959,48,0.652,49,0.917,50,0.746,51,0.746,52,0.955,53,0.682,54,0.682,55,0.746,56,0.838,57,0.563,58,0.926,59,0.954,60,0.959,61,0.813,62,0.54,63,0.563,64,0.779,65,0.494,66,0.563,67,0.473,68,0.813,69,0.876,70,0.73,71,0.517,72,0.563,73,0.652,74,0.473,75,0.517,76,0.517,77,1.412,78,0.517,79,0.563,80,1.078,81,0.563,82,0.563,83,0.563,84,0.563,85,0.563,86,0.563,87,0.563,88,0.563,89,0.563,90,0.563,91,0.563,92,0.563,93,1.017,94,0.746,95,0.54,96,0.563,97,0.563,98,0.563,99,0.977,100,0.563,101,0.563,102,0.563,103,0.563,104,0.563,105,0.563,106,0.563,107,0.563,108,0.563,109,0.563,110,0.563,111,0.563,112,0.563,113,0.746,114,0.746,115,0.563,116,0.563,117,0.563,118,0.517,119,0.517,120,0.517,121,0.54,122,0.999,123,0.517,124,0.451,125,0.54,126,0.563,127,0.876,128,0.563,129,0.563,130,0.563,131,0.563,132,0.63,133,0.517,134,0.509,135,0.517,136,0.622,137,0.682,138,0.593,139,0.802,140,0.563,141,0.622,142,0.473,143,0.622,144,0.494,145,0.54,146,0.54,147,0.563,148,0.563,149,0.473,150,0.54,151,0.451,152,0.009,153,0.009,967,3.244,968,3.244,969,3.244,970,3.244,971,3.244,972,3.244]],["title/classes/LoginInput.html",[0,0.255,45,0.542]],["body/classes/LoginInput.html",[0,0.529,1,0.756,2,0.482,3,0.157,4,0.143,5,0.143,6,0.482,7,0.173,8,0.601,10,0.895,11,0.574,12,1.051,13,0.492,14,0.016,15,1.309,16,0.437,18,0.808,21,0.387,22,0.574,23,0.756,24,0.724,25,0.79,26,0.756,27,1.195,28,0.741,29,1.038,30,0.756,31,1.116,32,0.756,33,1.051,34,0.937,35,0.756,36,1.116,37,0.756,38,0.964,39,0.756,40,1.162,41,0.756,42,0.581,43,0.756,44,0.964,45,0.773,46,1.051,47,1.066,48,0.661,49,0.925,50,0.756,51,0.756,52,0.96,53,0.692,54,0.692,55,0.756,56,0.847,57,0.574,58,0.895,59,0.574,60,0.967,61,0.824,62,0.55,63,0.574,64,0.79,65,0.504,66,0.574,67,0.482,68,0.824,69,0.885,70,0.738,71,0.527,72,0.574,73,0.661,74,0.482,75,0.527,76,0.527,77,1.413,78,0.527,79,0.574,80,1.08,81,0.574,82,0.574,83,0.574,84,0.574,85,0.574,86,0.574,87,0.574,88,0.574,89,0.574,90,0.574,91,0.574,92,0.574,93,1.024,94,0.756,95,0.55,96,0.574,97,0.574,98,0.574,99,0.982,100,0.574,101,0.574,102,0.574,103,0.574,104,0.574,105,0.574,106,0.574,107,0.574,108,0.574,109,0.574,110,0.574,111,0.574,112,0.574,113,0.756,114,0.756,115,0.574,116,0.574,117,0.574,118,0.527,119,0.527,120,0.527,121,0.55,122,1.005,123,0.527,124,0.46,125,0.55,126,0.574,127,0.885,128,0.574,129,0.574,130,0.574,131,0.574,132,0.637,133,0.527,134,0.516,135,0.527,136,0.631,137,0.692,138,0.601,139,0.807,140,0.574,141,0.631,142,0.482,143,0.631,144,0.504,145,0.55,146,0.55,147,0.574,148,0.574,149,0.482,150,0.55,151,0.46,152,0.009,153,0.009,973,3.306,974,3.306]],["title/classes/PinWorkspacePayload.html",[0,0.255,127,0.62]],["body/classes/PinWorkspacePayload.html",[0,0.529,1,0.759,2,0.484,3,0.158,4,0.143,5,0.143,6,0.484,7,0.173,8,0.603,10,0.897,11,0.576,12,1.053,13,0.479,14,0.016,15,1.31,16,0.306,18,0.808,21,0.387,22,0.576,23,0.759,24,0.726,25,0.792,26,0.759,27,1.197,28,0.742,29,1.039,30,0.759,31,1.118,32,0.759,33,1.053,34,0.939,35,0.759,36,1.118,37,0.759,38,0.967,39,0.759,40,1.164,41,0.759,42,0.582,43,0.759,44,0.967,45,0.663,46,0.982,47,0.969,48,0.663,49,0.927,50,0.759,51,0.759,52,0.961,53,0.694,54,0.694,55,0.759,56,0.849,57,0.576,58,0.897,59,0.576,60,0.969,61,0.827,62,0.552,63,0.576,64,0.792,65,0.506,66,0.576,67,0.484,68,0.827,69,0.887,70,0.74,71,0.529,72,0.576,73,0.663,74,0.484,75,0.529,76,0.529,77,1.414,78,0.529,79,0.576,80,1.08,81,0.576,82,0.576,83,0.576,84,0.576,85,0.576,86,0.576,87,0.576,88,0.576,89,0.576,90,0.576,91,0.576,92,0.576,93,1.026,94,0.759,95,0.552,96,0.576,97,0.576,98,0.576,99,0.983,100,0.576,101,0.576,102,0.576,103,0.576,104,0.576,105,0.576,106,0.576,107,0.576,108,0.576,109,0.576,110,0.576,111,0.576,112,0.576,113,0.759,114,0.759,115,0.576,116,0.576,117,0.576,118,0.529,119,0.529,120,0.529,121,0.552,122,1.064,123,0.529,124,0.462,125,0.552,126,0.576,127,0.969,128,0.576,129,0.576,130,0.576,131,0.576,132,0.638,133,0.529,134,0.518,135,0.529,136,0.633,137,0.694,138,0.603,139,0.808,140,0.576,141,0.633,142,0.484,143,0.633,144,0.506,145,0.552,146,0.552,147,0.576,148,0.576,149,0.484,150,0.552,151,0.462,152,0.009,153,0.009,975,3.321]],["title/modules/PrismaModule.html",[176,1.587,190,2.404]],["body/modules/PrismaModule.html",[0,0.386,3,0.281,4,0.254,5,0.299,14,0.016,21,0.281,28,0.608,152,0.013,153,0.013,163,3.64,164,3.227,165,3.64,166,3.64,168,2.031,169,2.404,176,3.004,178,2.901,179,2.633,180,3.42,181,3.42,182,3.055,183,4.273,184,4.273,190,4.898,192,4.022,193,2.901,194,3.227,198,3.806,438,6.013,976,5.113,977,5.113,978,5.9,979,5.9,980,5.9,981,5.9]],["title/injectables/PrismaService.html",[198,1.823,228,1.396]],["body/injectables/PrismaService.html",[0,0.398,3,0.289,4,0.262,5,0.262,7,0.317,14,0.015,16,0.56,21,0.289,152,0.013,153,0.013,158,2.877,162,2.477,168,2.067,169,2.477,198,3.305,228,2.53,229,3.325,245,3.493,257,3.751,268,2.989,365,3.523,982,5.268,983,7.061,984,7.464,985,7.914,986,6.079,987,6.079]],["title/classes/RegisterInput.html",[0,0.255,48,0.542]],["body/classes/RegisterInput.html",[0,0.529,1,0.754,2,0.48,3,0.157,4,0.142,5,0.142,6,0.48,7,0.172,8,0.599,10,0.894,11,0.571,12,1.05,13,0.503,14,0.016,15,1.309,16,0.51,18,0.808,21,0.386,22,0.571,23,0.754,24,0.721,25,0.787,26,0.754,27,1.194,28,0.74,29,1.037,30,0.754,31,1.115,32,0.754,33,1.05,34,0.935,35,0.754,36,1.115,37,0.754,38,0.962,39,0.754,40,1.161,41,0.754,42,0.58,43,0.754,44,0.962,45,0.659,46,1.05,47,1.065,48,0.771,49,1.019,50,0.754,51,0.754,52,0.959,53,0.69,54,0.69,55,0.754,56,0.845,57,0.571,58,0.894,59,0.571,60,0.965,61,0.822,62,0.547,63,0.571,64,0.787,65,0.502,66,0.571,67,0.48,68,0.822,69,0.883,70,0.736,71,0.524,72,0.571,73,0.659,74,0.48,75,0.524,76,0.524,77,1.413,78,0.524,79,0.571,80,1.079,81,0.571,82,0.571,83,0.571,84,0.571,85,0.571,86,0.571,87,0.571,88,0.571,89,0.571,90,0.571,91,0.571,92,0.571,93,1.023,94,0.754,95,0.547,96,0.571,97,0.571,98,0.571,99,0.981,100,0.571,101,0.571,102,0.571,103,0.571,104,0.571,105,0.571,106,0.571,107,0.571,108,0.571,109,0.571,110,0.571,111,0.571,112,0.571,113,0.754,114,0.754,115,0.571,116,0.571,117,0.571,118,0.524,119,0.524,120,0.524,121,0.547,122,1.004,123,0.524,124,0.458,125,0.547,126,0.571,127,0.883,128,0.571,129,0.571,130,0.571,131,0.571,132,0.635,133,0.524,134,0.515,135,0.524,136,0.629,137,0.69,138,0.599,139,0.806,140,0.571,141,0.629,142,0.48,143,0.629,144,0.502,145,0.547,146,0.547,147,0.571,148,0.571,149,0.48,150,0.547,151,0.458,152,0.009,153,0.009,988,3.291,989,3.291,990,3.291]],["title/interfaces/Session.html",[312,2.258,442,2.258]],["body/interfaces/Session.html",[0,0.157,3,0.178,4,0.161,5,0.3,7,0.125,8,0.581,13,0.424,14,0.016,18,0.716,21,0.114,29,1.021,33,0.366,34,0.544,42,0.208,58,0.863,67,0.817,70,0.319,73,0.52,74,0.754,80,0.789,99,0.334,132,0.643,134,0.732,136,0.319,137,1.119,138,0.655,151,0.72,152,0.007,153,0.007,168,1.642,173,1.712,174,2.569,179,1.071,193,2.256,213,2.166,221,2.256,245,3.001,247,1.181,257,1.482,258,3.608,259,3.109,263,2.659,264,2.758,268,3.373,312,3.443,346,3.443,349,3.251,442,2.659,443,2.469,444,1.712,445,1.244,446,1.392,447,1.712,448,1.87,449,1.87,450,1.87,451,1.87,452,1.87,453,1.87,454,1.87,455,1.87,456,1.87,457,1.87,458,1.87,459,1.87,460,1.87,461,1.87,462,1.87,463,1.87,464,1.87,465,1.87,466,1.87,467,1.87,468,1.87,469,1.87,470,1.87,471,2.91,472,2.306,473,2.91,474,1.87,475,3.572,476,2.91,477,1.392,478,2.91,479,1.712,480,2.044,481,4.282,482,1.712,483,2.044,484,3.031,485,1.712,486,2.044,487,1.482,488,1.712,489,1.712,490,4.368,491,1.712,492,4.603,493,1.482,494,1.87,495,1.87,496,4.368,497,2.91,498,2.91,499,2.91,500,1.87,501,5.13,502,3.001,503,3.271,504,4.531,505,2.469,506,1.87,507,2.91,508,1.87,509,1.712,510,2.665,511,1.87,512,5.757,513,1.482,514,3.271,515,2.665,516,1.586,517,1.482,518,1.87,519,1.87,520,1.87,521,1.712,522,1.87,523,1.87,524,1.87,525,1.87,526,2.665,527,3.572,528,1.87,529,2.91,530,3.572,531,1.87,532,1.87,533,1.712,534,4,535,2.91,536,1.586,537,5.498,538,5.794,539,3.572,540,3.572,541,3.572,542,1.87,543,5.272,544,2.665,545,1.87,546,1.712,547,1.87,548,1.87,549,1.87,550,1.87,551,1.712,552,1.712,553,4.368,554,3.572,555,3.572,556,3.572,557,4.829,558,4.626,559,4.829,560,4.968,561,4.626,562,4.031,563,5.192,564,4.031,565,5.234,566,3.692,567,4.422,568,4.422,569,4.626,570,4.031,571,5.244,572,4.829,573,4.368,574,1.87,575,2.91,576,1.87,577,4.368,578,1.87,579,3.572,580,1.87,581,5.13,582,1.87,583,2.91,584,3.572,585,1.87,586,3.572,587,2.91,588,1.87,589,4.031,590,3.572,591,1.87,592,4.299,593,2.665,594,2.91,595,1.87,596,1.87,597,1.87,598,1.87,599,1.87,600,4.422,601,1.87,602,1.712,603,3.001,604,1.87,605,3.572,606,1.87,607,3.271,608,1.87,609,3.572,610,1.87,611,3.572,612,1.87,613,4.368,614,3.572,615,3.572,616,1.87,617,1.87,618,1.87,619,3.271,620,1.87,621,1.87,622,2.91,623,2.91,624,3.572,625,1.712,626,2.91,627,1.87,628,1.87,629,3.271,630,4.236,631,1.87,632,2.91,633,2.91,634,1.712,635,4.626,636,1.87,637,3.692,638,2.91,639,2.91,640,1.87,641,1.87,642,1.87,643,1.712,644,1.87,645,1.87,646,4.994,647,1.87,648,1.87,649,2.91,650,1.87,651,1.87,652,1.87,653,1.87,654,1.87,655,1.87,656,1.87,657,1.87,658,1.87,659,1.87,660,1.87,661,1.87,662,1.87,663,1.87,664,1.482,665,1.87,666,2.91,667,1.87,668,1.87,669,1.87,670,1.87,671,1.87,672,3.42,673,2.91,674,1.87,675,1.87,676,1.87,677,1.87,678,1.87,679,1.87,680,5.244,681,1.87,682,1.87,683,1.87,684,1.87,685,1.87,686,1.712,687,1.87,688,1.87,689,1.87,690,1.87,691,4.368,692,1.87,693,1.87,694,3.572,695,2.91,696,1.87,697,5.67,698,1.87,699,4.031,700,4.626,701,1.87,702,1.87,703,1.712,704,3.572,705,3.031,706,1.87,707,1.87,708,1.87,709,1.87,710,1.87,711,1.87,712,1.87,713,4.031,714,1.87,715,1.87,716,1.87,717,2.91,718,1.87,719,1.712,720,1.87,721,2.665,722,1.712,723,1.87,724,3.572,725,1.586,726,1.87,727,1.87,728,1.87,729,1.87,730,1.87,731,2.044,732,1.87,733,3.194,734,1.87,735,1.87,736,1.87,737,3.572,738,1.87,739,1.87,740,1.87,741,1.87,742,1.87,743,1.87,744,1.87,745,1.87,746,1.87,747,1.87,748,1.392,749,1.87,750,1.87,751,1.87,752,1.87,753,2.91,754,1.87,755,1.87,756,2.91,757,1.87,758,1.87,759,1.87,760,1.87,761,1.87,762,1.87,763,1.712,764,1.87,765,1.87,766,1.87,767,1.87,768,1.712,769,1.87,770,1.87,771,1.87,772,1.87,773,1.586,774,1.586,775,1.712,776,1.87,777,3.42,778,1.87,779,1.712,780,1.712,781,1.712,782,1.87,783,1.87,784,1.87,785,2.665,786,1.87,787,2.91,788,1.87,789,1.87,790,1.87,791,2.91,792,1.87,793,1.87,794,1.87,795,2.91,796,1.87,797,1.87,798,1.87,799,1.87,800,1.87,801,1.712,802,1.712,803,1.712,804,1.712,805,1.712,806,1.712,807,1.87,808,1.87,809,1.87,810,1.87,811,1.87,812,1.87,813,1.87,814,1.87]],["title/classes/Success.html",[0,0.255,132,0.446]],["body/classes/Success.html",[0,0.529,1,0.758,2,0.483,3,0.158,4,0.143,5,0.143,6,0.483,7,0.173,8,0.602,9,0.862,10,0.896,11,0.576,12,1.052,13,0.478,14,0.016,15,1.31,16,0.305,18,0.808,21,0.387,22,0.576,23,0.758,24,0.725,25,0.792,26,0.758,27,1.196,28,0.741,29,1.039,30,0.758,31,1.118,32,0.758,33,1.052,34,0.938,35,0.758,36,1.118,37,0.758,38,0.966,39,0.758,40,1.163,41,0.758,42,0.581,43,0.758,44,0.966,45,0.662,46,0.981,47,0.969,48,0.662,49,0.927,50,0.758,51,0.758,52,0.961,53,0.693,54,0.693,55,0.758,56,0.848,57,0.576,58,0.896,59,0.576,60,0.969,61,0.826,62,0.552,63,0.576,64,0.792,65,0.505,66,0.576,67,0.483,68,0.826,69,0.886,70,0.739,71,0.528,72,0.576,73,0.662,74,0.483,75,0.528,76,0.528,77,1.414,78,0.528,79,0.576,80,1.08,81,0.576,82,0.576,83,0.576,84,0.576,85,0.576,86,0.576,87,0.576,88,0.576,89,0.576,90,0.576,91,0.576,92,0.576,93,1.026,94,0.758,95,0.552,96,0.576,97,0.576,98,0.576,99,0.983,100,0.576,101,0.576,102,0.576,103,0.576,104,0.576,105,0.576,106,0.576,107,0.576,108,0.576,109,0.576,110,0.576,111,0.576,112,0.576,113,0.758,114,0.758,115,0.576,116,0.576,117,0.576,118,0.528,119,0.528,120,0.528,121,0.552,122,1.006,123,0.528,124,0.462,125,0.552,126,0.576,127,0.886,128,0.576,129,0.576,130,0.576,131,0.576,132,0.697,133,0.886,134,0.518,135,0.528,136,0.632,137,0.693,138,0.602,139,0.808,140,0.576,141,0.632,142,0.483,143,0.632,144,0.505,145,0.552,146,0.552,147,0.576,148,0.576,149,0.483,150,0.552,151,0.462,152,0.009,153,0.009,991,3.317]],["title/interfaces/Template.html",[442,2.258,481,2.131]],["body/interfaces/Template.html",[0,0.157,3,0.178,4,0.161,5,0.3,7,0.125,8,0.58,13,0.47,14,0.016,18,0.716,21,0.114,29,1.021,33,0.365,34,0.544,42,0.449,58,0.862,67,0.817,70,0.318,73,0.519,74,0.754,80,0.788,99,0.334,132,0.428,134,0.732,136,0.318,137,1.111,138,0.303,151,0.72,152,0.007,153,0.007,168,1.64,173,1.709,174,2.568,179,1.069,193,2.253,213,3.249,221,2.253,245,2.999,247,1.179,257,1.479,258,3.607,259,3.107,263,2.656,264,2.756,268,3.371,312,3.249,346,3.44,349,3.249,442,2.656,443,2.465,444,1.709,445,1.241,446,1.389,447,1.709,448,1.866,449,1.866,450,1.866,451,1.866,452,1.866,453,1.866,454,1.866,455,1.866,456,1.866,457,1.866,458,1.866,459,1.866,460,1.866,461,1.866,462,1.866,463,1.866,464,1.866,465,1.866,466,1.866,467,1.866,468,1.866,469,1.866,470,1.866,471,2.906,472,2.302,473,2.906,474,1.866,475,3.568,476,2.906,477,1.389,478,2.906,479,1.709,480,2.041,481,4.306,482,1.709,483,2.041,484,3.027,485,1.709,486,2.041,487,1.479,488,1.709,489,3.268,490,2.906,491,1.709,492,4.601,493,1.479,494,1.866,495,1.866,496,4.364,497,2.906,498,2.906,499,2.906,500,1.866,501,5.127,502,2.998,503,3.268,504,4.529,505,2.465,506,1.866,507,2.906,508,1.866,509,1.709,510,2.661,511,1.866,512,5.755,513,1.479,514,3.268,515,2.661,516,1.583,517,1.479,518,1.866,519,1.866,520,1.866,521,1.709,522,1.866,523,1.866,524,1.866,525,1.866,526,2.661,527,3.568,528,1.866,529,2.906,530,3.568,531,1.866,532,1.866,533,1.709,534,3.996,535,2.906,536,1.583,537,5.496,538,5.792,539,3.568,540,3.568,541,3.568,542,1.866,543,5.27,544,2.661,545,1.866,546,1.709,547,1.866,548,1.866,549,1.866,550,1.866,551,1.709,552,1.709,553,4.364,554,3.568,555,3.568,556,3.568,557,4.826,558,4.622,559,4.826,560,4.966,561,4.622,562,4.027,563,5.19,564,4.027,565,5.232,566,3.688,567,4.419,568,4.419,569,4.622,570,4.027,571,5.241,572,4.826,573,4.364,574,1.866,575,2.906,576,1.866,577,4.364,578,1.866,579,3.568,580,1.866,581,5.127,582,1.866,583,2.906,584,3.568,585,1.866,586,3.568,587,2.906,588,1.866,589,4.027,590,3.568,591,1.866,592,4.297,593,2.661,594,2.906,595,1.866,596,1.866,597,1.866,598,1.866,599,1.866,600,4.419,601,1.866,602,1.709,603,2.998,604,1.866,605,3.568,606,1.866,607,3.268,608,1.866,609,3.568,610,1.866,611,3.568,612,1.866,613,4.364,614,3.568,615,3.568,616,1.866,617,1.866,618,1.866,619,3.268,620,1.866,621,1.866,622,2.906,623,2.906,624,3.568,625,1.709,626,2.906,627,1.866,628,1.866,629,3.268,630,4.232,631,1.866,632,2.906,633,2.906,634,1.709,635,4.622,636,1.866,637,3.688,638,2.906,639,2.906,640,1.866,641,1.866,642,1.866,643,1.709,644,1.866,645,1.866,646,4.99,647,1.866,648,1.866,649,2.906,650,1.866,651,1.866,652,1.866,653,1.866,654,1.866,655,1.866,656,1.866,657,1.866,658,1.866,659,1.866,660,1.866,661,1.866,662,1.866,663,1.866,664,1.479,665,1.866,666,2.906,667,1.866,668,1.866,669,1.866,670,1.866,671,1.866,672,3.417,673,2.906,674,1.866,675,1.866,676,1.866,677,1.866,678,1.866,679,1.866,680,5.241,681,1.866,682,1.866,683,1.866,684,1.866,685,1.866,686,1.709,687,1.866,688,1.866,689,1.866,690,1.866,691,4.364,692,1.866,693,1.866,694,3.568,695,2.906,696,1.866,697,5.668,698,1.866,699,4.027,700,4.622,701,1.866,702,1.866,703,1.709,704,3.568,705,3.027,706,1.866,707,1.866,708,1.866,709,1.866,710,1.866,711,1.866,712,1.866,713,4.027,714,1.866,715,1.866,716,1.866,717,2.906,718,1.866,719,1.709,720,1.866,721,2.661,722,1.709,723,1.866,724,3.568,725,1.583,726,1.866,727,1.866,728,1.866,729,1.866,730,1.866,731,2.041,732,1.866,733,3.191,734,1.866,735,1.866,736,1.866,737,3.568,738,1.866,739,1.866,740,1.866,741,1.866,742,1.866,743,1.866,744,1.866,745,1.866,746,1.866,747,1.866,748,1.389,749,1.866,750,1.866,751,1.866,752,1.866,753,2.906,754,1.866,755,1.866,756,2.906,757,1.866,758,1.866,759,1.866,760,1.866,761,1.866,762,1.866,763,1.709,764,1.866,765,1.866,766,1.866,767,1.866,768,1.709,769,1.866,770,1.866,771,1.866,772,1.866,773,1.583,774,1.583,775,1.709,776,1.866,777,3.417,778,1.866,779,1.709,780,1.709,781,1.709,782,1.866,783,1.866,784,1.866,785,2.661,786,1.866,787,2.906,788,1.866,789,1.866,790,1.866,791,2.906,792,1.866,793,1.866,794,1.866,795,2.906,796,1.866,797,1.866,798,1.866,799,1.866,800,1.866,801,1.709,802,1.709,803,1.709,804,1.709,805,1.709,806,1.709,807,1.866,808,1.866,809,1.866,810,1.866,811,1.866,812,1.866,813,1.866,814,1.866]],["title/injectables/TemplateEditorService.html",[228,1.396,480,2.131]],["body/injectables/TemplateEditorService.html",[0,0.262,3,0.191,4,0.173,5,0.173,7,0.209,8,0.687,9,1.195,13,0.508,14,0.016,16,0.682,18,0.761,21,0.191,42,0.573,62,0.903,65,0.938,67,0.583,142,0.791,151,0.96,152,0.01,153,0.01,158,2.212,162,2.899,168,1.172,174,2.775,221,3.578,226,3.47,228,1.945,229,2.19,250,2.946,258,3.995,259,2.748,292,3.871,304,4.92,305,3.871,308,2.471,354,4.258,380,3.47,445,3.886,446,4.349,477,2.321,480,2.969,487,2.471,493,3.349,502,3.146,509,2.856,630,2.856,637,4.92,643,2.856,672,4.068,719,3.871,721,2.856,722,2.856,725,2.646,731,3.774,733,4.567,857,3.118,858,3.118,871,3.47,938,4.704,947,3.118,992,3.118,993,6.158,994,6.602,995,5.428,996,6.602,997,5.428,998,5.428,999,4.005,1000,5.428,1001,4.005,1002,6.9,1003,5.428,1004,6.158,1005,4.005,1006,4.005,1007,5.428,1008,4.005,1009,5.428,1010,4.005,1011,5.428,1012,3.47,1013,4.005,1014,4.005,1015,4.795,1016,4.005,1017,6.602,1018,4.005,1019,6.9,1020,4.005,1021,4.005,1022,4.005,1023,4.005,1024,5.428,1025,4.005,1026,4.005,1027,3.47,1028,4.005,1029,4.005,1030,4.005,1031,4.005,1032,4.005,1033,4.005,1034,4.005,1035,2.856,1036,4.005,1037,4.005,1038,4.005,1039,4.005,1040,4.704,1041,4.005,1042,4.005,1043,4.005,1044,4.005,1045,4.005,1046,4.005,1047,4.005,1048,5.428,1049,4.005,1050,3.47,1051,4.005,1052,4.005,1053,4.005,1054,4.005,1055,4.005,1056,4.704,1057,4.005,1058,3.47,1059,3.47,1060,3.47,1061,3.118,1062,4.005,1063,4.005,1064,4.005,1065,4.005,1066,4.005,1067,4.005,1068,5.428,1069,5.428,1070,4.005,1071,6.158,1072,4.005,1073,4.005,1074,4.005,1075,4.005,1076,4.005,1077,5.428,1078,6.158,1079,6.158,1080,6.602,1081,4.005,1082,4.005,1083,4.005,1084,4.005,1085,4.005,1086,6.574,1087,7.402,1088,4.005,1089,4.005]],["title/modules/TemplatePlaygroundModule.html",[176,1.587,1090,2.778]],["body/modules/TemplatePlaygroundModule.html",[0,0.356,3,0.259,4,0.234,5,0.234,14,0.016,21,0.259,152,0.013,153,0.013,168,2.324,176,2.216,178,2.674,179,2.426,180,3.152,181,4.127,182,3.687,183,4.127,184,3.152,189,4.761,192,3.831,193,2.674,194,2.974,196,4.713,445,2.816,446,3.152,477,3.152,479,3.878,480,4.221,481,3.615,482,3.878,483,4.221,484,3.593,485,3.878,486,4.221,487,3.355,488,3.878,664,4.97,1090,5.794,1091,4.712,1092,4.712,1093,4.712,1094,5.438,1095,4.712,1096,5.438,1097,6.609,1098,6.609,1099,5.438,1100,4.712,1101,5.438,1102,6.609,1103,5.438,1104,6.609,1105,5.438]],["title/classes/UpdateBoardInput.html",[0,0.255,30,0.62]],["body/classes/UpdateBoardInput.html",[0,0.528,1,0.749,2,0.476,3,0.155,4,0.141,5,0.141,6,0.476,7,0.17,8,0.596,9,1.207,10,0.891,11,0.567,12,1.047,13,0.511,14,0.016,15,1.31,16,0.556,18,0.808,21,0.386,22,0.567,23,0.749,24,0.717,25,0.783,26,0.749,27,1.225,28,0.759,29,1.053,30,0.879,31,1.193,32,0.749,33,1.047,34,0.932,35,0.749,36,1.111,37,0.749,38,0.958,39,0.749,40,1.157,41,0.749,42,0.578,43,0.749,44,0.958,45,0.655,46,0.975,47,0.962,48,0.655,49,0.92,50,0.749,51,0.749,52,0.956,53,0.686,54,0.686,55,0.749,56,0.841,57,0.567,58,0.891,59,0.567,60,0.962,61,0.817,62,0.543,63,0.567,64,0.783,65,0.497,66,0.567,67,0.476,68,0.817,69,0.879,70,0.733,71,0.52,72,0.567,73,0.655,74,0.476,75,0.52,76,0.52,77,1.412,78,0.52,79,0.567,80,1.079,81,0.567,82,0.567,83,0.567,84,0.567,85,0.567,86,0.567,87,0.567,88,0.567,89,0.567,90,0.567,91,0.567,92,0.567,93,1.019,94,0.749,95,0.543,96,0.567,97,0.567,98,0.567,99,0.979,100,0.567,101,0.567,102,0.567,103,0.567,104,0.567,105,0.567,106,0.567,107,0.567,108,0.567,109,0.567,110,0.567,111,0.567,112,0.567,113,0.749,114,0.749,115,0.567,116,0.567,117,0.567,118,0.52,119,0.52,120,0.52,121,0.543,122,1.001,123,0.52,124,0.454,125,0.543,126,0.567,127,0.879,128,0.567,129,0.567,130,0.567,131,0.567,132,0.632,133,0.52,134,0.512,135,0.52,136,0.625,137,0.686,138,0.596,139,0.803,140,0.567,141,0.625,142,0.476,143,0.625,144,0.497,145,0.543,146,0.543,147,0.567,148,0.567,149,0.476,150,0.543,151,0.454,152,0.009,153,0.009,1106,3.265,1107,3.265,1108,3.265,1109,3.265]],["title/classes/UpdateCardInput.html",[0,0.255,39,0.62]],["body/classes/UpdateCardInput.html",[0,0.528,1,0.746,2,0.473,3,0.155,4,0.14,5,0.14,6,0.473,7,0.169,8,0.593,9,1.271,10,0.889,11,0.563,12,1.045,13,0.519,14,0.016,15,1.31,16,0.588,18,0.808,21,0.386,22,0.563,23,0.746,24,0.714,25,0.779,26,0.746,27,1.224,28,0.758,29,1.035,30,0.746,31,1.109,32,0.746,33,1.09,34,0.93,35,0.746,36,1.109,37,0.746,38,1.109,39,0.876,40,1.219,41,0.746,42,0.577,43,0.746,44,0.955,45,0.652,46,0.973,47,0.959,48,0.652,49,0.918,50,0.746,51,0.746,52,0.955,53,0.683,54,0.683,55,0.746,56,0.838,57,0.563,58,0.889,59,0.563,60,0.959,61,0.813,62,0.54,63,0.563,64,0.779,65,0.495,66,0.563,67,0.473,68,0.813,69,0.876,70,0.73,71,0.517,72,0.563,73,0.652,74,0.473,75,0.517,76,0.517,77,1.412,78,0.517,79,0.563,80,1.079,81,0.563,82,0.563,83,0.563,84,0.563,85,0.563,86,0.563,87,0.563,88,0.563,89,0.563,90,0.563,91,0.563,92,0.563,93,1.017,94,0.746,95,0.54,96,0.563,97,0.563,98,0.563,99,0.977,100,0.563,101,0.563,102,0.563,103,0.563,104,0.563,105,0.563,106,0.563,107,0.563,108,0.563,109,0.563,110,0.563,111,0.563,112,0.563,113,0.746,114,0.746,115,0.563,116,0.563,117,0.563,118,0.517,119,0.517,120,0.517,121,0.54,122,0.999,123,0.517,124,0.452,125,0.54,126,0.563,127,0.876,128,0.563,129,0.563,130,0.563,131,0.563,132,0.63,133,0.517,134,0.51,135,0.517,136,0.622,137,0.683,138,0.593,139,0.802,140,0.563,141,0.622,142,0.473,143,0.622,144,0.495,145,0.54,146,0.54,147,0.563,148,0.563,149,0.473,150,0.54,151,0.452,152,0.009,153,0.009,1110,3.246,1111,3.246,1112,3.246,1113,3.246,1114,3.246]],["title/classes/UpdateLabelInput.html",[0,0.255,43,0.62]],["body/classes/UpdateLabelInput.html",[0,0.529,1,0.752,2,0.478,3,0.156,4,0.142,5,0.142,6,0.478,7,0.171,8,0.598,9,1.096,10,0.893,11,0.57,12,1.049,13,0.503,14,0.016,15,1.31,16,0.51,18,0.808,21,0.386,22,0.57,23,0.752,24,0.72,25,0.786,26,0.752,27,1.193,28,0.74,29,1.054,30,0.752,31,1.113,32,0.752,33,1.049,34,0.935,35,0.752,36,1.113,37,0.752,38,0.961,39,0.752,40,1.16,41,0.752,42,0.611,43,0.881,44,1.113,45,0.657,46,0.978,47,0.964,48,0.657,49,0.923,50,0.752,51,0.752,52,0.958,53,0.688,54,0.688,55,0.752,56,0.843,57,0.57,58,0.893,59,0.57,60,0.964,61,0.82,62,0.546,63,0.57,64,0.786,65,0.5,66,0.57,67,0.478,68,0.82,69,0.881,70,0.735,71,0.523,72,0.57,73,0.657,74,0.478,75,0.523,76,0.523,77,1.413,78,0.523,79,0.57,80,1.079,81,0.57,82,0.57,83,0.57,84,0.57,85,0.57,86,0.57,87,0.57,88,0.57,89,0.57,90,0.57,91,0.57,92,0.57,93,1.022,94,0.752,95,0.546,96,0.57,97,0.57,98,0.57,99,0.98,100,0.57,101,0.57,102,0.57,103,0.57,104,0.57,105,0.57,106,0.57,107,0.57,108,0.57,109,0.57,110,0.57,111,0.57,112,0.57,113,0.752,114,0.752,115,0.57,116,0.57,117,0.57,118,0.523,119,0.523,120,0.523,121,0.546,122,1.003,123,0.523,124,0.457,125,0.546,126,0.57,127,0.881,128,0.57,129,0.57,130,0.57,131,0.57,132,0.634,133,0.523,134,0.514,135,0.523,136,0.627,137,0.688,138,0.598,139,0.805,140,0.57,141,0.627,142,0.478,143,0.627,144,0.5,145,0.546,146,0.546,147,0.57,148,0.57,149,0.478,150,0.546,151,0.457,152,0.009,153,0.009,1115,3.283,1116,3.283,1117,3.283]],["title/classes/UpdateListInput.html",[0,0.255,35,0.62]],["body/classes/UpdateListInput.html",[0,0.528,1,0.749,2,0.476,3,0.155,4,0.141,5,0.141,6,0.476,7,0.17,8,0.596,9,1.207,10,0.891,11,0.567,12,1.047,13,0.511,14,0.016,15,1.31,16,0.556,18,0.808,21,0.386,22,0.567,23,0.749,24,0.717,25,0.783,26,0.749,27,1.225,28,0.739,29,1.053,30,0.749,31,1.111,32,0.749,33,1.092,34,0.932,35,0.879,36,1.193,37,0.749,38,0.958,39,0.749,40,1.157,41,0.749,42,0.578,43,0.749,44,0.958,45,0.655,46,0.975,47,0.962,48,0.655,49,0.92,50,0.749,51,0.749,52,0.956,53,0.686,54,0.686,55,0.749,56,0.841,57,0.567,58,0.891,59,0.567,60,0.962,61,0.817,62,0.543,63,0.567,64,0.783,65,0.497,66,0.567,67,0.476,68,0.817,69,0.879,70,0.733,71,0.52,72,0.567,73,0.655,74,0.476,75,0.52,76,0.52,77,1.412,78,0.52,79,0.567,80,1.079,81,0.567,82,0.567,83,0.567,84,0.567,85,0.567,86,0.567,87,0.567,88,0.567,89,0.567,90,0.567,91,0.567,92,0.567,93,1.019,94,0.749,95,0.543,96,0.567,97,0.567,98,0.567,99,0.979,100,0.567,101,0.567,102,0.567,103,0.567,104,0.567,105,0.567,106,0.567,107,0.567,108,0.567,109,0.567,110,0.567,111,0.567,112,0.567,113,0.749,114,0.749,115,0.567,116,0.567,117,0.567,118,0.52,119,0.52,120,0.52,121,0.543,122,1.001,123,0.52,124,0.454,125,0.543,126,0.567,127,0.879,128,0.567,129,0.567,130,0.567,131,0.567,132,0.632,133,0.52,134,0.512,135,0.52,136,0.625,137,0.686,138,0.596,139,0.803,140,0.567,141,0.625,142,0.476,143,0.625,144,0.497,145,0.543,146,0.543,147,0.567,148,0.567,149,0.476,150,0.543,151,0.454,152,0.009,153,0.009,1118,3.265,1119,3.265,1120,3.265,1121,3.265]],["title/classes/UpdateMemberRoleInput.html",[0,0.255,55,0.62]],["body/classes/UpdateMemberRoleInput.html",[0,0.529,1,0.754,2,0.48,3,0.157,4,0.142,5,0.142,6,0.48,7,0.172,8,0.599,10,0.981,11,0.571,12,1.094,13,0.503,14,0.016,15,1.309,16,0.51,18,0.808,21,0.386,22,0.571,23,0.754,24,0.721,25,0.787,26,0.754,27,1.194,28,0.74,29,1.037,30,0.754,31,1.115,32,0.754,33,1.05,34,0.935,35,0.754,36,1.115,37,0.754,38,0.962,39,0.754,40,1.161,41,0.754,42,0.58,43,0.754,44,0.962,45,0.659,46,0.978,47,0.965,48,0.659,49,0.924,50,0.754,51,0.754,52,0.999,53,0.69,54,0.69,55,0.883,56,0.845,57,0.571,58,0.894,59,0.571,60,0.965,61,0.822,62,0.547,63,0.571,64,0.787,65,0.502,66,0.571,67,0.48,68,0.822,69,0.883,70,0.736,71,0.524,72,0.571,73,0.659,74,0.48,75,0.524,76,0.524,77,1.413,78,0.524,79,0.571,80,1.079,81,0.571,82,0.571,83,0.571,84,0.571,85,0.571,86,0.571,87,0.571,88,0.571,89,0.571,90,0.571,91,0.571,92,0.571,93,1.023,94,0.754,95,0.547,96,0.571,97,0.571,98,0.571,99,0.981,100,0.571,101,0.571,102,0.571,103,0.571,104,0.571,105,0.571,106,0.571,107,0.571,108,0.571,109,0.571,110,0.571,111,0.571,112,0.571,113,0.754,114,0.754,115,0.571,116,0.571,117,0.571,118,0.524,119,0.524,120,0.524,121,0.547,122,1.004,123,0.524,124,0.458,125,0.547,126,0.571,127,0.883,128,0.571,129,0.571,130,0.571,131,0.571,132,0.635,133,0.524,134,0.515,135,0.524,136,0.629,137,0.69,138,0.599,139,0.806,140,0.571,141,0.629,142,0.48,143,0.629,144,0.502,145,0.547,146,0.547,147,0.571,148,0.571,149,0.48,150,0.547,151,0.458,152,0.009,153,0.009,1122,3.291,1123,3.291,1124,3.291]],["title/classes/UpdateUserInput.html",[0,0.255,51,0.62]],["body/classes/UpdateUserInput.html",[0,0.528,1,0.749,2,0.476,3,0.155,4,0.141,5,0.141,6,0.476,7,0.17,8,0.596,9,1.207,10,0.891,11,0.567,12,1.047,13,0.511,14,0.016,15,1.31,16,0.556,18,0.808,21,0.386,22,0.567,23,0.749,24,0.717,25,0.783,26,0.749,27,1.192,28,0.739,29,1.036,30,0.749,31,1.111,32,0.749,33,1.047,34,0.932,35,0.749,36,1.111,37,0.749,38,0.958,39,0.749,40,1.157,41,0.749,42,0.578,43,0.749,44,0.958,45,0.655,46,1.047,47,1.062,48,0.655,49,1.016,50,0.749,51,0.879,52,0.997,53,0.686,54,0.686,55,0.749,56,0.841,57,0.567,58,0.891,59,0.567,60,0.962,61,0.817,62,0.543,63,0.567,64,0.783,65,0.497,66,0.567,67,0.476,68,0.817,69,0.879,70,0.733,71,0.52,72,0.567,73,0.655,74,0.476,75,0.52,76,0.52,77,1.412,78,0.52,79,0.567,80,1.079,81,0.567,82,0.567,83,0.567,84,0.567,85,0.567,86,0.567,87,0.567,88,0.567,89,0.567,90,0.567,91,0.567,92,0.567,93,1.019,94,0.749,95,0.543,96,0.567,97,0.567,98,0.567,99,0.979,100,0.567,101,0.567,102,0.567,103,0.567,104,0.567,105,0.567,106,0.567,107,0.567,108,0.567,109,0.567,110,0.567,111,0.567,112,0.567,113,0.749,114,0.749,115,0.567,116,0.567,117,0.567,118,0.52,119,0.52,120,0.52,121,0.543,122,1.001,123,0.52,124,0.454,125,0.543,126,0.567,127,0.879,128,0.567,129,0.567,130,0.567,131,0.567,132,0.632,133,0.52,134,0.512,135,0.52,136,0.625,137,0.686,138,0.596,139,0.803,140,0.567,141,0.625,142,0.476,143,0.625,144,0.497,145,0.543,146,0.543,147,0.567,148,0.567,149,0.476,150,0.543,151,0.454,152,0.009,153,0.009,1125,3.265,1126,3.265,1127,3.265,1128,3.265]],["title/classes/UpdateWorkspaceInput.html",[0,0.255,54,0.568]],["body/classes/UpdateWorkspaceInput.html",[0,0.529,1,0.752,2,0.478,3,0.156,4,0.141,5,0.141,6,0.478,7,0.171,8,0.597,9,1.209,10,0.892,11,0.569,12,1.049,13,0.503,14,0.016,15,1.31,16,0.509,18,0.808,21,0.386,22,0.569,23,0.752,24,0.719,25,0.785,26,0.752,27,1.193,28,0.76,29,1.054,30,0.752,31,1.113,32,0.752,33,1.049,34,0.934,35,0.752,36,1.113,37,0.752,38,0.96,39,0.752,40,1.159,41,0.752,42,0.611,43,0.752,44,0.96,45,0.657,46,0.977,47,0.964,48,0.657,49,0.922,50,0.752,51,0.752,52,0.958,53,0.688,54,0.806,55,0.752,56,0.843,57,0.569,58,0.892,59,0.569,60,0.964,61,0.819,62,0.545,63,0.569,64,0.785,65,0.5,66,0.569,67,0.478,68,0.819,69,0.881,70,0.734,71,0.522,72,0.569,73,0.657,74,0.478,75,0.522,76,0.522,77,1.413,78,0.522,79,0.569,80,1.079,81,0.569,82,0.569,83,0.569,84,0.569,85,0.569,86,0.569,87,0.569,88,0.569,89,0.569,90,0.569,91,0.569,92,0.569,93,1.021,94,0.752,95,0.545,96,0.569,97,0.569,98,0.569,99,0.98,100,0.569,101,0.569,102,0.569,103,0.569,104,0.569,105,0.569,106,0.569,107,0.569,108,0.569,109,0.569,110,0.569,111,0.569,112,0.569,113,0.752,114,0.752,115,0.569,116,0.569,117,0.569,118,0.522,119,0.522,120,0.522,121,0.545,122,1.002,123,0.522,124,0.456,125,0.545,126,0.569,127,0.881,128,0.569,129,0.569,130,0.569,131,0.569,132,0.634,133,0.522,134,0.513,135,0.522,136,0.627,137,0.688,138,0.597,139,0.805,140,0.569,141,0.627,142,0.478,143,0.627,144,0.5,145,0.545,146,0.545,147,0.569,148,0.569,149,0.478,150,0.545,151,0.456,152,0.009,153,0.009,1129,3.279,1130,3.279,1131,3.279]],["title/classes/User.html",[0,0.255,139,0.469]],["body/classes/User.html",[0,0.528,1,0.748,2,0.475,3,0.155,4,0.14,5,0.14,6,0.475,7,0.17,8,0.595,9,0.851,10,0.89,11,0.566,12,1.047,13,0.519,14,0.016,15,1.309,16,0.589,18,0.808,21,0.386,22,0.566,23,0.748,24,0.716,25,0.782,26,0.748,27,1.191,28,0.738,29,1.035,30,0.748,31,1.11,32,0.748,33,1.047,34,0.932,35,0.748,36,1.11,37,0.748,38,0.957,39,0.748,40,1.157,41,0.748,42,0.578,43,0.748,44,0.957,45,0.654,46,1.047,47,0.961,48,0.654,49,1.015,50,0.748,51,0.748,52,0.997,53,0.685,54,0.685,55,0.748,56,0.84,57,0.566,58,0.89,59,0.566,60,0.961,61,0.816,62,0.542,63,0.566,64,0.782,65,0.497,66,0.566,67,0.475,68,1.047,69,0.961,70,0.732,71,0.519,72,0.566,73,0.654,74,0.475,75,0.519,76,0.519,77,1.412,78,0.519,79,0.566,80,1.079,81,0.566,82,0.566,83,0.566,84,0.566,85,0.566,86,0.566,87,0.566,88,0.566,89,0.566,90,0.566,91,0.566,92,0.566,93,1.019,94,0.748,95,0.542,96,0.566,97,0.566,98,0.566,99,0.978,100,0.566,101,0.566,102,0.566,103,0.566,104,0.566,105,0.566,106,0.566,107,0.566,108,0.566,109,0.566,110,0.566,111,0.566,112,0.566,113,0.748,114,0.748,115,0.566,116,0.566,117,0.566,118,0.519,119,0.519,120,0.519,121,0.542,122,1.001,123,0.519,124,0.453,125,0.542,126,0.566,127,0.878,128,0.566,129,0.566,130,0.566,131,0.566,132,0.631,133,0.519,134,0.511,135,0.519,136,0.624,137,0.685,138,0.595,139,0.828,140,0.957,141,0.624,142,0.475,143,0.624,144,0.497,145,0.542,146,0.542,147,0.566,148,0.566,149,0.475,150,0.542,151,0.453,152,0.009,153,0.009,1132,3.258,1133,3.258,1134,3.258,1135,3.258,1136,3.258]],["title/classes/Workspace.html",[0,0.255,122,0.568]],["body/classes/Workspace.html",[0,0.527,1,0.735,2,0.463,3,0.151,4,0.137,5,0.137,6,0.463,7,0.166,8,0.584,9,1.196,10,0.882,11,0.552,12,1.085,13,0.542,14,0.016,15,1.309,16,0.666,18,0.808,21,0.386,22,0.552,23,0.735,24,0.704,25,0.768,26,0.735,27,1.184,28,0.755,29,1.049,30,0.735,31,1.1,32,0.735,33,1.039,34,0.923,35,0.735,36,1.1,37,0.735,38,0.944,39,0.735,40,1.147,41,0.735,42,0.606,43,0.735,44,0.944,45,0.643,46,0.965,47,0.95,48,0.643,49,0.909,50,0.735,51,0.735,52,0.949,53,0.673,54,0.673,55,0.735,56,0.828,57,0.552,58,0.882,59,0.552,60,0.95,61,1.035,62,0.529,63,0.552,64,0.992,65,0.485,66,0.552,67,0.463,68,0.802,69,0.866,70,0.722,71,0.507,72,0.552,73,0.643,74,0.463,75,0.507,76,0.507,77,1.41,78,0.507,79,0.552,80,1.077,81,0.552,82,0.552,83,0.552,84,0.552,85,0.552,86,0.552,87,0.552,88,0.552,89,0.552,90,0.552,91,0.552,92,0.552,93,1.052,94,0.735,95,0.529,96,0.552,97,0.552,98,0.552,99,0.972,100,0.552,101,0.552,102,0.552,103,0.552,104,0.552,105,0.552,106,0.552,107,0.552,108,0.552,109,0.552,110,0.552,111,0.552,112,0.552,113,0.735,114,0.735,115,0.552,116,0.552,117,0.552,118,0.507,119,0.507,120,0.507,121,0.529,122,1.018,123,0.507,124,0.443,125,0.529,126,0.552,127,0.866,128,0.552,129,0.552,130,0.552,131,0.552,132,0.623,133,0.507,134,0.502,135,0.507,136,0.613,137,0.792,138,0.584,139,0.822,140,0.552,141,0.613,142,0.463,143,0.613,144,0.485,145,0.904,146,0.904,147,0.944,148,0.944,149,0.463,150,0.529,151,0.443,152,0.009,153,0.009,1137,3.181,1138,3.181,1139,3.181,1140,3.181,1141,3.181,1142,3.181,1143,3.181,1144,3.181,1145,3.181,1146,3.181]],["title/guards/WorkspaceGuard.html",[241,3.034,435,2.574]],["body/guards/WorkspaceGuard.html",[0,0.342,3,0.249,4,0.225,5,0.225,7,0.273,8,0.661,9,1.168,10,0.727,12,0.983,13,0.46,14,0.016,16,0.594,21,0.249,24,0.796,42,0.56,52,0.727,80,0.856,122,0.761,139,0.63,152,0.012,153,0.012,158,2.628,162,2.129,168,2.237,169,2.129,174,2.038,198,3.419,199,3.224,205,3.029,221,2.57,222,3.029,228,2.311,243,4.069,245,3.274,246,6.331,247,3.172,250,2.878,251,4.317,252,5.589,253,6.331,255,5.448,256,4.528,257,3.224,258,3.783,259,3.491,260,4.528,261,4.528,262,4.528,263,3.738,264,3.172,268,2.57,270,4.069,324,3.452,365,3.029,435,4.261,603,3.029,1035,3.726,1147,4.528,1148,6.45,1149,5.225,1150,7.643,1151,5.225,1152,5.225,1153,4.528,1154,4.069,1155,5.225,1156,4.528,1157,5.225,1158,4.528,1159,4.528,1160,4.069,1161,6.45,1162,5.225,1163,5.225,1164,5.225,1165,5.225,1166,6.063,1167,5.225,1168,5.225,1169,5.225,1170,5.225,1171,5.225,1172,6.45,1173,5.225,1174,5.225,1175,6.45,1176,5.225,1177,5.225,1178,5.225]],["title/classes/WorkspaceMembers.html",[0,0.255,93,0.62]],["body/classes/WorkspaceMembers.html",[0,0.528,1,0.749,2,0.475,3,0.155,4,0.141,5,0.141,6,0.475,7,0.17,8,0.595,10,0.956,11,0.566,12,1.092,13,0.519,14,0.016,15,1.309,16,0.589,18,0.808,21,0.386,22,0.566,23,0.749,24,0.717,25,0.782,26,0.749,27,1.192,28,0.738,29,1.036,30,0.749,31,1.111,32,0.749,33,1.047,34,0.932,35,0.749,36,1.111,37,0.749,38,0.957,39,0.749,40,1.157,41,0.749,42,0.578,43,0.749,44,0.957,45,0.655,46,0.975,47,0.961,48,0.655,49,0.92,50,0.749,51,0.749,52,0.997,53,0.685,54,0.685,55,0.749,56,0.84,57,0.566,58,0.89,59,0.566,60,0.961,61,0.816,62,0.543,63,0.566,64,0.782,65,0.497,66,0.566,67,0.475,68,0.816,69,0.878,70,0.732,71,0.52,72,0.566,73,0.655,74,0.475,75,0.52,76,0.52,77,1.412,78,0.52,79,0.566,80,1.079,81,0.566,82,0.566,83,0.566,84,0.566,85,0.566,86,0.566,87,0.566,88,0.566,89,0.566,90,0.566,91,0.566,92,0.566,93,1.062,94,0.749,95,0.543,96,0.566,97,0.566,98,0.566,99,0.979,100,0.566,101,0.566,102,0.566,103,0.566,104,0.566,105,0.566,106,0.566,107,0.566,108,0.566,109,0.566,110,0.566,111,0.566,112,0.566,113,0.749,114,0.749,115,0.566,116,0.566,117,0.566,118,0.52,119,0.52,120,0.52,121,0.543,122,1.06,123,0.52,124,0.454,125,0.543,126,0.566,127,0.878,128,0.566,129,0.566,130,0.566,131,0.566,132,0.632,133,0.52,134,0.512,135,0.52,136,0.625,137,0.685,138,0.595,139,0.863,140,0.566,141,0.625,142,0.475,143,0.625,144,0.497,145,0.543,146,0.543,147,0.566,148,0.566,149,0.475,150,0.543,151,0.454,152,0.009,153,0.009,1179,3.263,1180,3.263,1181,3.263,1182,3.263,1183,3.263]],["title/modules/WorkspaceModule.html",[176,1.587,191,2.574]],["body/modules/WorkspaceModule.html",[0,0.389,3,0.283,4,0.256,5,0.301,14,0.016,21,0.283,28,0.613,152,0.013,153,0.013,163,3.669,164,3.253,165,3.669,166,3.669,168,2.165,169,2.423,176,3.014,178,2.924,179,2.654,180,3.447,181,3.447,182,3.08,183,4.287,184,3.447,191,5.203,192,4.041,193,2.924,194,3.253,208,4.606,210,4.565,1184,5.153,1185,5.153,1186,5.947,1187,5.947,1188,5.153,1189,5.947]],["title/classes/WorkspaceResolver.html",[0,0.255,208,2.574]],["body/classes/WorkspaceResolver.html",[0,0.322,2,0.716,3,0.234,4,0.212,5,0.212,7,0.257,9,1.363,10,0.684,12,1.165,13,0.537,14,0.016,16,0.693,18,0.761,21,0.234,42,0.653,53,1.041,54,1.041,121,0.817,123,0.783,124,1.064,125,0.817,152,0.012,153,0.012,158,2.529,160,5.256,162,3.003,168,2.237,169,2.003,172,3.247,174,2.875,205,2.849,208,4.101,210,4.363,222,4.585,242,3.033,245,3.763,247,2.417,250,3.359,296,5.298,308,4.548,323,3.827,324,3.247,328,3.247,334,4.834,365,2.849,1156,4.259,1188,4.259,1190,4.259,1191,5.896,1192,6.804,1193,6.208,1194,6.208,1195,5.896,1196,4.915,1197,4.915,1198,4.915,1199,4.915,1200,4.915,1201,4.915,1202,4.915,1203,4.915,1204,4.915,1205,4.915,1206,4.915,1207,4.915,1208,4.915,1209,4.915,1210,4.915,1211,4.915,1212,4.915,1213,3.827,1214,4.915,1215,4.915,1216,6.208,1217,4.915,1218,4.915,1219,4.915,1220,4.915,1221,4.915,1222,4.915,1223,4.915,1224,4.915,1225,4.915,1226,6.208,1227,6.208,1228,4.915,1229,4.915,1230,4.915]],["title/injectables/WorkspaceService.html",[210,2.258,228,1.396]],["body/injectables/WorkspaceService.html",[0,0.28,3,0.204,4,0.185,5,0.185,7,0.223,9,1.36,10,0.79,12,1.075,13,0.518,14,0.016,16,0.668,18,0.78,21,0.204,23,0.904,24,0.865,28,0.763,29,1.009,42,0.68,52,1.046,53,0.988,54,0.988,64,0.944,80,0.754,122,1.165,123,0.904,124,1.069,132,0.49,138,0.542,139,0.817,145,0.712,146,1.059,152,0.011,153,0.011,158,2.313,162,2.955,164,3.105,168,1.985,169,1.744,172,2.828,174,2.753,198,3.174,199,2.641,210,3.29,221,2.105,228,2.034,229,2.341,245,3.703,247,2.105,248,3.334,250,3.237,251,3.503,255,4.42,259,2.842,263,2.481,264,3.132,268,3.335,299,4.048,300,4.42,301,4.048,308,4.354,322,3.75,328,2.828,365,2.481,703,4.048,705,2.828,781,4.541,947,4.42,1061,3.334,1159,3.71,1166,4.919,1191,4.919,1195,4.919,1231,3.71,1232,6.369,1233,5.677,1234,5.677,1235,4.281,1236,5.677,1237,4.281,1238,5.677,1239,5.677,1240,5.677,1241,5.677,1242,5.677,1243,5.677,1244,5.677,1245,5.677,1246,6.782,1247,4.281,1248,5.677,1249,4.281,1250,5.677,1251,4.281,1252,4.281,1253,5.677,1254,4.281,1255,5.677,1256,4.281,1257,4.281,1258,4.281,1259,4.281,1260,4.281,1261,4.281,1262,5.677,1263,5.677,1264,5.677,1265,4.281,1266,4.281,1267,4.281,1268,4.281,1269,4.281,1270,4.281,1271,6.369,1272,4.281,1273,4.281,1274,4.281,1275,4.281]],["title/injectables/ZipExportService.html",[228,1.396,483,2.131]],["body/injectables/ZipExportService.html",[0,0.309,3,0.225,4,0.204,5,0.304,7,0.247,9,1.096,13,0.477,14,0.016,16,0.615,18,0.71,21,0.225,42,0.525,73,0.842,74,1.026,152,0.011,153,0.011,158,2.466,162,2.721,168,1.382,174,1.842,213,2.738,228,2.169,229,2.583,250,2.701,258,3.858,259,3.249,264,2.323,299,4.763,305,3.368,381,5.245,445,3.648,477,2.738,481,3.852,483,3.31,484,4.811,487,2.914,489,3.368,492,3.12,493,2.914,503,3.368,504,5.195,505,5.005,515,3.368,536,4.413,546,3.368,603,3.508,619,3.368,725,3.12,731,3.31,733,3.734,748,3.871,768,4.316,774,3.12,785,5.313,801,3.368,802,3.368,803,3.368,804,3.368,805,3.368,806,3.368,857,3.678,858,3.678,889,3.678,916,5.245,929,4.093,1035,4.316,1040,4.093,1050,5.788,1056,5.788,1058,5.245,1059,5.788,1160,3.678,1276,5.485,1277,3.678,1278,6.053,1279,6.053,1280,7.044,1281,6.053,1282,4.723,1283,6.053,1284,4.723,1285,7.672,1286,4.723,1287,4.713,1288,6.679,1289,4.723,1290,4.723,1291,4.723,1292,5.788,1293,4.723,1294,4.723,1295,4.723,1296,4.723,1297,4.723,1298,4.723,1299,4.723,1300,4.723,1301,4.723,1302,4.723,1303,4.723,1304,4.723,1305,4.723,1306,4.723,1307,4.723,1308,6.053,1309,4.723,1310,6.053,1311,4.723,1312,4.723,1313,4.723,1314,7.044,1315,4.723,1316,4.723,1317,4.723,1318,4.723,1319,4.723,1320,4.723,1321,4.723,1322,4.723,1323,4.723,1324,4.723,1325,4.723,1326,4.723,1327,4.723,1328,4.723,1329,4.723,1330,4.723,1331,4.723,1332,6.053,1333,4.723,1334,4.723,1335,4.723,1336,4.723,1337,4.723,1338,4.093,1339,4.093,1340,4.723,1341,4.723,1342,4.723,1343,4.723,1344,4.723,1345,4.723]],["title/coverage.html",[517,3.287]],["body/coverage.html",[0,0.538,1,0.675,5,0.183,6,1.198,13,0.516,14,0.016,15,0.675,26,0.675,30,0.675,32,0.675,35,0.675,37,0.675,39,0.675,41,0.675,43,0.675,45,0.589,48,0.589,50,0.675,51,0.675,53,0.617,54,0.617,55,0.675,56,0.645,58,0.589,60,0.675,65,0.645,69,0.675,70,0.562,71,0.675,75,0.675,76,0.675,78,0.675,93,0.675,94,0.675,95,0.705,99,0.589,113,0.675,114,0.675,122,0.617,127,0.675,132,0.485,134,0.461,139,0.51,141,0.562,143,0.562,149,0.617,152,0.011,153,0.011,154,3.02,155,3.02,157,3.671,170,2.613,182,2.194,198,1.982,208,2.798,210,2.455,228,2.645,230,3.671,241,4.389,242,2.613,244,3.671,264,2.083,275,2.455,281,2.798,283,2.798,290,4.389,312,2.455,355,3.671,435,2.798,442,3.672,443,2.798,445,3.97,446,4.192,447,4.816,472,2.613,480,2.317,481,2.317,483,2.317,486,2.317,517,2.613,592,5.116,664,2.613,731,2.317,748,2.455,843,4.389,844,4.389,982,3.671,992,4.389,1012,4.885,1015,3.298,1027,3.671,1147,3.671,1154,3.298,1190,3.671,1213,3.298,1231,3.671,1276,4.389,1277,4.389,1287,3.298,1346,4.236,1347,4.236,1348,6.754,1349,6.754,1350,7.728,1351,4.236,1352,4.236,1353,4.236,1354,7.867,1355,7.381,1356,4.236,1357,4.236,1358,4.389,1359,4.389,1360,7.232,1361,7.497,1362,5.637,1363,7.033,1364,4.236,1365,4.236,1366,7.033,1367,3.671,1368,4.236,1369,4.236,1370,4.236]],["title/dependencies.html",[179,2.092,777,2.146]],["body/dependencies.html",[14,0.016,152,0.013,153,0.013,169,2.462,179,2.697,203,5.237,205,3.503,251,3.729,280,4.706,327,4.706,364,5.237,365,3.503,1060,5.237,1153,5.237,1371,6.043,1372,6.043,1373,7.446,1374,6.043,1375,6.043,1376,7.038,1377,6.043,1378,6.043,1379,7.038,1380,6.043,1381,6.043,1382,6.043,1383,6.043,1384,6.043,1385,6.043,1386,6.043,1387,6.043,1388,6.043,1389,6.043,1390,6.043,1391,6.043]],["title/miscellaneous/enumerations.html",[1392,1.777,1393,4.063]],["body/miscellaneous/enumerations.html",[6,0.916,7,0.328,10,1.002,14,0.015,23,1.146,24,1.097,25,1.197,152,0.014,153,0.014,354,4.667,1392,3.437,1393,5.446,1394,5.446]],["title/miscellaneous/functions.html",[1392,1.777,1395,4.063]],["body/miscellaneous/functions.html",[7,0.325,9,1.128,10,1.049,13,0.445,14,0.014,42,0.541,152,0.014,153,0.014,182,3.904,250,2.78,354,3.845,502,3.612,1158,5.4,1213,5.578,1358,4.852,1359,5.578,1367,5.4,1392,3.408,1395,5.4,1396,6.231,1397,5.4,1398,6.231]],["title/index.html",[7,0.203,1292,3.376]],["body/index.html",[4,0.214,14,0.015,28,0.511,56,0.756,152,0.012,153,0.012,164,3.923,194,4.127,212,4.3,301,5.114,343,4.863,510,4.453,514,3.538,517,3.061,748,3.62,773,4.126,779,3.538,780,3.538,884,4.3,888,4.3,889,3.864,928,6.539,1061,3.864,1086,4.3,1338,6.215,1339,5.412,1399,4.962,1400,4.962,1401,6.834,1402,6.245,1403,4.962,1404,4.962,1405,6.245,1406,6.834,1407,4.962,1408,4.962,1409,4.962,1410,7.747,1411,4.962,1412,7.66,1413,4.962,1414,4.962,1415,4.962,1416,4.962,1417,4.962,1418,6.834,1419,4.962,1420,6.245,1421,4.962,1422,4.962,1423,4.962,1424,4.962,1425,4.962,1426,7.172,1427,7.747,1428,7.546,1429,6.245,1430,4.962,1431,4.962,1432,4.962,1433,4.962,1434,4.962,1435,6.245,1436,6.245,1437,4.962,1438,4.962,1439,6.245,1440,7.392,1441,7.172,1442,4.962,1443,6.245,1444,4.962,1445,4.962,1446,4.962,1447,4.962,1448,7.172,1449,4.962,1450,4.962,1451,4.962,1452,4.962,1453,6.245,1454,4.962,1455,4.962,1456,4.962,1457,4.962,1458,4.962,1459,6.245,1460,4.962,1461,4.962,1462,4.962,1463,4.962,1464,4.962,1465,6.215,1466,4.962,1467,4.962,1468,4.962,1469,4.962,1470,4.962,1471,4.962,1472,4.962,1473,4.962,1474,6.245,1475,4.962,1476,4.962,1477,4.962,1478,6.834,1479,4.962,1480,4.962,1481,4.962,1482,4.962,1483,4.962,1484,4.962,1485,6.245,1486,4.962,1487,4.962,1488,4.962,1489,4.962,1490,4.962,1491,6.245,1492,4.962,1493,4.962,1494,6.245,1495,6.245,1496,4.962,1497,4.962,1498,4.962,1499,4.962,1500,4.962,1501,4.962,1502,4.962,1503,4.962,1504,4.962,1505,4.3,1506,4.962,1507,4.962,1508,4.962,1509,4.962,1510,4.962,1511,4.962,1512,4.3]],["title/modules.html",[178,2.62]],["body/modules.html",[14,0.014,152,0.014,153,0.014,177,4.417,178,3.046,188,4.092,189,3.822,190,3.822,191,4.092,1090,4.417,1100,6.886,1465,6.886,1513,7.946,1514,7.946]],["title/overview.html",[513,3.287]],["body/overview.html",[2,0.787,14,0.016,152,0.013,153,0.013,154,3.853,170,4.381,176,2.202,177,5.739,178,2.658,179,2.411,180,3.132,181,3.132,182,2.799,183,3.132,184,3.132,185,4.683,186,4.683,187,4.683,188,5.153,189,4.858,190,4.813,191,5.005,192,3.816,193,2.658,194,2.956,198,3.685,210,4.116,229,2.956,242,4.56,243,4.208,273,4.683,274,4.683,275,4.116,432,4.683,433,4.683,435,4.883,444,3.853,472,3.334,480,3.884,483,3.884,486,3.884,513,3.334,592,3.334,603,3.816,664,4.813,976,4.683,977,4.683,1035,3.853,1090,5.759,1091,4.683,1092,4.683,1093,4.683,1095,4.683,1160,4.208,1184,4.683,1185,4.683,1515,5.404,1516,5.404,1517,5.404]],["title/properties.html",[8,0.593,777,2.146]],["body/properties.html",[8,0.803,14,0.015,28,0.654,152,0.014,153,0.014,1505,5.499,1512,5.499,1518,6.345,1519,6.345,1520,6.345]],["title/routes.html",[516,3.52]],["body/routes.html",[14,0.014,152,0.014,153,0.014,516,4.244]],["title/miscellaneous/typealiases.html",[1392,1.777,1521,4.689]],["body/miscellaneous/typealiases.html",[6,0.905,7,0.324,13,0.443,14,0.015,15,1.139,69,1.139,99,0.995,113,1.139,132,0.711,134,0.675,141,0.825,143,0.825,149,1.041,150,1.033,151,0.864,152,0.014,153,0.014,1392,3.396,1394,6.813,1522,6.209]],["title/miscellaneous/variables.html",[1392,1.777,1523,4.063]],["body/miscellaneous/variables.html",[7,0.319,13,0.549,14,0.015,18,0.596,152,0.013,153,0.013,354,3.768,445,3.873,446,3.54,502,3.54,731,3.873,843,4.756,844,5.514,992,5.514,1015,5.514,1154,5.514,1276,4.756,1277,5.514,1287,5.514,1358,4.756,1359,5.514,1392,3.34,1397,5.292,1523,5.292,1524,6.107,1525,6.107,1526,6.107,1527,6.107]]],"invertedIndex":[["",{"_index":14,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"controllers/AppController.html":{},"modules/AppModule.html":{},"injectables/AppService.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"guards/AuthGuard.html":{},"modules/AuthModule.html":{},"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"injectables/AuthService.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"modules/CommonModule.html":{},"interfaces/CompoDocConfig.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"injectables/HbsRenderService.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"modules/PrismaModule.html":{},"injectables/PrismaService.html":{},"classes/RegisterInput.html":{},"interfaces/Session.html":{},"classes/Success.html":{},"interfaces/Template.html":{},"injectables/TemplateEditorService.html":{},"modules/TemplatePlaygroundModule.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"guards/WorkspaceGuard.html":{},"classes/WorkspaceMembers.html":{},"modules/WorkspaceModule.html":{},"classes/WorkspaceResolver.html":{},"injectables/WorkspaceService.html":{},"injectables/ZipExportService.html":{},"coverage.html":{},"dependencies.html":{},"miscellaneous/enumerations.html":{},"miscellaneous/functions.html":{},"index.html":{},"modules.html":{},"overview.html":{},"properties.html":{},"routes.html":{},"miscellaneous/typealiases.html":{},"miscellaneous/variables.html":{}}}],["0",{"_index":592,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"injectables/HbsRenderService.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"coverage.html":{},"overview.html":{}}}],["0.0.1",{"_index":1519,"title":{},"body":{"properties.html":{}}}],["0.125rem",{"_index":641,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["0.15s",{"_index":626,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["0.2.2",{"_index":1387,"title":{},"body":{"dependencies.html":{}}}],["0.25rem",{"_index":649,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["0.375rem",{"_index":647,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["0.3s",{"_index":585,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["0.5px",{"_index":618,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["0.5rem",{"_index":581,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["0.7",{"_index":633,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["0.75rem",{"_index":635,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["0.875rem",{"_index":572,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["0/1",{"_index":1350,"title":{},"body":{"coverage.html":{}}}],["0/11",{"_index":1362,"title":{},"body":{"coverage.html":{}}}],["0/15",{"_index":1365,"title":{},"body":{"coverage.html":{}}}],["0/2",{"_index":1355,"title":{},"body":{"coverage.html":{}}}],["0/25",{"_index":1353,"title":{},"body":{"coverage.html":{}}}],["0/28",{"_index":1352,"title":{},"body":{"coverage.html":{}}}],["0/3",{"_index":1360,"title":{},"body":{"coverage.html":{}}}],["0/30",{"_index":1364,"title":{},"body":{"coverage.html":{}}}],["0/4",{"_index":1354,"title":{},"body":{"coverage.html":{}}}],["0/5",{"_index":1361,"title":{},"body":{"coverage.html":{}}}],["0/6",{"_index":1363,"title":{},"body":{"coverage.html":{}}}],["0/7",{"_index":1348,"title":{},"body":{"coverage.html":{}}}],["0/9",{"_index":1351,"title":{},"body":{"coverage.html":{}}}],["004085",{"_index":655,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["0056b3",{"_index":654,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["007bff",{"_index":629,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"injectables/HbsRenderService.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["007cefff",{"_index":1265,"title":{},"body":{"injectables/WorkspaceService.html":{}}}],["1",{"_index":603,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"injectables/HbsRenderService.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"guards/WorkspaceGuard.html":{},"injectables/ZipExportService.html":{},"overview.html":{}}}],["1.5rem",{"_index":620,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["1/7",{"_index":1368,"title":{},"body":{"coverage.html":{}}}],["10",{"_index":389,"title":{},"body":{"injectables/AuthService.html":{}}}],["100vh",{"_index":542,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["10px",{"_index":923,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["11.0.1",{"_index":1373,"title":{},"body":{"dependencies.html":{}}}],["11.0.2",{"_index":1372,"title":{},"body":{"dependencies.html":{}}}],["11.1.9",{"_index":1378,"title":{},"body":{"dependencies.html":{}}}],["123",{"_index":1241,"title":{},"body":{"injectables/WorkspaceService.html":{}}}],["12px",{"_index":642,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["13.2.0",{"_index":1376,"title":{},"body":{"dependencies.html":{}}}],["14",{"_index":1027,"title":{},"body":{"injectables/TemplateEditorService.html":{},"coverage.html":{}}}],["16.6.0",{"_index":1384,"title":{},"body":{"dependencies.html":{}}}],["1c7430",{"_index":662,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["1e7e34",{"_index":661,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["1fr",{"_index":599,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["1px",{"_index":567,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"injectables/HbsRenderService.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["1rem",{"_index":561,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["2",{"_index":1035,"title":{},"body":{"injectables/TemplateEditorService.html":{},"guards/WorkspaceGuard.html":{},"injectables/ZipExportService.html":{},"overview.html":{}}}],["200px",{"_index":588,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["2025",{"_index":165,"title":{},"body":{"controllers/AppController.html":{},"modules/AppModule.html":{},"modules/AuthModule.html":{},"modules/CommonModule.html":{},"modules/PrismaModule.html":{},"modules/WorkspaceModule.html":{}}}],["20px",{"_index":918,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["25.0.1",{"_index":1391,"title":{},"body":{"dependencies.html":{}}}],["250px",{"_index":606,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["28a745",{"_index":579,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["2rem",{"_index":562,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["3",{"_index":1160,"title":{},"body":{"guards/WorkspaceGuard.html":{},"injectables/ZipExportService.html":{},"overview.html":{}}}],["3/5",{"_index":1357,"title":{},"body":{"coverage.html":{}}}],["300",{"_index":676,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["300ms",{"_index":677,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["39",{"_index":1517,"title":{},"body":{"overview.html":{}}}],["4.0.2",{"_index":1375,"title":{},"body":{"dependencies.html":{}}}],["495057",{"_index":612,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["4e555b",{"_index":659,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["4px",{"_index":625,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"injectables/HbsRenderService.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["5.22.0",{"_index":1379,"title":{},"body":{"dependencies.html":{}}}],["50",{"_index":638,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["500",{"_index":650,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["545b62",{"_index":658,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["6",{"_index":1515,"title":{},"body":{"overview.html":{}}}],["6.0.0",{"_index":1382,"title":{},"body":{"dependencies.html":{}}}],["60",{"_index":1356,"title":{},"body":{"coverage.html":{}}}],["600",{"_index":611,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["6c757d",{"_index":573,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["7",{"_index":1516,"title":{},"body":{"overview.html":{}}}],["7.0.0",{"_index":1381,"title":{},"body":{"dependencies.html":{}}}],["7.8.1",{"_index":1389,"title":{},"body":{"dependencies.html":{}}}],["7d",{"_index":289,"title":{},"body":{"modules/AuthModule.html":{}}}],["8",{"_index":495,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["__resolvetype",{"_index":352,"title":{},"body":{"classes/AuthResultResolver.html":{}}}],["__resolvetype(value",{"_index":330,"title":{},"body":{"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{}}}],["__typename",{"_index":303,"title":{},"body":{"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"injectables/AuthService.html":{}}}],["a.click",{"_index":805,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"injectables/ZipExportService.html":{}}}],["a.download",{"_index":803,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"injectables/ZipExportService.html":{}}}],["a.href",{"_index":802,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"injectables/ZipExportService.html":{}}}],["a.style.display",{"_index":1344,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["abstract",{"_index":77,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["acceptsuggestiononenter",{"_index":1043,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["action",{"_index":764,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["actions",{"_index":580,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["active",{"_index":772,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["add",{"_index":1288,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["additional",{"_index":1311,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["addworkspacemember(input",{"_index":129,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["addworkspacememberinput",{"_index":1,"title":{"classes/AddWorkspaceMemberInput.html":{}},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{},"coverage.html":{}}}],["admin",{"_index":23,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{},"injectables/WorkspaceService.html":{},"miscellaneous/enumerations.html":{}}}],["again",{"_index":775,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"injectables/HbsRenderService.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["alias",{"_index":1366,"title":{},"body":{"coverage.html":{}}}],["aliases",{"_index":1522,"title":{},"body":{"miscellaneous/typealiases.html":{}}}],["align",{"_index":557,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["allowing",{"_index":1454,"title":{},"body":{"index.html":{}}}],["already",{"_index":380,"title":{},"body":{"injectables/AuthService.html":{},"injectables/TemplateEditorService.html":{}}}],["always",{"_index":1040,"title":{},"body":{"injectables/TemplateEditorService.html":{},"injectables/ZipExportService.html":{}}}],["amazing",{"_index":1499,"title":{},"body":{"index.html":{}}}],["angular/common",{"_index":1101,"title":{},"body":{"modules/TemplatePlaygroundModule.html":{}}}],["angular/common/http",{"_index":479,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"modules/TemplatePlaygroundModule.html":{}}}],["angular/core",{"_index":477,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"injectables/HbsRenderService.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"injectables/TemplateEditorService.html":{},"modules/TemplatePlaygroundModule.html":{},"injectables/ZipExportService.html":{}}}],["angular/forms",{"_index":1103,"title":{},"body":{"modules/TemplatePlaygroundModule.html":{}}}],["angular/platform",{"_index":1099,"title":{},"body":{"modules/TemplatePlaygroundModule.html":{}}}],["api/session/${this.sessionid}/docs",{"_index":681,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["app",{"_index":933,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["app.controller",{"_index":167,"title":{},"body":{"controllers/AppController.html":{},"modules/AppModule.html":{}}}],["app.module",{"_index":197,"title":{},"body":{"modules/AppModule.html":{}}}],["app.service",{"_index":171,"title":{},"body":{"controllers/AppController.html":{},"modules/AppModule.html":{}}}],["appcontroller",{"_index":155,"title":{"controllers/AppController.html":{}},"body":{"controllers/AppController.html":{},"modules/AppModule.html":{},"coverage.html":{}}}],["appearance",{"_index":1309,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["apple",{"_index":545,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["application",{"_index":1428,"title":{},"body":{"index.html":{}}}],["applications",{"_index":1405,"title":{},"body":{"index.html":{}}}],["appmodule",{"_index":177,"title":{"modules/AppModule.html":{}},"body":{"modules/AppModule.html":{},"modules.html":{},"overview.html":{}}}],["appservice",{"_index":170,"title":{"injectables/AppService.html":{}},"body":{"controllers/AppController.html":{},"modules/AppModule.html":{},"injectables/AppService.html":{},"coverage.html":{},"overview.html":{}}}],["args",{"_index":324,"title":{},"body":{"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"injectables/HbsRenderService.html":{},"guards/WorkspaceGuard.html":{},"classes/WorkspaceResolver.html":{}}}],["args('input",{"_index":334,"title":{},"body":{"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"classes/WorkspaceResolver.html":{}}}],["args('workspace_id",{"_index":1227,"title":{},"body":{"classes/WorkspaceResolver.html":{}}}],["args.input?.workspace_id",{"_index":1168,"title":{},"body":{"guards/WorkspaceGuard.html":{}}}],["args.slice(0",{"_index":897,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["args.workspace_id",{"_index":1167,"title":{},"body":{"guards/WorkspaceGuard.html":{}}}],["args[args.length",{"_index":896,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["arial",{"_index":917,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["asc",{"_index":1268,"title":{},"body":{"injectables/WorkspaceService.html":{}}}],["async",{"_index":245,"title":{},"body":{"guards/AuthGuard.html":{},"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"injectables/AuthService.html":{},"interfaces/CompoDocConfig.html":{},"injectables/PrismaService.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"guards/WorkspaceGuard.html":{},"classes/WorkspaceResolver.html":{},"injectables/WorkspaceService.html":{}}}],["attachment",{"_index":71,"title":{"classes/Attachment.html":{}},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{},"coverage.html":{}}}],["attachment_id",{"_index":72,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["attachments",{"_index":63,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["attribute.name",{"_index":1078,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["attribute.value",{"_index":1080,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["auth.decorator",{"_index":1156,"title":{},"body":{"guards/WorkspaceGuard.html":{},"classes/WorkspaceResolver.html":{}}}],["auth.decorator.ts",{"_index":1359,"title":{},"body":{"coverage.html":{},"miscellaneous/functions.html":{},"miscellaneous/variables.html":{}}}],["auth.module",{"_index":277,"title":{},"body":{"modules/AuthModule.html":{}}}],["auth.resolver",{"_index":282,"title":{},"body":{"modules/AuthModule.html":{}}}],["auth.service",{"_index":278,"title":{},"body":{"modules/AuthModule.html":{},"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{}}}],["auth/auth.module",{"_index":200,"title":{},"body":{"modules/AppModule.html":{}}}],["authentication",{"_index":298,"title":{},"body":{"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{}}}],["autherror",{"_index":143,"title":{"classes/AuthError.html":{}},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"injectables/AuthService.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{},"coverage.html":{},"miscellaneous/typealiases.html":{}}}],["authguard",{"_index":242,"title":{"guards/AuthGuard.html":{}},"body":{"guards/AuthGuard.html":{},"modules/CommonModule.html":{},"classes/WorkspaceResolver.html":{},"coverage.html":{},"overview.html":{}}}],["authmodule",{"_index":188,"title":{"modules/AuthModule.html":{}},"body":{"modules/AppModule.html":{},"modules/AuthModule.html":{},"modules.html":{},"overview.html":{}}}],["author",{"_index":1505,"title":{},"body":{"index.html":{},"properties.html":{}}}],["authresolver",{"_index":281,"title":{"classes/AuthResolver.html":{}},"body":{"modules/AuthModule.html":{},"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"coverage.html":{}}}],["authresult",{"_index":149,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{},"coverage.html":{},"miscellaneous/typealiases.html":{}}}],["authresultresolver",{"_index":283,"title":{"classes/AuthResultResolver.html":{}},"body":{"modules/AuthModule.html":{},"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"coverage.html":{}}}],["authservice",{"_index":275,"title":{"injectables/AuthService.html":{}},"body":{"modules/AuthModule.html":{},"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"injectables/AuthService.html":{},"coverage.html":{},"overview.html":{}}}],["authsuccess",{"_index":141,"title":{"classes/AuthSuccess.html":{}},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"injectables/AuthService.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{},"coverage.html":{},"miscellaneous/typealiases.html":{}}}],["auto",{"_index":609,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["autoclosingbrackets",{"_index":1039,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["autoclosingpairs",{"_index":1085,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["autoclosingquotes",{"_index":1041,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["automatically",{"_index":750,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["automaticlayout",{"_index":1022,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["await",{"_index":268,"title":{},"body":{"guards/AuthGuard.html":{},"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"injectables/AuthService.html":{},"interfaces/CompoDocConfig.html":{},"injectables/PrismaService.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"guards/WorkspaceGuard.html":{},"injectables/WorkspaceService.html":{}}}],["aws",{"_index":1443,"title":{},"body":{"index.html":{}}}],["backers",{"_index":1500,"title":{},"body":{"index.html":{}}}],["background",{"_index":563,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"injectables/HbsRenderService.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["backup",{"_index":1332,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["badge",{"_index":640,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["based",{"_index":1438,"title":{},"body":{"index.html":{}}}],["bash",{"_index":1318,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["basic",{"_index":915,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["bcrypt",{"_index":364,"title":{},"body":{"injectables/AuthService.html":{},"dependencies.html":{}}}],["bcrypt.compare",{"_index":369,"title":{},"body":{"injectables/AuthService.html":{}}}],["bcrypt.hash(input.password",{"_index":388,"title":{},"body":{"injectables/AuthService.html":{}}}],["before",{"_index":1335,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["between",{"_index":556,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["blinkmacsystemfont",{"_index":547,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["blob",{"_index":785,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"injectables/ZipExportService.html":{}}}],["blockcomment",{"_index":1083,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["board",{"_index":56,"title":{"classes/Board.html":{}},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{},"coverage.html":{},"index.html":{}}}],["board(board_id",{"_index":81,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["board_id",{"_index":31,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["boards",{"_index":147,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["boards(workspace_id",{"_index":79,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["body",{"_index":602,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"injectables/HbsRenderService.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["bold",{"_index":578,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["boolean",{"_index":137,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"interfaces/CompoDocConfig.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"injectables/HbsRenderService.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"interfaces/Session.html":{},"classes/Success.html":{},"interfaces/Template.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["bootstrap",{"_index":182,"title":{},"body":{"modules/AppModule.html":{},"modules/AuthModule.html":{},"modules/CommonModule.html":{},"modules/PrismaModule.html":{},"modules/TemplatePlaygroundModule.html":{},"modules/WorkspaceModule.html":{},"coverage.html":{},"miscellaneous/functions.html":{},"overview.html":{}}}],["border",{"_index":565,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"injectables/HbsRenderService.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["bottom",{"_index":566,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"injectables/HbsRenderService.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["brackets",{"_index":1084,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["break",{"_index":872,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["browse",{"_index":1514,"title":{},"body":{"modules.html":{}}}],["browser",{"_index":1100,"title":{},"body":{"modules/TemplatePlaygroundModule.html":{},"modules.html":{}}}],["browsermodule",{"_index":1098,"title":{},"body":{"modules/TemplatePlaygroundModule.html":{}}}],["btn",{"_index":646,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["building",{"_index":1402,"title":{},"body":{"index.html":{}}}],["call",{"_index":778,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["callback",{"_index":1011,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["canactivate",{"_index":246,"title":{},"body":{"guards/AuthGuard.html":{},"guards/WorkspaceGuard.html":{}}}],["canactivate(context",{"_index":252,"title":{},"body":{"guards/AuthGuard.html":{},"guards/WorkspaceGuard.html":{}}}],["card",{"_index":60,"title":{"classes/Card.html":{}},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{},"coverage.html":{}}}],["card(card_id",{"_index":85,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["card_id",{"_index":40,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["cardlabel",{"_index":75,"title":{"classes/CardLabel.html":{}},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{},"coverage.html":{}}}],["cardmember",{"_index":76,"title":{"classes/CardMember.html":{}},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{},"coverage.html":{}}}],["cards",{"_index":59,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["cards(list_id",{"_index":84,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["case",{"_index":304,"title":{},"body":{"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"injectables/HbsRenderService.html":{},"injectables/TemplateEditorService.html":{}}}],["catch",{"_index":349,"title":{},"body":{"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"injectables/AuthService.html":{},"interfaces/CompoDocConfig.html":{},"injectables/HbsRenderService.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["center",{"_index":559,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["change",{"_index":725,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"injectables/TemplateEditorService.html":{},"injectables/ZipExportService.html":{}}}],["changes",{"_index":1337,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["channel",{"_index":1467,"title":{},"body":{"index.html":{}}}],["check",{"_index":928,"title":{},"body":{"injectables/HbsRenderService.html":{},"index.html":{}}}],["class",{"_index":0,"title":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{},"classes/WorkspaceResolver.html":{}},"body":{"classes/AddWorkspaceMemberInput.html":{},"controllers/AppController.html":{},"modules/AppModule.html":{},"injectables/AppService.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"guards/AuthGuard.html":{},"modules/AuthModule.html":{},"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"injectables/AuthService.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"modules/CommonModule.html":{},"interfaces/CompoDocConfig.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"injectables/HbsRenderService.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"modules/PrismaModule.html":{},"injectables/PrismaService.html":{},"classes/RegisterInput.html":{},"interfaces/Session.html":{},"classes/Success.html":{},"interfaces/Template.html":{},"injectables/TemplateEditorService.html":{},"modules/TemplatePlaygroundModule.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"guards/WorkspaceGuard.html":{},"classes/WorkspaceMembers.html":{},"modules/WorkspaceModule.html":{},"classes/WorkspaceResolver.html":{},"injectables/WorkspaceService.html":{},"injectables/ZipExportService.html":{},"coverage.html":{}}}],["classes",{"_index":2,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{},"classes/WorkspaceResolver.html":{},"overview.html":{}}}],["clear",{"_index":734,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["clears",{"_index":311,"title":{},"body":{"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{}}}],["cleartimeout(this.savetimeout",{"_index":695,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["click",{"_index":943,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["clicks",{"_index":1453,"title":{},"body":{"index.html":{}}}],["close",{"_index":1087,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["cloud",{"_index":1437,"title":{},"body":{"index.html":{}}}],["cluster_appmodule",{"_index":185,"title":{},"body":{"modules/AppModule.html":{},"overview.html":{}}}],["cluster_appmodule_imports",{"_index":187,"title":{},"body":{"modules/AppModule.html":{},"overview.html":{}}}],["cluster_appmodule_providers",{"_index":186,"title":{},"body":{"modules/AppModule.html":{},"overview.html":{}}}],["cluster_authmodule",{"_index":273,"title":{},"body":{"modules/AuthModule.html":{},"overview.html":{}}}],["cluster_authmodule_providers",{"_index":274,"title":{},"body":{"modules/AuthModule.html":{},"overview.html":{}}}],["cluster_commonmodule",{"_index":432,"title":{},"body":{"modules/CommonModule.html":{},"overview.html":{}}}],["cluster_commonmodule_exports",{"_index":433,"title":{},"body":{"modules/CommonModule.html":{},"overview.html":{}}}],["cluster_commonmodule_imports",{"_index":434,"title":{},"body":{"modules/CommonModule.html":{}}}],["cluster_prismamodule",{"_index":976,"title":{},"body":{"modules/PrismaModule.html":{},"overview.html":{}}}],["cluster_prismamodule_exports",{"_index":977,"title":{},"body":{"modules/PrismaModule.html":{},"overview.html":{}}}],["cluster_prismamodule_providers",{"_index":978,"title":{},"body":{"modules/PrismaModule.html":{}}}],["cluster_templateplaygroundmodule",{"_index":1091,"title":{},"body":{"modules/TemplatePlaygroundModule.html":{},"overview.html":{}}}],["cluster_templateplaygroundmodule_bootstrap",{"_index":1093,"title":{},"body":{"modules/TemplatePlaygroundModule.html":{},"overview.html":{}}}],["cluster_templateplaygroundmodule_declarations",{"_index":1095,"title":{},"body":{"modules/TemplatePlaygroundModule.html":{},"overview.html":{}}}],["cluster_templateplaygroundmodule_imports",{"_index":1094,"title":{},"body":{"modules/TemplatePlaygroundModule.html":{}}}],["cluster_templateplaygroundmodule_providers",{"_index":1092,"title":{},"body":{"modules/TemplatePlaygroundModule.html":{},"overview.html":{}}}],["cluster_workspacemodule",{"_index":1184,"title":{},"body":{"modules/WorkspaceModule.html":{},"overview.html":{}}}],["cluster_workspacemodule_providers",{"_index":1185,"title":{},"body":{"modules/WorkspaceModule.html":{},"overview.html":{}}}],["code",{"_index":136,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"injectables/AuthService.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"interfaces/CompoDocConfig.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"interfaces/Session.html":{},"classes/Success.html":{},"interfaces/Template.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["color",{"_index":29,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"interfaces/CompoDocConfig.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"injectables/HbsRenderService.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"interfaces/Session.html":{},"classes/Success.html":{},"interfaces/Template.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{},"injectables/WorkspaceService.html":{}}}],["colors",{"_index":1328,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["column",{"_index":540,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["columns",{"_index":595,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["come",{"_index":1460,"title":{},"body":{"index.html":{}}}],["comment",{"_index":65,"title":{"classes/Comment.html":{}},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"injectables/TemplateEditorService.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{},"coverage.html":{}}}],["comment_id",{"_index":66,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["comments",{"_index":62,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"injectables/TemplateEditorService.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["comments(card_id",{"_index":87,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["common",{"_index":863,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["common.module",{"_index":437,"title":{},"body":{"modules/CommonModule.html":{}}}],["common/common.module",{"_index":206,"title":{},"body":{"modules/AppModule.html":{}}}],["common/decorators/workspace",{"_index":1214,"title":{},"body":{"classes/WorkspaceResolver.html":{}}}],["common/guards/auth.guard",{"_index":1212,"title":{},"body":{"classes/WorkspaceResolver.html":{}}}],["commonmodule",{"_index":189,"title":{"modules/CommonModule.html":{}},"body":{"modules/AppModule.html":{},"modules/CommonModule.html":{},"modules/TemplatePlaygroundModule.html":{},"modules.html":{},"overview.html":{}}}],["compare",{"_index":867,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["complete",{"_index":910,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["compodoc",{"_index":505,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"injectables/HbsRenderService.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"injectables/ZipExportService.html":{}}}],["compodocconfig",{"_index":443,"title":{"interfaces/CompoDocConfig.html":{}},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"coverage.html":{}}}],["component",{"_index":472,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"injectables/HbsRenderService.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"coverage.html":{},"overview.html":{}}}],["components",{"_index":890,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["conditional",{"_index":877,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["config",{"_index":501,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["configuration",{"_index":506,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["confirm('are",{"_index":760,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["console.error('error",{"_index":691,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["console.error('no",{"_index":771,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["console.log('creating",{"_index":776,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["console.log('reset",{"_index":769,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["console.log('session",{"_index":702,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["console.log('template",{"_index":808,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["const",{"_index":259,"title":{},"body":{"guards/AuthGuard.html":{},"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"injectables/AuthService.html":{},"interfaces/CompoDocConfig.html":{},"injectables/HbsRenderService.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"injectables/TemplateEditorService.html":{},"guards/WorkspaceGuard.html":{},"injectables/WorkspaceService.html":{},"injectables/ZipExportService.html":{}}}],["constraints",{"_index":1258,"title":{},"body":{"injectables/WorkspaceService.html":{}}}],["construct",{"_index":790,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["constructor",{"_index":247,"title":{},"body":{"guards/AuthGuard.html":{},"classes/AuthResolver.html":{},"injectables/AuthService.html":{},"interfaces/CompoDocConfig.html":{},"injectables/HbsRenderService.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"guards/WorkspaceGuard.html":{},"classes/WorkspaceResolver.html":{},"injectables/WorkspaceService.html":{}}}],["constructor(authservice",{"_index":293,"title":{},"body":{"classes/AuthResolver.html":{}}}],["constructor(prisma",{"_index":248,"title":{},"body":{"guards/AuthGuard.html":{},"injectables/AuthService.html":{},"injectables/WorkspaceService.html":{}}}],["constructor(private",{"_index":172,"title":{},"body":{"controllers/AppController.html":{},"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"classes/WorkspaceResolver.html":{},"injectables/WorkspaceService.html":{}}}],["constructor(reflector",{"_index":1149,"title":{},"body":{"guards/WorkspaceGuard.html":{}}}],["constructor(workspaceservice",{"_index":1196,"title":{},"body":{"classes/WorkspaceResolver.html":{}}}],["constructors",{"_index":523,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["container",{"_index":643,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"injectables/TemplateEditorService.html":{}}}],["containing",{"_index":299,"title":{},"body":{"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"injectables/WorkspaceService.html":{},"injectables/ZipExportService.html":{}}}],["contains",{"_index":1301,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["content",{"_index":67,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"interfaces/CompoDocConfig.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"interfaces/Session.html":{},"classes/Success.html":{},"interfaces/Template.html":{},"injectables/TemplateEditorService.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["contentdisposition",{"_index":791,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["contentdisposition.match(/filename",{"_index":796,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["contents",{"_index":1304,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["context",{"_index":222,"title":{},"body":{"modules/AppModule.html":{},"guards/AuthGuard.html":{},"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"injectables/HbsRenderService.html":{},"guards/WorkspaceGuard.html":{},"classes/WorkspaceResolver.html":{}}}],["context.getclass",{"_index":1164,"title":{},"body":{"guards/WorkspaceGuard.html":{}}}],["context.gethandler",{"_index":1163,"title":{},"body":{"guards/WorkspaceGuard.html":{}}}],["context.reply.clearcookie('session",{"_index":347,"title":{},"body":{"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{}}}],["context.reply.setcookie('session",{"_index":339,"title":{},"body":{"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{}}}],["context.user.user_id",{"_index":1230,"title":{},"body":{"classes/WorkspaceResolver.html":{}}}],["controller",{"_index":154,"title":{"controllers/AppController.html":{}},"body":{"controllers/AppController.html":{},"coverage.html":{},"overview.html":{}}}],["controllers",{"_index":156,"title":{},"body":{"controllers/AppController.html":{},"modules/AppModule.html":{}}}],["cookie",{"_index":313,"title":{},"body":{"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{}}}],["courses",{"_index":1473,"title":{},"body":{"index.html":{}}}],["coverage",{"_index":517,"title":{"coverage.html":{}},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"coverage.html":{},"index.html":{}}}],["create",{"_index":705,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"injectables/HbsRenderService.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"injectables/WorkspaceService.html":{}}}],["createboard(input",{"_index":96,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["createboardinput",{"_index":26,"title":{"classes/CreateBoardInput.html":{}},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{},"coverage.html":{}}}],["createboardpayload",{"_index":94,"title":{"classes/CreateBoardPayload.html":{}},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{},"coverage.html":{}}}],["createcard(input",{"_index":105,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["createcardinput",{"_index":37,"title":{"classes/CreateCardInput.html":{}},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{},"coverage.html":{}}}],["created",{"_index":703,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"injectables/WorkspaceService.html":{}}}],["created_at",{"_index":68,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["createlabel(input",{"_index":109,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["createlabelinput",{"_index":41,"title":{"classes/CreateLabelInput.html":{}},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{},"coverage.html":{}}}],["createlist(input",{"_index":100,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["createlistinput",{"_index":32,"title":{"classes/CreateListInput.html":{}},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{},"coverage.html":{}}}],["creates",{"_index":1238,"title":{},"body":{"injectables/WorkspaceService.html":{}}}],["createsession",{"_index":696,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["createuser(input",{"_index":115,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["createuserinput",{"_index":50,"title":{"classes/CreateUserInput.html":{}},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{},"coverage.html":{}}}],["createworkspace",{"_index":1191,"title":{},"body":{"classes/WorkspaceResolver.html":{},"injectables/WorkspaceService.html":{}}}],["createworkspace('user",{"_index":1240,"title":{},"body":{"injectables/WorkspaceService.html":{}}}],["createworkspace(input",{"_index":121,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{},"classes/WorkspaceResolver.html":{}}}],["createworkspace(user_id",{"_index":1236,"title":{},"body":{"injectables/WorkspaceService.html":{}}}],["createworkspaceinput",{"_index":53,"title":{"classes/CreateWorkspaceInput.html":{}},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{},"classes/WorkspaceResolver.html":{},"injectables/WorkspaceService.html":{},"coverage.html":{}}}],["creation",{"_index":781,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"injectables/WorkspaceService.html":{}}}],["credentials",{"_index":373,"title":{},"body":{"injectables/AuthService.html":{}}}],["css",{"_index":1056,"title":{},"body":{"injectables/TemplateEditorService.html":{},"injectables/ZipExportService.html":{}}}],["ctx",{"_index":260,"title":{},"body":{"guards/AuthGuard.html":{},"guards/WorkspaceGuard.html":{}}}],["ctx.getargs",{"_index":1165,"title":{},"body":{"guards/WorkspaceGuard.html":{}}}],["ctx.getcontext",{"_index":262,"title":{},"body":{"guards/AuthGuard.html":{},"guards/WorkspaceGuard.html":{}}}],["cursor",{"_index":622,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["custom",{"_index":1050,"title":{},"body":{"injectables/TemplateEditorService.html":{},"injectables/ZipExportService.html":{}}}],["customfavicon",{"_index":448,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["customization",{"_index":1324,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["customization.html",{"_index":1341,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["customize",{"_index":1326,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["customized",{"_index":1302,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["customizing",{"_index":1308,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["dark",{"_index":509,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"injectables/TemplateEditorService.html":{}}}],["data",{"_index":322,"title":{},"body":{"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"injectables/AuthService.html":{},"injectables/HbsRenderService.html":{},"injectables/WorkspaceService.html":{}}}],["database",{"_index":1257,"title":{},"body":{"injectables/WorkspaceService.html":{}}}],["date",{"_index":673,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["date:'short",{"_index":500,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["datetime",{"_index":69,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{},"coverage.html":{},"miscellaneous/typealiases.html":{}}}],["ddd",{"_index":920,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["debounce",{"_index":678,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["debounced",{"_index":723,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["declarations",{"_index":181,"title":{},"body":{"modules/AppModule.html":{},"modules/AuthModule.html":{},"modules/CommonModule.html":{},"modules/PrismaModule.html":{},"modules/TemplatePlaygroundModule.html":{},"modules/WorkspaceModule.html":{},"overview.html":{}}}],["declare",{"_index":857,"title":{},"body":{"injectables/HbsRenderService.html":{},"injectables/TemplateEditorService.html":{},"injectables/ZipExportService.html":{}}}],["decoration",{"_index":651,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["decorators",{"_index":160,"title":{},"body":{"controllers/AppController.html":{},"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"classes/WorkspaceResolver.html":{}}}],["decorators/workspace",{"_index":1155,"title":{},"body":{"guards/WorkspaceGuard.html":{}}}],["dee2e6",{"_index":569,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["deeper",{"_index":1469,"title":{},"body":{"index.html":{}}}],["default",{"_index":502,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"injectables/HbsRenderService.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"injectables/TemplateEditorService.html":{},"miscellaneous/functions.html":{},"miscellaneous/variables.html":{}}}],["defined",{"_index":16,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"controllers/AppController.html":{},"injectables/AppService.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"guards/AuthGuard.html":{},"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"injectables/AuthService.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"injectables/HbsRenderService.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"injectables/PrismaService.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"injectables/TemplateEditorService.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"guards/WorkspaceGuard.html":{},"classes/WorkspaceMembers.html":{},"classes/WorkspaceResolver.html":{},"injectables/WorkspaceService.html":{},"injectables/ZipExportService.html":{}}}],["definitions",{"_index":226,"title":{},"body":{"modules/AppModule.html":{},"injectables/TemplateEditorService.html":{}}}],["delete",{"_index":1232,"title":{},"body":{"injectables/WorkspaceService.html":{}}}],["delete(workspaceid",{"_index":1245,"title":{},"body":{"injectables/WorkspaceService.html":{}}}],["deleteboard(board_id",{"_index":98,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["deletecard(card_id",{"_index":107,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["deleted",{"_index":1275,"title":{},"body":{"injectables/WorkspaceService.html":{}}}],["deletelabel(label_id",{"_index":111,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["deletelist(list_id",{"_index":102,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["deleteuser(user_id",{"_index":117,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["deleteworkspace",{"_index":1192,"title":{},"body":{"classes/WorkspaceResolver.html":{}}}],["deleteworkspace(workspace_id",{"_index":125,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{},"classes/WorkspaceResolver.html":{}}}],["delimiter",{"_index":1079,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["demonstration",{"_index":935,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["dependencies",{"_index":179,"title":{"dependencies.html":{}},"body":{"modules/AppModule.html":{},"modules/AuthModule.html":{},"modules/CommonModule.html":{},"interfaces/CompoDocConfig.html":{},"modules/PrismaModule.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"modules/TemplatePlaygroundModule.html":{},"modules/WorkspaceModule.html":{},"dependencies.html":{},"overview.html":{}}}],["deploy",{"_index":1426,"title":{},"body":{"index.html":{}}}],["deploying",{"_index":1442,"title":{},"body":{"index.html":{}}}],["deployment",{"_index":1435,"title":{},"body":{"index.html":{}}}],["deploywith",{"_index":1452,"title":{},"body":{"index.html":{}}}],["depth",{"_index":883,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["description",{"_index":28,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"controllers/AppController.html":{},"modules/AppModule.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"modules/AuthModule.html":{},"classes/AuthResolver.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"modules/CommonModule.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"injectables/HbsRenderService.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"modules/PrismaModule.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{},"modules/WorkspaceModule.html":{},"injectables/WorkspaceService.html":{},"index.html":{},"properties.html":{}}}],["destroy",{"_index":994,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["detailed",{"_index":318,"title":{},"body":{"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{}}}],["development",{"_index":1413,"title":{},"body":{"index.html":{}}}],["devtools",{"_index":1480,"title":{},"body":{"index.html":{}}}],["direction",{"_index":539,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["directory",{"_index":1314,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["disable",{"_index":512,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["disableconstructors",{"_index":449,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["disablecoverage",{"_index":450,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["disabledependencies",{"_index":451,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["disabledomtree",{"_index":452,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["disablefilepath",{"_index":453,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["disablegraph",{"_index":454,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["disableinternal",{"_index":455,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["disablelifecyclehooks",{"_index":456,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["disablemaingraph",{"_index":457,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["disableoverview",{"_index":458,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["disableprivate",{"_index":459,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["disableproperties",{"_index":460,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["disableprotected",{"_index":461,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["disableroutesgraph",{"_index":462,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["disablesearch",{"_index":463,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["disablesourcecode",{"_index":464,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["disablestyletab",{"_index":465,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["disabletemplatetab",{"_index":466,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["discord",{"_index":1466,"title":{},"body":{"index.html":{}}}],["display",{"_index":537,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["disposition",{"_index":793,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["dive",{"_index":1468,"title":{},"body":{"index.html":{}}}],["doctype",{"_index":1072,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["document",{"_index":911,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["document.body.appendchild(a",{"_index":804,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"injectables/ZipExportService.html":{}}}],["document.body.removechild(a",{"_index":806,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"injectables/ZipExportService.html":{}}}],["document.createelement('a",{"_index":801,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"injectables/ZipExportService.html":{}}}],["documentation",{"_index":748,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"injectables/HbsRenderService.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"injectables/ZipExportService.html":{},"coverage.html":{},"index.html":{}}}],["documentation/.../hbs",{"_index":1524,"title":{},"body":{"miscellaneous/variables.html":{}}}],["documentation/.../template",{"_index":1526,"title":{},"body":{"miscellaneous/variables.html":{}}}],["documentation/.../zip",{"_index":1525,"title":{},"body":{"miscellaneous/variables.html":{}}}],["documentation/template",{"_index":445,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"injectables/HbsRenderService.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"injectables/TemplateEditorService.html":{},"modules/TemplatePlaygroundModule.html":{},"injectables/ZipExportService.html":{},"coverage.html":{},"miscellaneous/variables.html":{}}}],["documentationmainname",{"_index":930,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["dom",{"_index":524,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["download",{"_index":503,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"injectables/ZipExportService.html":{}}}],["downloadblob",{"_index":1278,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["downloadblob(blob",{"_index":1281,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["downloaded",{"_index":809,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["downloading",{"_index":811,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["driver",{"_index":216,"title":{},"body":{"modules/AppModule.html":{}}}],["due",{"_index":1256,"title":{},"body":{"injectables/WorkspaceService.html":{}}}],["due_date",{"_index":38,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["e2e",{"_index":1421,"title":{},"body":{"index.html":{}}}],["e9ecef",{"_index":583,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["each",{"_index":878,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["ease",{"_index":586,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["editor",{"_index":637,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"injectables/TemplateEditorService.html":{}}}],["editor.service",{"_index":482,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"modules/TemplatePlaygroundModule.html":{}}}],["editor.service.ts",{"_index":992,"title":{},"body":{"injectables/TemplateEditorService.html":{},"coverage.html":{},"miscellaneous/variables.html":{}}}],["editor.service.ts:10",{"_index":1014,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["editor.service.ts:12",{"_index":1005,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["editor.service.ts:167",{"_index":999,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["editor.service.ts:59",{"_index":1008,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["editor.service.ts:67",{"_index":1010,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["editor.service.ts:71",{"_index":1001,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["editor.service.ts:87",{"_index":1006,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["editor.service.ts:9",{"_index":1013,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["editorcontainer",{"_index":667,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["editorservice",{"_index":683,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["efficient",{"_index":1403,"title":{},"body":{"index.html":{}}}],["efficiently",{"_index":1433,"title":{},"body":{"index.html":{}}}],["elementref",{"_index":475,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["email",{"_index":46,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"injectables/AuthService.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["email_taken",{"_index":382,"title":{},"body":{"injectables/AuthService.html":{}}}],["enabled",{"_index":1024,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["endpoint",{"_index":782,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["ensure",{"_index":1431,"title":{},"body":{"index.html":{}}}],["enterprise",{"_index":1484,"title":{},"body":{"index.html":{}}}],["enum",{"_index":22,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["enumerations",{"_index":1393,"title":{"miscellaneous/enumerations.html":{}},"body":{"miscellaneous/enumerations.html":{}}}],["epitech",{"_index":163,"title":{},"body":{"controllers/AppController.html":{},"modules/AppModule.html":{},"modules/AuthModule.html":{},"modules/CommonModule.html":{},"modules/PrismaModule.html":{},"modules/WorkspaceModule.html":{}}}],["error",{"_index":134,"title":{"classes/Error.html":{}},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"injectables/AuthService.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"interfaces/CompoDocConfig.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"injectables/HbsRenderService.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"interfaces/Session.html":{},"classes/Success.html":{},"interfaces/Template.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{},"coverage.html":{},"miscellaneous/typealiases.html":{}}}],["error('failed",{"_index":704,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["error('invalid",{"_index":372,"title":{},"body":{"injectables/AuthService.html":{}}}],["error.code",{"_index":398,"title":{},"body":{"injectables/AuthService.html":{}}}],["error.message",{"_index":927,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["error.meta?.target",{"_index":401,"title":{},"body":{"injectables/AuthService.html":{}}}],["errormessage",{"_index":135,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["etc",{"_index":1331,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["events",{"_index":944,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["example",{"_index":301,"title":{},"body":{"classes/AuthResolver.html":{},"injectables/HbsRenderService.html":{},"injectables/WorkspaceService.html":{},"index.html":{}}}],["executioncontext",{"_index":253,"title":{},"body":{"guards/AuthGuard.html":{},"guards/WorkspaceGuard.html":{}}}],["exist",{"_index":272,"title":{},"body":{"guards/AuthGuard.html":{}}}],["existing",{"_index":735,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["existingemail",{"_index":379,"title":{},"body":{"injectables/AuthService.html":{}}}],["existinguser",{"_index":267,"title":{},"body":{"guards/AuthGuard.html":{}}}],["existingusername",{"_index":383,"title":{},"body":{"injectables/AuthService.html":{}}}],["experience",{"_index":1471,"title":{},"body":{"index.html":{}}}],["expiresin",{"_index":288,"title":{},"body":{"modules/AuthModule.html":{}}}],["export",{"_index":21,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"controllers/AppController.html":{},"modules/AppModule.html":{},"injectables/AppService.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"guards/AuthGuard.html":{},"modules/AuthModule.html":{},"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"injectables/AuthService.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"modules/CommonModule.html":{},"interfaces/CompoDocConfig.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"injectables/HbsRenderService.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"modules/PrismaModule.html":{},"injectables/PrismaService.html":{},"classes/RegisterInput.html":{},"interfaces/Session.html":{},"classes/Success.html":{},"interfaces/Template.html":{},"injectables/TemplateEditorService.html":{},"modules/TemplatePlaygroundModule.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"guards/WorkspaceGuard.html":{},"classes/WorkspaceMembers.html":{},"modules/WorkspaceModule.html":{},"classes/WorkspaceResolver.html":{},"injectables/WorkspaceService.html":{},"injectables/ZipExportService.html":{}}}],["export.service",{"_index":485,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"modules/TemplatePlaygroundModule.html":{}}}],["export.service.ts",{"_index":1277,"title":{},"body":{"injectables/ZipExportService.html":{},"coverage.html":{},"miscellaneous/variables.html":{}}}],["export.service.ts:10",{"_index":1284,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["export.service.ts:29",{"_index":1286,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["export.service.ts:75",{"_index":1282,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["exports",{"_index":184,"title":{},"body":{"modules/AppModule.html":{},"modules/AuthModule.html":{},"modules/CommonModule.html":{},"modules/PrismaModule.html":{},"modules/TemplatePlaygroundModule.html":{},"modules/WorkspaceModule.html":{},"overview.html":{}}}],["exporttemplates",{"_index":1279,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["exporttemplates(files",{"_index":1283,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["exportzip",{"_index":770,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["extends",{"_index":983,"title":{},"body":{"injectables/PrismaService.html":{}}}],["extract",{"_index":1313,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["f0f8ff",{"_index":922,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["f8f9fa",{"_index":564,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["failed",{"_index":350,"title":{},"body":{"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"injectables/AuthService.html":{}}}],["fails",{"_index":1255,"title":{},"body":{"injectables/WorkspaceService.html":{}}}],["false",{"_index":672,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"injectables/HbsRenderService.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"injectables/TemplateEditorService.html":{}}}],["family",{"_index":544,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"injectables/HbsRenderService.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["fast",{"_index":1446,"title":{},"body":{"index.html":{}}}],["fastify",{"_index":327,"title":{},"body":{"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"dependencies.html":{}}}],["fastify/cookie",{"_index":1371,"title":{},"body":{"dependencies.html":{}}}],["fastifyreply",{"_index":326,"title":{},"body":{"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{}}}],["features",{"_index":1456,"title":{},"body":{"index.html":{}}}],["few",{"_index":1448,"title":{},"body":{"index.html":{}}}],["ff5733",{"_index":1242,"title":{},"body":{"injectables/WorkspaceService.html":{}}}],["ffc107",{"_index":576,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["fff5f5",{"_index":926,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["field",{"_index":144,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"injectables/AuthService.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["file",{"_index":5,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"controllers/AppController.html":{},"modules/AppModule.html":{},"injectables/AppService.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"guards/AuthGuard.html":{},"modules/AuthModule.html":{},"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"injectables/AuthService.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"modules/CommonModule.html":{},"interfaces/CompoDocConfig.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"injectables/HbsRenderService.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"modules/PrismaModule.html":{},"injectables/PrismaService.html":{},"classes/RegisterInput.html":{},"interfaces/Session.html":{},"classes/Success.html":{},"interfaces/Template.html":{},"injectables/TemplateEditorService.html":{},"modules/TemplatePlaygroundModule.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"guards/WorkspaceGuard.html":{},"classes/WorkspaceMembers.html":{},"modules/WorkspaceModule.html":{},"classes/WorkspaceResolver.html":{},"injectables/WorkspaceService.html":{},"injectables/ZipExportService.html":{},"coverage.html":{}}}],["file.content",{"_index":1291,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["filename",{"_index":74,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"interfaces/CompoDocConfig.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"interfaces/Session.html":{},"classes/Success.html":{},"interfaces/Template.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{},"injectables/ZipExportService.html":{}}}],["filenamematch",{"_index":795,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["filenamematch[1",{"_index":797,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["fileresponse",{"_index":114,"title":{"classes/FileResponse.html":{}},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{},"coverage.html":{}}}],["files",{"_index":1285,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["files.foreach(file",{"_index":1289,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["filetype",{"_index":1002,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["findalluserworkspaces",{"_index":1233,"title":{},"body":{"injectables/WorkspaceService.html":{}}}],["findalluserworkspaces(user_id",{"_index":1248,"title":{},"body":{"injectables/WorkspaceService.html":{}}}],["findworkspace",{"_index":1234,"title":{},"body":{"injectables/WorkspaceService.html":{}}}],["findworkspace(workspace_id",{"_index":1250,"title":{},"body":{"injectables/WorkspaceService.html":{}}}],["first",{"_index":711,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["fit",{"_index":597,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["flag",{"_index":1315,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["flex",{"_index":538,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["focus",{"_index":1455,"title":{},"body":{"index.html":{}}}],["follow",{"_index":1488,"title":{},"body":{"index.html":{}}}],["font",{"_index":543,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"injectables/HbsRenderService.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["fonts",{"_index":1329,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["fontsize",{"_index":1026,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["forbiddenexception",{"_index":255,"title":{},"body":{"guards/AuthGuard.html":{},"guards/WorkspaceGuard.html":{},"injectables/WorkspaceService.html":{}}}],["forbiddenexception('authentication",{"_index":265,"title":{},"body":{"guards/AuthGuard.html":{}}}],["forbiddenexception('user",{"_index":271,"title":{},"body":{"guards/AuthGuard.html":{}}}],["formsmodule",{"_index":1102,"title":{},"body":{"modules/TemplatePlaygroundModule.html":{}}}],["frame",{"_index":645,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["framework",{"_index":1401,"title":{},"body":{"index.html":{}}}],["full",{"_index":1483,"title":{},"body":{"index.html":{}}}],["function",{"_index":1012,"title":{},"body":{"injectables/TemplateEditorService.html":{},"coverage.html":{}}}],["functionality",{"_index":768,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"injectables/ZipExportService.html":{}}}],["functions",{"_index":1395,"title":{"miscellaneous/functions.html":{}},"body":{"miscellaneous/functions.html":{}}}],["g",{"_index":1450,"title":{},"body":{"index.html":{}}}],["gap",{"_index":570,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["generate",{"_index":1296,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["generated",{"_index":1342,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["generatereadme",{"_index":1280,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["generating",{"_index":1305,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["generation",{"_index":1303,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["generator",{"_index":508,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["gethello",{"_index":159,"title":{},"body":{"controllers/AppController.html":{},"injectables/AppService.html":{}}}],["getlanguagefromfiletype",{"_index":995,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["getlanguagefromfiletype(filetype",{"_index":1000,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["getmockdata",{"_index":846,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["getuserworkspaces",{"_index":1193,"title":{},"body":{"classes/WorkspaceResolver.html":{}}}],["getuserworkspaces(@context",{"_index":1219,"title":{},"body":{"classes/WorkspaceResolver.html":{}}}],["getuserworkspaces(context",{"_index":1202,"title":{},"body":{"classes/WorkspaceResolver.html":{}}}],["getworkspace",{"_index":1194,"title":{},"body":{"classes/WorkspaceResolver.html":{}}}],["getworkspace(@args('workspace_id",{"_index":1223,"title":{},"body":{"classes/WorkspaceResolver.html":{}}}],["getworkspace(workspace_id",{"_index":1205,"title":{},"body":{"classes/WorkspaceResolver.html":{}}}],["global",{"_index":438,"title":{},"body":{"modules/CommonModule.html":{},"modules/PrismaModule.html":{}}}],["gqlexecutioncontext",{"_index":256,"title":{},"body":{"guards/AuthGuard.html":{},"guards/WorkspaceGuard.html":{}}}],["gqlexecutioncontext.create(context",{"_index":261,"title":{},"body":{"guards/AuthGuard.html":{},"guards/WorkspaceGuard.html":{}}}],["graph",{"_index":514,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"index.html":{}}}],["graphiql",{"_index":220,"title":{},"body":{"modules/AppModule.html":{}}}],["graphql",{"_index":332,"title":{},"body":{"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{}}}],["graphql/graphql",{"_index":328,"title":{},"body":{"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"injectables/AuthService.html":{},"classes/WorkspaceResolver.html":{},"injectables/WorkspaceService.html":{}}}],["graphqlmodule",{"_index":204,"title":{},"body":{"modules/AppModule.html":{}}}],["graphqlmodule.forroot",{"_index":215,"title":{},"body":{"modules/AppModule.html":{}}}],["grid",{"_index":594,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["grow",{"_index":1496,"title":{},"body":{"index.html":{}}}],["guard",{"_index":241,"title":{"guards/AuthGuard.html":{},"guards/WorkspaceGuard.html":{}},"body":{"coverage.html":{}}}],["guards",{"_index":243,"title":{},"body":{"guards/AuthGuard.html":{},"guards/WorkspaceGuard.html":{},"overview.html":{}}}],["guards/auth.guard",{"_index":441,"title":{},"body":{"modules/CommonModule.html":{}}}],["guards/workspace.guard",{"_index":440,"title":{},"body":{"modules/CommonModule.html":{}}}],["h3",{"_index":610,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["h4",{"_index":639,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["handle",{"_index":942,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["handlebars",{"_index":731,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"injectables/HbsRenderService.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"injectables/TemplateEditorService.html":{},"injectables/ZipExportService.html":{},"coverage.html":{},"miscellaneous/variables.html":{}}}],["handlebars.create",{"_index":862,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["handlebars_unescaped",{"_index":1070,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["handlebarsinstance",{"_index":845,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["hands",{"_index":1470,"title":{},"body":{"index.html":{}}}],["handy",{"_index":1461,"title":{},"body":{"index.html":{}}}],["hashed_password",{"_index":392,"title":{},"body":{"injectables/AuthService.html":{}}}],["hashedpassword",{"_index":387,"title":{},"body":{"injectables/AuthService.html":{}}}],["hbs",{"_index":487,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"injectables/TemplateEditorService.html":{},"modules/TemplatePlaygroundModule.html":{},"injectables/ZipExportService.html":{}}}],["hbsrenderservice",{"_index":486,"title":{"injectables/HbsRenderService.html":{}},"body":{"interfaces/CompoDocConfig.html":{},"injectables/HbsRenderService.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"modules/TemplatePlaygroundModule.html":{},"coverage.html":{},"overview.html":{}}}],["hbsservice",{"_index":685,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["header",{"_index":553,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["headers",{"_index":789,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["height",{"_index":541,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["hello",{"_index":232,"title":{},"body":{"injectables/AppService.html":{}}}],["help",{"_index":1474,"title":{},"body":{"index.html":{}}}],["helper",{"_index":868,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["helpers",{"_index":864,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["here",{"_index":1503,"title":{},"body":{"index.html":{}}}],["hidden",{"_index":590,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["hide",{"_index":507,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["hidedarkmodetoggle",{"_index":467,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["hidegenerator",{"_index":468,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["hook",{"_index":939,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["hooks",{"_index":522,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["horizontal",{"_index":1032,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["href",{"_index":948,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["html",{"_index":305,"title":{},"body":{"classes/AuthResolver.html":{},"injectables/HbsRenderService.html":{},"injectables/TemplateEditorService.html":{},"injectables/ZipExportService.html":{}}}],["htmlelement",{"_index":1004,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["http",{"_index":682,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["httpclient",{"_index":478,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["httpclientmodule",{"_index":1104,"title":{},"body":{"modules/TemplatePlaygroundModule.html":{}}}],["httponly",{"_index":340,"title":{},"body":{"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{}}}],["https://compodoc.app/guides/template",{"_index":1340,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["https://nestjs.com",{"_index":1509,"title":{},"body":{"index.html":{}}}],["icon",{"_index":631,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["id",{"_index":947,"title":{},"body":{"injectables/HbsRenderService.html":{},"injectables/TemplateEditorService.html":{},"injectables/WorkspaceService.html":{}}}],["identifier",{"_index":1346,"title":{},"body":{"coverage.html":{}}}],["implement",{"_index":767,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["implementation",{"_index":758,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["implements",{"_index":257,"title":{},"body":{"guards/AuthGuard.html":{},"interfaces/CompoDocConfig.html":{},"injectables/PrismaService.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"guards/WorkspaceGuard.html":{}}}],["import",{"_index":168,"title":{},"body":{"controllers/AppController.html":{},"modules/AppModule.html":{},"injectables/AppService.html":{},"guards/AuthGuard.html":{},"modules/AuthModule.html":{},"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"injectables/AuthService.html":{},"modules/CommonModule.html":{},"interfaces/CompoDocConfig.html":{},"injectables/HbsRenderService.html":{},"modules/PrismaModule.html":{},"injectables/PrismaService.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"injectables/TemplateEditorService.html":{},"modules/TemplatePlaygroundModule.html":{},"guards/WorkspaceGuard.html":{},"modules/WorkspaceModule.html":{},"classes/WorkspaceResolver.html":{},"injectables/WorkspaceService.html":{},"injectables/ZipExportService.html":{}}}],["imports",{"_index":196,"title":{},"body":{"modules/AppModule.html":{},"modules/AuthModule.html":{},"modules/CommonModule.html":{},"modules/TemplatePlaygroundModule.html":{}}}],["imutation",{"_index":95,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{},"coverage.html":{}}}],["includes",{"_index":469,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["includesname",{"_index":470,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["index",{"_index":7,"title":{"index.html":{}},"body":{"classes/AddWorkspaceMemberInput.html":{},"controllers/AppController.html":{},"injectables/AppService.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"guards/AuthGuard.html":{},"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"injectables/AuthService.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"interfaces/CompoDocConfig.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"injectables/HbsRenderService.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"injectables/PrismaService.html":{},"classes/RegisterInput.html":{},"interfaces/Session.html":{},"classes/Success.html":{},"interfaces/Template.html":{},"injectables/TemplateEditorService.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"guards/WorkspaceGuard.html":{},"classes/WorkspaceMembers.html":{},"classes/WorkspaceResolver.html":{},"injectables/WorkspaceService.html":{},"injectables/ZipExportService.html":{},"miscellaneous/enumerations.html":{},"miscellaneous/functions.html":{},"miscellaneous/typealiases.html":{},"miscellaneous/variables.html":{}}}],["indicator",{"_index":575,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["info",{"_index":3,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"controllers/AppController.html":{},"modules/AppModule.html":{},"injectables/AppService.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"guards/AuthGuard.html":{},"modules/AuthModule.html":{},"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"injectables/AuthService.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"modules/CommonModule.html":{},"interfaces/CompoDocConfig.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"injectables/HbsRenderService.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"modules/PrismaModule.html":{},"injectables/PrismaService.html":{},"classes/RegisterInput.html":{},"interfaces/Session.html":{},"classes/Success.html":{},"interfaces/Template.html":{},"injectables/TemplateEditorService.html":{},"modules/TemplatePlaygroundModule.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"guards/WorkspaceGuard.html":{},"classes/WorkspaceMembers.html":{},"modules/WorkspaceModule.html":{},"classes/WorkspaceResolver.html":{},"injectables/WorkspaceService.html":{},"injectables/ZipExportService.html":{}}}],["information",{"_index":889,"title":{},"body":{"injectables/HbsRenderService.html":{},"injectables/ZipExportService.html":{},"index.html":{}}}],["infrastructure",{"_index":1458,"title":{},"body":{"index.html":{}}}],["initialize",{"_index":1016,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["initializeeditor",{"_index":719,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"injectables/TemplateEditorService.html":{}}}],["initializeeditor(container",{"_index":1003,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["initializehandlebars",{"_index":847,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["initializing",{"_index":692,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["injectable",{"_index":228,"title":{"injectables/AppService.html":{},"injectables/AuthService.html":{},"injectables/HbsRenderService.html":{},"injectables/PrismaService.html":{},"injectables/TemplateEditorService.html":{},"injectables/WorkspaceService.html":{},"injectables/ZipExportService.html":{}},"body":{"injectables/AppService.html":{},"guards/AuthGuard.html":{},"injectables/AuthService.html":{},"injectables/HbsRenderService.html":{},"injectables/PrismaService.html":{},"injectables/TemplateEditorService.html":{},"guards/WorkspaceGuard.html":{},"injectables/WorkspaceService.html":{},"injectables/ZipExportService.html":{},"coverage.html":{}}}],["injectables",{"_index":229,"title":{},"body":{"injectables/AppService.html":{},"injectables/AuthService.html":{},"injectables/HbsRenderService.html":{},"injectables/PrismaService.html":{},"injectables/TemplateEditorService.html":{},"injectables/WorkspaceService.html":{},"injectables/ZipExportService.html":{},"overview.html":{}}}],["input",{"_index":124,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"injectables/AuthService.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{},"classes/WorkspaceResolver.html":{},"injectables/WorkspaceService.html":{}}}],["input.color",{"_index":1264,"title":{},"body":{"injectables/WorkspaceService.html":{}}}],["input.description",{"_index":1263,"title":{},"body":{"injectables/WorkspaceService.html":{}}}],["input.email",{"_index":367,"title":{},"body":{"injectables/AuthService.html":{}}}],["input.name",{"_index":1262,"title":{},"body":{"injectables/WorkspaceService.html":{}}}],["input.password",{"_index":370,"title":{},"body":{"injectables/AuthService.html":{}}}],["input.username",{"_index":384,"title":{},"body":{"injectables/AuthService.html":{}}}],["inputs",{"_index":891,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["install",{"_index":1449,"title":{},"body":{"index.html":{}}}],["installcompile",{"_index":1411,"title":{},"body":{"index.html":{}}}],["instance",{"_index":860,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["instanceof",{"_index":396,"title":{},"body":{"injectables/AuthService.html":{}}}],["instructions",{"_index":1293,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["interact",{"_index":1476,"title":{},"body":{"index.html":{}}}],["interface",{"_index":442,"title":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"coverage.html":{}}}],["interfaces",{"_index":444,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"overview.html":{}}}],["internal",{"_index":520,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["invalid",{"_index":377,"title":{},"body":{"injectables/AuthService.html":{}}}],["invalid_credentials",{"_index":378,"title":{},"body":{"injectables/AuthService.html":{}}}],["iquery",{"_index":78,"title":{"classes/IQuery.html":{}},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{},"coverage.html":{}}}],["is_pinned",{"_index":148,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["isinitial",{"_index":907,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["isinitialtab",{"_index":905,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["ispasswordvalid",{"_index":368,"title":{},"body":{"injectables/AuthService.html":{}}}],["istabenabled",{"_index":899,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["isvisible",{"_index":936,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["italic",{"_index":636,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["item",{"_index":813,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["item.name",{"_index":814,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["items",{"_index":558,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["javascript",{"_index":1059,"title":{},"body":{"injectables/TemplateEditorService.html":{},"injectables/ZipExportService.html":{}}}],["job",{"_index":1491,"title":{},"body":{"index.html":{}}}],["jobs",{"_index":1493,"title":{},"body":{"index.html":{}}}],["john",{"_index":320,"title":{},"body":{"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{}}}],["john@example.com",{"_index":307,"title":{},"body":{"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{}}}],["john@test.com",{"_index":321,"title":{},"body":{"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{}}}],["join",{"_index":212,"title":{},"body":{"modules/AppModule.html":{},"index.html":{}}}],["join(process.cwd",{"_index":218,"title":{},"body":{"modules/AppModule.html":{}}}],["js",{"_index":1058,"title":{},"body":{"injectables/TemplateEditorService.html":{},"injectables/ZipExportService.html":{}}}],["json",{"_index":333,"title":{},"body":{"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{}}}],["jszip",{"_index":1287,"title":{},"body":{"injectables/ZipExportService.html":{},"coverage.html":{},"miscellaneous/variables.html":{}}}],["justify",{"_index":554,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["jwtmodule",{"_index":279,"title":{},"body":{"modules/AuthModule.html":{}}}],["jwtmodule.register",{"_index":284,"title":{},"body":{"modules/AuthModule.html":{}}}],["jwtservice",{"_index":358,"title":{},"body":{"injectables/AuthService.html":{}}}],["kamil",{"_index":1506,"title":{},"body":{"index.html":{}}}],["keep",{"_index":1333,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["key",{"_index":888,"title":{},"body":{"injectables/HbsRenderService.html":{},"index.html":{}}}],["keyword",{"_index":1068,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["label",{"_index":70,"title":{"classes/Label.html":{}},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"interfaces/CompoDocConfig.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"injectables/HbsRenderService.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"interfaces/Session.html":{},"classes/Success.html":{},"interfaces/Template.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{},"coverage.html":{}}}],["label_id",{"_index":44,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["labels",{"_index":61,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["labels(workspace_id",{"_index":86,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["lang.id",{"_index":1063,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["language",{"_index":1019,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["last",{"_index":497,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["lastsaved",{"_index":499,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["layout",{"_index":1330,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["learn",{"_index":1463,"title":{},"body":{"index.html":{}}}],["left",{"_index":634,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"injectables/HbsRenderService.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["legend",{"_index":180,"title":{},"body":{"modules/AppModule.html":{},"modules/AuthModule.html":{},"modules/CommonModule.html":{},"modules/PrismaModule.html":{},"modules/TemplatePlaygroundModule.html":{},"modules/WorkspaceModule.html":{},"overview.html":{}}}],["letter",{"_index":616,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["li",{"_index":621,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["li.active",{"_index":628,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["li:hover",{"_index":627,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["license",{"_index":1512,"title":{},"body":{"index.html":{},"properties.html":{}}}],["licensed",{"_index":1495,"title":{},"body":{"index.html":{}}}],["lifecycle",{"_index":521,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"injectables/HbsRenderService.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["linenumbers",{"_index":1029,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["link",{"_index":798,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["linkedin",{"_index":1490,"title":{},"body":{"index.html":{}}}],["list",{"_index":58,"title":{"classes/List.html":{}},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"interfaces/CompoDocConfig.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"interfaces/Session.html":{},"classes/Success.html":{},"interfaces/Template.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{},"coverage.html":{}}}],["list(list_id",{"_index":83,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["list_id",{"_index":36,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["list_ids",{"_index":104,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["listener",{"_index":1046,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["lists",{"_index":57,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["lists(board_id",{"_index":82,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["literal",{"_index":295,"title":{},"body":{"classes/AuthResolver.html":{}}}],["live",{"_index":533,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"injectables/HbsRenderService.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["loading",{"_index":530,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["loadsessionconfig",{"_index":715,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["loadsessiontemplates",{"_index":706,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["login",{"_index":291,"title":{},"body":{"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{}}}],["login($input",{"_index":302,"title":{},"body":{"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{}}}],["login(input",{"_index":118,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["logininput",{"_index":45,"title":{"classes/LoginInput.html":{}},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"injectables/AuthService.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{},"coverage.html":{}}}],["loginuser",{"_index":356,"title":{},"body":{"injectables/AuthService.html":{}}}],["loginuser(input",{"_index":360,"title":{},"body":{"injectables/AuthService.html":{}}}],["logout",{"_index":120,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["logout(@context",{"_index":345,"title":{},"body":{"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{}}}],["logout(context",{"_index":309,"title":{},"body":{"classes/AuthResolver.html":{}}}],["logout_failed",{"_index":351,"title":{},"body":{"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{}}}],["looking",{"_index":1436,"title":{},"body":{"index.html":{}}}],["loop",{"_index":1486,"title":{},"body":{"index.html":{}}}],["main",{"_index":515,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"injectables/ZipExportService.html":{}}}],["makes",{"_index":1444,"title":{},"body":{"index.html":{}}}],["making",{"_index":1336,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["managing",{"_index":1457,"title":{},"body":{"index.html":{}}}],["mapping",{"_index":886,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["margin",{"_index":600,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"injectables/HbsRenderService.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["matching",{"_index":153,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"controllers/AppController.html":{},"modules/AppModule.html":{},"injectables/AppService.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"guards/AuthGuard.html":{},"modules/AuthModule.html":{},"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"injectables/AuthService.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"modules/CommonModule.html":{},"interfaces/CompoDocConfig.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"injectables/HbsRenderService.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"modules/PrismaModule.html":{},"injectables/PrismaService.html":{},"classes/RegisterInput.html":{},"interfaces/Session.html":{},"classes/Success.html":{},"interfaces/Template.html":{},"injectables/TemplateEditorService.html":{},"modules/TemplatePlaygroundModule.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"guards/WorkspaceGuard.html":{},"classes/WorkspaceMembers.html":{},"modules/WorkspaceModule.html":{},"classes/WorkspaceResolver.html":{},"injectables/WorkspaceService.html":{},"injectables/ZipExportService.html":{},"coverage.html":{},"dependencies.html":{},"miscellaneous/enumerations.html":{},"miscellaneous/functions.html":{},"index.html":{},"modules.html":{},"overview.html":{},"properties.html":{},"routes.html":{},"miscellaneous/typealiases.html":{},"miscellaneous/variables.html":{}}}],["mau",{"_index":1440,"title":{},"body":{"index.html":{}}}],["max",{"_index":587,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["member",{"_index":24,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"guards/WorkspaceGuard.html":{},"classes/WorkspaceMembers.html":{},"injectables/WorkspaceService.html":{},"miscellaneous/enumerations.html":{}}}],["members",{"_index":64,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{},"injectables/WorkspaceService.html":{}}}],["membership",{"_index":1172,"title":{},"body":{"guards/WorkspaceGuard.html":{}}}],["mercurius",{"_index":1383,"title":{},"body":{"dependencies.html":{}}}],["mercuriusdriver",{"_index":201,"title":{},"body":{"modules/AppModule.html":{}}}],["mercuriusdriverconfig",{"_index":202,"title":{},"body":{"modules/AppModule.html":{}}}],["message",{"_index":138,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"injectables/AuthService.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"interfaces/CompoDocConfig.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"interfaces/Session.html":{},"classes/Success.html":{},"interfaces/Template.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{},"injectables/WorkspaceService.html":{}}}],["metadata",{"_index":1386,"title":{},"body":{"dependencies.html":{}}}],["metatag",{"_index":1074,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["metatag.content",{"_index":1073,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["methods",{"_index":158,"title":{},"body":{"controllers/AppController.html":{},"injectables/AppService.html":{},"guards/AuthGuard.html":{},"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"injectables/AuthService.html":{},"injectables/HbsRenderService.html":{},"classes/IQuery.html":{},"injectables/PrismaService.html":{},"injectables/TemplateEditorService.html":{},"guards/WorkspaceGuard.html":{},"classes/WorkspaceResolver.html":{},"injectables/WorkspaceService.html":{},"injectables/ZipExportService.html":{}}}],["minimal",{"_index":471,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["minimap",{"_index":1023,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["minmax(200px",{"_index":598,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["miscellaneous",{"_index":1392,"title":{"miscellaneous/enumerations.html":{},"miscellaneous/functions.html":{},"miscellaneous/typealiases.html":{},"miscellaneous/variables.html":{}},"body":{"miscellaneous/enumerations.html":{},"miscellaneous/functions.html":{},"miscellaneous/typealiases.html":{},"miscellaneous/variables.html":{}}}],["mit",{"_index":1494,"title":{},"body":{"index.html":{}}}],["mock",{"_index":924,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["mode",{"_index":510,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"index.html":{}}}],["model",{"_index":1053,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["modify",{"_index":1327,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["module",{"_index":176,"title":{"modules/AppModule.html":{},"modules/AuthModule.html":{},"modules/CommonModule.html":{},"modules/PrismaModule.html":{},"modules/TemplatePlaygroundModule.html":{},"modules/WorkspaceModule.html":{}},"body":{"modules/AppModule.html":{},"modules/AuthModule.html":{},"modules/CommonModule.html":{},"injectables/HbsRenderService.html":{},"modules/PrismaModule.html":{},"modules/TemplatePlaygroundModule.html":{},"modules/WorkspaceModule.html":{},"overview.html":{}}}],["modules",{"_index":178,"title":{"modules.html":{}},"body":{"modules/AppModule.html":{},"modules/AuthModule.html":{},"modules/CommonModule.html":{},"injectables/HbsRenderService.html":{},"modules/PrismaModule.html":{},"modules/TemplatePlaygroundModule.html":{},"modules/WorkspaceModule.html":{},"modules.html":{},"overview.html":{}}}],["monaco",{"_index":1015,"title":{},"body":{"injectables/TemplateEditorService.html":{},"coverage.html":{},"miscellaneous/variables.html":{}}}],["monaco.editor.create(container",{"_index":1018,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["monaco.editor.createmodel(content",{"_index":1054,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["monaco.languages.getlanguages().find((lang",{"_index":1062,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["monaco.languages.register",{"_index":1065,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["monaco.languages.setlanguageconfiguration('handlebars",{"_index":1082,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["monaco.languages.setmonarchtokensprovider('handlebars",{"_index":1066,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["monospace",{"_index":574,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["more",{"_index":1338,"title":{},"body":{"injectables/ZipExportService.html":{},"index.html":{}}}],["morph",{"_index":1390,"title":{},"body":{"dependencies.html":{}}}],["mouseevent",{"_index":946,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["movecard(card_id",{"_index":108,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["mutation",{"_index":296,"title":{},"body":{"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"classes/WorkspaceResolver.html":{}}}],["mutation(\"updateworkspace",{"_index":1225,"title":{},"body":{"classes/WorkspaceResolver.html":{}}}],["mutation('register",{"_index":314,"title":{},"body":{"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{}}}],["mutation('updateworkspace')@workspaceauth(role.admin",{"_index":1208,"title":{},"body":{"classes/WorkspaceResolver.html":{}}}],["mutation()@useguards(authguard",{"_index":1198,"title":{},"body":{"classes/WorkspaceResolver.html":{}}}],["mutation()@workspaceauth(role.admin",{"_index":1200,"title":{},"body":{"classes/WorkspaceResolver.html":{}}}],["myśliwiec",{"_index":1507,"title":{},"body":{"index.html":{}}}],["name",{"_index":42,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"guards/AuthGuard.html":{},"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"injectables/AuthService.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"interfaces/CompoDocConfig.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"injectables/HbsRenderService.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"interfaces/Session.html":{},"classes/Success.html":{},"interfaces/Template.html":{},"injectables/TemplateEditorService.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"guards/WorkspaceGuard.html":{},"classes/WorkspaceMembers.html":{},"classes/WorkspaceResolver.html":{},"injectables/WorkspaceService.html":{},"injectables/ZipExportService.html":{},"miscellaneous/functions.html":{}}}],["navtabs",{"_index":901,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["navtabs.find((t",{"_index":903,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["navtabs.length",{"_index":908,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["navtabs[0].id",{"_index":909,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["need",{"_index":1481,"title":{},"body":{"index.html":{}}}],["nest",{"_index":1406,"title":{},"body":{"index.html":{}}}],["nestframework",{"_index":1511,"title":{},"body":{"index.html":{}}}],["nestjs",{"_index":1427,"title":{},"body":{"index.html":{}}}],["nestjs/common",{"_index":169,"title":{},"body":{"controllers/AppController.html":{},"modules/AppModule.html":{},"injectables/AppService.html":{},"guards/AuthGuard.html":{},"modules/AuthModule.html":{},"injectables/AuthService.html":{},"modules/CommonModule.html":{},"modules/PrismaModule.html":{},"injectables/PrismaService.html":{},"guards/WorkspaceGuard.html":{},"modules/WorkspaceModule.html":{},"classes/WorkspaceResolver.html":{},"injectables/WorkspaceService.html":{},"dependencies.html":{}}}],["nestjs/config",{"_index":1374,"title":{},"body":{"dependencies.html":{}}}],["nestjs/core",{"_index":1153,"title":{},"body":{"guards/WorkspaceGuard.html":{},"dependencies.html":{}}}],["nestjs/graphql",{"_index":205,"title":{},"body":{"modules/AppModule.html":{},"guards/AuthGuard.html":{},"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"guards/WorkspaceGuard.html":{},"classes/WorkspaceResolver.html":{},"dependencies.html":{}}}],["nestjs/jwt",{"_index":280,"title":{},"body":{"modules/AuthModule.html":{},"injectables/AuthService.html":{},"dependencies.html":{}}}],["nestjs/mau",{"_index":1451,"title":{},"body":{"index.html":{}}}],["nestjs/mercurius",{"_index":203,"title":{},"body":{"modules/AppModule.html":{},"dependencies.html":{}}}],["nestjs/platform",{"_index":1377,"title":{},"body":{"dependencies.html":{}}}],["new",{"_index":264,"title":{},"body":{"guards/AuthGuard.html":{},"injectables/AuthService.html":{},"interfaces/CompoDocConfig.html":{},"injectables/HbsRenderService.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"guards/WorkspaceGuard.html":{},"injectables/WorkspaceService.html":{},"injectables/ZipExportService.html":{},"coverage.html":{}}}],["newuser",{"_index":390,"title":{},"body":{"injectables/AuthService.html":{}}}],["newuser.email",{"_index":394,"title":{},"body":{"injectables/AuthService.html":{}}}],["newuser.user_id",{"_index":393,"title":{},"body":{"injectables/AuthService.html":{}}}],["next",{"_index":1069,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["ngmodule",{"_index":1097,"title":{},"body":{"modules/TemplatePlaygroundModule.html":{}}}],["ngondestroy",{"_index":693,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["ngoninit",{"_index":686,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"injectables/HbsRenderService.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["node.js",{"_index":1400,"title":{},"body":{"index.html":{}}}],["none",{"_index":619,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"injectables/ZipExportService.html":{}}}],["notice",{"_index":921,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["npm",{"_index":1410,"title":{},"body":{"index.html":{}}}],["null",{"_index":151,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"interfaces/CompoDocConfig.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"interfaces/Session.html":{},"classes/Success.html":{},"interfaces/Template.html":{},"injectables/TemplateEditorService.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{},"miscellaneous/typealiases.html":{}}}],["nullable",{"_index":15,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{},"coverage.html":{},"miscellaneous/typealiases.html":{}}}],["number",{"_index":34,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"interfaces/CompoDocConfig.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"injectables/HbsRenderService.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"interfaces/Session.html":{},"classes/Success.html":{},"interfaces/Template.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["object",{"_index":1244,"title":{},"body":{"injectables/WorkspaceService.html":{}}}],["observe",{"_index":786,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["offer",{"_index":1492,"title":{},"body":{"index.html":{}}}],["official",{"_index":1441,"title":{},"body":{"index.html":{}}}],["onchangecallback",{"_index":993,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["onclick",{"_index":941,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["onclick(event",{"_index":945,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["ondestroy",{"_index":476,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["oninit",{"_index":473,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["onmoduleinit",{"_index":985,"title":{},"body":{"injectables/PrismaService.html":{}}}],["opacity",{"_index":632,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["open",{"_index":1086,"title":{},"body":{"injectables/TemplateEditorService.html":{},"index.html":{}}}],["operator",{"_index":870,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["optional",{"_index":9,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/AuthError.html":{},"guards/AuthGuard.html":{},"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"injectables/AuthService.html":{},"classes/Board.html":{},"classes/Card.html":{},"interfaces/CompoDocConfig.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateListInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"injectables/HbsRenderService.html":{},"classes/IQuery.html":{},"classes/List.html":{},"classes/Success.html":{},"injectables/TemplateEditorService.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"guards/WorkspaceGuard.html":{},"classes/WorkspaceResolver.html":{},"injectables/WorkspaceService.html":{},"injectables/ZipExportService.html":{},"miscellaneous/functions.html":{}}}],["options",{"_index":593,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"injectables/HbsRenderService.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["options.fn(this",{"_index":873,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["options.inverse(this",{"_index":874,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["orderby",{"_index":1267,"title":{},"body":{"injectables/WorkspaceService.html":{}}}],["original",{"_index":1334,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["orlength",{"_index":894,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["out",{"_index":194,"title":{},"body":{"modules/AppModule.html":{},"modules/AuthModule.html":{},"modules/CommonModule.html":{},"modules/PrismaModule.html":{},"modules/TemplatePlaygroundModule.html":{},"modules/WorkspaceModule.html":{},"index.html":{},"overview.html":{}}}],["outputas",{"_index":227,"title":{},"body":{"modules/AppModule.html":{}}}],["outputs",{"_index":892,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["overflow",{"_index":589,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["overview",{"_index":513,"title":{"overview.html":{}},"body":{"interfaces/CompoDocConfig.html":{},"injectables/HbsRenderService.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"overview.html":{}}}],["overviewrulerlanes",{"_index":1034,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["owner",{"_index":146,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{},"injectables/WorkspaceService.html":{}}}],["owner_id",{"_index":145,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{},"injectables/WorkspaceService.html":{}}}],["p",{"_index":1319,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["p2002",{"_index":399,"title":{},"body":{"injectables/AuthService.html":{}}}],["package",{"_index":777,"title":{"dependencies.html":{},"properties.html":{}},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["padding",{"_index":560,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"injectables/HbsRenderService.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["page",{"_index":774,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"injectables/HbsRenderService.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"injectables/ZipExportService.html":{}}}],["page.hbs",{"_index":1322,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["pages",{"_index":1306,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["panel",{"_index":582,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["panel.collapsed",{"_index":591,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["param",{"_index":300,"title":{},"body":{"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"injectables/WorkspaceService.html":{}}}],["parameterhints",{"_index":1038,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["parameters",{"_index":250,"title":{},"body":{"guards/AuthGuard.html":{},"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"injectables/AuthService.html":{},"injectables/HbsRenderService.html":{},"classes/IQuery.html":{},"injectables/TemplateEditorService.html":{},"guards/WorkspaceGuard.html":{},"classes/WorkspaceResolver.html":{},"injectables/WorkspaceService.html":{},"injectables/ZipExportService.html":{},"miscellaneous/functions.html":{}}}],["part",{"_index":1482,"title":{},"body":{"index.html":{}}}],["partial",{"_index":489,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"injectables/ZipExportService.html":{}}}],["partials",{"_index":1323,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["password",{"_index":47,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["path",{"_index":213,"title":{},"body":{"modules/AppModule.html":{},"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"injectables/ZipExportService.html":{}}}],["path/to/custom/templates",{"_index":1321,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["permissions",{"_index":1170,"title":{},"body":{"guards/WorkspaceGuard.html":{}}}],["picture",{"_index":140,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["pinworkspace(workspace_id",{"_index":126,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["pinworkspacepayload",{"_index":127,"title":{"classes/PinWorkspacePayload.html":{}},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{},"coverage.html":{}}}],["platform",{"_index":1439,"title":{},"body":{"index.html":{}}}],["playground",{"_index":492,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"injectables/HbsRenderService.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"injectables/ZipExportService.html":{}}}],["playground.component",{"_index":1105,"title":{},"body":{"modules/TemplatePlaygroundModule.html":{}}}],["playground.component.ts",{"_index":447,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"coverage.html":{}}}],["playground.module.ts",{"_index":1096,"title":{},"body":{"modules/TemplatePlaygroundModule.html":{}}}],["playground/hbs",{"_index":843,"title":{},"body":{"injectables/HbsRenderService.html":{},"coverage.html":{},"miscellaneous/variables.html":{}}}],["playground/template",{"_index":446,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"injectables/TemplateEditorService.html":{},"modules/TemplatePlaygroundModule.html":{},"coverage.html":{},"miscellaneous/variables.html":{}}}],["playground/zip",{"_index":1276,"title":{},"body":{"injectables/ZipExportService.html":{},"coverage.html":{},"miscellaneous/variables.html":{}}}],["please",{"_index":773,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"injectables/HbsRenderService.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"index.html":{}}}],["pointer",{"_index":623,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["pop",{"_index":1071,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["position",{"_index":33,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"interfaces/CompoDocConfig.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"interfaces/Session.html":{},"classes/Success.html":{},"interfaces/Template.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["possible",{"_index":1434,"title":{},"body":{"index.html":{}}}],["preview",{"_index":534,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"injectables/HbsRenderService.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["previewframe",{"_index":669,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["previewurl",{"_index":679,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["primary",{"_index":652,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["primary:hover",{"_index":653,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["prisma",{"_index":251,"title":{},"body":{"guards/AuthGuard.html":{},"injectables/AuthService.html":{},"modules/CommonModule.html":{},"guards/WorkspaceGuard.html":{},"injectables/WorkspaceService.html":{},"dependencies.html":{}}}],["prisma.module",{"_index":980,"title":{},"body":{"modules/PrismaModule.html":{}}}],["prisma.prismaclientknownrequesterror",{"_index":397,"title":{},"body":{"injectables/AuthService.html":{}}}],["prisma.service",{"_index":981,"title":{},"body":{"modules/PrismaModule.html":{}}}],["prisma/client",{"_index":365,"title":{},"body":{"injectables/AuthService.html":{},"modules/CommonModule.html":{},"injectables/PrismaService.html":{},"guards/WorkspaceGuard.html":{},"classes/WorkspaceResolver.html":{},"injectables/WorkspaceService.html":{},"dependencies.html":{}}}],["prisma/config",{"_index":1380,"title":{},"body":{"dependencies.html":{}}}],["prisma/prisma.module",{"_index":207,"title":{},"body":{"modules/AppModule.html":{}}}],["prisma/prisma.service",{"_index":199,"title":{},"body":{"modules/AppModule.html":{},"guards/AuthGuard.html":{},"modules/AuthModule.html":{},"injectables/AuthService.html":{},"guards/WorkspaceGuard.html":{},"injectables/WorkspaceService.html":{}}}],["prismaclient",{"_index":984,"title":{},"body":{"injectables/PrismaService.html":{}}}],["prismaclientknownrequesterror",{"_index":1254,"title":{},"body":{"injectables/WorkspaceService.html":{}}}],["prismaclientvalidationerror",{"_index":1259,"title":{},"body":{"injectables/WorkspaceService.html":{}}}],["prismamodule",{"_index":190,"title":{"modules/PrismaModule.html":{}},"body":{"modules/AppModule.html":{},"modules/CommonModule.html":{},"modules/PrismaModule.html":{},"modules.html":{},"overview.html":{}}}],["prismaservice",{"_index":198,"title":{"injectables/PrismaService.html":{}},"body":{"modules/AppModule.html":{},"guards/AuthGuard.html":{},"modules/AuthModule.html":{},"injectables/AuthService.html":{},"modules/PrismaModule.html":{},"injectables/PrismaService.html":{},"guards/WorkspaceGuard.html":{},"injectables/WorkspaceService.html":{},"coverage.html":{},"overview.html":{}}}],["private",{"_index":258,"title":{},"body":{"guards/AuthGuard.html":{},"injectables/AuthService.html":{},"interfaces/CompoDocConfig.html":{},"injectables/HbsRenderService.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"injectables/TemplateEditorService.html":{},"guards/WorkspaceGuard.html":{},"injectables/ZipExportService.html":{}}}],["process.env.jwt_secret",{"_index":286,"title":{},"body":{"modules/AuthModule.html":{}}}],["process.env.node_env",{"_index":342,"title":{},"body":{"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{}}}],["production",{"_index":343,"title":{},"body":{"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"index.html":{}}}],["progressive",{"_index":1399,"title":{},"body":{"index.html":{}}}],["project",{"_index":164,"title":{},"body":{"controllers/AppController.html":{},"modules/AppModule.html":{},"modules/AuthModule.html":{},"modules/CommonModule.html":{},"modules/PrismaModule.html":{},"modules/WorkspaceModule.html":{},"injectables/WorkspaceService.html":{},"index.html":{}}}],["promise",{"_index":80,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"guards/AuthGuard.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"interfaces/CompoDocConfig.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"interfaces/Session.html":{},"classes/Success.html":{},"interfaces/Template.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"guards/WorkspaceGuard.html":{},"classes/WorkspaceMembers.html":{},"injectables/WorkspaceService.html":{}}}],["properties",{"_index":8,"title":{"properties.html":{}},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"interfaces/CompoDocConfig.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"injectables/HbsRenderService.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"interfaces/Session.html":{},"classes/Success.html":{},"interfaces/Template.html":{},"injectables/TemplateEditorService.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"guards/WorkspaceGuard.html":{},"classes/WorkspaceMembers.html":{},"properties.html":{}}}],["protected",{"_index":519,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["provided",{"_index":1171,"title":{},"body":{"guards/WorkspaceGuard.html":{}}}],["providedin",{"_index":858,"title":{},"body":{"injectables/HbsRenderService.html":{},"injectables/TemplateEditorService.html":{},"injectables/ZipExportService.html":{}}}],["providers",{"_index":183,"title":{},"body":{"modules/AppModule.html":{},"modules/AuthModule.html":{},"modules/CommonModule.html":{},"modules/PrismaModule.html":{},"modules/TemplatePlaygroundModule.html":{},"modules/WorkspaceModule.html":{},"overview.html":{}}}],["query",{"_index":1210,"title":{},"body":{"classes/WorkspaceResolver.html":{}}}],["query(\"workspace",{"_index":1221,"title":{},"body":{"classes/WorkspaceResolver.html":{}}}],["query(\"workspaces",{"_index":1218,"title":{},"body":{"classes/WorkspaceResolver.html":{}}}],["query('workspace')@workspaceauth(role.viewer",{"_index":1206,"title":{},"body":{"classes/WorkspaceResolver.html":{}}}],["query('workspaces')@useguards(authguard",{"_index":1203,"title":{},"body":{"classes/WorkspaceResolver.html":{}}}],["questions",{"_index":1464,"title":{},"body":{"index.html":{}}}],["quicksuggestions",{"_index":1036,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["radius",{"_index":624,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["read",{"_index":1502,"title":{},"body":{"index.html":{}}}],["readme",{"_index":1292,"title":{"index.html":{}},"body":{"injectables/ZipExportService.html":{}}}],["readonly",{"_index":173,"title":{},"body":{"controllers/AppController.html":{},"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["ready",{"_index":1425,"title":{},"body":{"index.html":{}}}],["real",{"_index":1477,"title":{},"body":{"index.html":{}}}],["red",{"_index":925,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["reflect",{"_index":1385,"title":{},"body":{"dependencies.html":{}}}],["reflector",{"_index":1150,"title":{},"body":{"guards/WorkspaceGuard.html":{}}}],["refresh",{"_index":535,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["refreshpreview",{"_index":754,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["regenerated",{"_index":749,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["register",{"_index":292,"title":{},"body":{"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"injectables/HbsRenderService.html":{},"injectables/TemplateEditorService.html":{}}}],["register($input",{"_index":319,"title":{},"body":{"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{}}}],["register(input",{"_index":119,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["registered",{"_index":1064,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["registerhandlebarslanguage",{"_index":996,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["registerhelpers",{"_index":848,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["registerinput",{"_index":48,"title":{"classes/RegisterInput.html":{}},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"injectables/AuthService.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{},"coverage.html":{}}}],["registersuccess",{"_index":395,"title":{},"body":{"injectables/AuthService.html":{}}}],["registeruser",{"_index":357,"title":{},"body":{"injectables/AuthService.html":{}}}],["registeruser(input",{"_index":362,"title":{},"body":{"injectables/AuthService.html":{}}}],["registration",{"_index":316,"title":{},"body":{"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"injectables/AuthService.html":{}}}],["registration_failed",{"_index":404,"title":{},"body":{"injectables/AuthService.html":{}}}],["relative",{"_index":644,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["relativeurl",{"_index":881,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["removeworkspacemember(workspace_id",{"_index":130,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["render.service",{"_index":488,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"modules/TemplatePlaygroundModule.html":{}}}],["render.service.ts",{"_index":844,"title":{},"body":{"injectables/HbsRenderService.html":{},"coverage.html":{},"miscellaneous/variables.html":{}}}],["render.service.ts:131",{"_index":855,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["render.service.ts:15",{"_index":852,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["render.service.ts:184",{"_index":851,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["render.service.ts:23",{"_index":853,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["render.service.ts:9",{"_index":850,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["rendered",{"_index":913,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["rendertemplate",{"_index":849,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["rendertemplate(templatecontent",{"_index":854,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["reorderlists(board_id",{"_index":103,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["repeat(auto",{"_index":596,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["reply",{"_index":224,"title":{},"body":{"modules/AppModule.html":{},"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{}}}],["repository",{"_index":1408,"title":{},"body":{"index.html":{}}}],["req",{"_index":225,"title":{},"body":{"modules/AppModule.html":{}}}],["request",{"_index":223,"title":{},"body":{"modules/AppModule.html":{}}}],["required",{"_index":266,"title":{},"body":{"guards/AuthGuard.html":{}}}],["requiredlevel",{"_index":1177,"title":{},"body":{"guards/WorkspaceGuard.html":{}}}],["requiredrole",{"_index":1161,"title":{},"body":{"guards/WorkspaceGuard.html":{}}}],["requiring",{"_index":1447,"title":{},"body":{"index.html":{}}}],["reset",{"_index":193,"title":{},"body":{"modules/AppModule.html":{},"modules/AuthModule.html":{},"modules/CommonModule.html":{},"interfaces/CompoDocConfig.html":{},"modules/PrismaModule.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"modules/TemplatePlaygroundModule.html":{},"modules/WorkspaceModule.html":{},"overview.html":{}}}],["resetting",{"_index":759,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["resettodefault",{"_index":757,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["resolvefield",{"_index":325,"title":{},"body":{"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{}}}],["resolver",{"_index":323,"title":{},"body":{"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"classes/WorkspaceResolver.html":{}}}],["resolver('authresult",{"_index":329,"title":{},"body":{"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{}}}],["resolver('workspace",{"_index":1215,"title":{},"body":{"classes/WorkspaceResolver.html":{}}}],["resolves",{"_index":1243,"title":{},"body":{"injectables/WorkspaceService.html":{}}}],["resources",{"_index":1459,"title":{},"body":{"index.html":{}}}],["response",{"_index":697,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["response.body",{"_index":787,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["response.config",{"_index":718,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["response.headers.get('content",{"_index":792,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["response.sessionid",{"_index":701,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["response.success",{"_index":700,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["response.templates",{"_index":709,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["responsetype",{"_index":784,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["result",{"_index":335,"title":{},"body":{"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"injectables/HbsRenderService.html":{}}}],["result.__typename",{"_index":337,"title":{},"body":{"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{}}}],["result.token",{"_index":338,"title":{},"body":{"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{}}}],["results",{"_index":152,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"controllers/AppController.html":{},"modules/AppModule.html":{},"injectables/AppService.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"guards/AuthGuard.html":{},"modules/AuthModule.html":{},"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"injectables/AuthService.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"modules/CommonModule.html":{},"interfaces/CompoDocConfig.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"injectables/HbsRenderService.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"modules/PrismaModule.html":{},"injectables/PrismaService.html":{},"classes/RegisterInput.html":{},"interfaces/Session.html":{},"classes/Success.html":{},"interfaces/Template.html":{},"injectables/TemplateEditorService.html":{},"modules/TemplatePlaygroundModule.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"guards/WorkspaceGuard.html":{},"classes/WorkspaceMembers.html":{},"modules/WorkspaceModule.html":{},"classes/WorkspaceResolver.html":{},"injectables/WorkspaceService.html":{},"injectables/ZipExportService.html":{},"coverage.html":{},"dependencies.html":{},"miscellaneous/enumerations.html":{},"miscellaneous/functions.html":{},"index.html":{},"modules.html":{},"overview.html":{},"properties.html":{},"routes.html":{},"miscellaneous/typealiases.html":{},"miscellaneous/variables.html":{}}}],["ret",{"_index":880,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["return",{"_index":174,"title":{},"body":{"controllers/AppController.html":{},"injectables/AppService.html":{},"guards/AuthGuard.html":{},"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"injectables/AuthService.html":{},"interfaces/CompoDocConfig.html":{},"injectables/HbsRenderService.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"injectables/TemplateEditorService.html":{},"guards/WorkspaceGuard.html":{},"classes/WorkspaceResolver.html":{},"injectables/WorkspaceService.html":{},"injectables/ZipExportService.html":{}}}],["returns",{"_index":162,"title":{},"body":{"controllers/AppController.html":{},"injectables/AppService.html":{},"guards/AuthGuard.html":{},"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"injectables/AuthService.html":{},"injectables/HbsRenderService.html":{},"classes/IQuery.html":{},"injectables/PrismaService.html":{},"injectables/TemplateEditorService.html":{},"guards/WorkspaceGuard.html":{},"classes/WorkspaceResolver.html":{},"injectables/WorkspaceService.html":{},"injectables/ZipExportService.html":{}}}],["right",{"_index":607,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"injectables/HbsRenderService.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["roboto",{"_index":550,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["role",{"_index":10,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"guards/WorkspaceGuard.html":{},"classes/WorkspaceMembers.html":{},"classes/WorkspaceResolver.html":{},"injectables/WorkspaceService.html":{},"miscellaneous/enumerations.html":{},"miscellaneous/functions.html":{}}}],["role.admin",{"_index":1159,"title":{},"body":{"guards/WorkspaceGuard.html":{},"injectables/WorkspaceService.html":{}}}],["role.member",{"_index":1158,"title":{},"body":{"guards/WorkspaceGuard.html":{},"miscellaneous/functions.html":{}}}],["role.viewer",{"_index":1157,"title":{},"body":{"guards/WorkspaceGuard.html":{}}}],["rolehierarchy",{"_index":1148,"title":{},"body":{"guards/WorkspaceGuard.html":{}}}],["roles",{"_index":1527,"title":{},"body":{"miscellaneous/variables.html":{}}}],["roles_key",{"_index":1154,"title":{},"body":{"guards/WorkspaceGuard.html":{},"coverage.html":{},"miscellaneous/variables.html":{}}}],["root",{"_index":493,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"injectables/HbsRenderService.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"injectables/TemplateEditorService.html":{},"injectables/ZipExportService.html":{}}}],["roundedselection",{"_index":1030,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["routes",{"_index":516,"title":{"routes.html":{}},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"routes.html":{}}}],["run",{"_index":1412,"title":{},"body":{"index.html":{}}}],["running",{"_index":1316,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["runs",{"_index":1432,"title":{},"body":{"index.html":{}}}],["rxjs",{"_index":1388,"title":{},"body":{"dependencies.html":{}}}],["sample",{"_index":931,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["samplecomponent",{"_index":932,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["sans",{"_index":551,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"injectables/HbsRenderService.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["save",{"_index":724,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["save_delay",{"_index":675,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["saved",{"_index":498,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["savetemplate(content",{"_index":743,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["savetimeout",{"_index":674,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["saving",{"_index":496,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["scalable",{"_index":1404,"title":{},"body":{"index.html":{}}}],["schedule",{"_index":738,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["scheduleautosave(content",{"_index":732,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["scripts",{"_index":1310,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["scrollbar",{"_index":1031,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["scrollbeyondlastline",{"_index":1025,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["scss",{"_index":1057,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["search",{"_index":518,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["secondary",{"_index":656,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["secondary:hover",{"_index":657,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["secret",{"_index":285,"title":{},"body":{"modules/AuthModule.html":{}}}],["secretpassword",{"_index":306,"title":{},"body":{"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{}}}],["secure",{"_index":341,"title":{},"body":{"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{}}}],["segoe",{"_index":548,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["select",{"_index":710,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["selectedfile",{"_index":670,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["selectedfile.path",{"_index":531,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["selectedfile.type",{"_index":532,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["selectfile(template",{"_index":728,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["selector",{"_index":491,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"injectables/HbsRenderService.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["serif",{"_index":552,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"injectables/HbsRenderService.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["server",{"_index":779,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"index.html":{}}}],["session",{"_index":312,"title":{"interfaces/Session.html":{}},"body":{"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"coverage.html":{}}}],["sessionid",{"_index":490,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["sessionid.substring(0",{"_index":494,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["set",{"_index":721,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"injectables/TemplateEditorService.html":{}}}],["seteditorcontent",{"_index":997,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["seteditorcontent(content",{"_index":1007,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["setonchangecallback",{"_index":998,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["setonchangecallback(callback",{"_index":1009,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["setup",{"_index":1409,"title":{},"body":{"index.html":{}}}],["showconfigpanel",{"_index":671,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["side",{"_index":780,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"index.html":{}}}],["sidebar",{"_index":604,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["signature",{"_index":940,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["signoptions",{"_index":287,"title":{},"body":{"modules/AuthModule.html":{}}}],["simple",{"_index":884,"title":{},"body":{"injectables/HbsRenderService.html":{},"index.html":{}}}],["size",{"_index":571,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["sm",{"_index":663,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["solid",{"_index":568,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"injectables/HbsRenderService.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["source",{"_index":4,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"controllers/AppController.html":{},"modules/AppModule.html":{},"injectables/AppService.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"guards/AuthGuard.html":{},"modules/AuthModule.html":{},"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"injectables/AuthService.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"modules/CommonModule.html":{},"interfaces/CompoDocConfig.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"injectables/HbsRenderService.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"modules/PrismaModule.html":{},"injectables/PrismaService.html":{},"classes/RegisterInput.html":{},"interfaces/Session.html":{},"classes/Success.html":{},"interfaces/Template.html":{},"injectables/TemplateEditorService.html":{},"modules/TemplatePlaygroundModule.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"guards/WorkspaceGuard.html":{},"classes/WorkspaceMembers.html":{},"modules/WorkspaceModule.html":{},"classes/WorkspaceResolver.html":{},"injectables/WorkspaceService.html":{},"injectables/ZipExportService.html":{},"index.html":{}}}],["space",{"_index":555,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["spacing",{"_index":617,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["specified",{"_index":1239,"title":{},"body":{"injectables/WorkspaceService.html":{}}}],["specify",{"_index":1317,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["sponsors",{"_index":1498,"title":{},"body":{"index.html":{}}}],["src/.../graphql.ts",{"_index":1394,"title":{},"body":{"miscellaneous/enumerations.html":{},"miscellaneous/typealiases.html":{}}}],["src/.../main.ts",{"_index":1396,"title":{},"body":{"miscellaneous/functions.html":{}}}],["src/.../workspace",{"_index":1397,"title":{},"body":{"miscellaneous/functions.html":{},"miscellaneous/variables.html":{}}}],["src/app.controller.ts",{"_index":157,"title":{},"body":{"controllers/AppController.html":{},"coverage.html":{}}}],["src/app.controller.ts:16",{"_index":161,"title":{},"body":{"controllers/AppController.html":{}}}],["src/app.module.ts",{"_index":195,"title":{},"body":{"modules/AppModule.html":{}}}],["src/app.service.ts",{"_index":230,"title":{},"body":{"injectables/AppService.html":{},"coverage.html":{}}}],["src/app.service.ts:12",{"_index":231,"title":{},"body":{"injectables/AppService.html":{}}}],["src/app/sample/sample.component.ts",{"_index":934,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["src/auth/auth.module.ts",{"_index":276,"title":{},"body":{"modules/AuthModule.html":{}}}],["src/auth/auth.resolver.ts",{"_index":290,"title":{},"body":{"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"coverage.html":{}}}],["src/auth/auth.resolver.ts:120",{"_index":315,"title":{},"body":{"classes/AuthResolver.html":{}}}],["src/auth/auth.resolver.ts:142",{"_index":310,"title":{},"body":{"classes/AuthResolver.html":{}}}],["src/auth/auth.resolver.ts:22",{"_index":353,"title":{},"body":{"classes/AuthResultResolver.html":{}}}],["src/auth/auth.resolver.ts:28",{"_index":294,"title":{},"body":{"classes/AuthResolver.html":{}}}],["src/auth/auth.resolver.ts:63",{"_index":297,"title":{},"body":{"classes/AuthResolver.html":{}}}],["src/auth/auth.service.ts",{"_index":355,"title":{},"body":{"injectables/AuthService.html":{},"coverage.html":{}}}],["src/auth/auth.service.ts:16",{"_index":359,"title":{},"body":{"injectables/AuthService.html":{}}}],["src/auth/auth.service.ts:22",{"_index":361,"title":{},"body":{"injectables/AuthService.html":{}}}],["src/auth/auth.service.ts:54",{"_index":363,"title":{},"body":{"injectables/AuthService.html":{}}}],["src/common/common.module.ts",{"_index":436,"title":{},"body":{"modules/CommonModule.html":{}}}],["src/common/decorators/workspace",{"_index":1358,"title":{},"body":{"coverage.html":{},"miscellaneous/functions.html":{},"miscellaneous/variables.html":{}}}],["src/common/guards/auth.guard.ts",{"_index":244,"title":{},"body":{"guards/AuthGuard.html":{},"coverage.html":{}}}],["src/common/guards/auth.guard.ts:18",{"_index":249,"title":{},"body":{"guards/AuthGuard.html":{}}}],["src/common/guards/auth.guard.ts:23",{"_index":254,"title":{},"body":{"guards/AuthGuard.html":{}}}],["src/common/guards/workspace.guard.ts",{"_index":1147,"title":{},"body":{"guards/WorkspaceGuard.html":{},"coverage.html":{}}}],["src/common/guards/workspace.guard.ts:21",{"_index":1151,"title":{},"body":{"guards/WorkspaceGuard.html":{}}}],["src/common/guards/workspace.guard.ts:33",{"_index":1152,"title":{},"body":{"guards/WorkspaceGuard.html":{}}}],["src/graphql/graphql.ts",{"_index":6,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"modules/AppModule.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{},"coverage.html":{},"miscellaneous/enumerations.html":{},"miscellaneous/typealiases.html":{}}}],["src/graphql/graphql.ts:100",{"_index":835,"title":{},"body":{"classes/CreateWorkspaceInput.html":{}}}],["src/graphql/graphql.ts:104",{"_index":1131,"title":{},"body":{"classes/UpdateWorkspaceInput.html":{}}}],["src/graphql/graphql.ts:105",{"_index":1130,"title":{},"body":{"classes/UpdateWorkspaceInput.html":{}}}],["src/graphql/graphql.ts:106",{"_index":1129,"title":{},"body":{"classes/UpdateWorkspaceInput.html":{}}}],["src/graphql/graphql.ts:110",{"_index":20,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{}}}],["src/graphql/graphql.ts:111",{"_index":19,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{}}}],["src/graphql/graphql.ts:112",{"_index":17,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{}}}],["src/graphql/graphql.ts:116",{"_index":1124,"title":{},"body":{"classes/UpdateMemberRoleInput.html":{}}}],["src/graphql/graphql.ts:117",{"_index":1123,"title":{},"body":{"classes/UpdateMemberRoleInput.html":{}}}],["src/graphql/graphql.ts:118",{"_index":1122,"title":{},"body":{"classes/UpdateMemberRoleInput.html":{}}}],["src/graphql/graphql.ts:122",{"_index":407,"title":{},"body":{"classes/Board.html":{}}}],["src/graphql/graphql.ts:123",{"_index":411,"title":{},"body":{"classes/Board.html":{}}}],["src/graphql/graphql.ts:124",{"_index":409,"title":{},"body":{"classes/Board.html":{}}}],["src/graphql/graphql.ts:125",{"_index":408,"title":{},"body":{"classes/Board.html":{}}}],["src/graphql/graphql.ts:126",{"_index":410,"title":{},"body":{"classes/Board.html":{}}}],["src/graphql/graphql.ts:127",{"_index":412,"title":{},"body":{"classes/Board.html":{}}}],["src/graphql/graphql.ts:131",{"_index":970,"title":{},"body":{"classes/List.html":{}}}],["src/graphql/graphql.ts:132",{"_index":972,"title":{},"body":{"classes/List.html":{}}}],["src/graphql/graphql.ts:133",{"_index":971,"title":{},"body":{"classes/List.html":{}}}],["src/graphql/graphql.ts:134",{"_index":969,"title":{},"body":{"classes/List.html":{}}}],["src/graphql/graphql.ts:135",{"_index":967,"title":{},"body":{"classes/List.html":{}}}],["src/graphql/graphql.ts:136",{"_index":968,"title":{},"body":{"classes/List.html":{}}}],["src/graphql/graphql.ts:140",{"_index":414,"title":{},"body":{"classes/Card.html":{}}}],["src/graphql/graphql.ts:141",{"_index":422,"title":{},"body":{"classes/Card.html":{}}}],["src/graphql/graphql.ts:142",{"_index":416,"title":{},"body":{"classes/Card.html":{}}}],["src/graphql/graphql.ts:143",{"_index":421,"title":{},"body":{"classes/Card.html":{}}}],["src/graphql/graphql.ts:144",{"_index":419,"title":{},"body":{"classes/Card.html":{}}}],["src/graphql/graphql.ts:145",{"_index":418,"title":{},"body":{"classes/Card.html":{}}}],["src/graphql/graphql.ts:146",{"_index":417,"title":{},"body":{"classes/Card.html":{}}}],["src/graphql/graphql.ts:147",{"_index":415,"title":{},"body":{"classes/Card.html":{}}}],["src/graphql/graphql.ts:148",{"_index":413,"title":{},"body":{"classes/Card.html":{}}}],["src/graphql/graphql.ts:149",{"_index":420,"title":{},"body":{"classes/Card.html":{}}}],["src/graphql/graphql.ts:153",{"_index":428,"title":{},"body":{"classes/Comment.html":{}}}],["src/graphql/graphql.ts:154",{"_index":429,"title":{},"body":{"classes/Comment.html":{}}}],["src/graphql/graphql.ts:155",{"_index":430,"title":{},"body":{"classes/Comment.html":{}}}],["src/graphql/graphql.ts:156",{"_index":427,"title":{},"body":{"classes/Comment.html":{}}}],["src/graphql/graphql.ts:157",{"_index":431,"title":{},"body":{"classes/Comment.html":{}}}],["src/graphql/graphql.ts:161",{"_index":964,"title":{},"body":{"classes/Label.html":{}}}],["src/graphql/graphql.ts:162",{"_index":965,"title":{},"body":{"classes/Label.html":{}}}],["src/graphql/graphql.ts:163",{"_index":963,"title":{},"body":{"classes/Label.html":{}}}],["src/graphql/graphql.ts:164",{"_index":966,"title":{},"body":{"classes/Label.html":{}}}],["src/graphql/graphql.ts:168",{"_index":234,"title":{},"body":{"classes/Attachment.html":{}}}],["src/graphql/graphql.ts:169",{"_index":235,"title":{},"body":{"classes/Attachment.html":{}}}],["src/graphql/graphql.ts:170",{"_index":237,"title":{},"body":{"classes/Attachment.html":{}}}],["src/graphql/graphql.ts:171",{"_index":236,"title":{},"body":{"classes/Attachment.html":{}}}],["src/graphql/graphql.ts:175",{"_index":423,"title":{},"body":{"classes/CardLabel.html":{}}}],["src/graphql/graphql.ts:176",{"_index":424,"title":{},"body":{"classes/CardLabel.html":{}}}],["src/graphql/graphql.ts:18",{"_index":817,"title":{},"body":{"classes/CreateBoardInput.html":{}}}],["src/graphql/graphql.ts:180",{"_index":425,"title":{},"body":{"classes/CardMember.html":{}}}],["src/graphql/graphql.ts:181",{"_index":426,"title":{},"body":{"classes/CardMember.html":{}}}],["src/graphql/graphql.ts:185",{"_index":950,"title":{},"body":{"classes/IQuery.html":{}}}],["src/graphql/graphql.ts:187",{"_index":949,"title":{},"body":{"classes/IQuery.html":{}}}],["src/graphql/graphql.ts:189",{"_index":956,"title":{},"body":{"classes/IQuery.html":{}}}],["src/graphql/graphql.ts:19",{"_index":816,"title":{},"body":{"classes/CreateBoardInput.html":{}}}],["src/graphql/graphql.ts:191",{"_index":955,"title":{},"body":{"classes/IQuery.html":{}}}],["src/graphql/graphql.ts:193",{"_index":952,"title":{},"body":{"classes/IQuery.html":{}}}],["src/graphql/graphql.ts:195",{"_index":951,"title":{},"body":{"classes/IQuery.html":{}}}],["src/graphql/graphql.ts:197",{"_index":954,"title":{},"body":{"classes/IQuery.html":{}}}],["src/graphql/graphql.ts:199",{"_index":953,"title":{},"body":{"classes/IQuery.html":{}}}],["src/graphql/graphql.ts:20",{"_index":815,"title":{},"body":{"classes/CreateBoardInput.html":{}}}],["src/graphql/graphql.ts:201",{"_index":959,"title":{},"body":{"classes/IQuery.html":{}}}],["src/graphql/graphql.ts:203",{"_index":958,"title":{},"body":{"classes/IQuery.html":{}}}],["src/graphql/graphql.ts:205",{"_index":957,"title":{},"body":{"classes/IQuery.html":{}}}],["src/graphql/graphql.ts:207",{"_index":962,"title":{},"body":{"classes/IQuery.html":{}}}],["src/graphql/graphql.ts:209",{"_index":960,"title":{},"body":{"classes/IQuery.html":{}}}],["src/graphql/graphql.ts:21",{"_index":818,"title":{},"body":{"classes/CreateBoardInput.html":{}}}],["src/graphql/graphql.ts:211",{"_index":961,"title":{},"body":{"classes/IQuery.html":{}}}],["src/graphql/graphql.ts:215",{"_index":819,"title":{},"body":{"classes/CreateBoardPayload.html":{}}}],["src/graphql/graphql.ts:25",{"_index":1106,"title":{},"body":{"classes/UpdateBoardInput.html":{}}}],["src/graphql/graphql.ts:26",{"_index":1109,"title":{},"body":{"classes/UpdateBoardInput.html":{}}}],["src/graphql/graphql.ts:27",{"_index":1108,"title":{},"body":{"classes/UpdateBoardInput.html":{}}}],["src/graphql/graphql.ts:279",{"_index":991,"title":{},"body":{"classes/Success.html":{}}}],["src/graphql/graphql.ts:28",{"_index":1107,"title":{},"body":{"classes/UpdateBoardInput.html":{}}}],["src/graphql/graphql.ts:283",{"_index":839,"title":{},"body":{"classes/Error.html":{}}}],["src/graphql/graphql.ts:284",{"_index":838,"title":{},"body":{"classes/Error.html":{}}}],["src/graphql/graphql.ts:288",{"_index":841,"title":{},"body":{"classes/FileResponse.html":{}}}],["src/graphql/graphql.ts:289",{"_index":842,"title":{},"body":{"classes/FileResponse.html":{}}}],["src/graphql/graphql.ts:290",{"_index":840,"title":{},"body":{"classes/FileResponse.html":{}}}],["src/graphql/graphql.ts:294",{"_index":1135,"title":{},"body":{"classes/User.html":{}}}],["src/graphql/graphql.ts:295",{"_index":1136,"title":{},"body":{"classes/User.html":{}}}],["src/graphql/graphql.ts:296",{"_index":1133,"title":{},"body":{"classes/User.html":{}}}],["src/graphql/graphql.ts:297",{"_index":1134,"title":{},"body":{"classes/User.html":{}}}],["src/graphql/graphql.ts:298",{"_index":1132,"title":{},"body":{"classes/User.html":{}}}],["src/graphql/graphql.ts:302",{"_index":405,"title":{},"body":{"classes/AuthSuccess.html":{}}}],["src/graphql/graphql.ts:303",{"_index":406,"title":{},"body":{"classes/AuthSuccess.html":{}}}],["src/graphql/graphql.ts:307",{"_index":240,"title":{},"body":{"classes/AuthError.html":{}}}],["src/graphql/graphql.ts:308",{"_index":238,"title":{},"body":{"classes/AuthError.html":{}}}],["src/graphql/graphql.ts:309",{"_index":239,"title":{},"body":{"classes/AuthError.html":{}}}],["src/graphql/graphql.ts:313",{"_index":1146,"title":{},"body":{"classes/Workspace.html":{}}}],["src/graphql/graphql.ts:314",{"_index":1143,"title":{},"body":{"classes/Workspace.html":{}}}],["src/graphql/graphql.ts:315",{"_index":1138,"title":{},"body":{"classes/Workspace.html":{}}}],["src/graphql/graphql.ts:316",{"_index":1139,"title":{},"body":{"classes/Workspace.html":{}}}],["src/graphql/graphql.ts:317",{"_index":1145,"title":{},"body":{"classes/Workspace.html":{}}}],["src/graphql/graphql.ts:318",{"_index":1144,"title":{},"body":{"classes/Workspace.html":{}}}],["src/graphql/graphql.ts:319",{"_index":1142,"title":{},"body":{"classes/Workspace.html":{}}}],["src/graphql/graphql.ts:32",{"_index":831,"title":{},"body":{"classes/CreateListInput.html":{}}}],["src/graphql/graphql.ts:320",{"_index":1137,"title":{},"body":{"classes/Workspace.html":{}}}],["src/graphql/graphql.ts:321",{"_index":1141,"title":{},"body":{"classes/Workspace.html":{}}}],["src/graphql/graphql.ts:322",{"_index":1140,"title":{},"body":{"classes/Workspace.html":{}}}],["src/graphql/graphql.ts:326",{"_index":1183,"title":{},"body":{"classes/WorkspaceMembers.html":{}}}],["src/graphql/graphql.ts:327",{"_index":1181,"title":{},"body":{"classes/WorkspaceMembers.html":{}}}],["src/graphql/graphql.ts:328",{"_index":1179,"title":{},"body":{"classes/WorkspaceMembers.html":{}}}],["src/graphql/graphql.ts:329",{"_index":1180,"title":{},"body":{"classes/WorkspaceMembers.html":{}}}],["src/graphql/graphql.ts:33",{"_index":828,"title":{},"body":{"classes/CreateListInput.html":{}}}],["src/graphql/graphql.ts:330",{"_index":1182,"title":{},"body":{"classes/WorkspaceMembers.html":{}}}],["src/graphql/graphql.ts:334",{"_index":975,"title":{},"body":{"classes/PinWorkspacePayload.html":{}}}],["src/graphql/graphql.ts:34",{"_index":830,"title":{},"body":{"classes/CreateListInput.html":{}}}],["src/graphql/graphql.ts:35",{"_index":829,"title":{},"body":{"classes/CreateListInput.html":{}}}],["src/graphql/graphql.ts:39",{"_index":1119,"title":{},"body":{"classes/UpdateListInput.html":{}}}],["src/graphql/graphql.ts:40",{"_index":1121,"title":{},"body":{"classes/UpdateListInput.html":{}}}],["src/graphql/graphql.ts:41",{"_index":1120,"title":{},"body":{"classes/UpdateListInput.html":{}}}],["src/graphql/graphql.ts:42",{"_index":1118,"title":{},"body":{"classes/UpdateListInput.html":{}}}],["src/graphql/graphql.ts:46",{"_index":824,"title":{},"body":{"classes/CreateCardInput.html":{}}}],["src/graphql/graphql.ts:47",{"_index":822,"title":{},"body":{"classes/CreateCardInput.html":{}}}],["src/graphql/graphql.ts:48",{"_index":820,"title":{},"body":{"classes/CreateCardInput.html":{}}}],["src/graphql/graphql.ts:49",{"_index":823,"title":{},"body":{"classes/CreateCardInput.html":{}}}],["src/graphql/graphql.ts:50",{"_index":821,"title":{},"body":{"classes/CreateCardInput.html":{}}}],["src/graphql/graphql.ts:54",{"_index":1110,"title":{},"body":{"classes/UpdateCardInput.html":{}}}],["src/graphql/graphql.ts:55",{"_index":1114,"title":{},"body":{"classes/UpdateCardInput.html":{}}}],["src/graphql/graphql.ts:56",{"_index":1111,"title":{},"body":{"classes/UpdateCardInput.html":{}}}],["src/graphql/graphql.ts:57",{"_index":1113,"title":{},"body":{"classes/UpdateCardInput.html":{}}}],["src/graphql/graphql.ts:58",{"_index":1112,"title":{},"body":{"classes/UpdateCardInput.html":{}}}],["src/graphql/graphql.ts:62",{"_index":827,"title":{},"body":{"classes/CreateLabelInput.html":{}}}],["src/graphql/graphql.ts:63",{"_index":826,"title":{},"body":{"classes/CreateLabelInput.html":{}}}],["src/graphql/graphql.ts:64",{"_index":825,"title":{},"body":{"classes/CreateLabelInput.html":{}}}],["src/graphql/graphql.ts:68",{"_index":1116,"title":{},"body":{"classes/UpdateLabelInput.html":{}}}],["src/graphql/graphql.ts:69",{"_index":1117,"title":{},"body":{"classes/UpdateLabelInput.html":{}}}],["src/graphql/graphql.ts:70",{"_index":1115,"title":{},"body":{"classes/UpdateLabelInput.html":{}}}],["src/graphql/graphql.ts:74",{"_index":973,"title":{},"body":{"classes/LoginInput.html":{}}}],["src/graphql/graphql.ts:75",{"_index":974,"title":{},"body":{"classes/LoginInput.html":{}}}],["src/graphql/graphql.ts:79",{"_index":990,"title":{},"body":{"classes/RegisterInput.html":{}}}],["src/graphql/graphql.ts:80",{"_index":988,"title":{},"body":{"classes/RegisterInput.html":{}}}],["src/graphql/graphql.ts:81",{"_index":989,"title":{},"body":{"classes/RegisterInput.html":{}}}],["src/graphql/graphql.ts:85",{"_index":834,"title":{},"body":{"classes/CreateUserInput.html":{}}}],["src/graphql/graphql.ts:86",{"_index":832,"title":{},"body":{"classes/CreateUserInput.html":{}}}],["src/graphql/graphql.ts:87",{"_index":833,"title":{},"body":{"classes/CreateUserInput.html":{}}}],["src/graphql/graphql.ts:91",{"_index":1127,"title":{},"body":{"classes/UpdateUserInput.html":{}}}],["src/graphql/graphql.ts:92",{"_index":1128,"title":{},"body":{"classes/UpdateUserInput.html":{}}}],["src/graphql/graphql.ts:93",{"_index":1125,"title":{},"body":{"classes/UpdateUserInput.html":{}}}],["src/graphql/graphql.ts:94",{"_index":1126,"title":{},"body":{"classes/UpdateUserInput.html":{}}}],["src/graphql/graphql.ts:98",{"_index":837,"title":{},"body":{"classes/CreateWorkspaceInput.html":{}}}],["src/graphql/graphql.ts:99",{"_index":836,"title":{},"body":{"classes/CreateWorkspaceInput.html":{}}}],["src/graphql/schemas/*.graphql",{"_index":219,"title":{},"body":{"modules/AppModule.html":{}}}],["src/main.ts",{"_index":1367,"title":{},"body":{"coverage.html":{},"miscellaneous/functions.html":{}}}],["src/prisma/prisma.module",{"_index":439,"title":{},"body":{"modules/CommonModule.html":{}}}],["src/prisma/prisma.module.ts",{"_index":979,"title":{},"body":{"modules/PrismaModule.html":{}}}],["src/prisma/prisma.service.ts",{"_index":982,"title":{},"body":{"injectables/PrismaService.html":{},"coverage.html":{}}}],["src/prisma/prisma.service.ts:13",{"_index":986,"title":{},"body":{"injectables/PrismaService.html":{}}}],["src/workspace/workspace.module.ts",{"_index":1186,"title":{},"body":{"modules/WorkspaceModule.html":{}}}],["src/workspace/workspace.resolver.ts",{"_index":1190,"title":{},"body":{"classes/WorkspaceResolver.html":{},"coverage.html":{}}}],["src/workspace/workspace.resolver.ts:17",{"_index":1197,"title":{},"body":{"classes/WorkspaceResolver.html":{}}}],["src/workspace/workspace.resolver.ts:22",{"_index":1199,"title":{},"body":{"classes/WorkspaceResolver.html":{}}}],["src/workspace/workspace.resolver.ts:31",{"_index":1204,"title":{},"body":{"classes/WorkspaceResolver.html":{}}}],["src/workspace/workspace.resolver.ts:37",{"_index":1207,"title":{},"body":{"classes/WorkspaceResolver.html":{}}}],["src/workspace/workspace.resolver.ts:43",{"_index":1209,"title":{},"body":{"classes/WorkspaceResolver.html":{}}}],["src/workspace/workspace.resolver.ts:52",{"_index":1201,"title":{},"body":{"classes/WorkspaceResolver.html":{}}}],["src/workspace/workspace.service.ts",{"_index":1231,"title":{},"body":{"injectables/WorkspaceService.html":{},"coverage.html":{}}}],["src/workspace/workspace.service.ts:28",{"_index":1237,"title":{},"body":{"injectables/WorkspaceService.html":{}}}],["src/workspace/workspace.service.ts:45",{"_index":1249,"title":{},"body":{"injectables/WorkspaceService.html":{}}}],["src/workspace/workspace.service.ts:60",{"_index":1251,"title":{},"body":{"injectables/WorkspaceService.html":{}}}],["src/workspace/workspace.service.ts:66",{"_index":1252,"title":{},"body":{"injectables/WorkspaceService.html":{}}}],["src/workspace/workspace.service.ts:7",{"_index":1235,"title":{},"body":{"injectables/WorkspaceService.html":{}}}],["src/workspace/workspace.service.ts:77",{"_index":1247,"title":{},"body":{"injectables/WorkspaceService.html":{}}}],["start",{"_index":1414,"title":{},"body":{"index.html":{}}}],["start:dev",{"_index":1416,"title":{},"body":{"index.html":{}}}],["start:prodrun",{"_index":1417,"title":{},"body":{"index.html":{}}}],["starter",{"_index":1407,"title":{},"body":{"index.html":{}}}],["statements",{"_index":1347,"title":{},"body":{"coverage.html":{}}}],["static",{"_index":666,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["status",{"_index":99,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"interfaces/CompoDocConfig.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"interfaces/Session.html":{},"classes/Success.html":{},"interfaces/Template.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{},"coverage.html":{},"miscellaneous/typealiases.html":{}}}],["stay",{"_index":1485,"title":{},"body":{"index.html":{}}}],["steps",{"_index":1429,"title":{},"body":{"index.html":{}}}],["straightforward",{"_index":1445,"title":{},"body":{"index.html":{}}}],["string",{"_index":18,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"controllers/AppController.html":{},"injectables/AppService.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"injectables/AuthService.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"interfaces/CompoDocConfig.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"injectables/HbsRenderService.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"interfaces/Session.html":{},"classes/Success.html":{},"interfaces/Template.html":{},"injectables/TemplateEditorService.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{},"classes/WorkspaceResolver.html":{},"injectables/WorkspaceService.html":{},"injectables/ZipExportService.html":{},"miscellaneous/variables.html":{}}}],["strings",{"_index":1037,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["structure",{"_index":916,"title":{},"body":{"injectables/HbsRenderService.html":{},"injectables/ZipExportService.html":{}}}],["style",{"_index":527,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["styles",{"_index":536,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"injectables/HbsRenderService.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"injectables/ZipExportService.html":{}}}],["stylesheets",{"_index":1307,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["sub",{"_index":375,"title":{},"body":{"injectables/AuthService.html":{}}}],["success",{"_index":132,"title":{"classes/Success.html":{}},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"interfaces/CompoDocConfig.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"interfaces/Session.html":{},"classes/Success.html":{},"interfaces/Template.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{},"injectables/WorkspaceService.html":{},"coverage.html":{},"miscellaneous/typealiases.html":{}}}],["success:hover",{"_index":660,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["successful",{"_index":348,"title":{},"body":{"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{}}}],["successfully",{"_index":810,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["successmessage",{"_index":133,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["suggestontriggercharacters",{"_index":1042,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["support",{"_index":1465,"title":{},"body":{"index.html":{},"modules.html":{}}}],["sure",{"_index":761,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["surroundingpairs",{"_index":1088,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["svg",{"_index":1513,"title":{},"body":{"modules.html":{}}}],["switch",{"_index":871,"title":{},"body":{"injectables/HbsRenderService.html":{},"injectables/TemplateEditorService.html":{}}}],["syntax",{"_index":929,"title":{},"body":{"injectables/HbsRenderService.html":{},"injectables/ZipExportService.html":{}}}],["system",{"_index":546,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"injectables/ZipExportService.html":{}}}],["t",{"_index":150,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{},"miscellaneous/typealiases.html":{}}}],["t.id",{"_index":904,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["t\\r\\n",{"_index":1076,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["tab",{"_index":526,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"injectables/HbsRenderService.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["tabcompletion",{"_index":1044,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["tabid",{"_index":902,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["table",{"_index":1370,"title":{},"body":{"coverage.html":{}}}],["tablesort(document.getelementbyid('coverage",{"_index":1369,"title":{},"body":{"coverage.html":{}}}],["tag",{"_index":1075,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["take",{"_index":1430,"title":{},"body":{"index.html":{}}}],["taken",{"_index":385,"title":{},"body":{"injectables/AuthService.html":{}}}],["target",{"_index":400,"title":{},"body":{"injectables/AuthService.html":{}}}],["target.includes('email",{"_index":402,"title":{},"body":{"injectables/AuthService.html":{}}}],["target.includes('username",{"_index":403,"title":{},"body":{"injectables/AuthService.html":{}}}],["taskflow",{"_index":166,"title":{},"body":{"controllers/AppController.html":{},"modules/AppModule.html":{},"modules/AuthModule.html":{},"modules/CommonModule.html":{},"modules/PrismaModule.html":{},"modules/WorkspaceModule.html":{}}}],["template",{"_index":481,"title":{"interfaces/Template.html":{}},"body":{"interfaces/CompoDocConfig.html":{},"injectables/HbsRenderService.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"modules/TemplatePlaygroundModule.html":{},"injectables/ZipExportService.html":{},"coverage.html":{}}}],["template.name",{"_index":528,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["template.type",{"_index":529,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["templatecontent",{"_index":856,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["templateeditorservice",{"_index":480,"title":{"injectables/TemplateEditorService.html":{}},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"injectables/TemplateEditorService.html":{},"modules/TemplatePlaygroundModule.html":{},"coverage.html":{},"overview.html":{}}}],["templateplaygroundcomponent",{"_index":664,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"modules/TemplatePlaygroundModule.html":{},"coverage.html":{},"overview.html":{}}}],["templateplaygroundmodule",{"_index":1090,"title":{"modules/TemplatePlaygroundModule.html":{}},"body":{"modules/TemplatePlaygroundModule.html":{},"modules.html":{},"overview.html":{}}}],["templates",{"_index":504,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"injectables/HbsRenderService.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"injectables/ZipExportService.html":{}}}],["templates.zip",{"_index":1300,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["test",{"_index":1420,"title":{},"body":{"index.html":{}}}],["test:covdeployment",{"_index":1423,"title":{},"body":{"index.html":{}}}],["test:e2e",{"_index":1422,"title":{},"body":{"index.html":{}}}],["tests",{"_index":1418,"title":{},"body":{"index.html":{}}}],["text",{"_index":613,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["thanks",{"_index":1497,"title":{},"body":{"index.html":{}}}],["theme",{"_index":1020,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["then((content",{"_index":1298,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["this.$connect",{"_index":987,"title":{},"body":{"injectables/PrismaService.html":{}}}],["this.appservice.gethello",{"_index":175,"title":{},"body":{"controllers/AppController.html":{}}}],["this.authservice.loginuser(input",{"_index":336,"title":{},"body":{"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{}}}],["this.authservice.registeruser(input",{"_index":344,"title":{},"body":{"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{}}}],["this.config",{"_index":717,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["this.createsession",{"_index":687,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["this.downloadblob(content",{"_index":1299,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["this.editor",{"_index":1017,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["this.editor.dispose",{"_index":1089,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["this.editor.ondidchangemodelcontent",{"_index":1047,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["this.editor.setmodel(model",{"_index":1055,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["this.editorservice.initializeeditor(this.editorcontainer.nativeelement",{"_index":720,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["this.editorservice.seteditorcontent(response.content",{"_index":730,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["this.editorservice.setonchangecallback((content",{"_index":726,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["this.findworkspace(workspaceid",{"_index":1272,"title":{},"body":{"injectables/WorkspaceService.html":{}}}],["this.generatereadme",{"_index":1294,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["this.getlanguagefromfiletype(filetype",{"_index":1052,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["this.handlebarsinstance",{"_index":861,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["this.handlebarsinstance.compile(templatecontent",{"_index":912,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["this.handlebarsinstance.registerhelper('compare",{"_index":869,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["this.handlebarsinstance.registerhelper('each",{"_index":879,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["this.handlebarsinstance.registerhelper('isinitialtab",{"_index":906,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["this.handlebarsinstance.registerhelper('istabenabled",{"_index":900,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["this.handlebarsinstance.registerhelper('orlength",{"_index":895,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["this.handlebarsinstance.registerhelper('relativeurl",{"_index":882,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["this.handlebarsinstance.registerhelper('unless",{"_index":876,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["this.http.get(`/api/session/${this.sessionid}/config`).topromise",{"_index":716,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["this.http.get(`/api/session/${this.sessionid}/template/${template.path}`).topromise",{"_index":729,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["this.http.get(`/api/session/${this.sessionid}/templates`).topromise",{"_index":707,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["this.http.post('/api/session/create",{"_index":698,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["this.http.post(`/api/session/${this.sessionid}/config",{"_index":746,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["this.http.post(`/api/session/${this.sessionid}/download",{"_index":783,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["this.http.post(`/api/session/${this.sessionid}/template/${this.selectedfile.path",{"_index":744,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["this.initializeeditor",{"_index":690,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["this.initializehandlebars",{"_index":859,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["this.jwtservice.sign",{"_index":374,"title":{},"body":{"injectables/AuthService.html":{}}}],["this.lastsaved",{"_index":741,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["this.loadsessionconfig",{"_index":689,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["this.loadsessiontemplates",{"_index":688,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["this.onchangecallback",{"_index":1048,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["this.onchangecallback(this.editor.getvalue",{"_index":1049,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["this.previewframe.nativeelement.src",{"_index":756,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["this.previewframe?.nativeelement",{"_index":755,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["this.prisma.user.create",{"_index":391,"title":{},"body":{"injectables/AuthService.html":{}}}],["this.prisma.user.findunique",{"_index":269,"title":{},"body":{"guards/AuthGuard.html":{},"injectables/AuthService.html":{}}}],["this.prisma.user.finduniqueorthrow",{"_index":366,"title":{},"body":{"injectables/AuthService.html":{}}}],["this.prisma.workspace.create",{"_index":1261,"title":{},"body":{"injectables/WorkspaceService.html":{}}}],["this.prisma.workspace.delete",{"_index":1274,"title":{},"body":{"injectables/WorkspaceService.html":{}}}],["this.prisma.workspace.findmany",{"_index":1266,"title":{},"body":{"injectables/WorkspaceService.html":{}}}],["this.prisma.workspace.finduniqueorthrow",{"_index":1269,"title":{},"body":{"injectables/WorkspaceService.html":{}}}],["this.prisma.workspace.update",{"_index":1270,"title":{},"body":{"injectables/WorkspaceService.html":{}}}],["this.prisma.workspacemembers.findunique",{"_index":1173,"title":{},"body":{"guards/WorkspaceGuard.html":{}}}],["this.reflector.getallandoverride(roles_key",{"_index":1162,"title":{},"body":{"guards/WorkspaceGuard.html":{}}}],["this.registerhandlebarslanguage",{"_index":1051,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["this.registerhelpers",{"_index":866,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["this.rolehierarchy[membership.role",{"_index":1176,"title":{},"body":{"guards/WorkspaceGuard.html":{}}}],["this.rolehierarchy[requiredrole",{"_index":1178,"title":{},"body":{"guards/WorkspaceGuard.html":{}}}],["this.save_delay",{"_index":742,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["this.savetemplate(content",{"_index":740,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["this.savetimeout",{"_index":694,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["this.saving",{"_index":737,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["this.scheduleautosave(content",{"_index":727,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["this.selectedfile",{"_index":713,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["this.selectfile(this.templates[0",{"_index":714,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["this.sessionid",{"_index":680,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["this.sessionid}.zip",{"_index":794,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["this.showconfigpanel",{"_index":753,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["this.templates",{"_index":708,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["this.templates.length",{"_index":712,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["this.workspaceservice.createworkspace(context.user.user_id",{"_index":1217,"title":{},"body":{"classes/WorkspaceResolver.html":{}}}],["this.workspaceservice.delete",{"_index":1229,"title":{},"body":{"classes/WorkspaceResolver.html":{}}}],["this.workspaceservice.findalluserworkspaces(context.user.user_id",{"_index":1220,"title":{},"body":{"classes/WorkspaceResolver.html":{}}}],["this.workspaceservice.findworkspace(workspace_id",{"_index":1224,"title":{},"body":{"classes/WorkspaceResolver.html":{}}}],["this.workspaceservice.updateworkspace(workspace_id",{"_index":1228,"title":{},"body":{"classes/WorkspaceResolver.html":{}}}],["throw",{"_index":263,"title":{},"body":{"guards/AuthGuard.html":{},"injectables/AuthService.html":{},"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"guards/WorkspaceGuard.html":{},"injectables/WorkspaceService.html":{}}}],["throws",{"_index":1253,"title":{},"body":{"injectables/WorkspaceService.html":{}}}],["time",{"_index":1478,"title":{},"body":{"index.html":{}}}],["timeout",{"_index":736,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["tips",{"_index":1325,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["title",{"_index":27,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"injectables/HbsRenderService.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["todo",{"_index":766,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["toggle",{"_index":511,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["toggleconfigpanel",{"_index":752,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["token",{"_index":142,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"injectables/AuthService.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"injectables/TemplateEditorService.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["tokenizer",{"_index":1067,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["top",{"_index":601,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["topromise",{"_index":699,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["touch",{"_index":1504,"title":{},"body":{"index.html":{}}}],["trackbyname(index",{"_index":812,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["transform",{"_index":614,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["transition",{"_index":584,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["translation",{"_index":885,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["translations",{"_index":887,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["translations[key",{"_index":893,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["transparent",{"_index":648,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["tree",{"_index":525,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["trigger",{"_index":799,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["true",{"_index":221,"title":{},"body":{"modules/AppModule.html":{},"guards/AuthGuard.html":{},"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"injectables/TemplateEditorService.html":{},"guards/WorkspaceGuard.html":{},"injectables/WorkspaceService.html":{}}}],["try",{"_index":346,"title":{},"body":{"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"injectables/AuthService.html":{},"interfaces/CompoDocConfig.html":{},"injectables/HbsRenderService.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["ts",{"_index":1060,"title":{},"body":{"injectables/TemplateEditorService.html":{},"dependencies.html":{}}}],["tsconfig.json",{"_index":1320,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["twitter",{"_index":1510,"title":{},"body":{"index.html":{}}}],["type",{"_index":13,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"guards/AuthGuard.html":{},"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"injectables/AuthService.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"interfaces/CompoDocConfig.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"injectables/HbsRenderService.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"interfaces/Session.html":{},"classes/Success.html":{},"interfaces/Template.html":{},"injectables/TemplateEditorService.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"guards/WorkspaceGuard.html":{},"classes/WorkspaceMembers.html":{},"classes/WorkspaceResolver.html":{},"injectables/WorkspaceService.html":{},"injectables/ZipExportService.html":{},"coverage.html":{},"miscellaneous/functions.html":{},"miscellaneous/typealiases.html":{},"miscellaneous/variables.html":{}}}],["typealiases",{"_index":1521,"title":{"miscellaneous/typealiases.html":{}},"body":{}}],["typepaths",{"_index":217,"title":{},"body":{"modules/AppModule.html":{}}}],["typescript",{"_index":1061,"title":{},"body":{"injectables/TemplateEditorService.html":{},"injectables/WorkspaceService.html":{},"index.html":{}}}],["ui",{"_index":549,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["undefined",{"_index":1271,"title":{},"body":{"injectables/WorkspaceService.html":{}}}],["undone",{"_index":765,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["union",{"_index":317,"title":{},"body":{"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{}}}],["unit",{"_index":1419,"title":{},"body":{"index.html":{}}}],["unknown",{"_index":308,"title":{},"body":{"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"injectables/AuthService.html":{},"injectables/TemplateEditorService.html":{},"classes/WorkspaceResolver.html":{},"injectables/WorkspaceService.html":{}}}],["unless",{"_index":875,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["unlicensed",{"_index":1520,"title":{},"body":{"properties.html":{}}}],["unpinworkspace(workspace_id",{"_index":128,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["up",{"_index":722,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"injectables/TemplateEditorService.html":{}}}],["updateboard(input",{"_index":97,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["updateboardinput",{"_index":30,"title":{"classes/UpdateBoardInput.html":{}},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{},"coverage.html":{}}}],["updatecard(input",{"_index":106,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["updatecardinput",{"_index":39,"title":{"classes/UpdateCardInput.html":{}},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{},"coverage.html":{}}}],["updateconfig",{"_index":745,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["updated",{"_index":747,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["updatelabel(input",{"_index":110,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["updatelabelinput",{"_index":43,"title":{"classes/UpdateLabelInput.html":{}},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{},"coverage.html":{}}}],["updatelist(input",{"_index":101,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["updatelistinput",{"_index":35,"title":{"classes/UpdateListInput.html":{}},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{},"coverage.html":{}}}],["updatememberrole(input",{"_index":131,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["updatememberroleinput",{"_index":55,"title":{"classes/UpdateMemberRoleInput.html":{}},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{},"coverage.html":{}}}],["updates",{"_index":1487,"title":{},"body":{"index.html":{}}}],["updateuser(input",{"_index":116,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["updateuserinput",{"_index":51,"title":{"classes/UpdateUserInput.html":{}},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{},"coverage.html":{}}}],["updateworkspace",{"_index":1195,"title":{},"body":{"classes/WorkspaceResolver.html":{},"injectables/WorkspaceService.html":{}}}],["updateworkspace(workspace_id",{"_index":123,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{},"classes/WorkspaceResolver.html":{},"injectables/WorkspaceService.html":{}}}],["updateworkspaceinput",{"_index":54,"title":{"classes/UpdateWorkspaceInput.html":{}},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{},"classes/WorkspaceResolver.html":{},"injectables/WorkspaceService.html":{},"coverage.html":{}}}],["updating",{"_index":751,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["upload",{"_index":113,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{},"coverage.html":{},"miscellaneous/typealiases.html":{}}}],["uploadfile(file",{"_index":112,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["uppercase",{"_index":615,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["url",{"_index":73,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"interfaces/CompoDocConfig.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"injectables/HbsRenderService.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"interfaces/Session.html":{},"classes/Success.html":{},"interfaces/Template.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{},"injectables/ZipExportService.html":{}}}],["url.createobjecturl(zipblob",{"_index":800,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["url.revokeobjecturl(url",{"_index":807,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["usage",{"_index":1312,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["use",{"_index":381,"title":{},"body":{"injectables/AuthService.html":{},"injectables/ZipExportService.html":{}}}],["used",{"_index":865,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["useguards",{"_index":1211,"title":{},"body":{"classes/WorkspaceResolver.html":{}}}],["useguards(authguard",{"_index":1216,"title":{},"body":{"classes/WorkspaceResolver.html":{}}}],["user",{"_index":139,"title":{"classes/User.html":{}},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"guards/AuthGuard.html":{},"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"injectables/AuthService.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"guards/WorkspaceGuard.html":{},"classes/WorkspaceMembers.html":{},"injectables/WorkspaceService.html":{},"coverage.html":{}}}],["user(user_id",{"_index":89,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["user.email",{"_index":376,"title":{},"body":{"injectables/AuthService.html":{}}}],["user.hashed_password",{"_index":371,"title":{},"body":{"injectables/AuthService.html":{}}}],["user.user_id",{"_index":270,"title":{},"body":{"guards/AuthGuard.html":{},"injectables/AuthService.html":{},"guards/WorkspaceGuard.html":{}}}],["user_email",{"_index":11,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["user_id",{"_index":52,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"guards/AuthGuard.html":{},"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"guards/WorkspaceGuard.html":{},"classes/WorkspaceMembers.html":{},"injectables/WorkspaceService.html":{}}}],["userid",{"_index":1246,"title":{},"body":{"injectables/WorkspaceService.html":{}}}],["userlevel",{"_index":1175,"title":{},"body":{"guards/WorkspaceGuard.html":{}}}],["username",{"_index":49,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{},"injectables/AuthService.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["username_taken",{"_index":386,"title":{},"body":{"injectables/AuthService.html":{}}}],["users",{"_index":88,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["using",{"_index":1479,"title":{},"body":{"index.html":{}}}],["validation",{"_index":1260,"title":{},"body":{"injectables/WorkspaceService.html":{}}}],["value",{"_index":354,"title":{},"body":{"classes/AuthResultResolver.html":{},"injectables/HbsRenderService.html":{},"injectables/TemplateEditorService.html":{},"miscellaneous/enumerations.html":{},"miscellaneous/functions.html":{},"miscellaneous/variables.html":{}}}],["value.__typename",{"_index":331,"title":{},"body":{"classes/AuthResolver.html":{},"classes/AuthResultResolver.html":{}}}],["value.length",{"_index":898,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["values",{"_index":763,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"injectables/HbsRenderService.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["variable",{"_index":1349,"title":{},"body":{"coverage.html":{}}}],["variables",{"_index":1523,"title":{"miscellaneous/variables.html":{}},"body":{"miscellaneous/variables.html":{}}}],["verify",{"_index":1169,"title":{},"body":{"guards/WorkspaceGuard.html":{}}}],["version",{"_index":1518,"title":{},"body":{"properties.html":{}}}],["vertical",{"_index":1033,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["video",{"_index":1472,"title":{},"body":{"index.html":{}}}],["viewchild",{"_index":474,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["viewchild('editorcontainer",{"_index":665,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["viewchild('previewframe",{"_index":668,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["viewer",{"_index":25,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{},"miscellaneous/enumerations.html":{}}}],["visible",{"_index":938,"title":{},"body":{"injectables/HbsRenderService.html":{},"injectables/TemplateEditorService.html":{}}}],["visit",{"_index":1339,"title":{},"body":{"injectables/ZipExportService.html":{},"index.html":{}}}],["visualize",{"_index":1475,"title":{},"body":{"index.html":{}}}],["void",{"_index":733,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"injectables/HbsRenderService.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"injectables/TemplateEditorService.html":{},"injectables/ZipExportService.html":{}}}],["vs",{"_index":1021,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["w",{"_index":1081,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["w+)(\\s*=\\s",{"_index":1077,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["want",{"_index":762,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["watch",{"_index":1415,"title":{},"body":{"index.html":{}}}],["website",{"_index":1508,"title":{},"body":{"index.html":{}}}],["weight",{"_index":577,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["whether",{"_index":937,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["white",{"_index":630,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"injectables/TemplateEditorService.html":{}}}],["width",{"_index":605,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["window.settimeout(async",{"_index":739,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["window.url.createobjecturl(blob",{"_index":1343,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["window.url.revokeobjecturl(url",{"_index":1345,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["wordbasedsuggestions",{"_index":1045,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["wordwrap",{"_index":1028,"title":{},"body":{"injectables/TemplateEditorService.html":{}}}],["working",{"_index":1462,"title":{},"body":{"index.html":{}}}],["workspace",{"_index":122,"title":{"classes/Workspace.html":{}},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"guards/WorkspaceGuard.html":{},"classes/WorkspaceMembers.html":{},"injectables/WorkspaceService.html":{},"coverage.html":{}}}],["workspace(workspace_id",{"_index":91,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["workspace.module",{"_index":1187,"title":{},"body":{"modules/WorkspaceModule.html":{}}}],["workspace.owner_id",{"_index":1273,"title":{},"body":{"injectables/WorkspaceService.html":{}}}],["workspace.resolver",{"_index":1189,"title":{},"body":{"modules/WorkspaceModule.html":{}}}],["workspace.service",{"_index":1188,"title":{},"body":{"modules/WorkspaceModule.html":{},"classes/WorkspaceResolver.html":{}}}],["workspace/workspace.module",{"_index":214,"title":{},"body":{"modules/AppModule.html":{}}}],["workspace/workspace.resolver",{"_index":209,"title":{},"body":{"modules/AppModule.html":{}}}],["workspace/workspace.service",{"_index":211,"title":{},"body":{"modules/AppModule.html":{}}}],["workspace_id",{"_index":12,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"guards/WorkspaceGuard.html":{},"classes/WorkspaceMembers.html":{},"classes/WorkspaceResolver.html":{},"injectables/WorkspaceService.html":{}}}],["workspace_id_user_id",{"_index":1174,"title":{},"body":{"guards/WorkspaceGuard.html":{}}}],["workspaceauth",{"_index":1213,"title":{},"body":{"classes/WorkspaceResolver.html":{},"coverage.html":{},"miscellaneous/functions.html":{}}}],["workspaceauth(role",{"_index":1398,"title":{},"body":{"miscellaneous/functions.html":{}}}],["workspaceauth(role.admin",{"_index":1226,"title":{},"body":{"classes/WorkspaceResolver.html":{}}}],["workspaceauth(role.viewer",{"_index":1222,"title":{},"body":{"classes/WorkspaceResolver.html":{}}}],["workspaceguard",{"_index":435,"title":{"guards/WorkspaceGuard.html":{}},"body":{"modules/CommonModule.html":{},"guards/WorkspaceGuard.html":{},"coverage.html":{},"overview.html":{}}}],["workspaceid",{"_index":1166,"title":{},"body":{"guards/WorkspaceGuard.html":{},"injectables/WorkspaceService.html":{}}}],["workspacemembers",{"_index":93,"title":{"classes/WorkspaceMembers.html":{}},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{},"coverage.html":{}}}],["workspacemembers(workspace_id",{"_index":92,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["workspacemodule",{"_index":191,"title":{"modules/WorkspaceModule.html":{}},"body":{"modules/AppModule.html":{},"modules/WorkspaceModule.html":{},"modules.html":{},"overview.html":{}}}],["workspaceresolver",{"_index":208,"title":{"classes/WorkspaceResolver.html":{}},"body":{"modules/AppModule.html":{},"modules/WorkspaceModule.html":{},"classes/WorkspaceResolver.html":{},"coverage.html":{}}}],["workspaces",{"_index":90,"title":{},"body":{"classes/AddWorkspaceMemberInput.html":{},"classes/Attachment.html":{},"classes/AuthError.html":{},"classes/AuthSuccess.html":{},"classes/Board.html":{},"classes/Card.html":{},"classes/CardLabel.html":{},"classes/CardMember.html":{},"classes/Comment.html":{},"classes/CreateBoardInput.html":{},"classes/CreateBoardPayload.html":{},"classes/CreateCardInput.html":{},"classes/CreateLabelInput.html":{},"classes/CreateListInput.html":{},"classes/CreateUserInput.html":{},"classes/CreateWorkspaceInput.html":{},"classes/Error.html":{},"classes/FileResponse.html":{},"classes/IQuery.html":{},"classes/Label.html":{},"classes/List.html":{},"classes/LoginInput.html":{},"classes/PinWorkspacePayload.html":{},"classes/RegisterInput.html":{},"classes/Success.html":{},"classes/UpdateBoardInput.html":{},"classes/UpdateCardInput.html":{},"classes/UpdateLabelInput.html":{},"classes/UpdateListInput.html":{},"classes/UpdateMemberRoleInput.html":{},"classes/UpdateUserInput.html":{},"classes/UpdateWorkspaceInput.html":{},"classes/User.html":{},"classes/Workspace.html":{},"classes/WorkspaceMembers.html":{}}}],["workspaceservice",{"_index":210,"title":{"injectables/WorkspaceService.html":{}},"body":{"modules/AppModule.html":{},"modules/WorkspaceModule.html":{},"classes/WorkspaceResolver.html":{},"injectables/WorkspaceService.html":{},"coverage.html":{},"overview.html":{}}}],["world",{"_index":233,"title":{},"body":{"injectables/AppService.html":{}}}],["wrap",{"_index":914,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["wrapper",{"_index":919,"title":{},"body":{"injectables/HbsRenderService.html":{}}}],["x",{"_index":1489,"title":{},"body":{"index.html":{}}}],["y",{"_index":608,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["you'd",{"_index":1501,"title":{},"body":{"index.html":{}}}],["you're",{"_index":1424,"title":{},"body":{"index.html":{}}}],["zip",{"_index":484,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"modules/TemplatePlaygroundModule.html":{},"injectables/ZipExportService.html":{}}}],["zip.file('readme.md",{"_index":1295,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["zip.file(file.path",{"_index":1290,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["zip.generateasync",{"_index":1297,"title":{},"body":{"injectables/ZipExportService.html":{}}}],["zipblob",{"_index":788,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["zipexportservice",{"_index":483,"title":{"injectables/ZipExportService.html":{}},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{},"modules/TemplatePlaygroundModule.html":{},"injectables/ZipExportService.html":{},"coverage.html":{},"overview.html":{}}}],["zipservice",{"_index":684,"title":{},"body":{"interfaces/CompoDocConfig.html":{},"interfaces/Session.html":{},"interfaces/Template.html":{}}}],["zoom",{"_index":192,"title":{},"body":{"modules/AppModule.html":{},"modules/AuthModule.html":{},"modules/CommonModule.html":{},"modules/PrismaModule.html":{},"modules/TemplatePlaygroundModule.html":{},"modules/WorkspaceModule.html":{},"overview.html":{}}}]],"pipeline":["stemmer"]}, + "store": {"classes/AddWorkspaceMemberInput.html":{"url":"classes/AddWorkspaceMemberInput.html","title":"class - AddWorkspaceMemberInput","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n AddWorkspaceMemberInput\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/graphql/graphql.ts\n \n\n\n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Optional\n role\n \n \n user_email\n \n \n workspace_id\n \n \n \n \n\n\n\n\n\n\n \n \n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n Optional\n role\n \n \n \n \n \n \n Type : Nullable\n\n \n \n \n \n Defined in src/graphql/graphql.ts:112\n \n \n\n\n \n \n \n \n \n \n \n \n user_email\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:111\n \n \n\n\n \n \n \n \n \n \n \n \n workspace_id\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:110\n \n \n\n\n \n \n\n\n\n\n\n\n\n\n \n\n\n \n export enum Role {\n Admin = \"Admin\",\n Member = \"Member\",\n Viewer = \"Viewer\"\n}\n\nexport class CreateBoardInput {\n title: string;\n description?: Nullable;\n color: string;\n workspace_id: string;\n}\n\nexport class UpdateBoardInput {\n board_id: string;\n title?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateListInput {\n title: string;\n board_id: string;\n position: number;\n color?: Nullable;\n}\n\nexport class UpdateListInput {\n list_id: string;\n title?: Nullable;\n position?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateCardInput {\n title: string;\n list_id: string;\n description?: Nullable;\n position: number;\n due_date?: Nullable;\n}\n\nexport class UpdateCardInput {\n card_id: string;\n title?: Nullable;\n description?: Nullable;\n position?: Nullable;\n due_date?: Nullable;\n}\n\nexport class CreateLabelInput {\n name: string;\n color: string;\n board_id: string;\n}\n\nexport class UpdateLabelInput {\n label_id: string;\n name?: Nullable;\n color?: Nullable;\n}\n\nexport class LoginInput {\n email: string;\n password: string;\n}\n\nexport class RegisterInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class CreateUserInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class UpdateUserInput {\n user_id: string;\n username?: Nullable;\n email?: Nullable;\n password?: Nullable;\n}\n\nexport class CreateWorkspaceInput {\n name: string;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class UpdateWorkspaceInput {\n name?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class AddWorkspaceMemberInput {\n workspace_id: string;\n user_email: string;\n role?: Nullable;\n}\n\nexport class UpdateMemberRoleInput {\n workspace_id: string;\n user_id: string;\n role: Role;\n}\n\nexport class Board {\n board_id: string;\n title: string;\n description?: Nullable;\n color: string;\n lists: List[];\n workspace_id: string;\n}\n\nexport class List {\n list_id: string;\n title: string;\n position: number;\n color: string;\n board_id: string;\n cards?: Nullable[]>;\n}\n\nexport class Card {\n card_id: string;\n title: string;\n description?: Nullable;\n position: number;\n list_id: string;\n labels?: Nullable[]>;\n due_date?: Nullable;\n comments?: Nullable[]>;\n attachments?: Nullable[]>;\n members?: Nullable[]>;\n}\n\nexport class Comment {\n comment_id: string;\n content: string;\n created_at: DateTime;\n card_id: string;\n user_id: string;\n}\n\nexport class Label {\n label_id: string;\n name: string;\n color: string;\n workspace_id: string;\n}\n\nexport class Attachment {\n attachment_id: string;\n card_id: string;\n url: string;\n filename: string;\n}\n\nexport class CardLabel {\n card_id: string;\n label_id: string;\n}\n\nexport class CardMember {\n card_id: string;\n user_id: string;\n}\n\nexport abstract class IQuery {\n abstract boards(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract board(board_id: string): Nullable | Promise>;\n\n abstract lists(board_id: string): Nullable[]> | Promise[]>>;\n\n abstract list(list_id: string): Nullable | Promise>;\n\n abstract cards(list_id: string): Nullable[]> | Promise[]>>;\n\n abstract card(card_id: string): Nullable | Promise>;\n\n abstract labels(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract comments(card_id: string): Nullable[]> | Promise[]>>;\n\n abstract users(): Nullable[]> | Promise[]>>;\n\n abstract user(user_id: string): Nullable | Promise>;\n\n abstract me(): Nullable | Promise>;\n\n abstract workspaces(): Nullable[]> | Promise[]>>;\n\n abstract workspace(workspace_id: string): Nullable | Promise>;\n\n abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise;\n}\n\nexport class CreateBoardPayload {\n board?: Nullable;\n}\n\nexport abstract class IMutation {\n abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise;\n\n abstract updateBoard(input: UpdateBoardInput): Board | Promise;\n\n abstract deleteBoard(board_id: string): Status | Promise;\n\n abstract createList(input: CreateListInput): List | Promise;\n\n abstract updateList(input: UpdateListInput): List | Promise;\n\n abstract deleteList(list_id: string): Status | Promise;\n\n abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise;\n\n abstract createCard(input: CreateCardInput): Card | Promise;\n\n abstract updateCard(input: UpdateCardInput): Card | Promise;\n\n abstract deleteCard(card_id: string): Status | Promise;\n\n abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise;\n\n abstract createLabel(input: CreateLabelInput): Label | Promise;\n\n abstract updateLabel(input: UpdateLabelInput): Label | Promise;\n\n abstract deleteLabel(label_id: string): Status | Promise;\n\n abstract uploadFile(file: Upload): FileResponse | Promise;\n\n abstract createUser(input: CreateUserInput): Nullable | Promise>;\n\n abstract updateUser(input: UpdateUserInput): Nullable | Promise>;\n\n abstract deleteUser(user_id: string): Nullable | Promise>;\n\n abstract login(input: LoginInput): Nullable | Promise>;\n\n abstract register(input: RegisterInput): Nullable | Promise>;\n\n abstract logout(): Status | Promise;\n\n abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise;\n\n abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise;\n\n abstract deleteWorkspace(workspace_id: string): Status | Promise;\n\n abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise;\n\n abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise;\n\n abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise;\n}\n\nexport class Success {\n successMessage?: Nullable;\n}\n\nexport class Error {\n errorMessage: string;\n code?: Nullable;\n}\n\nexport class FileResponse {\n success: boolean;\n url?: Nullable;\n message?: Nullable;\n}\n\nexport class User {\n user_id: string;\n username: string;\n email: string;\n picture?: Nullable;\n created_at: DateTime;\n}\n\nexport class AuthSuccess {\n token: string;\n user: User;\n}\n\nexport class AuthError {\n message: string;\n code?: Nullable;\n field?: Nullable;\n}\n\nexport class Workspace {\n workspace_id: string;\n name: string;\n color: string;\n description?: Nullable;\n owner_id: string;\n owner: User;\n members: WorkspaceMembers[];\n boards?: Nullable[]>;\n labels?: Nullable[]>;\n is_pinned: boolean;\n}\n\nexport class WorkspaceMembers {\n workspace_id: string;\n user_id: string;\n role: string;\n user: User;\n workspace: Workspace;\n}\n\nexport class PinWorkspacePayload {\n workspace: Workspace;\n}\n\nexport type DateTime = any;\nexport type Upload = any;\nexport type Status = Success | Error;\nexport type AuthResult = AuthSuccess | AuthError;\ntype Nullable = T | null;\n\n \n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"controllers/AppController.html":{"url":"controllers/AppController.html","title":"controller - AppController","body":"\n \n\n\n\n\n\n\n\n\n\n\n Controllers\n AppController\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/app.controller.ts\n \n\n\n\n\n\n\n \n Index\n \n \n\n \n \n Methods\n \n \n \n \n \n \n \n getHello\n \n \n \n \n\n\n\n\n\n \n \n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n \n getHello\n \n \n \n \n \n \n \n getHello()\n \n \n\n \n \n Decorators : \n \n @Get()\n \n \n\n \n \n Defined in src/app.controller.ts:16\n \n \n\n\n \n \n\n \n Returns : string\n\n \n \n \n \n \n \n\n\n \n /*\n** EPITECH PROJECT, 2025\n** TaskFlow\n** File description:\n** app.controller\n*/\n\nimport { Controller, Get } from '@nestjs/common';\nimport { AppService } from './app.service';\n\n@Controller()\nexport class AppController {\n constructor(private readonly appService: AppService) {}\n\n @Get()\n getHello(): string {\n return this.appService.getHello();\n }\n}\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"modules/AppModule.html":{"url":"modules/AppModule.html","title":"module - AppModule","body":"\n \n\n\n\n\n\n\n\n\n Modules\n AppModule\n\n\n\n \n \n\n\n\n\n\ndependencies\n\nLegend\n\n  Declarations\n\n  Module\n\n  Bootstrap\n\n  Providers\n\n  Exports\n\ncluster_AppModule\n\n\n\ncluster_AppModule_providers\n\n\n\ncluster_AppModule_imports\n\n\n\n\nAuthModule\n\nAuthModule\n\n\n\nAppModule\n\nAppModule\n\nAppModule -->\n\nAuthModule->AppModule\n\n\n\n\n\nCommonModule\n\nCommonModule\n\nAppModule -->\n\nCommonModule->AppModule\n\n\n\n\n\nPrismaModule\n\nPrismaModule\n\nAppModule -->\n\nPrismaModule->AppModule\n\n\n\n\n\nWorkspaceModule\n\nWorkspaceModule\n\nAppModule -->\n\nWorkspaceModule->AppModule\n\n\n\n\n\nAppService\n\nAppService\n\nAppModule -->\n\nAppService->AppModule\n\n\n\n\n\n\n \n \n \n Zoom in\n Reset\n Zoom out\n \n\n\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n\n \n File\n \n \n src/app.module.ts\n \n\n\n\n\n\n \n \n \n Providers\n \n \n AppService\n \n \n \n \n Controllers\n \n \n AppController\n \n \n \n \n Imports\n \n \n AuthModule\n \n \n CommonModule\n \n \n PrismaModule\n \n \n WorkspaceModule\n \n \n \n \n \n\n\n \n\n\n \n /*\n ** EPITECH PROJECT, 2025\n ** TaskFlow\n ** File description:\n ** app.module\n */\n\nimport { Module } from '@nestjs/common';\nimport { AppController } from './app.controller';\nimport { AppService } from './app.service';\nimport { PrismaService } from './prisma/prisma.service';\nimport { AuthModule } from './auth/auth.module';\nimport { MercuriusDriver, MercuriusDriverConfig } from '@nestjs/mercurius';\nimport { GraphQLModule } from '@nestjs/graphql';\nimport { CommonModule } from './common/common.module';\nimport { PrismaModule } from './prisma/prisma.module';\nimport { WorkspaceResolver } from './workspace/workspace.resolver';\nimport { WorkspaceService } from './workspace/workspace.service';\nimport { join } from 'path';\nimport { WorkspaceModule } from './workspace/workspace.module';\n\n@Module({\n imports: [\n GraphQLModule.forRoot({\n driver: MercuriusDriver,\n typePaths: [join(process.cwd(), 'src/graphql/schemas/*.graphql')],\n graphiql: true,\n context: (request, reply) => ({ req: request, reply }),\n definitions: {\n path: join(process.cwd(), 'src/graphql/graphql.ts'),\n outputAs: 'class',\n },\n }),\n AuthModule,\n CommonModule,\n PrismaModule,\n WorkspaceModule,\n ],\n controllers: [AppController],\n providers: [AppService],\n})\nexport class AppModule {}\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"injectables/AppService.html":{"url":"injectables/AppService.html","title":"injectable - AppService","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n Injectables\n AppService\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/app.service.ts\n \n\n\n\n\n\n \n Index\n \n \n\n \n \n Methods\n \n \n \n \n \n \n getHello\n \n \n \n \n\n\n\n\n\n \n \n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n getHello\n \n \n \n \n \n \ngetHello()\n \n \n\n\n \n \n Defined in src/app.service.ts:12\n \n \n\n\n \n \n\n \n Returns : string\n\n \n \n \n \n \n\n\n \n\n\n \n import { Injectable } from '@nestjs/common';\n\n@Injectable()\nexport class AppService {\n getHello(): string {\n return 'Hello World!';\n }\n}\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/Attachment.html":{"url":"classes/Attachment.html","title":"class - Attachment","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n Attachment\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/graphql/graphql.ts\n \n\n\n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n attachment_id\n \n \n card_id\n \n \n filename\n \n \n url\n \n \n \n \n\n\n\n\n\n\n \n \n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n attachment_id\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:168\n \n \n\n\n \n \n \n \n \n \n \n \n card_id\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:169\n \n \n\n\n \n \n \n \n \n \n \n \n filename\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:171\n \n \n\n\n \n \n \n \n \n \n \n \n url\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:170\n \n \n\n\n \n \n\n\n\n\n\n\n\n\n \n\n\n \n export enum Role {\n Admin = \"Admin\",\n Member = \"Member\",\n Viewer = \"Viewer\"\n}\n\nexport class CreateBoardInput {\n title: string;\n description?: Nullable;\n color: string;\n workspace_id: string;\n}\n\nexport class UpdateBoardInput {\n board_id: string;\n title?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateListInput {\n title: string;\n board_id: string;\n position: number;\n color?: Nullable;\n}\n\nexport class UpdateListInput {\n list_id: string;\n title?: Nullable;\n position?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateCardInput {\n title: string;\n list_id: string;\n description?: Nullable;\n position: number;\n due_date?: Nullable;\n}\n\nexport class UpdateCardInput {\n card_id: string;\n title?: Nullable;\n description?: Nullable;\n position?: Nullable;\n due_date?: Nullable;\n}\n\nexport class CreateLabelInput {\n name: string;\n color: string;\n board_id: string;\n}\n\nexport class UpdateLabelInput {\n label_id: string;\n name?: Nullable;\n color?: Nullable;\n}\n\nexport class LoginInput {\n email: string;\n password: string;\n}\n\nexport class RegisterInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class CreateUserInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class UpdateUserInput {\n user_id: string;\n username?: Nullable;\n email?: Nullable;\n password?: Nullable;\n}\n\nexport class CreateWorkspaceInput {\n name: string;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class UpdateWorkspaceInput {\n name?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class AddWorkspaceMemberInput {\n workspace_id: string;\n user_email: string;\n role?: Nullable;\n}\n\nexport class UpdateMemberRoleInput {\n workspace_id: string;\n user_id: string;\n role: Role;\n}\n\nexport class Board {\n board_id: string;\n title: string;\n description?: Nullable;\n color: string;\n lists: List[];\n workspace_id: string;\n}\n\nexport class List {\n list_id: string;\n title: string;\n position: number;\n color: string;\n board_id: string;\n cards?: Nullable[]>;\n}\n\nexport class Card {\n card_id: string;\n title: string;\n description?: Nullable;\n position: number;\n list_id: string;\n labels?: Nullable[]>;\n due_date?: Nullable;\n comments?: Nullable[]>;\n attachments?: Nullable[]>;\n members?: Nullable[]>;\n}\n\nexport class Comment {\n comment_id: string;\n content: string;\n created_at: DateTime;\n card_id: string;\n user_id: string;\n}\n\nexport class Label {\n label_id: string;\n name: string;\n color: string;\n workspace_id: string;\n}\n\nexport class Attachment {\n attachment_id: string;\n card_id: string;\n url: string;\n filename: string;\n}\n\nexport class CardLabel {\n card_id: string;\n label_id: string;\n}\n\nexport class CardMember {\n card_id: string;\n user_id: string;\n}\n\nexport abstract class IQuery {\n abstract boards(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract board(board_id: string): Nullable | Promise>;\n\n abstract lists(board_id: string): Nullable[]> | Promise[]>>;\n\n abstract list(list_id: string): Nullable | Promise>;\n\n abstract cards(list_id: string): Nullable[]> | Promise[]>>;\n\n abstract card(card_id: string): Nullable | Promise>;\n\n abstract labels(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract comments(card_id: string): Nullable[]> | Promise[]>>;\n\n abstract users(): Nullable[]> | Promise[]>>;\n\n abstract user(user_id: string): Nullable | Promise>;\n\n abstract me(): Nullable | Promise>;\n\n abstract workspaces(): Nullable[]> | Promise[]>>;\n\n abstract workspace(workspace_id: string): Nullable | Promise>;\n\n abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise;\n}\n\nexport class CreateBoardPayload {\n board?: Nullable;\n}\n\nexport abstract class IMutation {\n abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise;\n\n abstract updateBoard(input: UpdateBoardInput): Board | Promise;\n\n abstract deleteBoard(board_id: string): Status | Promise;\n\n abstract createList(input: CreateListInput): List | Promise;\n\n abstract updateList(input: UpdateListInput): List | Promise;\n\n abstract deleteList(list_id: string): Status | Promise;\n\n abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise;\n\n abstract createCard(input: CreateCardInput): Card | Promise;\n\n abstract updateCard(input: UpdateCardInput): Card | Promise;\n\n abstract deleteCard(card_id: string): Status | Promise;\n\n abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise;\n\n abstract createLabel(input: CreateLabelInput): Label | Promise;\n\n abstract updateLabel(input: UpdateLabelInput): Label | Promise;\n\n abstract deleteLabel(label_id: string): Status | Promise;\n\n abstract uploadFile(file: Upload): FileResponse | Promise;\n\n abstract createUser(input: CreateUserInput): Nullable | Promise>;\n\n abstract updateUser(input: UpdateUserInput): Nullable | Promise>;\n\n abstract deleteUser(user_id: string): Nullable | Promise>;\n\n abstract login(input: LoginInput): Nullable | Promise>;\n\n abstract register(input: RegisterInput): Nullable | Promise>;\n\n abstract logout(): Status | Promise;\n\n abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise;\n\n abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise;\n\n abstract deleteWorkspace(workspace_id: string): Status | Promise;\n\n abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise;\n\n abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise;\n\n abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise;\n}\n\nexport class Success {\n successMessage?: Nullable;\n}\n\nexport class Error {\n errorMessage: string;\n code?: Nullable;\n}\n\nexport class FileResponse {\n success: boolean;\n url?: Nullable;\n message?: Nullable;\n}\n\nexport class User {\n user_id: string;\n username: string;\n email: string;\n picture?: Nullable;\n created_at: DateTime;\n}\n\nexport class AuthSuccess {\n token: string;\n user: User;\n}\n\nexport class AuthError {\n message: string;\n code?: Nullable;\n field?: Nullable;\n}\n\nexport class Workspace {\n workspace_id: string;\n name: string;\n color: string;\n description?: Nullable;\n owner_id: string;\n owner: User;\n members: WorkspaceMembers[];\n boards?: Nullable[]>;\n labels?: Nullable[]>;\n is_pinned: boolean;\n}\n\nexport class WorkspaceMembers {\n workspace_id: string;\n user_id: string;\n role: string;\n user: User;\n workspace: Workspace;\n}\n\nexport class PinWorkspacePayload {\n workspace: Workspace;\n}\n\nexport type DateTime = any;\nexport type Upload = any;\nexport type Status = Success | Error;\nexport type AuthResult = AuthSuccess | AuthError;\ntype Nullable = T | null;\n\n \n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/AuthError.html":{"url":"classes/AuthError.html","title":"class - AuthError","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n AuthError\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/graphql/graphql.ts\n \n\n\n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Optional\n code\n \n \n Optional\n field\n \n \n message\n \n \n \n \n\n\n\n\n\n\n \n \n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n Optional\n code\n \n \n \n \n \n \n Type : Nullable\n\n \n \n \n \n Defined in src/graphql/graphql.ts:308\n \n \n\n\n \n \n \n \n \n \n \n \n Optional\n field\n \n \n \n \n \n \n Type : Nullable\n\n \n \n \n \n Defined in src/graphql/graphql.ts:309\n \n \n\n\n \n \n \n \n \n \n \n \n message\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:307\n \n \n\n\n \n \n\n\n\n\n\n\n\n\n \n\n\n \n export enum Role {\n Admin = \"Admin\",\n Member = \"Member\",\n Viewer = \"Viewer\"\n}\n\nexport class CreateBoardInput {\n title: string;\n description?: Nullable;\n color: string;\n workspace_id: string;\n}\n\nexport class UpdateBoardInput {\n board_id: string;\n title?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateListInput {\n title: string;\n board_id: string;\n position: number;\n color?: Nullable;\n}\n\nexport class UpdateListInput {\n list_id: string;\n title?: Nullable;\n position?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateCardInput {\n title: string;\n list_id: string;\n description?: Nullable;\n position: number;\n due_date?: Nullable;\n}\n\nexport class UpdateCardInput {\n card_id: string;\n title?: Nullable;\n description?: Nullable;\n position?: Nullable;\n due_date?: Nullable;\n}\n\nexport class CreateLabelInput {\n name: string;\n color: string;\n board_id: string;\n}\n\nexport class UpdateLabelInput {\n label_id: string;\n name?: Nullable;\n color?: Nullable;\n}\n\nexport class LoginInput {\n email: string;\n password: string;\n}\n\nexport class RegisterInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class CreateUserInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class UpdateUserInput {\n user_id: string;\n username?: Nullable;\n email?: Nullable;\n password?: Nullable;\n}\n\nexport class CreateWorkspaceInput {\n name: string;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class UpdateWorkspaceInput {\n name?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class AddWorkspaceMemberInput {\n workspace_id: string;\n user_email: string;\n role?: Nullable;\n}\n\nexport class UpdateMemberRoleInput {\n workspace_id: string;\n user_id: string;\n role: Role;\n}\n\nexport class Board {\n board_id: string;\n title: string;\n description?: Nullable;\n color: string;\n lists: List[];\n workspace_id: string;\n}\n\nexport class List {\n list_id: string;\n title: string;\n position: number;\n color: string;\n board_id: string;\n cards?: Nullable[]>;\n}\n\nexport class Card {\n card_id: string;\n title: string;\n description?: Nullable;\n position: number;\n list_id: string;\n labels?: Nullable[]>;\n due_date?: Nullable;\n comments?: Nullable[]>;\n attachments?: Nullable[]>;\n members?: Nullable[]>;\n}\n\nexport class Comment {\n comment_id: string;\n content: string;\n created_at: DateTime;\n card_id: string;\n user_id: string;\n}\n\nexport class Label {\n label_id: string;\n name: string;\n color: string;\n workspace_id: string;\n}\n\nexport class Attachment {\n attachment_id: string;\n card_id: string;\n url: string;\n filename: string;\n}\n\nexport class CardLabel {\n card_id: string;\n label_id: string;\n}\n\nexport class CardMember {\n card_id: string;\n user_id: string;\n}\n\nexport abstract class IQuery {\n abstract boards(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract board(board_id: string): Nullable | Promise>;\n\n abstract lists(board_id: string): Nullable[]> | Promise[]>>;\n\n abstract list(list_id: string): Nullable | Promise>;\n\n abstract cards(list_id: string): Nullable[]> | Promise[]>>;\n\n abstract card(card_id: string): Nullable | Promise>;\n\n abstract labels(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract comments(card_id: string): Nullable[]> | Promise[]>>;\n\n abstract users(): Nullable[]> | Promise[]>>;\n\n abstract user(user_id: string): Nullable | Promise>;\n\n abstract me(): Nullable | Promise>;\n\n abstract workspaces(): Nullable[]> | Promise[]>>;\n\n abstract workspace(workspace_id: string): Nullable | Promise>;\n\n abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise;\n}\n\nexport class CreateBoardPayload {\n board?: Nullable;\n}\n\nexport abstract class IMutation {\n abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise;\n\n abstract updateBoard(input: UpdateBoardInput): Board | Promise;\n\n abstract deleteBoard(board_id: string): Status | Promise;\n\n abstract createList(input: CreateListInput): List | Promise;\n\n abstract updateList(input: UpdateListInput): List | Promise;\n\n abstract deleteList(list_id: string): Status | Promise;\n\n abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise;\n\n abstract createCard(input: CreateCardInput): Card | Promise;\n\n abstract updateCard(input: UpdateCardInput): Card | Promise;\n\n abstract deleteCard(card_id: string): Status | Promise;\n\n abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise;\n\n abstract createLabel(input: CreateLabelInput): Label | Promise;\n\n abstract updateLabel(input: UpdateLabelInput): Label | Promise;\n\n abstract deleteLabel(label_id: string): Status | Promise;\n\n abstract uploadFile(file: Upload): FileResponse | Promise;\n\n abstract createUser(input: CreateUserInput): Nullable | Promise>;\n\n abstract updateUser(input: UpdateUserInput): Nullable | Promise>;\n\n abstract deleteUser(user_id: string): Nullable | Promise>;\n\n abstract login(input: LoginInput): Nullable | Promise>;\n\n abstract register(input: RegisterInput): Nullable | Promise>;\n\n abstract logout(): Status | Promise;\n\n abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise;\n\n abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise;\n\n abstract deleteWorkspace(workspace_id: string): Status | Promise;\n\n abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise;\n\n abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise;\n\n abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise;\n}\n\nexport class Success {\n successMessage?: Nullable;\n}\n\nexport class Error {\n errorMessage: string;\n code?: Nullable;\n}\n\nexport class FileResponse {\n success: boolean;\n url?: Nullable;\n message?: Nullable;\n}\n\nexport class User {\n user_id: string;\n username: string;\n email: string;\n picture?: Nullable;\n created_at: DateTime;\n}\n\nexport class AuthSuccess {\n token: string;\n user: User;\n}\n\nexport class AuthError {\n message: string;\n code?: Nullable;\n field?: Nullable;\n}\n\nexport class Workspace {\n workspace_id: string;\n name: string;\n color: string;\n description?: Nullable;\n owner_id: string;\n owner: User;\n members: WorkspaceMembers[];\n boards?: Nullable[]>;\n labels?: Nullable[]>;\n is_pinned: boolean;\n}\n\nexport class WorkspaceMembers {\n workspace_id: string;\n user_id: string;\n role: string;\n user: User;\n workspace: Workspace;\n}\n\nexport class PinWorkspacePayload {\n workspace: Workspace;\n}\n\nexport type DateTime = any;\nexport type Upload = any;\nexport type Status = Success | Error;\nexport type AuthResult = AuthSuccess | AuthError;\ntype Nullable = T | null;\n\n \n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"guards/AuthGuard.html":{"url":"guards/AuthGuard.html","title":"guard - AuthGuard","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Guards\n AuthGuard\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/common/guards/auth.guard.ts\n \n\n\n\n\n\n\n \n Index\n \n \n\n \n \n Methods\n \n \n \n \n \n \n Async\n canActivate\n \n \n \n \n\n\n\n\n\n \n \n\n\n \n Constructor\n \n \n \n \nconstructor(prisma: PrismaService)\n \n \n \n \n Defined in src/common/guards/auth.guard.ts:18\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n prisma\n \n \n PrismaService\n \n \n \n No\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n Async\n canActivate\n \n \n \n \n \n \n \n canActivate(context: ExecutionContext)\n \n \n\n\n \n \n Defined in src/common/guards/auth.guard.ts:23\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n context\n \n ExecutionContext\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : Promise\n\n \n \n \n \n \n \n \n \n\n \n\n\n \n import {\n CanActivate,\n ExecutionContext,\n Injectable,\n ForbiddenException,\n} from '@nestjs/common';\nimport { PrismaService } from '../../prisma/prisma.service';\nimport { GqlExecutionContext } from '@nestjs/graphql';\n\n@Injectable()\nexport class AuthGuard implements CanActivate {\n constructor(\n private prisma: PrismaService,\n ) {}\n\n async canActivate(context: ExecutionContext): Promise {\n const ctx = GqlExecutionContext.create(context);\n const { user } = ctx.getContext();\n\n if (!user) {\n throw new ForbiddenException('Authentication required');\n }\n\n const existingUser = await this.prisma.user.findUnique({\n where: { user_id: user.user_id },\n });\n\n if (!existingUser) {\n throw new ForbiddenException('User does not exist');\n }\n\n return true;\n }\n}\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"modules/AuthModule.html":{"url":"modules/AuthModule.html","title":"module - AuthModule","body":"\n \n\n\n\n\n\n\n\n\n Modules\n AuthModule\n\n\n\n \n \n\n\n\n\n\ndependencies\n\nLegend\n\n  Declarations\n\n  Module\n\n  Bootstrap\n\n  Providers\n\n  Exports\n\ncluster_AuthModule\n\n\n\ncluster_AuthModule_providers\n\n\n\n\nAuthService\n\nAuthService\n\n\n\nAuthModule\n\nAuthModule\n\nAuthModule -->\n\nAuthService->AuthModule\n\n\n\n\n\nPrismaService\n\nPrismaService\n\nAuthModule -->\n\nPrismaService->AuthModule\n\n\n\n\n\n\n \n \n \n Zoom in\n Reset\n Zoom out\n \n\n\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n\n \n File\n \n \n src/auth/auth.module.ts\n \n\n\n\n\n\n \n \n \n Providers\n \n \n AuthService\n \n \n PrismaService\n \n \n \n \n \n\n\n \n\n\n \n /*\n** EPITECH PROJECT, 2025\n** TaskFlow\n** File description:\n** auth.module\n*/\n\nimport { Module } from '@nestjs/common';\nimport { AuthService } from './auth.service';\nimport { JwtModule } from '@nestjs/jwt';\nimport { AuthResolver } from './auth.resolver';\nimport { PrismaService } from '../prisma/prisma.service';\nimport { AuthResultResolver } from './auth.resolver';\n\n@Module({\n imports: [\n JwtModule.register({\n secret: process.env.JWT_SECRET,\n signOptions: { expiresIn: '7d' },\n }),\n ],\n providers: [AuthService, PrismaService, AuthResolver, AuthResultResolver],\n})\nexport class AuthModule {}\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/AuthResolver.html":{"url":"classes/AuthResolver.html","title":"class - AuthResolver","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n AuthResolver\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/auth/auth.resolver.ts\n \n\n\n\n\n\n\n \n Index\n \n \n\n \n \n Methods\n \n \n \n \n \n \n \n Async\n login\n \n \n \n Async\n logout\n \n \n \n Async\n register\n \n \n \n \n\n\n\n\n\n \n \n\n\n \n Constructor\n \n \n \n \nconstructor(authService: AuthService)\n \n \n \n \n Defined in src/auth/auth.resolver.ts:28\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n authService\n \n \n AuthService\n \n \n \n No\n \n \n \n \n \n \n \n \n \n \n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n \n Async\n login\n \n \n \n \n \n \n \n login(input: LoginInput, context: literal type)\n \n \n\n \n \n Decorators : \n \n @Mutation()\n \n \n\n \n \n Defined in src/auth/auth.resolver.ts:63\n \n \n\n\n \n \n User authentication.\n\nReturns an AuthResult containing the token on success.\n@param input Email and Password\n\nExample :mutation Login($input: LoginInput!) {\nlogin(input: $input) {\n __typename\n # Success case\n ... on AuthSuccess {\n token\n user {\n username\n email\n }\n # Error case\n ... on AuthError {\n message\n code\n }\n}Example :{\n \"input\": {\n```html\n \"password\": \"secretPassword\"\n }\n}\n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n Description\n \n \n \n \n input\n \n LoginInput\n \n\n \n No\n \n\n\n \n Email and Password\nExample :mutation Login($input: LoginInput!) {\nlogin(input: $input) {\n__typename\n# Success case\n... on AuthSuccess {\ntoken\nuser {\nusername\nemail\n}\n# Error case\n... on AuthError {\nmessage\ncode\n}\n}Example :{\n\"input\": {\n\"email\": \"john@example.com\",\n\"password\": \"secretPassword\"\n}\n}\n \n \n \n context\n \n literal type\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : unknown\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Async\n logout\n \n \n \n \n \n \n \n logout(context: literal type)\n \n \n\n \n \n Decorators : \n \n @Mutation()\n \n \n\n \n \n Defined in src/auth/auth.resolver.ts:142\n \n \n\n\n \n \n Logout mutation.\nThis mutation clears the session cookie.\n\n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n context\n \n literal type\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : unknown\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Async\n register\n \n \n \n \n \n \n \n register(input: RegisterInput, context: literal type)\n \n \n\n \n \n Decorators : \n \n @Mutation('register')\n \n \n\n \n \n Defined in src/auth/auth.resolver.ts:120\n \n \n\n\n \n \n Mutation for user registration.\n\nThis mutation returns an Union (AuthResult): either a success with the token, or a detailed error.\n\nExample :mutation Register($input: RegisterInput!) {\n register(input: $input) {\n __typename\n # Success case\n ... on AuthSuccess {\n token\n user {\n user_id\n username\n email\n }\n }\n # Error case\n ... on AuthError {\n message\n code\n field\n }\n }\n}Example :{\n \"input\": {\n \"username\": \"John\",\n \"email\": \"john@test.com\",\n \"password\": \"secretPassword\"\n }\n}\n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n Description\n \n \n \n \n input\n \n RegisterInput\n \n\n \n No\n \n\n\n \n The registration data (username, email, password)\n\n \n \n \n context\n \n literal type\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : unknown\n\n \n \n An AuthResult which can be either AuthSuccess or AuthError\nExample :mutation Register($input: RegisterInput!) {\nregister(input: $input) {\n__typename\n# Success case\n... on AuthSuccess {\ntoken\nuser {\n user_id\n username\n email\n}\n}\n# Error case\n... on AuthError {\n message\n code\n field\n}\n}\n}Example :{\n\"input\": {\n\"username\": \"John\",\n\"email\": \"john@test.com\",\n\"password\": \"secretPassword\"\n}\n}\n \n \n \n \n \n\n\n\n\n\n\n \n\n\n \n import {\n Resolver,\n Mutation,\n Args,\n Context,\n ResolveField,\n} from '@nestjs/graphql';\nimport { AuthService } from './auth.service';\nimport { FastifyReply } from 'fastify';\nimport { RegisterInput, LoginInput } from '../graphql/graphql';\n\n@Resolver('AuthResult')\nexport class AuthResultResolver {\n @ResolveField()\n __resolveType(value) {\n return value.__typename;\n }\n}\n\n@Resolver()\nexport class AuthResolver {\n constructor(private authService: AuthService) {}\n\n /**\n * User authentication.\n * * Returns an `AuthResult` containing the token on success.\n * * @param input Email and Password\n * ```graphql\n * mutation Login($input: LoginInput!) {\n * login(input: $input) {\n * __typename\n * # Success case\n * ... on AuthSuccess {\n * token\n * user {\n * username\n * email\n * }\n * # Error case\n * ... on AuthError {\n * message\n * code\n * }\n * }\n * ```\n * ```json\n * {\n * \"input\": {\n * \"email\": \"john@example.com\",\n * \"password\": \"secretPassword\"\n * }\n * }\n * ```\n */\n @Mutation()\n async login(\n @Args('input')\n input: LoginInput,\n @Context() context: { reply: FastifyReply },\n ) {\n const result = await this.authService.loginUser(input);\n\n if (result.__typename === 'AuthSuccess' && result.token) {\n context.reply.setCookie('session', result.token, {\n httpOnly: true,\n secure: process.env.NODE_ENV === 'production',\n path: '/',\n });\n }\n return result;\n }\n\n /**\n * Mutation for user registration.\n * * This mutation returns an Union (`AuthResult`): either a success with the token, or a detailed error.\n *\n * @param input The registration data (username, email, password)\n * @returns An `AuthResult` which can be either `AuthSuccess` or `AuthError`\n *\n * ```graphql\n * mutation Register($input: RegisterInput!) {\n * register(input: $input) {\n * __typename\n * # Success case\n * ... on AuthSuccess {\n * token\n * user {\n * user_id\n * username\n * email\n * }\n * }\n * # Error case\n * ... on AuthError {\n * message\n * code\n * field\n * }\n * }\n * }\n * ```\n * ```json\n * {\n * \"input\": {\n * \"username\": \"John\",\n * \"email\": \"john@test.com\",\n * \"password\": \"secretPassword\"\n * }\n * }\n * ```\n */\n @Mutation('register')\n async register(\n @Args('input')\n input: RegisterInput,\n @Context() context: { reply: FastifyReply },\n ) {\n const result = await this.authService.registerUser(input);\n\n if (result.__typename === 'AuthSuccess' && result.token) {\n context.reply.setCookie('session', result.token, {\n httpOnly: true,\n secure: process.env.NODE_ENV === 'production',\n path: '/',\n });\n }\n return result;\n }\n\n /**\n * Logout mutation.\n * This mutation clears the session cookie.\n */\n @Mutation()\n async logout(@Context() context: { reply: FastifyReply }) {\n try {\n context.reply.clearCookie('session', { path: '/' });\n return {\n __typename: 'Success',\n successMessage: 'Logout successful',\n };\n } catch (error) {\n return {\n __typename: 'Error',\n errorMessage: 'Logout failed',\n code: 'LOGOUT_FAILED',\n };\n }\n }\n}\n\n \n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/AuthResultResolver.html":{"url":"classes/AuthResultResolver.html","title":"class - AuthResultResolver","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n AuthResultResolver\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/auth/auth.resolver.ts\n \n\n\n\n\n\n\n \n Index\n \n \n\n \n \n Methods\n \n \n \n \n \n \n \n __resolveType\n \n \n \n \n\n\n\n\n\n \n \n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n \n __resolveType\n \n \n \n \n \n \n \n __resolveType(value: unknown)\n \n \n\n \n \n Decorators : \n \n @ResolveField()\n \n \n\n \n \n Defined in src/auth/auth.resolver.ts:22\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n value\n \n unknown\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : any\n\n \n \n \n \n \n \n \n \n\n\n\n\n\n\n \n\n\n \n import {\n Resolver,\n Mutation,\n Args,\n Context,\n ResolveField,\n} from '@nestjs/graphql';\nimport { AuthService } from './auth.service';\nimport { FastifyReply } from 'fastify';\nimport { RegisterInput, LoginInput } from '../graphql/graphql';\n\n@Resolver('AuthResult')\nexport class AuthResultResolver {\n @ResolveField()\n __resolveType(value) {\n return value.__typename;\n }\n}\n\n@Resolver()\nexport class AuthResolver {\n constructor(private authService: AuthService) {}\n\n /**\n * User authentication.\n * * Returns an `AuthResult` containing the token on success.\n * * @param input Email and Password\n * ```graphql\n * mutation Login($input: LoginInput!) {\n * login(input: $input) {\n * __typename\n * # Success case\n * ... on AuthSuccess {\n * token\n * user {\n * username\n * email\n * }\n * # Error case\n * ... on AuthError {\n * message\n * code\n * }\n * }\n * ```\n * ```json\n * {\n * \"input\": {\n * \"email\": \"john@example.com\",\n * \"password\": \"secretPassword\"\n * }\n * }\n * ```\n */\n @Mutation()\n async login(\n @Args('input')\n input: LoginInput,\n @Context() context: { reply: FastifyReply },\n ) {\n const result = await this.authService.loginUser(input);\n\n if (result.__typename === 'AuthSuccess' && result.token) {\n context.reply.setCookie('session', result.token, {\n httpOnly: true,\n secure: process.env.NODE_ENV === 'production',\n path: '/',\n });\n }\n return result;\n }\n\n /**\n * Mutation for user registration.\n * * This mutation returns an Union (`AuthResult`): either a success with the token, or a detailed error.\n *\n * @param input The registration data (username, email, password)\n * @returns An `AuthResult` which can be either `AuthSuccess` or `AuthError`\n *\n * ```graphql\n * mutation Register($input: RegisterInput!) {\n * register(input: $input) {\n * __typename\n * # Success case\n * ... on AuthSuccess {\n * token\n * user {\n * user_id\n * username\n * email\n * }\n * }\n * # Error case\n * ... on AuthError {\n * message\n * code\n * field\n * }\n * }\n * }\n * ```\n * ```json\n * {\n * \"input\": {\n * \"username\": \"John\",\n * \"email\": \"john@test.com\",\n * \"password\": \"secretPassword\"\n * }\n * }\n * ```\n */\n @Mutation('register')\n async register(\n @Args('input')\n input: RegisterInput,\n @Context() context: { reply: FastifyReply },\n ) {\n const result = await this.authService.registerUser(input);\n\n if (result.__typename === 'AuthSuccess' && result.token) {\n context.reply.setCookie('session', result.token, {\n httpOnly: true,\n secure: process.env.NODE_ENV === 'production',\n path: '/',\n });\n }\n return result;\n }\n\n /**\n * Logout mutation.\n * This mutation clears the session cookie.\n */\n @Mutation()\n async logout(@Context() context: { reply: FastifyReply }) {\n try {\n context.reply.clearCookie('session', { path: '/' });\n return {\n __typename: 'Success',\n successMessage: 'Logout successful',\n };\n } catch (error) {\n return {\n __typename: 'Error',\n errorMessage: 'Logout failed',\n code: 'LOGOUT_FAILED',\n };\n }\n }\n}\n\n \n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"injectables/AuthService.html":{"url":"injectables/AuthService.html","title":"injectable - AuthService","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n Injectables\n AuthService\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/auth/auth.service.ts\n \n\n\n\n\n\n \n Index\n \n \n\n \n \n Methods\n \n \n \n \n \n \n Async\n loginUser\n \n \n Async\n registerUser\n \n \n \n \n\n\n\n\n\n \n \n\n\n \n Constructor\n \n \n \n \nconstructor(prisma: PrismaService, jwtService: JwtService)\n \n \n \n \n Defined in src/auth/auth.service.ts:16\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n prisma\n \n \n PrismaService\n \n \n \n No\n \n \n \n \n jwtService\n \n \n JwtService\n \n \n \n No\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n Async\n loginUser\n \n \n \n \n \n \n \n loginUser(input: LoginInput)\n \n \n\n\n \n \n Defined in src/auth/auth.service.ts:22\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n input\n \n LoginInput\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : unknown\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Async\n registerUser\n \n \n \n \n \n \n \n registerUser(input: RegisterInput)\n \n \n\n\n \n \n Defined in src/auth/auth.service.ts:54\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n input\n \n RegisterInput\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : unknown\n\n \n \n \n \n \n \n \n \n\n\n \n\n\n \n import { Injectable } from '@nestjs/common';\nimport { PrismaService } from '../prisma/prisma.service';\nimport * as bcrypt from 'bcrypt';\nimport { JwtService } from '@nestjs/jwt';\nimport { RegisterInput, LoginInput } from '../graphql/graphql';\nimport { Prisma } from '@prisma/client';\n\n@Injectable()\nexport class AuthService {\n constructor(\n private prisma: PrismaService,\n private jwtService: JwtService,\n ) {}\n\n async loginUser(input: LoginInput) {\n try {\n const user = await this.prisma.user.findUniqueOrThrow({\n where: { email: input.email },\n });\n\n const isPasswordValid = await bcrypt.compare(\n input.password,\n user.hashed_password,\n );\n if (!isPasswordValid) {\n throw new Error('Invalid credentials');\n }\n\n const token = this.jwtService.sign({\n sub: user.user_id,\n email: user.email,\n });\n return {\n __typename: 'AuthSuccess',\n user,\n token\n };\n } catch (error) {\n return {\n __typename: 'AuthError',\n message: 'Invalid credentials',\n code: 'INVALID_CREDENTIALS',\n };\n }\n }\n\n async registerUser(input: RegisterInput) {\n const existingEmail = await this.prisma.user.findUnique({\n where: { email: input.email },\n });\n if (existingEmail) {\n return {\n __typename: 'AuthError',\n message: 'Email already in use',\n code: 'EMAIL_TAKEN',\n field: 'email',\n };\n }\n\n const existingUsername = await this.prisma.user.findUnique({\n where: { username: input.username },\n });\n if (existingUsername) {\n return {\n __typename: 'AuthError',\n message: 'Username already taken',\n code: 'USERNAME_TAKEN',\n field: 'username',\n };\n }\n\n try {\n const hashedPassword = await bcrypt.hash(input.password, 10);\n\n const newUser = await this.prisma.user.create({\n data: {\n username: input.username,\n email: input.email,\n hashed_password: hashedPassword,\n },\n });\n\n const token = this.jwtService.sign({\n sub: newUser.user_id,\n email: newUser.email,\n });\n\n return {\n __typename: 'RegisterSuccess',\n user: newUser,\n token: token,\n };\n } catch (error) {\n if (\n error instanceof Prisma.PrismaClientKnownRequestError &&\n error.code === 'P2002'\n ) {\n const target = error.meta?.target as string[];\n\n if (target.includes('email')) {\n return {\n __typename: 'AuthError',\n message: 'Email already in use.',\n code: 'EMAIL_TAKEN',\n field: 'email',\n };\n }\n\n if (target.includes('username')) {\n return {\n __typename: 'AuthError',\n message: 'Username already taken',\n code: 'USERNAME_TAKEN',\n field: 'username',\n };\n }\n }\n return {\n __typename: 'AuthError',\n message: 'Registration failed',\n code: 'REGISTRATION_FAILED',\n };\n }\n }\n}\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/AuthSuccess.html":{"url":"classes/AuthSuccess.html","title":"class - AuthSuccess","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n AuthSuccess\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/graphql/graphql.ts\n \n\n\n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n token\n \n \n user\n \n \n \n \n\n\n\n\n\n\n \n \n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n token\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:302\n \n \n\n\n \n \n \n \n \n \n \n \n user\n \n \n \n \n \n \n Type : User\n\n \n \n \n \n Defined in src/graphql/graphql.ts:303\n \n \n\n\n \n \n\n\n\n\n\n\n\n\n \n\n\n \n export enum Role {\n Admin = \"Admin\",\n Member = \"Member\",\n Viewer = \"Viewer\"\n}\n\nexport class CreateBoardInput {\n title: string;\n description?: Nullable;\n color: string;\n workspace_id: string;\n}\n\nexport class UpdateBoardInput {\n board_id: string;\n title?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateListInput {\n title: string;\n board_id: string;\n position: number;\n color?: Nullable;\n}\n\nexport class UpdateListInput {\n list_id: string;\n title?: Nullable;\n position?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateCardInput {\n title: string;\n list_id: string;\n description?: Nullable;\n position: number;\n due_date?: Nullable;\n}\n\nexport class UpdateCardInput {\n card_id: string;\n title?: Nullable;\n description?: Nullable;\n position?: Nullable;\n due_date?: Nullable;\n}\n\nexport class CreateLabelInput {\n name: string;\n color: string;\n board_id: string;\n}\n\nexport class UpdateLabelInput {\n label_id: string;\n name?: Nullable;\n color?: Nullable;\n}\n\nexport class LoginInput {\n email: string;\n password: string;\n}\n\nexport class RegisterInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class CreateUserInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class UpdateUserInput {\n user_id: string;\n username?: Nullable;\n email?: Nullable;\n password?: Nullable;\n}\n\nexport class CreateWorkspaceInput {\n name: string;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class UpdateWorkspaceInput {\n name?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class AddWorkspaceMemberInput {\n workspace_id: string;\n user_email: string;\n role?: Nullable;\n}\n\nexport class UpdateMemberRoleInput {\n workspace_id: string;\n user_id: string;\n role: Role;\n}\n\nexport class Board {\n board_id: string;\n title: string;\n description?: Nullable;\n color: string;\n lists: List[];\n workspace_id: string;\n}\n\nexport class List {\n list_id: string;\n title: string;\n position: number;\n color: string;\n board_id: string;\n cards?: Nullable[]>;\n}\n\nexport class Card {\n card_id: string;\n title: string;\n description?: Nullable;\n position: number;\n list_id: string;\n labels?: Nullable[]>;\n due_date?: Nullable;\n comments?: Nullable[]>;\n attachments?: Nullable[]>;\n members?: Nullable[]>;\n}\n\nexport class Comment {\n comment_id: string;\n content: string;\n created_at: DateTime;\n card_id: string;\n user_id: string;\n}\n\nexport class Label {\n label_id: string;\n name: string;\n color: string;\n workspace_id: string;\n}\n\nexport class Attachment {\n attachment_id: string;\n card_id: string;\n url: string;\n filename: string;\n}\n\nexport class CardLabel {\n card_id: string;\n label_id: string;\n}\n\nexport class CardMember {\n card_id: string;\n user_id: string;\n}\n\nexport abstract class IQuery {\n abstract boards(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract board(board_id: string): Nullable | Promise>;\n\n abstract lists(board_id: string): Nullable[]> | Promise[]>>;\n\n abstract list(list_id: string): Nullable | Promise>;\n\n abstract cards(list_id: string): Nullable[]> | Promise[]>>;\n\n abstract card(card_id: string): Nullable | Promise>;\n\n abstract labels(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract comments(card_id: string): Nullable[]> | Promise[]>>;\n\n abstract users(): Nullable[]> | Promise[]>>;\n\n abstract user(user_id: string): Nullable | Promise>;\n\n abstract me(): Nullable | Promise>;\n\n abstract workspaces(): Nullable[]> | Promise[]>>;\n\n abstract workspace(workspace_id: string): Nullable | Promise>;\n\n abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise;\n}\n\nexport class CreateBoardPayload {\n board?: Nullable;\n}\n\nexport abstract class IMutation {\n abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise;\n\n abstract updateBoard(input: UpdateBoardInput): Board | Promise;\n\n abstract deleteBoard(board_id: string): Status | Promise;\n\n abstract createList(input: CreateListInput): List | Promise;\n\n abstract updateList(input: UpdateListInput): List | Promise;\n\n abstract deleteList(list_id: string): Status | Promise;\n\n abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise;\n\n abstract createCard(input: CreateCardInput): Card | Promise;\n\n abstract updateCard(input: UpdateCardInput): Card | Promise;\n\n abstract deleteCard(card_id: string): Status | Promise;\n\n abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise;\n\n abstract createLabel(input: CreateLabelInput): Label | Promise;\n\n abstract updateLabel(input: UpdateLabelInput): Label | Promise;\n\n abstract deleteLabel(label_id: string): Status | Promise;\n\n abstract uploadFile(file: Upload): FileResponse | Promise;\n\n abstract createUser(input: CreateUserInput): Nullable | Promise>;\n\n abstract updateUser(input: UpdateUserInput): Nullable | Promise>;\n\n abstract deleteUser(user_id: string): Nullable | Promise>;\n\n abstract login(input: LoginInput): Nullable | Promise>;\n\n abstract register(input: RegisterInput): Nullable | Promise>;\n\n abstract logout(): Status | Promise;\n\n abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise;\n\n abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise;\n\n abstract deleteWorkspace(workspace_id: string): Status | Promise;\n\n abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise;\n\n abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise;\n\n abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise;\n}\n\nexport class Success {\n successMessage?: Nullable;\n}\n\nexport class Error {\n errorMessage: string;\n code?: Nullable;\n}\n\nexport class FileResponse {\n success: boolean;\n url?: Nullable;\n message?: Nullable;\n}\n\nexport class User {\n user_id: string;\n username: string;\n email: string;\n picture?: Nullable;\n created_at: DateTime;\n}\n\nexport class AuthSuccess {\n token: string;\n user: User;\n}\n\nexport class AuthError {\n message: string;\n code?: Nullable;\n field?: Nullable;\n}\n\nexport class Workspace {\n workspace_id: string;\n name: string;\n color: string;\n description?: Nullable;\n owner_id: string;\n owner: User;\n members: WorkspaceMembers[];\n boards?: Nullable[]>;\n labels?: Nullable[]>;\n is_pinned: boolean;\n}\n\nexport class WorkspaceMembers {\n workspace_id: string;\n user_id: string;\n role: string;\n user: User;\n workspace: Workspace;\n}\n\nexport class PinWorkspacePayload {\n workspace: Workspace;\n}\n\nexport type DateTime = any;\nexport type Upload = any;\nexport type Status = Success | Error;\nexport type AuthResult = AuthSuccess | AuthError;\ntype Nullable = T | null;\n\n \n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/Board.html":{"url":"classes/Board.html","title":"class - Board","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n Board\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/graphql/graphql.ts\n \n\n\n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n board_id\n \n \n color\n \n \n Optional\n description\n \n \n lists\n \n \n title\n \n \n workspace_id\n \n \n \n \n\n\n\n\n\n\n \n \n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n board_id\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:122\n \n \n\n\n \n \n \n \n \n \n \n \n color\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:125\n \n \n\n\n \n \n \n \n \n \n \n \n Optional\n description\n \n \n \n \n \n \n Type : Nullable\n\n \n \n \n \n Defined in src/graphql/graphql.ts:124\n \n \n\n\n \n \n \n \n \n \n \n \n lists\n \n \n \n \n \n \n Type : List[]\n\n \n \n \n \n Defined in src/graphql/graphql.ts:126\n \n \n\n\n \n \n \n \n \n \n \n \n title\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:123\n \n \n\n\n \n \n \n \n \n \n \n \n workspace_id\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:127\n \n \n\n\n \n \n\n\n\n\n\n\n\n\n \n\n\n \n export enum Role {\n Admin = \"Admin\",\n Member = \"Member\",\n Viewer = \"Viewer\"\n}\n\nexport class CreateBoardInput {\n title: string;\n description?: Nullable;\n color: string;\n workspace_id: string;\n}\n\nexport class UpdateBoardInput {\n board_id: string;\n title?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateListInput {\n title: string;\n board_id: string;\n position: number;\n color?: Nullable;\n}\n\nexport class UpdateListInput {\n list_id: string;\n title?: Nullable;\n position?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateCardInput {\n title: string;\n list_id: string;\n description?: Nullable;\n position: number;\n due_date?: Nullable;\n}\n\nexport class UpdateCardInput {\n card_id: string;\n title?: Nullable;\n description?: Nullable;\n position?: Nullable;\n due_date?: Nullable;\n}\n\nexport class CreateLabelInput {\n name: string;\n color: string;\n board_id: string;\n}\n\nexport class UpdateLabelInput {\n label_id: string;\n name?: Nullable;\n color?: Nullable;\n}\n\nexport class LoginInput {\n email: string;\n password: string;\n}\n\nexport class RegisterInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class CreateUserInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class UpdateUserInput {\n user_id: string;\n username?: Nullable;\n email?: Nullable;\n password?: Nullable;\n}\n\nexport class CreateWorkspaceInput {\n name: string;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class UpdateWorkspaceInput {\n name?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class AddWorkspaceMemberInput {\n workspace_id: string;\n user_email: string;\n role?: Nullable;\n}\n\nexport class UpdateMemberRoleInput {\n workspace_id: string;\n user_id: string;\n role: Role;\n}\n\nexport class Board {\n board_id: string;\n title: string;\n description?: Nullable;\n color: string;\n lists: List[];\n workspace_id: string;\n}\n\nexport class List {\n list_id: string;\n title: string;\n position: number;\n color: string;\n board_id: string;\n cards?: Nullable[]>;\n}\n\nexport class Card {\n card_id: string;\n title: string;\n description?: Nullable;\n position: number;\n list_id: string;\n labels?: Nullable[]>;\n due_date?: Nullable;\n comments?: Nullable[]>;\n attachments?: Nullable[]>;\n members?: Nullable[]>;\n}\n\nexport class Comment {\n comment_id: string;\n content: string;\n created_at: DateTime;\n card_id: string;\n user_id: string;\n}\n\nexport class Label {\n label_id: string;\n name: string;\n color: string;\n workspace_id: string;\n}\n\nexport class Attachment {\n attachment_id: string;\n card_id: string;\n url: string;\n filename: string;\n}\n\nexport class CardLabel {\n card_id: string;\n label_id: string;\n}\n\nexport class CardMember {\n card_id: string;\n user_id: string;\n}\n\nexport abstract class IQuery {\n abstract boards(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract board(board_id: string): Nullable | Promise>;\n\n abstract lists(board_id: string): Nullable[]> | Promise[]>>;\n\n abstract list(list_id: string): Nullable | Promise>;\n\n abstract cards(list_id: string): Nullable[]> | Promise[]>>;\n\n abstract card(card_id: string): Nullable | Promise>;\n\n abstract labels(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract comments(card_id: string): Nullable[]> | Promise[]>>;\n\n abstract users(): Nullable[]> | Promise[]>>;\n\n abstract user(user_id: string): Nullable | Promise>;\n\n abstract me(): Nullable | Promise>;\n\n abstract workspaces(): Nullable[]> | Promise[]>>;\n\n abstract workspace(workspace_id: string): Nullable | Promise>;\n\n abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise;\n}\n\nexport class CreateBoardPayload {\n board?: Nullable;\n}\n\nexport abstract class IMutation {\n abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise;\n\n abstract updateBoard(input: UpdateBoardInput): Board | Promise;\n\n abstract deleteBoard(board_id: string): Status | Promise;\n\n abstract createList(input: CreateListInput): List | Promise;\n\n abstract updateList(input: UpdateListInput): List | Promise;\n\n abstract deleteList(list_id: string): Status | Promise;\n\n abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise;\n\n abstract createCard(input: CreateCardInput): Card | Promise;\n\n abstract updateCard(input: UpdateCardInput): Card | Promise;\n\n abstract deleteCard(card_id: string): Status | Promise;\n\n abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise;\n\n abstract createLabel(input: CreateLabelInput): Label | Promise;\n\n abstract updateLabel(input: UpdateLabelInput): Label | Promise;\n\n abstract deleteLabel(label_id: string): Status | Promise;\n\n abstract uploadFile(file: Upload): FileResponse | Promise;\n\n abstract createUser(input: CreateUserInput): Nullable | Promise>;\n\n abstract updateUser(input: UpdateUserInput): Nullable | Promise>;\n\n abstract deleteUser(user_id: string): Nullable | Promise>;\n\n abstract login(input: LoginInput): Nullable | Promise>;\n\n abstract register(input: RegisterInput): Nullable | Promise>;\n\n abstract logout(): Status | Promise;\n\n abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise;\n\n abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise;\n\n abstract deleteWorkspace(workspace_id: string): Status | Promise;\n\n abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise;\n\n abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise;\n\n abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise;\n}\n\nexport class Success {\n successMessage?: Nullable;\n}\n\nexport class Error {\n errorMessage: string;\n code?: Nullable;\n}\n\nexport class FileResponse {\n success: boolean;\n url?: Nullable;\n message?: Nullable;\n}\n\nexport class User {\n user_id: string;\n username: string;\n email: string;\n picture?: Nullable;\n created_at: DateTime;\n}\n\nexport class AuthSuccess {\n token: string;\n user: User;\n}\n\nexport class AuthError {\n message: string;\n code?: Nullable;\n field?: Nullable;\n}\n\nexport class Workspace {\n workspace_id: string;\n name: string;\n color: string;\n description?: Nullable;\n owner_id: string;\n owner: User;\n members: WorkspaceMembers[];\n boards?: Nullable[]>;\n labels?: Nullable[]>;\n is_pinned: boolean;\n}\n\nexport class WorkspaceMembers {\n workspace_id: string;\n user_id: string;\n role: string;\n user: User;\n workspace: Workspace;\n}\n\nexport class PinWorkspacePayload {\n workspace: Workspace;\n}\n\nexport type DateTime = any;\nexport type Upload = any;\nexport type Status = Success | Error;\nexport type AuthResult = AuthSuccess | AuthError;\ntype Nullable = T | null;\n\n \n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/Card.html":{"url":"classes/Card.html","title":"class - Card","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n Card\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/graphql/graphql.ts\n \n\n\n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Optional\n attachments\n \n \n card_id\n \n \n Optional\n comments\n \n \n Optional\n description\n \n \n Optional\n due_date\n \n \n Optional\n labels\n \n \n list_id\n \n \n Optional\n members\n \n \n position\n \n \n title\n \n \n \n \n\n\n\n\n\n\n \n \n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n Optional\n attachments\n \n \n \n \n \n \n Type : Nullable\n\n \n \n \n \n Defined in src/graphql/graphql.ts:148\n \n \n\n\n \n \n \n \n \n \n \n \n card_id\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:140\n \n \n\n\n \n \n \n \n \n \n \n \n Optional\n comments\n \n \n \n \n \n \n Type : Nullable\n\n \n \n \n \n Defined in src/graphql/graphql.ts:147\n \n \n\n\n \n \n \n \n \n \n \n \n Optional\n description\n \n \n \n \n \n \n Type : Nullable\n\n \n \n \n \n Defined in src/graphql/graphql.ts:142\n \n \n\n\n \n \n \n \n \n \n \n \n Optional\n due_date\n \n \n \n \n \n \n Type : Nullable\n\n \n \n \n \n Defined in src/graphql/graphql.ts:146\n \n \n\n\n \n \n \n \n \n \n \n \n Optional\n labels\n \n \n \n \n \n \n Type : Nullable\n\n \n \n \n \n Defined in src/graphql/graphql.ts:145\n \n \n\n\n \n \n \n \n \n \n \n \n list_id\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:144\n \n \n\n\n \n \n \n \n \n \n \n \n Optional\n members\n \n \n \n \n \n \n Type : Nullable\n\n \n \n \n \n Defined in src/graphql/graphql.ts:149\n \n \n\n\n \n \n \n \n \n \n \n \n position\n \n \n \n \n \n \n Type : number\n\n \n \n \n \n Defined in src/graphql/graphql.ts:143\n \n \n\n\n \n \n \n \n \n \n \n \n title\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:141\n \n \n\n\n \n \n\n\n\n\n\n\n\n\n \n\n\n \n export enum Role {\n Admin = \"Admin\",\n Member = \"Member\",\n Viewer = \"Viewer\"\n}\n\nexport class CreateBoardInput {\n title: string;\n description?: Nullable;\n color: string;\n workspace_id: string;\n}\n\nexport class UpdateBoardInput {\n board_id: string;\n title?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateListInput {\n title: string;\n board_id: string;\n position: number;\n color?: Nullable;\n}\n\nexport class UpdateListInput {\n list_id: string;\n title?: Nullable;\n position?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateCardInput {\n title: string;\n list_id: string;\n description?: Nullable;\n position: number;\n due_date?: Nullable;\n}\n\nexport class UpdateCardInput {\n card_id: string;\n title?: Nullable;\n description?: Nullable;\n position?: Nullable;\n due_date?: Nullable;\n}\n\nexport class CreateLabelInput {\n name: string;\n color: string;\n board_id: string;\n}\n\nexport class UpdateLabelInput {\n label_id: string;\n name?: Nullable;\n color?: Nullable;\n}\n\nexport class LoginInput {\n email: string;\n password: string;\n}\n\nexport class RegisterInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class CreateUserInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class UpdateUserInput {\n user_id: string;\n username?: Nullable;\n email?: Nullable;\n password?: Nullable;\n}\n\nexport class CreateWorkspaceInput {\n name: string;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class UpdateWorkspaceInput {\n name?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class AddWorkspaceMemberInput {\n workspace_id: string;\n user_email: string;\n role?: Nullable;\n}\n\nexport class UpdateMemberRoleInput {\n workspace_id: string;\n user_id: string;\n role: Role;\n}\n\nexport class Board {\n board_id: string;\n title: string;\n description?: Nullable;\n color: string;\n lists: List[];\n workspace_id: string;\n}\n\nexport class List {\n list_id: string;\n title: string;\n position: number;\n color: string;\n board_id: string;\n cards?: Nullable[]>;\n}\n\nexport class Card {\n card_id: string;\n title: string;\n description?: Nullable;\n position: number;\n list_id: string;\n labels?: Nullable[]>;\n due_date?: Nullable;\n comments?: Nullable[]>;\n attachments?: Nullable[]>;\n members?: Nullable[]>;\n}\n\nexport class Comment {\n comment_id: string;\n content: string;\n created_at: DateTime;\n card_id: string;\n user_id: string;\n}\n\nexport class Label {\n label_id: string;\n name: string;\n color: string;\n workspace_id: string;\n}\n\nexport class Attachment {\n attachment_id: string;\n card_id: string;\n url: string;\n filename: string;\n}\n\nexport class CardLabel {\n card_id: string;\n label_id: string;\n}\n\nexport class CardMember {\n card_id: string;\n user_id: string;\n}\n\nexport abstract class IQuery {\n abstract boards(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract board(board_id: string): Nullable | Promise>;\n\n abstract lists(board_id: string): Nullable[]> | Promise[]>>;\n\n abstract list(list_id: string): Nullable | Promise>;\n\n abstract cards(list_id: string): Nullable[]> | Promise[]>>;\n\n abstract card(card_id: string): Nullable | Promise>;\n\n abstract labels(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract comments(card_id: string): Nullable[]> | Promise[]>>;\n\n abstract users(): Nullable[]> | Promise[]>>;\n\n abstract user(user_id: string): Nullable | Promise>;\n\n abstract me(): Nullable | Promise>;\n\n abstract workspaces(): Nullable[]> | Promise[]>>;\n\n abstract workspace(workspace_id: string): Nullable | Promise>;\n\n abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise;\n}\n\nexport class CreateBoardPayload {\n board?: Nullable;\n}\n\nexport abstract class IMutation {\n abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise;\n\n abstract updateBoard(input: UpdateBoardInput): Board | Promise;\n\n abstract deleteBoard(board_id: string): Status | Promise;\n\n abstract createList(input: CreateListInput): List | Promise;\n\n abstract updateList(input: UpdateListInput): List | Promise;\n\n abstract deleteList(list_id: string): Status | Promise;\n\n abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise;\n\n abstract createCard(input: CreateCardInput): Card | Promise;\n\n abstract updateCard(input: UpdateCardInput): Card | Promise;\n\n abstract deleteCard(card_id: string): Status | Promise;\n\n abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise;\n\n abstract createLabel(input: CreateLabelInput): Label | Promise;\n\n abstract updateLabel(input: UpdateLabelInput): Label | Promise;\n\n abstract deleteLabel(label_id: string): Status | Promise;\n\n abstract uploadFile(file: Upload): FileResponse | Promise;\n\n abstract createUser(input: CreateUserInput): Nullable | Promise>;\n\n abstract updateUser(input: UpdateUserInput): Nullable | Promise>;\n\n abstract deleteUser(user_id: string): Nullable | Promise>;\n\n abstract login(input: LoginInput): Nullable | Promise>;\n\n abstract register(input: RegisterInput): Nullable | Promise>;\n\n abstract logout(): Status | Promise;\n\n abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise;\n\n abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise;\n\n abstract deleteWorkspace(workspace_id: string): Status | Promise;\n\n abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise;\n\n abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise;\n\n abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise;\n}\n\nexport class Success {\n successMessage?: Nullable;\n}\n\nexport class Error {\n errorMessage: string;\n code?: Nullable;\n}\n\nexport class FileResponse {\n success: boolean;\n url?: Nullable;\n message?: Nullable;\n}\n\nexport class User {\n user_id: string;\n username: string;\n email: string;\n picture?: Nullable;\n created_at: DateTime;\n}\n\nexport class AuthSuccess {\n token: string;\n user: User;\n}\n\nexport class AuthError {\n message: string;\n code?: Nullable;\n field?: Nullable;\n}\n\nexport class Workspace {\n workspace_id: string;\n name: string;\n color: string;\n description?: Nullable;\n owner_id: string;\n owner: User;\n members: WorkspaceMembers[];\n boards?: Nullable[]>;\n labels?: Nullable[]>;\n is_pinned: boolean;\n}\n\nexport class WorkspaceMembers {\n workspace_id: string;\n user_id: string;\n role: string;\n user: User;\n workspace: Workspace;\n}\n\nexport class PinWorkspacePayload {\n workspace: Workspace;\n}\n\nexport type DateTime = any;\nexport type Upload = any;\nexport type Status = Success | Error;\nexport type AuthResult = AuthSuccess | AuthError;\ntype Nullable = T | null;\n\n \n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/CardLabel.html":{"url":"classes/CardLabel.html","title":"class - CardLabel","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n CardLabel\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/graphql/graphql.ts\n \n\n\n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n card_id\n \n \n label_id\n \n \n \n \n\n\n\n\n\n\n \n \n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n card_id\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:175\n \n \n\n\n \n \n \n \n \n \n \n \n label_id\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:176\n \n \n\n\n \n \n\n\n\n\n\n\n\n\n \n\n\n \n export enum Role {\n Admin = \"Admin\",\n Member = \"Member\",\n Viewer = \"Viewer\"\n}\n\nexport class CreateBoardInput {\n title: string;\n description?: Nullable;\n color: string;\n workspace_id: string;\n}\n\nexport class UpdateBoardInput {\n board_id: string;\n title?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateListInput {\n title: string;\n board_id: string;\n position: number;\n color?: Nullable;\n}\n\nexport class UpdateListInput {\n list_id: string;\n title?: Nullable;\n position?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateCardInput {\n title: string;\n list_id: string;\n description?: Nullable;\n position: number;\n due_date?: Nullable;\n}\n\nexport class UpdateCardInput {\n card_id: string;\n title?: Nullable;\n description?: Nullable;\n position?: Nullable;\n due_date?: Nullable;\n}\n\nexport class CreateLabelInput {\n name: string;\n color: string;\n board_id: string;\n}\n\nexport class UpdateLabelInput {\n label_id: string;\n name?: Nullable;\n color?: Nullable;\n}\n\nexport class LoginInput {\n email: string;\n password: string;\n}\n\nexport class RegisterInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class CreateUserInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class UpdateUserInput {\n user_id: string;\n username?: Nullable;\n email?: Nullable;\n password?: Nullable;\n}\n\nexport class CreateWorkspaceInput {\n name: string;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class UpdateWorkspaceInput {\n name?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class AddWorkspaceMemberInput {\n workspace_id: string;\n user_email: string;\n role?: Nullable;\n}\n\nexport class UpdateMemberRoleInput {\n workspace_id: string;\n user_id: string;\n role: Role;\n}\n\nexport class Board {\n board_id: string;\n title: string;\n description?: Nullable;\n color: string;\n lists: List[];\n workspace_id: string;\n}\n\nexport class List {\n list_id: string;\n title: string;\n position: number;\n color: string;\n board_id: string;\n cards?: Nullable[]>;\n}\n\nexport class Card {\n card_id: string;\n title: string;\n description?: Nullable;\n position: number;\n list_id: string;\n labels?: Nullable[]>;\n due_date?: Nullable;\n comments?: Nullable[]>;\n attachments?: Nullable[]>;\n members?: Nullable[]>;\n}\n\nexport class Comment {\n comment_id: string;\n content: string;\n created_at: DateTime;\n card_id: string;\n user_id: string;\n}\n\nexport class Label {\n label_id: string;\n name: string;\n color: string;\n workspace_id: string;\n}\n\nexport class Attachment {\n attachment_id: string;\n card_id: string;\n url: string;\n filename: string;\n}\n\nexport class CardLabel {\n card_id: string;\n label_id: string;\n}\n\nexport class CardMember {\n card_id: string;\n user_id: string;\n}\n\nexport abstract class IQuery {\n abstract boards(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract board(board_id: string): Nullable | Promise>;\n\n abstract lists(board_id: string): Nullable[]> | Promise[]>>;\n\n abstract list(list_id: string): Nullable | Promise>;\n\n abstract cards(list_id: string): Nullable[]> | Promise[]>>;\n\n abstract card(card_id: string): Nullable | Promise>;\n\n abstract labels(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract comments(card_id: string): Nullable[]> | Promise[]>>;\n\n abstract users(): Nullable[]> | Promise[]>>;\n\n abstract user(user_id: string): Nullable | Promise>;\n\n abstract me(): Nullable | Promise>;\n\n abstract workspaces(): Nullable[]> | Promise[]>>;\n\n abstract workspace(workspace_id: string): Nullable | Promise>;\n\n abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise;\n}\n\nexport class CreateBoardPayload {\n board?: Nullable;\n}\n\nexport abstract class IMutation {\n abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise;\n\n abstract updateBoard(input: UpdateBoardInput): Board | Promise;\n\n abstract deleteBoard(board_id: string): Status | Promise;\n\n abstract createList(input: CreateListInput): List | Promise;\n\n abstract updateList(input: UpdateListInput): List | Promise;\n\n abstract deleteList(list_id: string): Status | Promise;\n\n abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise;\n\n abstract createCard(input: CreateCardInput): Card | Promise;\n\n abstract updateCard(input: UpdateCardInput): Card | Promise;\n\n abstract deleteCard(card_id: string): Status | Promise;\n\n abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise;\n\n abstract createLabel(input: CreateLabelInput): Label | Promise;\n\n abstract updateLabel(input: UpdateLabelInput): Label | Promise;\n\n abstract deleteLabel(label_id: string): Status | Promise;\n\n abstract uploadFile(file: Upload): FileResponse | Promise;\n\n abstract createUser(input: CreateUserInput): Nullable | Promise>;\n\n abstract updateUser(input: UpdateUserInput): Nullable | Promise>;\n\n abstract deleteUser(user_id: string): Nullable | Promise>;\n\n abstract login(input: LoginInput): Nullable | Promise>;\n\n abstract register(input: RegisterInput): Nullable | Promise>;\n\n abstract logout(): Status | Promise;\n\n abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise;\n\n abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise;\n\n abstract deleteWorkspace(workspace_id: string): Status | Promise;\n\n abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise;\n\n abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise;\n\n abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise;\n}\n\nexport class Success {\n successMessage?: Nullable;\n}\n\nexport class Error {\n errorMessage: string;\n code?: Nullable;\n}\n\nexport class FileResponse {\n success: boolean;\n url?: Nullable;\n message?: Nullable;\n}\n\nexport class User {\n user_id: string;\n username: string;\n email: string;\n picture?: Nullable;\n created_at: DateTime;\n}\n\nexport class AuthSuccess {\n token: string;\n user: User;\n}\n\nexport class AuthError {\n message: string;\n code?: Nullable;\n field?: Nullable;\n}\n\nexport class Workspace {\n workspace_id: string;\n name: string;\n color: string;\n description?: Nullable;\n owner_id: string;\n owner: User;\n members: WorkspaceMembers[];\n boards?: Nullable[]>;\n labels?: Nullable[]>;\n is_pinned: boolean;\n}\n\nexport class WorkspaceMembers {\n workspace_id: string;\n user_id: string;\n role: string;\n user: User;\n workspace: Workspace;\n}\n\nexport class PinWorkspacePayload {\n workspace: Workspace;\n}\n\nexport type DateTime = any;\nexport type Upload = any;\nexport type Status = Success | Error;\nexport type AuthResult = AuthSuccess | AuthError;\ntype Nullable = T | null;\n\n \n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/CardMember.html":{"url":"classes/CardMember.html","title":"class - CardMember","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n CardMember\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/graphql/graphql.ts\n \n\n\n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n card_id\n \n \n user_id\n \n \n \n \n\n\n\n\n\n\n \n \n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n card_id\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:180\n \n \n\n\n \n \n \n \n \n \n \n \n user_id\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:181\n \n \n\n\n \n \n\n\n\n\n\n\n\n\n \n\n\n \n export enum Role {\n Admin = \"Admin\",\n Member = \"Member\",\n Viewer = \"Viewer\"\n}\n\nexport class CreateBoardInput {\n title: string;\n description?: Nullable;\n color: string;\n workspace_id: string;\n}\n\nexport class UpdateBoardInput {\n board_id: string;\n title?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateListInput {\n title: string;\n board_id: string;\n position: number;\n color?: Nullable;\n}\n\nexport class UpdateListInput {\n list_id: string;\n title?: Nullable;\n position?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateCardInput {\n title: string;\n list_id: string;\n description?: Nullable;\n position: number;\n due_date?: Nullable;\n}\n\nexport class UpdateCardInput {\n card_id: string;\n title?: Nullable;\n description?: Nullable;\n position?: Nullable;\n due_date?: Nullable;\n}\n\nexport class CreateLabelInput {\n name: string;\n color: string;\n board_id: string;\n}\n\nexport class UpdateLabelInput {\n label_id: string;\n name?: Nullable;\n color?: Nullable;\n}\n\nexport class LoginInput {\n email: string;\n password: string;\n}\n\nexport class RegisterInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class CreateUserInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class UpdateUserInput {\n user_id: string;\n username?: Nullable;\n email?: Nullable;\n password?: Nullable;\n}\n\nexport class CreateWorkspaceInput {\n name: string;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class UpdateWorkspaceInput {\n name?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class AddWorkspaceMemberInput {\n workspace_id: string;\n user_email: string;\n role?: Nullable;\n}\n\nexport class UpdateMemberRoleInput {\n workspace_id: string;\n user_id: string;\n role: Role;\n}\n\nexport class Board {\n board_id: string;\n title: string;\n description?: Nullable;\n color: string;\n lists: List[];\n workspace_id: string;\n}\n\nexport class List {\n list_id: string;\n title: string;\n position: number;\n color: string;\n board_id: string;\n cards?: Nullable[]>;\n}\n\nexport class Card {\n card_id: string;\n title: string;\n description?: Nullable;\n position: number;\n list_id: string;\n labels?: Nullable[]>;\n due_date?: Nullable;\n comments?: Nullable[]>;\n attachments?: Nullable[]>;\n members?: Nullable[]>;\n}\n\nexport class Comment {\n comment_id: string;\n content: string;\n created_at: DateTime;\n card_id: string;\n user_id: string;\n}\n\nexport class Label {\n label_id: string;\n name: string;\n color: string;\n workspace_id: string;\n}\n\nexport class Attachment {\n attachment_id: string;\n card_id: string;\n url: string;\n filename: string;\n}\n\nexport class CardLabel {\n card_id: string;\n label_id: string;\n}\n\nexport class CardMember {\n card_id: string;\n user_id: string;\n}\n\nexport abstract class IQuery {\n abstract boards(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract board(board_id: string): Nullable | Promise>;\n\n abstract lists(board_id: string): Nullable[]> | Promise[]>>;\n\n abstract list(list_id: string): Nullable | Promise>;\n\n abstract cards(list_id: string): Nullable[]> | Promise[]>>;\n\n abstract card(card_id: string): Nullable | Promise>;\n\n abstract labels(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract comments(card_id: string): Nullable[]> | Promise[]>>;\n\n abstract users(): Nullable[]> | Promise[]>>;\n\n abstract user(user_id: string): Nullable | Promise>;\n\n abstract me(): Nullable | Promise>;\n\n abstract workspaces(): Nullable[]> | Promise[]>>;\n\n abstract workspace(workspace_id: string): Nullable | Promise>;\n\n abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise;\n}\n\nexport class CreateBoardPayload {\n board?: Nullable;\n}\n\nexport abstract class IMutation {\n abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise;\n\n abstract updateBoard(input: UpdateBoardInput): Board | Promise;\n\n abstract deleteBoard(board_id: string): Status | Promise;\n\n abstract createList(input: CreateListInput): List | Promise;\n\n abstract updateList(input: UpdateListInput): List | Promise;\n\n abstract deleteList(list_id: string): Status | Promise;\n\n abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise;\n\n abstract createCard(input: CreateCardInput): Card | Promise;\n\n abstract updateCard(input: UpdateCardInput): Card | Promise;\n\n abstract deleteCard(card_id: string): Status | Promise;\n\n abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise;\n\n abstract createLabel(input: CreateLabelInput): Label | Promise;\n\n abstract updateLabel(input: UpdateLabelInput): Label | Promise;\n\n abstract deleteLabel(label_id: string): Status | Promise;\n\n abstract uploadFile(file: Upload): FileResponse | Promise;\n\n abstract createUser(input: CreateUserInput): Nullable | Promise>;\n\n abstract updateUser(input: UpdateUserInput): Nullable | Promise>;\n\n abstract deleteUser(user_id: string): Nullable | Promise>;\n\n abstract login(input: LoginInput): Nullable | Promise>;\n\n abstract register(input: RegisterInput): Nullable | Promise>;\n\n abstract logout(): Status | Promise;\n\n abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise;\n\n abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise;\n\n abstract deleteWorkspace(workspace_id: string): Status | Promise;\n\n abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise;\n\n abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise;\n\n abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise;\n}\n\nexport class Success {\n successMessage?: Nullable;\n}\n\nexport class Error {\n errorMessage: string;\n code?: Nullable;\n}\n\nexport class FileResponse {\n success: boolean;\n url?: Nullable;\n message?: Nullable;\n}\n\nexport class User {\n user_id: string;\n username: string;\n email: string;\n picture?: Nullable;\n created_at: DateTime;\n}\n\nexport class AuthSuccess {\n token: string;\n user: User;\n}\n\nexport class AuthError {\n message: string;\n code?: Nullable;\n field?: Nullable;\n}\n\nexport class Workspace {\n workspace_id: string;\n name: string;\n color: string;\n description?: Nullable;\n owner_id: string;\n owner: User;\n members: WorkspaceMembers[];\n boards?: Nullable[]>;\n labels?: Nullable[]>;\n is_pinned: boolean;\n}\n\nexport class WorkspaceMembers {\n workspace_id: string;\n user_id: string;\n role: string;\n user: User;\n workspace: Workspace;\n}\n\nexport class PinWorkspacePayload {\n workspace: Workspace;\n}\n\nexport type DateTime = any;\nexport type Upload = any;\nexport type Status = Success | Error;\nexport type AuthResult = AuthSuccess | AuthError;\ntype Nullable = T | null;\n\n \n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/Comment.html":{"url":"classes/Comment.html","title":"class - Comment","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n Comment\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/graphql/graphql.ts\n \n\n\n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n card_id\n \n \n comment_id\n \n \n content\n \n \n created_at\n \n \n user_id\n \n \n \n \n\n\n\n\n\n\n \n \n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n card_id\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:156\n \n \n\n\n \n \n \n \n \n \n \n \n comment_id\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:153\n \n \n\n\n \n \n \n \n \n \n \n \n content\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:154\n \n \n\n\n \n \n \n \n \n \n \n \n created_at\n \n \n \n \n \n \n Type : DateTime\n\n \n \n \n \n Defined in src/graphql/graphql.ts:155\n \n \n\n\n \n \n \n \n \n \n \n \n user_id\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:157\n \n \n\n\n \n \n\n\n\n\n\n\n\n\n \n\n\n \n export enum Role {\n Admin = \"Admin\",\n Member = \"Member\",\n Viewer = \"Viewer\"\n}\n\nexport class CreateBoardInput {\n title: string;\n description?: Nullable;\n color: string;\n workspace_id: string;\n}\n\nexport class UpdateBoardInput {\n board_id: string;\n title?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateListInput {\n title: string;\n board_id: string;\n position: number;\n color?: Nullable;\n}\n\nexport class UpdateListInput {\n list_id: string;\n title?: Nullable;\n position?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateCardInput {\n title: string;\n list_id: string;\n description?: Nullable;\n position: number;\n due_date?: Nullable;\n}\n\nexport class UpdateCardInput {\n card_id: string;\n title?: Nullable;\n description?: Nullable;\n position?: Nullable;\n due_date?: Nullable;\n}\n\nexport class CreateLabelInput {\n name: string;\n color: string;\n board_id: string;\n}\n\nexport class UpdateLabelInput {\n label_id: string;\n name?: Nullable;\n color?: Nullable;\n}\n\nexport class LoginInput {\n email: string;\n password: string;\n}\n\nexport class RegisterInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class CreateUserInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class UpdateUserInput {\n user_id: string;\n username?: Nullable;\n email?: Nullable;\n password?: Nullable;\n}\n\nexport class CreateWorkspaceInput {\n name: string;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class UpdateWorkspaceInput {\n name?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class AddWorkspaceMemberInput {\n workspace_id: string;\n user_email: string;\n role?: Nullable;\n}\n\nexport class UpdateMemberRoleInput {\n workspace_id: string;\n user_id: string;\n role: Role;\n}\n\nexport class Board {\n board_id: string;\n title: string;\n description?: Nullable;\n color: string;\n lists: List[];\n workspace_id: string;\n}\n\nexport class List {\n list_id: string;\n title: string;\n position: number;\n color: string;\n board_id: string;\n cards?: Nullable[]>;\n}\n\nexport class Card {\n card_id: string;\n title: string;\n description?: Nullable;\n position: number;\n list_id: string;\n labels?: Nullable[]>;\n due_date?: Nullable;\n comments?: Nullable[]>;\n attachments?: Nullable[]>;\n members?: Nullable[]>;\n}\n\nexport class Comment {\n comment_id: string;\n content: string;\n created_at: DateTime;\n card_id: string;\n user_id: string;\n}\n\nexport class Label {\n label_id: string;\n name: string;\n color: string;\n workspace_id: string;\n}\n\nexport class Attachment {\n attachment_id: string;\n card_id: string;\n url: string;\n filename: string;\n}\n\nexport class CardLabel {\n card_id: string;\n label_id: string;\n}\n\nexport class CardMember {\n card_id: string;\n user_id: string;\n}\n\nexport abstract class IQuery {\n abstract boards(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract board(board_id: string): Nullable | Promise>;\n\n abstract lists(board_id: string): Nullable[]> | Promise[]>>;\n\n abstract list(list_id: string): Nullable | Promise>;\n\n abstract cards(list_id: string): Nullable[]> | Promise[]>>;\n\n abstract card(card_id: string): Nullable | Promise>;\n\n abstract labels(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract comments(card_id: string): Nullable[]> | Promise[]>>;\n\n abstract users(): Nullable[]> | Promise[]>>;\n\n abstract user(user_id: string): Nullable | Promise>;\n\n abstract me(): Nullable | Promise>;\n\n abstract workspaces(): Nullable[]> | Promise[]>>;\n\n abstract workspace(workspace_id: string): Nullable | Promise>;\n\n abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise;\n}\n\nexport class CreateBoardPayload {\n board?: Nullable;\n}\n\nexport abstract class IMutation {\n abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise;\n\n abstract updateBoard(input: UpdateBoardInput): Board | Promise;\n\n abstract deleteBoard(board_id: string): Status | Promise;\n\n abstract createList(input: CreateListInput): List | Promise;\n\n abstract updateList(input: UpdateListInput): List | Promise;\n\n abstract deleteList(list_id: string): Status | Promise;\n\n abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise;\n\n abstract createCard(input: CreateCardInput): Card | Promise;\n\n abstract updateCard(input: UpdateCardInput): Card | Promise;\n\n abstract deleteCard(card_id: string): Status | Promise;\n\n abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise;\n\n abstract createLabel(input: CreateLabelInput): Label | Promise;\n\n abstract updateLabel(input: UpdateLabelInput): Label | Promise;\n\n abstract deleteLabel(label_id: string): Status | Promise;\n\n abstract uploadFile(file: Upload): FileResponse | Promise;\n\n abstract createUser(input: CreateUserInput): Nullable | Promise>;\n\n abstract updateUser(input: UpdateUserInput): Nullable | Promise>;\n\n abstract deleteUser(user_id: string): Nullable | Promise>;\n\n abstract login(input: LoginInput): Nullable | Promise>;\n\n abstract register(input: RegisterInput): Nullable | Promise>;\n\n abstract logout(): Status | Promise;\n\n abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise;\n\n abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise;\n\n abstract deleteWorkspace(workspace_id: string): Status | Promise;\n\n abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise;\n\n abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise;\n\n abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise;\n}\n\nexport class Success {\n successMessage?: Nullable;\n}\n\nexport class Error {\n errorMessage: string;\n code?: Nullable;\n}\n\nexport class FileResponse {\n success: boolean;\n url?: Nullable;\n message?: Nullable;\n}\n\nexport class User {\n user_id: string;\n username: string;\n email: string;\n picture?: Nullable;\n created_at: DateTime;\n}\n\nexport class AuthSuccess {\n token: string;\n user: User;\n}\n\nexport class AuthError {\n message: string;\n code?: Nullable;\n field?: Nullable;\n}\n\nexport class Workspace {\n workspace_id: string;\n name: string;\n color: string;\n description?: Nullable;\n owner_id: string;\n owner: User;\n members: WorkspaceMembers[];\n boards?: Nullable[]>;\n labels?: Nullable[]>;\n is_pinned: boolean;\n}\n\nexport class WorkspaceMembers {\n workspace_id: string;\n user_id: string;\n role: string;\n user: User;\n workspace: Workspace;\n}\n\nexport class PinWorkspacePayload {\n workspace: Workspace;\n}\n\nexport type DateTime = any;\nexport type Upload = any;\nexport type Status = Success | Error;\nexport type AuthResult = AuthSuccess | AuthError;\ntype Nullable = T | null;\n\n \n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"modules/CommonModule.html":{"url":"modules/CommonModule.html","title":"module - CommonModule","body":"\n \n\n\n\n\n\n\n\n\n Modules\n CommonModule\n\n\n\n \n \n\n\n\n\n\ndependencies\n\nLegend\n\n  Declarations\n\n  Module\n\n  Bootstrap\n\n  Providers\n\n  Exports\n\ncluster_CommonModule\n\n\n\ncluster_CommonModule_exports\n\n\n\ncluster_CommonModule_imports\n\n\n\n\nPrismaModule\n\nPrismaModule\n\n\n\nCommonModule\n\nCommonModule\n\nCommonModule -->\n\nPrismaModule->CommonModule\n\n\n\n\n\nAuthGuard \n\nAuthGuard \n\nAuthGuard -->\n\nCommonModule->AuthGuard \n\n\n\n\n\nWorkspaceGuard \n\nWorkspaceGuard \n\nWorkspaceGuard -->\n\nCommonModule->WorkspaceGuard \n\n\n\n\n\n\n \n \n \n Zoom in\n Reset\n Zoom out\n \n\n\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n\n \n File\n \n \n src/common/common.module.ts\n \n\n\n\n\n\n \n \n \n Imports\n \n \n PrismaModule\n \n \n \n \n Exports\n \n \n AuthGuard\n \n \n WorkspaceGuard\n \n \n \n \n \n\n\n \n\n\n \n /*\n** EPITECH PROJECT, 2025\n** TaskFlow\n** File description:\n** common.module\n*/\n\nimport { Global, Module } from '@nestjs/common';\nimport { Prisma } from '@prisma/client';\nimport { PrismaModule } from 'src/prisma/prisma.module';\nimport { WorkspaceGuard } from './guards/workspace.guard';\nimport { AuthGuard } from './guards/auth.guard';\n\n@Global()\n@Module({\n imports: [PrismaModule],\n providers: [WorkspaceGuard, AuthGuard],\n exports: [WorkspaceGuard, AuthGuard],\n})\nexport class CommonModule {}\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"interfaces/CompoDocConfig.html":{"url":"interfaces/CompoDocConfig.html","title":"interface - CompoDocConfig","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Interfaces\n \n CompoDocConfig\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n documentation/template-playground/template-playground.component.ts\n \n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Optional\n \n customFavicon\n \n \n \n Optional\n \n disableConstructors\n \n \n \n Optional\n \n disableCoverage\n \n \n \n Optional\n \n disableDependencies\n \n \n \n Optional\n \n disableDomTree\n \n \n \n Optional\n \n disableFilePath\n \n \n \n Optional\n \n disableGraph\n \n \n \n Optional\n \n disableInternal\n \n \n \n Optional\n \n disableLifeCycleHooks\n \n \n \n Optional\n \n disableMainGraph\n \n \n \n Optional\n \n disableOverview\n \n \n \n Optional\n \n disablePrivate\n \n \n \n Optional\n \n disableProperties\n \n \n \n Optional\n \n disableProtected\n \n \n \n Optional\n \n disableRoutesGraph\n \n \n \n Optional\n \n disableSearch\n \n \n \n Optional\n \n disableSourceCode\n \n \n \n Optional\n \n disableStyleTab\n \n \n \n Optional\n \n disableTemplateTab\n \n \n \n Optional\n \n hideDarkModeToggle\n \n \n \n Optional\n \n hideGenerator\n \n \n \n Optional\n \n includes\n \n \n \n Optional\n \n includesName\n \n \n \n Optional\n \n minimal\n \n \n \n \n \n \n \n \n\n\n\n \n Properties\n \n \n \n \n \n customFavicon\n \n \n \n \n \n \n \n \n customFavicon: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n \n \n Optional\n \n \n\n\n\n\n \n \n \n \n \n \n \n disableConstructors\n \n \n \n \n \n \n \n \n disableConstructors: boolean\n\n \n \n\n\n \n \n Type : boolean\n\n \n \n\n \n \n Optional\n \n \n\n\n\n\n \n \n \n \n \n \n \n disableCoverage\n \n \n \n \n \n \n \n \n disableCoverage: boolean\n\n \n \n\n\n \n \n Type : boolean\n\n \n \n\n \n \n Optional\n \n \n\n\n\n\n \n \n \n \n \n \n \n disableDependencies\n \n \n \n \n \n \n \n \n disableDependencies: boolean\n\n \n \n\n\n \n \n Type : boolean\n\n \n \n\n \n \n Optional\n \n \n\n\n\n\n \n \n \n \n \n \n \n disableDomTree\n \n \n \n \n \n \n \n \n disableDomTree: boolean\n\n \n \n\n\n \n \n Type : boolean\n\n \n \n\n \n \n Optional\n \n \n\n\n\n\n \n \n \n \n \n \n \n disableFilePath\n \n \n \n \n \n \n \n \n disableFilePath: boolean\n\n \n \n\n\n \n \n Type : boolean\n\n \n \n\n \n \n Optional\n \n \n\n\n\n\n \n \n \n \n \n \n \n disableGraph\n \n \n \n \n \n \n \n \n disableGraph: boolean\n\n \n \n\n\n \n \n Type : boolean\n\n \n \n\n \n \n Optional\n \n \n\n\n\n\n \n \n \n \n \n \n \n disableInternal\n \n \n \n \n \n \n \n \n disableInternal: boolean\n\n \n \n\n\n \n \n Type : boolean\n\n \n \n\n \n \n Optional\n \n \n\n\n\n\n \n \n \n \n \n \n \n disableLifeCycleHooks\n \n \n \n \n \n \n \n \n disableLifeCycleHooks: boolean\n\n \n \n\n\n \n \n Type : boolean\n\n \n \n\n \n \n Optional\n \n \n\n\n\n\n \n \n \n \n \n \n \n disableMainGraph\n \n \n \n \n \n \n \n \n disableMainGraph: boolean\n\n \n \n\n\n \n \n Type : boolean\n\n \n \n\n \n \n Optional\n \n \n\n\n\n\n \n \n \n \n \n \n \n disableOverview\n \n \n \n \n \n \n \n \n disableOverview: boolean\n\n \n \n\n\n \n \n Type : boolean\n\n \n \n\n \n \n Optional\n \n \n\n\n\n\n \n \n \n \n \n \n \n disablePrivate\n \n \n \n \n \n \n \n \n disablePrivate: boolean\n\n \n \n\n\n \n \n Type : boolean\n\n \n \n\n \n \n Optional\n \n \n\n\n\n\n \n \n \n \n \n \n \n disableProperties\n \n \n \n \n \n \n \n \n disableProperties: boolean\n\n \n \n\n\n \n \n Type : boolean\n\n \n \n\n \n \n Optional\n \n \n\n\n\n\n \n \n \n \n \n \n \n disableProtected\n \n \n \n \n \n \n \n \n disableProtected: boolean\n\n \n \n\n\n \n \n Type : boolean\n\n \n \n\n \n \n Optional\n \n \n\n\n\n\n \n \n \n \n \n \n \n disableRoutesGraph\n \n \n \n \n \n \n \n \n disableRoutesGraph: boolean\n\n \n \n\n\n \n \n Type : boolean\n\n \n \n\n \n \n Optional\n \n \n\n\n\n\n \n \n \n \n \n \n \n disableSearch\n \n \n \n \n \n \n \n \n disableSearch: boolean\n\n \n \n\n\n \n \n Type : boolean\n\n \n \n\n \n \n Optional\n \n \n\n\n\n\n \n \n \n \n \n \n \n disableSourceCode\n \n \n \n \n \n \n \n \n disableSourceCode: boolean\n\n \n \n\n\n \n \n Type : boolean\n\n \n \n\n \n \n Optional\n \n \n\n\n\n\n \n \n \n \n \n \n \n disableStyleTab\n \n \n \n \n \n \n \n \n disableStyleTab: boolean\n\n \n \n\n\n \n \n Type : boolean\n\n \n \n\n \n \n Optional\n \n \n\n\n\n\n \n \n \n \n \n \n \n disableTemplateTab\n \n \n \n \n \n \n \n \n disableTemplateTab: boolean\n\n \n \n\n\n \n \n Type : boolean\n\n \n \n\n \n \n Optional\n \n \n\n\n\n\n \n \n \n \n \n \n \n hideDarkModeToggle\n \n \n \n \n \n \n \n \n hideDarkModeToggle: boolean\n\n \n \n\n\n \n \n Type : boolean\n\n \n \n\n \n \n Optional\n \n \n\n\n\n\n \n \n \n \n \n \n \n hideGenerator\n \n \n \n \n \n \n \n \n hideGenerator: boolean\n\n \n \n\n\n \n \n Type : boolean\n\n \n \n\n \n \n Optional\n \n \n\n\n\n\n \n \n \n \n \n \n \n includes\n \n \n \n \n \n \n \n \n includes: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n \n \n Optional\n \n \n\n\n\n\n \n \n \n \n \n \n \n includesName\n \n \n \n \n \n \n \n \n includesName: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n \n \n Optional\n \n \n\n\n\n\n \n \n \n \n \n \n \n minimal\n \n \n \n \n \n \n \n \n minimal: boolean\n\n \n \n\n\n \n \n Type : boolean\n\n \n \n\n \n \n Optional\n \n \n\n\n\n\n \n \n \n \n\n\n \n import { Component, OnInit, ViewChild, ElementRef, OnDestroy } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { TemplateEditorService } from './template-editor.service';\nimport { ZipExportService } from './zip-export.service';\nimport { HbsRenderService } from './hbs-render.service';\n\ninterface Template {\n name: string;\n path: string;\n type: 'template' | 'partial';\n}\n\ninterface Session {\n sessionId: string;\n success: boolean;\n message: string;\n}\n\ninterface CompoDocConfig {\n hideGenerator?: boolean;\n disableSourceCode?: boolean;\n disableGraph?: boolean;\n disableCoverage?: boolean;\n disablePrivate?: boolean;\n disableProtected?: boolean;\n disableInternal?: boolean;\n disableLifeCycleHooks?: boolean;\n disableConstructors?: boolean;\n disableRoutesGraph?: boolean;\n disableSearch?: boolean;\n disableDependencies?: boolean;\n disableProperties?: boolean;\n disableDomTree?: boolean;\n disableTemplateTab?: boolean;\n disableStyleTab?: boolean;\n disableMainGraph?: boolean;\n disableFilePath?: boolean;\n disableOverview?: boolean;\n hideDarkModeToggle?: boolean;\n minimal?: boolean;\n customFavicon?: string;\n includes?: string;\n includesName?: string;\n}\n\n@Component({\n selector: 'template-playground-root',\n template: `\n \n \n Template Playground\n \n Session: {{sessionId.substring(0, 8)}}...\n Saving...\n Last saved: {{lastSaved | date:'short'}}\n \n \n ⚙️ Config\n Reset to Default\n Download Templates\n \n \n\n \n \n CompoDoc Configuration\n \n Hide Generator\n Hide Dark Mode Toggle\n Minimal Mode\n Disable Overview\n Disable File Path\n Disable Source Code\n Disable Graph\n Disable Main Graph\n Disable Routes Graph\n Disable Coverage\n Disable Search\n Disable Dependencies\n Disable Private\n Disable Protected\n Disable Internal\n Disable Lifecycle Hooks\n Disable Constructors\n Disable Properties\n Disable DOM Tree\n Disable Template Tab\n Disable Style Tab\n \n \n\n \n \n \n Templates\n \n \n \n {{template.name}}\n {{template.type}}\n \n \n\n \n Loading templates...\n \n \n \n\n \n \n \n {{selectedFile.path}}\n {{selectedFile.type}}\n \n \n \n\n \n \n Live Preview\n 🔄 Refresh\n \n \n \n \n \n \n `,\n styles: [`\n .template-playground {\n display: flex;\n flex-direction: column;\n height: 100vh;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n }\n\n .template-playground-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 1rem 2rem;\n background: #f8f9fa;\n border-bottom: 1px solid #dee2e6;\n }\n\n .template-playground-status {\n display: flex;\n align-items: center;\n gap: 1rem;\n font-size: 0.875rem;\n }\n\n .session-info {\n color: #6c757d;\n font-family: monospace;\n }\n\n .saving-indicator {\n color: #ffc107;\n font-weight: bold;\n }\n\n .last-saved {\n color: #28a745;\n }\n\n .template-playground-actions {\n display: flex;\n gap: 0.5rem;\n }\n\n .config-panel {\n background: #e9ecef;\n padding: 1rem 2rem;\n border-bottom: 1px solid #dee2e6;\n transition: all 0.3s ease;\n max-height: 200px;\n overflow: hidden;\n }\n\n .config-panel.collapsed {\n max-height: 0;\n padding: 0 2rem;\n }\n\n .config-options {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 0.5rem;\n margin-top: 0.5rem;\n }\n\n .config-options label {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-size: 0.875rem;\n }\n\n .template-playground-body {\n display: flex;\n flex: 1;\n overflow: hidden;\n }\n\n .template-playground-sidebar {\n width: 250px;\n background: #f8f9fa;\n border-right: 1px solid #dee2e6;\n overflow-y: auto;\n }\n\n .template-file-list {\n padding: 1rem;\n }\n\n .template-file-list h3 {\n margin: 0 0 0.5rem 0;\n font-size: 0.875rem;\n font-weight: 600;\n color: #495057;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n }\n\n .file-list {\n list-style: none;\n padding: 0;\n margin: 0 0 1.5rem 0;\n }\n\n .file-list li {\n display: flex;\n align-items: center;\n padding: 0.5rem;\n cursor: pointer;\n border-radius: 4px;\n font-size: 0.875rem;\n transition: background-color 0.15s ease;\n }\n\n .file-list li:hover {\n background: #e9ecef;\n }\n\n .file-list li.active {\n background: #007bff;\n color: white;\n }\n\n .file-icon {\n margin-right: 0.5rem;\n opacity: 0.7;\n }\n\n .file-type {\n margin-left: auto;\n font-size: 0.75rem;\n opacity: 0.7;\n text-transform: uppercase;\n }\n\n .loading-templates {\n text-align: center;\n color: #6c757d;\n font-style: italic;\n padding: 2rem;\n }\n\n .template-playground-main {\n flex: 1;\n display: flex;\n overflow: hidden;\n }\n\n .template-playground-editor {\n width: 50%;\n display: flex;\n flex-direction: column;\n border-right: 1px solid #dee2e6;\n }\n\n .editor-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 0.75rem 1rem;\n background: #f8f9fa;\n border-bottom: 1px solid #dee2e6;\n }\n\n .editor-header h4 {\n margin: 0;\n font-size: 0.875rem;\n font-weight: 600;\n }\n\n .file-type-badge {\n background: #6c757d;\n color: white;\n padding: 0.125rem 0.5rem;\n border-radius: 12px;\n font-size: 0.75rem;\n text-transform: uppercase;\n }\n\n .editor-container {\n flex: 1;\n position: relative;\n }\n\n .template-playground-preview {\n width: 50%;\n display: flex;\n flex-direction: column;\n }\n\n .preview-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 0.75rem 1rem;\n background: #f8f9fa;\n border-bottom: 1px solid #dee2e6;\n }\n\n .preview-header h4 {\n margin: 0;\n font-size: 0.875rem;\n font-weight: 600;\n }\n\n .preview-frame {\n flex: 1;\n border: none;\n background: white;\n }\n\n .btn {\n padding: 0.375rem 0.75rem;\n border: 1px solid transparent;\n border-radius: 0.25rem;\n font-size: 0.875rem;\n font-weight: 500;\n text-decoration: none;\n cursor: pointer;\n transition: all 0.15s ease;\n }\n\n .btn-primary {\n background: #007bff;\n border-color: #007bff;\n color: white;\n }\n\n .btn-primary:hover {\n background: #0056b3;\n border-color: #004085;\n }\n\n .btn-secondary {\n background: #6c757d;\n border-color: #6c757d;\n color: white;\n }\n\n .btn-secondary:hover {\n background: #545b62;\n border-color: #4e555b;\n }\n\n .btn-success {\n background: #28a745;\n border-color: #28a745;\n color: white;\n }\n\n .btn-success:hover {\n background: #1e7e34;\n border-color: #1c7430;\n }\n\n .btn-sm {\n padding: 0.25rem 0.5rem;\n font-size: 0.75rem;\n }\n `]\n})\nexport class TemplatePlaygroundComponent implements OnInit, OnDestroy {\n @ViewChild('editorContainer', { static: true }) editorContainer!: ElementRef;\n @ViewChild('previewFrame', { static: true }) previewFrame!: ElementRef;\n\n sessionId: string = '';\n templates: Template[] = [];\n selectedFile: Template | null = null;\n config: CompoDocConfig = {};\n showConfigPanel: boolean = false;\n saving: boolean = false;\n lastSaved: Date | null = null;\n\n private saveTimeout?: number;\n private readonly SAVE_DELAY = 300; // 300ms debounce\n\n get previewUrl(): string {\n return this.sessionId ? `/api/session/${this.sessionId}/docs/` : '';\n }\n\n constructor(\n private http: HttpClient,\n private editorService: TemplateEditorService,\n private zipService: ZipExportService,\n private hbsService: HbsRenderService\n ) {}\n\n async ngOnInit() {\n try {\n await this.createSession();\n await this.loadSessionTemplates();\n await this.loadSessionConfig();\n this.initializeEditor();\n } catch (error) {\n console.error('Error initializing template playground:', error);\n }\n }\n\n ngOnDestroy() {\n if (this.saveTimeout) {\n clearTimeout(this.saveTimeout);\n }\n }\n\n private async createSession(): Promise {\n const response = await this.http.post('/api/session/create', {}).toPromise();\n if (response && response.success) {\n this.sessionId = response.sessionId;\n console.log('Session created:', this.sessionId);\n } else {\n throw new Error('Failed to create session');\n }\n }\n\n private async loadSessionTemplates(): Promise {\n if (!this.sessionId) return;\n\n const response = await this.http.get(`/api/session/${this.sessionId}/templates`).toPromise();\n if (response && response.success) {\n this.templates = response.templates;\n\n // Auto-select the first template\n if (this.templates.length > 0 && !this.selectedFile) {\n this.selectFile(this.templates[0]);\n }\n }\n }\n\n private async loadSessionConfig(): Promise {\n if (!this.sessionId) return;\n\n const response = await this.http.get(`/api/session/${this.sessionId}/config`).toPromise();\n if (response && response.success) {\n this.config = response.config;\n }\n }\n\n initializeEditor() {\n this.editorService.initializeEditor(this.editorContainer.nativeElement);\n\n // Set up debounced save on content change\n this.editorService.setOnChangeCallback((content: string) => {\n this.scheduleAutoSave(content);\n });\n }\n\n async selectFile(template: Template) {\n this.selectedFile = template;\n\n if (!this.sessionId) return;\n\n try {\n const response = await this.http.get(`/api/session/${this.sessionId}/template/${template.path}`).toPromise();\n if (response && response.success) {\n this.editorService.setEditorContent(response.content, template.type === 'template' ? 'handlebars' : 'handlebars');\n }\n } catch (error) {\n console.error('Error loading template:', error);\n }\n }\n\n private scheduleAutoSave(content: string): void {\n if (!this.selectedFile || !this.sessionId) return;\n\n // Clear existing timeout\n if (this.saveTimeout) {\n clearTimeout(this.saveTimeout);\n }\n\n // Set saving indicator\n this.saving = true;\n\n // Schedule new save\n this.saveTimeout = window.setTimeout(async () => {\n try {\n await this.saveTemplate(content);\n this.saving = false;\n this.lastSaved = new Date();\n } catch (error) {\n console.error('Error saving template:', error);\n this.saving = false;\n }\n }, this.SAVE_DELAY);\n }\n\n private async saveTemplate(content: string): Promise {\n if (!this.selectedFile || !this.sessionId) return;\n\n const response = await this.http.post(`/api/session/${this.sessionId}/template/${this.selectedFile.path}`, {\n content\n }).toPromise();\n\n if (!response || !response.success) {\n throw new Error('Failed to save template');\n }\n }\n\n async updateConfig(): Promise {\n if (!this.sessionId) return;\n\n try {\n const response = await this.http.post(`/api/session/${this.sessionId}/config`, {\n config: this.config\n }).toPromise();\n\n if (response && response.success) {\n // Config updated, documentation will be regenerated automatically\n }\n } catch (error) {\n console.error('Error updating config:', error);\n }\n }\n\n toggleConfigPanel(): void {\n this.showConfigPanel = !this.showConfigPanel;\n }\n\n refreshPreview(): void {\n if (this.previewFrame?.nativeElement) {\n this.previewFrame.nativeElement.src = this.previewFrame.nativeElement.src;\n }\n }\n\n resetToDefault(): void {\n // Implementation for resetting to default templates\n if (confirm('Are you sure you want to reset all templates to their default values? This action cannot be undone.')) {\n // TODO: Implement reset functionality\n console.log('Reset to default templates');\n }\n }\n\n async exportZip(): Promise {\n try {\n if (!this.sessionId) {\n console.error('No active session. Please refresh the page and try again.');\n return;\n }\n\n console.log('Creating template package...');\n\n // Call server-side ZIP creation endpoint for all templates\n const response = await this.http.post(`/api/session/${this.sessionId}/download-all-templates`, {}, {\n responseType: 'blob',\n observe: 'response'\n }).toPromise();\n\n if (!response || !response.body) {\n throw new Error('Failed to create template package');\n }\n\n // Get the ZIP file as a blob\n const zipBlob = response.body;\n\n // Get filename from response headers or construct it\n const contentDisposition = response.headers.get('Content-Disposition');\n let filename = `compodoc-templates-${this.sessionId}.zip`;\n\n if (contentDisposition) {\n const filenameMatch = contentDisposition.match(/filename=\"([^\"]+)\"/);\n if (filenameMatch) {\n filename = filenameMatch[1];\n }\n }\n\n // Create download link and trigger download\n const url = URL.createObjectURL(zipBlob);\n const a = document.createElement('a');\n a.href = url;\n a.download = filename;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n URL.revokeObjectURL(url);\n\n console.log('Template package downloaded successfully!');\n } catch (error) {\n console.error('Error downloading template package:', error);\n }\n }\n\n trackByName(index: number, item: Template): string {\n return item.name;\n }\n}\n\n \n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/CreateBoardInput.html":{"url":"classes/CreateBoardInput.html","title":"class - CreateBoardInput","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n CreateBoardInput\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/graphql/graphql.ts\n \n\n\n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n color\n \n \n Optional\n description\n \n \n title\n \n \n workspace_id\n \n \n \n \n\n\n\n\n\n\n \n \n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n color\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:20\n \n \n\n\n \n \n \n \n \n \n \n \n Optional\n description\n \n \n \n \n \n \n Type : Nullable\n\n \n \n \n \n Defined in src/graphql/graphql.ts:19\n \n \n\n\n \n \n \n \n \n \n \n \n title\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:18\n \n \n\n\n \n \n \n \n \n \n \n \n workspace_id\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:21\n \n \n\n\n \n \n\n\n\n\n\n\n\n\n \n\n\n \n export enum Role {\n Admin = \"Admin\",\n Member = \"Member\",\n Viewer = \"Viewer\"\n}\n\nexport class CreateBoardInput {\n title: string;\n description?: Nullable;\n color: string;\n workspace_id: string;\n}\n\nexport class UpdateBoardInput {\n board_id: string;\n title?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateListInput {\n title: string;\n board_id: string;\n position: number;\n color?: Nullable;\n}\n\nexport class UpdateListInput {\n list_id: string;\n title?: Nullable;\n position?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateCardInput {\n title: string;\n list_id: string;\n description?: Nullable;\n position: number;\n due_date?: Nullable;\n}\n\nexport class UpdateCardInput {\n card_id: string;\n title?: Nullable;\n description?: Nullable;\n position?: Nullable;\n due_date?: Nullable;\n}\n\nexport class CreateLabelInput {\n name: string;\n color: string;\n board_id: string;\n}\n\nexport class UpdateLabelInput {\n label_id: string;\n name?: Nullable;\n color?: Nullable;\n}\n\nexport class LoginInput {\n email: string;\n password: string;\n}\n\nexport class RegisterInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class CreateUserInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class UpdateUserInput {\n user_id: string;\n username?: Nullable;\n email?: Nullable;\n password?: Nullable;\n}\n\nexport class CreateWorkspaceInput {\n name: string;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class UpdateWorkspaceInput {\n name?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class AddWorkspaceMemberInput {\n workspace_id: string;\n user_email: string;\n role?: Nullable;\n}\n\nexport class UpdateMemberRoleInput {\n workspace_id: string;\n user_id: string;\n role: Role;\n}\n\nexport class Board {\n board_id: string;\n title: string;\n description?: Nullable;\n color: string;\n lists: List[];\n workspace_id: string;\n}\n\nexport class List {\n list_id: string;\n title: string;\n position: number;\n color: string;\n board_id: string;\n cards?: Nullable[]>;\n}\n\nexport class Card {\n card_id: string;\n title: string;\n description?: Nullable;\n position: number;\n list_id: string;\n labels?: Nullable[]>;\n due_date?: Nullable;\n comments?: Nullable[]>;\n attachments?: Nullable[]>;\n members?: Nullable[]>;\n}\n\nexport class Comment {\n comment_id: string;\n content: string;\n created_at: DateTime;\n card_id: string;\n user_id: string;\n}\n\nexport class Label {\n label_id: string;\n name: string;\n color: string;\n workspace_id: string;\n}\n\nexport class Attachment {\n attachment_id: string;\n card_id: string;\n url: string;\n filename: string;\n}\n\nexport class CardLabel {\n card_id: string;\n label_id: string;\n}\n\nexport class CardMember {\n card_id: string;\n user_id: string;\n}\n\nexport abstract class IQuery {\n abstract boards(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract board(board_id: string): Nullable | Promise>;\n\n abstract lists(board_id: string): Nullable[]> | Promise[]>>;\n\n abstract list(list_id: string): Nullable | Promise>;\n\n abstract cards(list_id: string): Nullable[]> | Promise[]>>;\n\n abstract card(card_id: string): Nullable | Promise>;\n\n abstract labels(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract comments(card_id: string): Nullable[]> | Promise[]>>;\n\n abstract users(): Nullable[]> | Promise[]>>;\n\n abstract user(user_id: string): Nullable | Promise>;\n\n abstract me(): Nullable | Promise>;\n\n abstract workspaces(): Nullable[]> | Promise[]>>;\n\n abstract workspace(workspace_id: string): Nullable | Promise>;\n\n abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise;\n}\n\nexport class CreateBoardPayload {\n board?: Nullable;\n}\n\nexport abstract class IMutation {\n abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise;\n\n abstract updateBoard(input: UpdateBoardInput): Board | Promise;\n\n abstract deleteBoard(board_id: string): Status | Promise;\n\n abstract createList(input: CreateListInput): List | Promise;\n\n abstract updateList(input: UpdateListInput): List | Promise;\n\n abstract deleteList(list_id: string): Status | Promise;\n\n abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise;\n\n abstract createCard(input: CreateCardInput): Card | Promise;\n\n abstract updateCard(input: UpdateCardInput): Card | Promise;\n\n abstract deleteCard(card_id: string): Status | Promise;\n\n abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise;\n\n abstract createLabel(input: CreateLabelInput): Label | Promise;\n\n abstract updateLabel(input: UpdateLabelInput): Label | Promise;\n\n abstract deleteLabel(label_id: string): Status | Promise;\n\n abstract uploadFile(file: Upload): FileResponse | Promise;\n\n abstract createUser(input: CreateUserInput): Nullable | Promise>;\n\n abstract updateUser(input: UpdateUserInput): Nullable | Promise>;\n\n abstract deleteUser(user_id: string): Nullable | Promise>;\n\n abstract login(input: LoginInput): Nullable | Promise>;\n\n abstract register(input: RegisterInput): Nullable | Promise>;\n\n abstract logout(): Status | Promise;\n\n abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise;\n\n abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise;\n\n abstract deleteWorkspace(workspace_id: string): Status | Promise;\n\n abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise;\n\n abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise;\n\n abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise;\n}\n\nexport class Success {\n successMessage?: Nullable;\n}\n\nexport class Error {\n errorMessage: string;\n code?: Nullable;\n}\n\nexport class FileResponse {\n success: boolean;\n url?: Nullable;\n message?: Nullable;\n}\n\nexport class User {\n user_id: string;\n username: string;\n email: string;\n picture?: Nullable;\n created_at: DateTime;\n}\n\nexport class AuthSuccess {\n token: string;\n user: User;\n}\n\nexport class AuthError {\n message: string;\n code?: Nullable;\n field?: Nullable;\n}\n\nexport class Workspace {\n workspace_id: string;\n name: string;\n color: string;\n description?: Nullable;\n owner_id: string;\n owner: User;\n members: WorkspaceMembers[];\n boards?: Nullable[]>;\n labels?: Nullable[]>;\n is_pinned: boolean;\n}\n\nexport class WorkspaceMembers {\n workspace_id: string;\n user_id: string;\n role: string;\n user: User;\n workspace: Workspace;\n}\n\nexport class PinWorkspacePayload {\n workspace: Workspace;\n}\n\nexport type DateTime = any;\nexport type Upload = any;\nexport type Status = Success | Error;\nexport type AuthResult = AuthSuccess | AuthError;\ntype Nullable = T | null;\n\n \n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/CreateBoardPayload.html":{"url":"classes/CreateBoardPayload.html","title":"class - CreateBoardPayload","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n CreateBoardPayload\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/graphql/graphql.ts\n \n\n\n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Optional\n board\n \n \n \n \n\n\n\n\n\n\n \n \n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n Optional\n board\n \n \n \n \n \n \n Type : Nullable\n\n \n \n \n \n Defined in src/graphql/graphql.ts:215\n \n \n\n\n \n \n\n\n\n\n\n\n\n\n \n\n\n \n export enum Role {\n Admin = \"Admin\",\n Member = \"Member\",\n Viewer = \"Viewer\"\n}\n\nexport class CreateBoardInput {\n title: string;\n description?: Nullable;\n color: string;\n workspace_id: string;\n}\n\nexport class UpdateBoardInput {\n board_id: string;\n title?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateListInput {\n title: string;\n board_id: string;\n position: number;\n color?: Nullable;\n}\n\nexport class UpdateListInput {\n list_id: string;\n title?: Nullable;\n position?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateCardInput {\n title: string;\n list_id: string;\n description?: Nullable;\n position: number;\n due_date?: Nullable;\n}\n\nexport class UpdateCardInput {\n card_id: string;\n title?: Nullable;\n description?: Nullable;\n position?: Nullable;\n due_date?: Nullable;\n}\n\nexport class CreateLabelInput {\n name: string;\n color: string;\n board_id: string;\n}\n\nexport class UpdateLabelInput {\n label_id: string;\n name?: Nullable;\n color?: Nullable;\n}\n\nexport class LoginInput {\n email: string;\n password: string;\n}\n\nexport class RegisterInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class CreateUserInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class UpdateUserInput {\n user_id: string;\n username?: Nullable;\n email?: Nullable;\n password?: Nullable;\n}\n\nexport class CreateWorkspaceInput {\n name: string;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class UpdateWorkspaceInput {\n name?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class AddWorkspaceMemberInput {\n workspace_id: string;\n user_email: string;\n role?: Nullable;\n}\n\nexport class UpdateMemberRoleInput {\n workspace_id: string;\n user_id: string;\n role: Role;\n}\n\nexport class Board {\n board_id: string;\n title: string;\n description?: Nullable;\n color: string;\n lists: List[];\n workspace_id: string;\n}\n\nexport class List {\n list_id: string;\n title: string;\n position: number;\n color: string;\n board_id: string;\n cards?: Nullable[]>;\n}\n\nexport class Card {\n card_id: string;\n title: string;\n description?: Nullable;\n position: number;\n list_id: string;\n labels?: Nullable[]>;\n due_date?: Nullable;\n comments?: Nullable[]>;\n attachments?: Nullable[]>;\n members?: Nullable[]>;\n}\n\nexport class Comment {\n comment_id: string;\n content: string;\n created_at: DateTime;\n card_id: string;\n user_id: string;\n}\n\nexport class Label {\n label_id: string;\n name: string;\n color: string;\n workspace_id: string;\n}\n\nexport class Attachment {\n attachment_id: string;\n card_id: string;\n url: string;\n filename: string;\n}\n\nexport class CardLabel {\n card_id: string;\n label_id: string;\n}\n\nexport class CardMember {\n card_id: string;\n user_id: string;\n}\n\nexport abstract class IQuery {\n abstract boards(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract board(board_id: string): Nullable | Promise>;\n\n abstract lists(board_id: string): Nullable[]> | Promise[]>>;\n\n abstract list(list_id: string): Nullable | Promise>;\n\n abstract cards(list_id: string): Nullable[]> | Promise[]>>;\n\n abstract card(card_id: string): Nullable | Promise>;\n\n abstract labels(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract comments(card_id: string): Nullable[]> | Promise[]>>;\n\n abstract users(): Nullable[]> | Promise[]>>;\n\n abstract user(user_id: string): Nullable | Promise>;\n\n abstract me(): Nullable | Promise>;\n\n abstract workspaces(): Nullable[]> | Promise[]>>;\n\n abstract workspace(workspace_id: string): Nullable | Promise>;\n\n abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise;\n}\n\nexport class CreateBoardPayload {\n board?: Nullable;\n}\n\nexport abstract class IMutation {\n abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise;\n\n abstract updateBoard(input: UpdateBoardInput): Board | Promise;\n\n abstract deleteBoard(board_id: string): Status | Promise;\n\n abstract createList(input: CreateListInput): List | Promise;\n\n abstract updateList(input: UpdateListInput): List | Promise;\n\n abstract deleteList(list_id: string): Status | Promise;\n\n abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise;\n\n abstract createCard(input: CreateCardInput): Card | Promise;\n\n abstract updateCard(input: UpdateCardInput): Card | Promise;\n\n abstract deleteCard(card_id: string): Status | Promise;\n\n abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise;\n\n abstract createLabel(input: CreateLabelInput): Label | Promise;\n\n abstract updateLabel(input: UpdateLabelInput): Label | Promise;\n\n abstract deleteLabel(label_id: string): Status | Promise;\n\n abstract uploadFile(file: Upload): FileResponse | Promise;\n\n abstract createUser(input: CreateUserInput): Nullable | Promise>;\n\n abstract updateUser(input: UpdateUserInput): Nullable | Promise>;\n\n abstract deleteUser(user_id: string): Nullable | Promise>;\n\n abstract login(input: LoginInput): Nullable | Promise>;\n\n abstract register(input: RegisterInput): Nullable | Promise>;\n\n abstract logout(): Status | Promise;\n\n abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise;\n\n abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise;\n\n abstract deleteWorkspace(workspace_id: string): Status | Promise;\n\n abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise;\n\n abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise;\n\n abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise;\n}\n\nexport class Success {\n successMessage?: Nullable;\n}\n\nexport class Error {\n errorMessage: string;\n code?: Nullable;\n}\n\nexport class FileResponse {\n success: boolean;\n url?: Nullable;\n message?: Nullable;\n}\n\nexport class User {\n user_id: string;\n username: string;\n email: string;\n picture?: Nullable;\n created_at: DateTime;\n}\n\nexport class AuthSuccess {\n token: string;\n user: User;\n}\n\nexport class AuthError {\n message: string;\n code?: Nullable;\n field?: Nullable;\n}\n\nexport class Workspace {\n workspace_id: string;\n name: string;\n color: string;\n description?: Nullable;\n owner_id: string;\n owner: User;\n members: WorkspaceMembers[];\n boards?: Nullable[]>;\n labels?: Nullable[]>;\n is_pinned: boolean;\n}\n\nexport class WorkspaceMembers {\n workspace_id: string;\n user_id: string;\n role: string;\n user: User;\n workspace: Workspace;\n}\n\nexport class PinWorkspacePayload {\n workspace: Workspace;\n}\n\nexport type DateTime = any;\nexport type Upload = any;\nexport type Status = Success | Error;\nexport type AuthResult = AuthSuccess | AuthError;\ntype Nullable = T | null;\n\n \n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/CreateCardInput.html":{"url":"classes/CreateCardInput.html","title":"class - CreateCardInput","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n CreateCardInput\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/graphql/graphql.ts\n \n\n\n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Optional\n description\n \n \n Optional\n due_date\n \n \n list_id\n \n \n position\n \n \n title\n \n \n \n \n\n\n\n\n\n\n \n \n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n Optional\n description\n \n \n \n \n \n \n Type : Nullable\n\n \n \n \n \n Defined in src/graphql/graphql.ts:48\n \n \n\n\n \n \n \n \n \n \n \n \n Optional\n due_date\n \n \n \n \n \n \n Type : Nullable\n\n \n \n \n \n Defined in src/graphql/graphql.ts:50\n \n \n\n\n \n \n \n \n \n \n \n \n list_id\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:47\n \n \n\n\n \n \n \n \n \n \n \n \n position\n \n \n \n \n \n \n Type : number\n\n \n \n \n \n Defined in src/graphql/graphql.ts:49\n \n \n\n\n \n \n \n \n \n \n \n \n title\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:46\n \n \n\n\n \n \n\n\n\n\n\n\n\n\n \n\n\n \n export enum Role {\n Admin = \"Admin\",\n Member = \"Member\",\n Viewer = \"Viewer\"\n}\n\nexport class CreateBoardInput {\n title: string;\n description?: Nullable;\n color: string;\n workspace_id: string;\n}\n\nexport class UpdateBoardInput {\n board_id: string;\n title?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateListInput {\n title: string;\n board_id: string;\n position: number;\n color?: Nullable;\n}\n\nexport class UpdateListInput {\n list_id: string;\n title?: Nullable;\n position?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateCardInput {\n title: string;\n list_id: string;\n description?: Nullable;\n position: number;\n due_date?: Nullable;\n}\n\nexport class UpdateCardInput {\n card_id: string;\n title?: Nullable;\n description?: Nullable;\n position?: Nullable;\n due_date?: Nullable;\n}\n\nexport class CreateLabelInput {\n name: string;\n color: string;\n board_id: string;\n}\n\nexport class UpdateLabelInput {\n label_id: string;\n name?: Nullable;\n color?: Nullable;\n}\n\nexport class LoginInput {\n email: string;\n password: string;\n}\n\nexport class RegisterInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class CreateUserInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class UpdateUserInput {\n user_id: string;\n username?: Nullable;\n email?: Nullable;\n password?: Nullable;\n}\n\nexport class CreateWorkspaceInput {\n name: string;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class UpdateWorkspaceInput {\n name?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class AddWorkspaceMemberInput {\n workspace_id: string;\n user_email: string;\n role?: Nullable;\n}\n\nexport class UpdateMemberRoleInput {\n workspace_id: string;\n user_id: string;\n role: Role;\n}\n\nexport class Board {\n board_id: string;\n title: string;\n description?: Nullable;\n color: string;\n lists: List[];\n workspace_id: string;\n}\n\nexport class List {\n list_id: string;\n title: string;\n position: number;\n color: string;\n board_id: string;\n cards?: Nullable[]>;\n}\n\nexport class Card {\n card_id: string;\n title: string;\n description?: Nullable;\n position: number;\n list_id: string;\n labels?: Nullable[]>;\n due_date?: Nullable;\n comments?: Nullable[]>;\n attachments?: Nullable[]>;\n members?: Nullable[]>;\n}\n\nexport class Comment {\n comment_id: string;\n content: string;\n created_at: DateTime;\n card_id: string;\n user_id: string;\n}\n\nexport class Label {\n label_id: string;\n name: string;\n color: string;\n workspace_id: string;\n}\n\nexport class Attachment {\n attachment_id: string;\n card_id: string;\n url: string;\n filename: string;\n}\n\nexport class CardLabel {\n card_id: string;\n label_id: string;\n}\n\nexport class CardMember {\n card_id: string;\n user_id: string;\n}\n\nexport abstract class IQuery {\n abstract boards(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract board(board_id: string): Nullable | Promise>;\n\n abstract lists(board_id: string): Nullable[]> | Promise[]>>;\n\n abstract list(list_id: string): Nullable | Promise>;\n\n abstract cards(list_id: string): Nullable[]> | Promise[]>>;\n\n abstract card(card_id: string): Nullable | Promise>;\n\n abstract labels(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract comments(card_id: string): Nullable[]> | Promise[]>>;\n\n abstract users(): Nullable[]> | Promise[]>>;\n\n abstract user(user_id: string): Nullable | Promise>;\n\n abstract me(): Nullable | Promise>;\n\n abstract workspaces(): Nullable[]> | Promise[]>>;\n\n abstract workspace(workspace_id: string): Nullable | Promise>;\n\n abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise;\n}\n\nexport class CreateBoardPayload {\n board?: Nullable;\n}\n\nexport abstract class IMutation {\n abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise;\n\n abstract updateBoard(input: UpdateBoardInput): Board | Promise;\n\n abstract deleteBoard(board_id: string): Status | Promise;\n\n abstract createList(input: CreateListInput): List | Promise;\n\n abstract updateList(input: UpdateListInput): List | Promise;\n\n abstract deleteList(list_id: string): Status | Promise;\n\n abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise;\n\n abstract createCard(input: CreateCardInput): Card | Promise;\n\n abstract updateCard(input: UpdateCardInput): Card | Promise;\n\n abstract deleteCard(card_id: string): Status | Promise;\n\n abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise;\n\n abstract createLabel(input: CreateLabelInput): Label | Promise;\n\n abstract updateLabel(input: UpdateLabelInput): Label | Promise;\n\n abstract deleteLabel(label_id: string): Status | Promise;\n\n abstract uploadFile(file: Upload): FileResponse | Promise;\n\n abstract createUser(input: CreateUserInput): Nullable | Promise>;\n\n abstract updateUser(input: UpdateUserInput): Nullable | Promise>;\n\n abstract deleteUser(user_id: string): Nullable | Promise>;\n\n abstract login(input: LoginInput): Nullable | Promise>;\n\n abstract register(input: RegisterInput): Nullable | Promise>;\n\n abstract logout(): Status | Promise;\n\n abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise;\n\n abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise;\n\n abstract deleteWorkspace(workspace_id: string): Status | Promise;\n\n abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise;\n\n abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise;\n\n abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise;\n}\n\nexport class Success {\n successMessage?: Nullable;\n}\n\nexport class Error {\n errorMessage: string;\n code?: Nullable;\n}\n\nexport class FileResponse {\n success: boolean;\n url?: Nullable;\n message?: Nullable;\n}\n\nexport class User {\n user_id: string;\n username: string;\n email: string;\n picture?: Nullable;\n created_at: DateTime;\n}\n\nexport class AuthSuccess {\n token: string;\n user: User;\n}\n\nexport class AuthError {\n message: string;\n code?: Nullable;\n field?: Nullable;\n}\n\nexport class Workspace {\n workspace_id: string;\n name: string;\n color: string;\n description?: Nullable;\n owner_id: string;\n owner: User;\n members: WorkspaceMembers[];\n boards?: Nullable[]>;\n labels?: Nullable[]>;\n is_pinned: boolean;\n}\n\nexport class WorkspaceMembers {\n workspace_id: string;\n user_id: string;\n role: string;\n user: User;\n workspace: Workspace;\n}\n\nexport class PinWorkspacePayload {\n workspace: Workspace;\n}\n\nexport type DateTime = any;\nexport type Upload = any;\nexport type Status = Success | Error;\nexport type AuthResult = AuthSuccess | AuthError;\ntype Nullable = T | null;\n\n \n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/CreateLabelInput.html":{"url":"classes/CreateLabelInput.html","title":"class - CreateLabelInput","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n CreateLabelInput\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/graphql/graphql.ts\n \n\n\n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n board_id\n \n \n color\n \n \n name\n \n \n \n \n\n\n\n\n\n\n \n \n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n board_id\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:64\n \n \n\n\n \n \n \n \n \n \n \n \n color\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:63\n \n \n\n\n \n \n \n \n \n \n \n \n name\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:62\n \n \n\n\n \n \n\n\n\n\n\n\n\n\n \n\n\n \n export enum Role {\n Admin = \"Admin\",\n Member = \"Member\",\n Viewer = \"Viewer\"\n}\n\nexport class CreateBoardInput {\n title: string;\n description?: Nullable;\n color: string;\n workspace_id: string;\n}\n\nexport class UpdateBoardInput {\n board_id: string;\n title?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateListInput {\n title: string;\n board_id: string;\n position: number;\n color?: Nullable;\n}\n\nexport class UpdateListInput {\n list_id: string;\n title?: Nullable;\n position?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateCardInput {\n title: string;\n list_id: string;\n description?: Nullable;\n position: number;\n due_date?: Nullable;\n}\n\nexport class UpdateCardInput {\n card_id: string;\n title?: Nullable;\n description?: Nullable;\n position?: Nullable;\n due_date?: Nullable;\n}\n\nexport class CreateLabelInput {\n name: string;\n color: string;\n board_id: string;\n}\n\nexport class UpdateLabelInput {\n label_id: string;\n name?: Nullable;\n color?: Nullable;\n}\n\nexport class LoginInput {\n email: string;\n password: string;\n}\n\nexport class RegisterInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class CreateUserInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class UpdateUserInput {\n user_id: string;\n username?: Nullable;\n email?: Nullable;\n password?: Nullable;\n}\n\nexport class CreateWorkspaceInput {\n name: string;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class UpdateWorkspaceInput {\n name?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class AddWorkspaceMemberInput {\n workspace_id: string;\n user_email: string;\n role?: Nullable;\n}\n\nexport class UpdateMemberRoleInput {\n workspace_id: string;\n user_id: string;\n role: Role;\n}\n\nexport class Board {\n board_id: string;\n title: string;\n description?: Nullable;\n color: string;\n lists: List[];\n workspace_id: string;\n}\n\nexport class List {\n list_id: string;\n title: string;\n position: number;\n color: string;\n board_id: string;\n cards?: Nullable[]>;\n}\n\nexport class Card {\n card_id: string;\n title: string;\n description?: Nullable;\n position: number;\n list_id: string;\n labels?: Nullable[]>;\n due_date?: Nullable;\n comments?: Nullable[]>;\n attachments?: Nullable[]>;\n members?: Nullable[]>;\n}\n\nexport class Comment {\n comment_id: string;\n content: string;\n created_at: DateTime;\n card_id: string;\n user_id: string;\n}\n\nexport class Label {\n label_id: string;\n name: string;\n color: string;\n workspace_id: string;\n}\n\nexport class Attachment {\n attachment_id: string;\n card_id: string;\n url: string;\n filename: string;\n}\n\nexport class CardLabel {\n card_id: string;\n label_id: string;\n}\n\nexport class CardMember {\n card_id: string;\n user_id: string;\n}\n\nexport abstract class IQuery {\n abstract boards(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract board(board_id: string): Nullable | Promise>;\n\n abstract lists(board_id: string): Nullable[]> | Promise[]>>;\n\n abstract list(list_id: string): Nullable | Promise>;\n\n abstract cards(list_id: string): Nullable[]> | Promise[]>>;\n\n abstract card(card_id: string): Nullable | Promise>;\n\n abstract labels(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract comments(card_id: string): Nullable[]> | Promise[]>>;\n\n abstract users(): Nullable[]> | Promise[]>>;\n\n abstract user(user_id: string): Nullable | Promise>;\n\n abstract me(): Nullable | Promise>;\n\n abstract workspaces(): Nullable[]> | Promise[]>>;\n\n abstract workspace(workspace_id: string): Nullable | Promise>;\n\n abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise;\n}\n\nexport class CreateBoardPayload {\n board?: Nullable;\n}\n\nexport abstract class IMutation {\n abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise;\n\n abstract updateBoard(input: UpdateBoardInput): Board | Promise;\n\n abstract deleteBoard(board_id: string): Status | Promise;\n\n abstract createList(input: CreateListInput): List | Promise;\n\n abstract updateList(input: UpdateListInput): List | Promise;\n\n abstract deleteList(list_id: string): Status | Promise;\n\n abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise;\n\n abstract createCard(input: CreateCardInput): Card | Promise;\n\n abstract updateCard(input: UpdateCardInput): Card | Promise;\n\n abstract deleteCard(card_id: string): Status | Promise;\n\n abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise;\n\n abstract createLabel(input: CreateLabelInput): Label | Promise;\n\n abstract updateLabel(input: UpdateLabelInput): Label | Promise;\n\n abstract deleteLabel(label_id: string): Status | Promise;\n\n abstract uploadFile(file: Upload): FileResponse | Promise;\n\n abstract createUser(input: CreateUserInput): Nullable | Promise>;\n\n abstract updateUser(input: UpdateUserInput): Nullable | Promise>;\n\n abstract deleteUser(user_id: string): Nullable | Promise>;\n\n abstract login(input: LoginInput): Nullable | Promise>;\n\n abstract register(input: RegisterInput): Nullable | Promise>;\n\n abstract logout(): Status | Promise;\n\n abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise;\n\n abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise;\n\n abstract deleteWorkspace(workspace_id: string): Status | Promise;\n\n abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise;\n\n abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise;\n\n abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise;\n}\n\nexport class Success {\n successMessage?: Nullable;\n}\n\nexport class Error {\n errorMessage: string;\n code?: Nullable;\n}\n\nexport class FileResponse {\n success: boolean;\n url?: Nullable;\n message?: Nullable;\n}\n\nexport class User {\n user_id: string;\n username: string;\n email: string;\n picture?: Nullable;\n created_at: DateTime;\n}\n\nexport class AuthSuccess {\n token: string;\n user: User;\n}\n\nexport class AuthError {\n message: string;\n code?: Nullable;\n field?: Nullable;\n}\n\nexport class Workspace {\n workspace_id: string;\n name: string;\n color: string;\n description?: Nullable;\n owner_id: string;\n owner: User;\n members: WorkspaceMembers[];\n boards?: Nullable[]>;\n labels?: Nullable[]>;\n is_pinned: boolean;\n}\n\nexport class WorkspaceMembers {\n workspace_id: string;\n user_id: string;\n role: string;\n user: User;\n workspace: Workspace;\n}\n\nexport class PinWorkspacePayload {\n workspace: Workspace;\n}\n\nexport type DateTime = any;\nexport type Upload = any;\nexport type Status = Success | Error;\nexport type AuthResult = AuthSuccess | AuthError;\ntype Nullable = T | null;\n\n \n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/CreateListInput.html":{"url":"classes/CreateListInput.html","title":"class - CreateListInput","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n CreateListInput\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/graphql/graphql.ts\n \n\n\n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n board_id\n \n \n Optional\n color\n \n \n position\n \n \n title\n \n \n \n \n\n\n\n\n\n\n \n \n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n board_id\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:33\n \n \n\n\n \n \n \n \n \n \n \n \n Optional\n color\n \n \n \n \n \n \n Type : Nullable\n\n \n \n \n \n Defined in src/graphql/graphql.ts:35\n \n \n\n\n \n \n \n \n \n \n \n \n position\n \n \n \n \n \n \n Type : number\n\n \n \n \n \n Defined in src/graphql/graphql.ts:34\n \n \n\n\n \n \n \n \n \n \n \n \n title\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:32\n \n \n\n\n \n \n\n\n\n\n\n\n\n\n \n\n\n \n export enum Role {\n Admin = \"Admin\",\n Member = \"Member\",\n Viewer = \"Viewer\"\n}\n\nexport class CreateBoardInput {\n title: string;\n description?: Nullable;\n color: string;\n workspace_id: string;\n}\n\nexport class UpdateBoardInput {\n board_id: string;\n title?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateListInput {\n title: string;\n board_id: string;\n position: number;\n color?: Nullable;\n}\n\nexport class UpdateListInput {\n list_id: string;\n title?: Nullable;\n position?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateCardInput {\n title: string;\n list_id: string;\n description?: Nullable;\n position: number;\n due_date?: Nullable;\n}\n\nexport class UpdateCardInput {\n card_id: string;\n title?: Nullable;\n description?: Nullable;\n position?: Nullable;\n due_date?: Nullable;\n}\n\nexport class CreateLabelInput {\n name: string;\n color: string;\n board_id: string;\n}\n\nexport class UpdateLabelInput {\n label_id: string;\n name?: Nullable;\n color?: Nullable;\n}\n\nexport class LoginInput {\n email: string;\n password: string;\n}\n\nexport class RegisterInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class CreateUserInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class UpdateUserInput {\n user_id: string;\n username?: Nullable;\n email?: Nullable;\n password?: Nullable;\n}\n\nexport class CreateWorkspaceInput {\n name: string;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class UpdateWorkspaceInput {\n name?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class AddWorkspaceMemberInput {\n workspace_id: string;\n user_email: string;\n role?: Nullable;\n}\n\nexport class UpdateMemberRoleInput {\n workspace_id: string;\n user_id: string;\n role: Role;\n}\n\nexport class Board {\n board_id: string;\n title: string;\n description?: Nullable;\n color: string;\n lists: List[];\n workspace_id: string;\n}\n\nexport class List {\n list_id: string;\n title: string;\n position: number;\n color: string;\n board_id: string;\n cards?: Nullable[]>;\n}\n\nexport class Card {\n card_id: string;\n title: string;\n description?: Nullable;\n position: number;\n list_id: string;\n labels?: Nullable[]>;\n due_date?: Nullable;\n comments?: Nullable[]>;\n attachments?: Nullable[]>;\n members?: Nullable[]>;\n}\n\nexport class Comment {\n comment_id: string;\n content: string;\n created_at: DateTime;\n card_id: string;\n user_id: string;\n}\n\nexport class Label {\n label_id: string;\n name: string;\n color: string;\n workspace_id: string;\n}\n\nexport class Attachment {\n attachment_id: string;\n card_id: string;\n url: string;\n filename: string;\n}\n\nexport class CardLabel {\n card_id: string;\n label_id: string;\n}\n\nexport class CardMember {\n card_id: string;\n user_id: string;\n}\n\nexport abstract class IQuery {\n abstract boards(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract board(board_id: string): Nullable | Promise>;\n\n abstract lists(board_id: string): Nullable[]> | Promise[]>>;\n\n abstract list(list_id: string): Nullable | Promise>;\n\n abstract cards(list_id: string): Nullable[]> | Promise[]>>;\n\n abstract card(card_id: string): Nullable | Promise>;\n\n abstract labels(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract comments(card_id: string): Nullable[]> | Promise[]>>;\n\n abstract users(): Nullable[]> | Promise[]>>;\n\n abstract user(user_id: string): Nullable | Promise>;\n\n abstract me(): Nullable | Promise>;\n\n abstract workspaces(): Nullable[]> | Promise[]>>;\n\n abstract workspace(workspace_id: string): Nullable | Promise>;\n\n abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise;\n}\n\nexport class CreateBoardPayload {\n board?: Nullable;\n}\n\nexport abstract class IMutation {\n abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise;\n\n abstract updateBoard(input: UpdateBoardInput): Board | Promise;\n\n abstract deleteBoard(board_id: string): Status | Promise;\n\n abstract createList(input: CreateListInput): List | Promise;\n\n abstract updateList(input: UpdateListInput): List | Promise;\n\n abstract deleteList(list_id: string): Status | Promise;\n\n abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise;\n\n abstract createCard(input: CreateCardInput): Card | Promise;\n\n abstract updateCard(input: UpdateCardInput): Card | Promise;\n\n abstract deleteCard(card_id: string): Status | Promise;\n\n abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise;\n\n abstract createLabel(input: CreateLabelInput): Label | Promise;\n\n abstract updateLabel(input: UpdateLabelInput): Label | Promise;\n\n abstract deleteLabel(label_id: string): Status | Promise;\n\n abstract uploadFile(file: Upload): FileResponse | Promise;\n\n abstract createUser(input: CreateUserInput): Nullable | Promise>;\n\n abstract updateUser(input: UpdateUserInput): Nullable | Promise>;\n\n abstract deleteUser(user_id: string): Nullable | Promise>;\n\n abstract login(input: LoginInput): Nullable | Promise>;\n\n abstract register(input: RegisterInput): Nullable | Promise>;\n\n abstract logout(): Status | Promise;\n\n abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise;\n\n abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise;\n\n abstract deleteWorkspace(workspace_id: string): Status | Promise;\n\n abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise;\n\n abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise;\n\n abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise;\n}\n\nexport class Success {\n successMessage?: Nullable;\n}\n\nexport class Error {\n errorMessage: string;\n code?: Nullable;\n}\n\nexport class FileResponse {\n success: boolean;\n url?: Nullable;\n message?: Nullable;\n}\n\nexport class User {\n user_id: string;\n username: string;\n email: string;\n picture?: Nullable;\n created_at: DateTime;\n}\n\nexport class AuthSuccess {\n token: string;\n user: User;\n}\n\nexport class AuthError {\n message: string;\n code?: Nullable;\n field?: Nullable;\n}\n\nexport class Workspace {\n workspace_id: string;\n name: string;\n color: string;\n description?: Nullable;\n owner_id: string;\n owner: User;\n members: WorkspaceMembers[];\n boards?: Nullable[]>;\n labels?: Nullable[]>;\n is_pinned: boolean;\n}\n\nexport class WorkspaceMembers {\n workspace_id: string;\n user_id: string;\n role: string;\n user: User;\n workspace: Workspace;\n}\n\nexport class PinWorkspacePayload {\n workspace: Workspace;\n}\n\nexport type DateTime = any;\nexport type Upload = any;\nexport type Status = Success | Error;\nexport type AuthResult = AuthSuccess | AuthError;\ntype Nullable = T | null;\n\n \n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/CreateUserInput.html":{"url":"classes/CreateUserInput.html","title":"class - CreateUserInput","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n CreateUserInput\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/graphql/graphql.ts\n \n\n\n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n email\n \n \n password\n \n \n username\n \n \n \n \n\n\n\n\n\n\n \n \n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n email\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:86\n \n \n\n\n \n \n \n \n \n \n \n \n password\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:87\n \n \n\n\n \n \n \n \n \n \n \n \n username\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:85\n \n \n\n\n \n \n\n\n\n\n\n\n\n\n \n\n\n \n export enum Role {\n Admin = \"Admin\",\n Member = \"Member\",\n Viewer = \"Viewer\"\n}\n\nexport class CreateBoardInput {\n title: string;\n description?: Nullable;\n color: string;\n workspace_id: string;\n}\n\nexport class UpdateBoardInput {\n board_id: string;\n title?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateListInput {\n title: string;\n board_id: string;\n position: number;\n color?: Nullable;\n}\n\nexport class UpdateListInput {\n list_id: string;\n title?: Nullable;\n position?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateCardInput {\n title: string;\n list_id: string;\n description?: Nullable;\n position: number;\n due_date?: Nullable;\n}\n\nexport class UpdateCardInput {\n card_id: string;\n title?: Nullable;\n description?: Nullable;\n position?: Nullable;\n due_date?: Nullable;\n}\n\nexport class CreateLabelInput {\n name: string;\n color: string;\n board_id: string;\n}\n\nexport class UpdateLabelInput {\n label_id: string;\n name?: Nullable;\n color?: Nullable;\n}\n\nexport class LoginInput {\n email: string;\n password: string;\n}\n\nexport class RegisterInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class CreateUserInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class UpdateUserInput {\n user_id: string;\n username?: Nullable;\n email?: Nullable;\n password?: Nullable;\n}\n\nexport class CreateWorkspaceInput {\n name: string;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class UpdateWorkspaceInput {\n name?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class AddWorkspaceMemberInput {\n workspace_id: string;\n user_email: string;\n role?: Nullable;\n}\n\nexport class UpdateMemberRoleInput {\n workspace_id: string;\n user_id: string;\n role: Role;\n}\n\nexport class Board {\n board_id: string;\n title: string;\n description?: Nullable;\n color: string;\n lists: List[];\n workspace_id: string;\n}\n\nexport class List {\n list_id: string;\n title: string;\n position: number;\n color: string;\n board_id: string;\n cards?: Nullable[]>;\n}\n\nexport class Card {\n card_id: string;\n title: string;\n description?: Nullable;\n position: number;\n list_id: string;\n labels?: Nullable[]>;\n due_date?: Nullable;\n comments?: Nullable[]>;\n attachments?: Nullable[]>;\n members?: Nullable[]>;\n}\n\nexport class Comment {\n comment_id: string;\n content: string;\n created_at: DateTime;\n card_id: string;\n user_id: string;\n}\n\nexport class Label {\n label_id: string;\n name: string;\n color: string;\n workspace_id: string;\n}\n\nexport class Attachment {\n attachment_id: string;\n card_id: string;\n url: string;\n filename: string;\n}\n\nexport class CardLabel {\n card_id: string;\n label_id: string;\n}\n\nexport class CardMember {\n card_id: string;\n user_id: string;\n}\n\nexport abstract class IQuery {\n abstract boards(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract board(board_id: string): Nullable | Promise>;\n\n abstract lists(board_id: string): Nullable[]> | Promise[]>>;\n\n abstract list(list_id: string): Nullable | Promise>;\n\n abstract cards(list_id: string): Nullable[]> | Promise[]>>;\n\n abstract card(card_id: string): Nullable | Promise>;\n\n abstract labels(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract comments(card_id: string): Nullable[]> | Promise[]>>;\n\n abstract users(): Nullable[]> | Promise[]>>;\n\n abstract user(user_id: string): Nullable | Promise>;\n\n abstract me(): Nullable | Promise>;\n\n abstract workspaces(): Nullable[]> | Promise[]>>;\n\n abstract workspace(workspace_id: string): Nullable | Promise>;\n\n abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise;\n}\n\nexport class CreateBoardPayload {\n board?: Nullable;\n}\n\nexport abstract class IMutation {\n abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise;\n\n abstract updateBoard(input: UpdateBoardInput): Board | Promise;\n\n abstract deleteBoard(board_id: string): Status | Promise;\n\n abstract createList(input: CreateListInput): List | Promise;\n\n abstract updateList(input: UpdateListInput): List | Promise;\n\n abstract deleteList(list_id: string): Status | Promise;\n\n abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise;\n\n abstract createCard(input: CreateCardInput): Card | Promise;\n\n abstract updateCard(input: UpdateCardInput): Card | Promise;\n\n abstract deleteCard(card_id: string): Status | Promise;\n\n abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise;\n\n abstract createLabel(input: CreateLabelInput): Label | Promise;\n\n abstract updateLabel(input: UpdateLabelInput): Label | Promise;\n\n abstract deleteLabel(label_id: string): Status | Promise;\n\n abstract uploadFile(file: Upload): FileResponse | Promise;\n\n abstract createUser(input: CreateUserInput): Nullable | Promise>;\n\n abstract updateUser(input: UpdateUserInput): Nullable | Promise>;\n\n abstract deleteUser(user_id: string): Nullable | Promise>;\n\n abstract login(input: LoginInput): Nullable | Promise>;\n\n abstract register(input: RegisterInput): Nullable | Promise>;\n\n abstract logout(): Status | Promise;\n\n abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise;\n\n abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise;\n\n abstract deleteWorkspace(workspace_id: string): Status | Promise;\n\n abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise;\n\n abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise;\n\n abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise;\n}\n\nexport class Success {\n successMessage?: Nullable;\n}\n\nexport class Error {\n errorMessage: string;\n code?: Nullable;\n}\n\nexport class FileResponse {\n success: boolean;\n url?: Nullable;\n message?: Nullable;\n}\n\nexport class User {\n user_id: string;\n username: string;\n email: string;\n picture?: Nullable;\n created_at: DateTime;\n}\n\nexport class AuthSuccess {\n token: string;\n user: User;\n}\n\nexport class AuthError {\n message: string;\n code?: Nullable;\n field?: Nullable;\n}\n\nexport class Workspace {\n workspace_id: string;\n name: string;\n color: string;\n description?: Nullable;\n owner_id: string;\n owner: User;\n members: WorkspaceMembers[];\n boards?: Nullable[]>;\n labels?: Nullable[]>;\n is_pinned: boolean;\n}\n\nexport class WorkspaceMembers {\n workspace_id: string;\n user_id: string;\n role: string;\n user: User;\n workspace: Workspace;\n}\n\nexport class PinWorkspacePayload {\n workspace: Workspace;\n}\n\nexport type DateTime = any;\nexport type Upload = any;\nexport type Status = Success | Error;\nexport type AuthResult = AuthSuccess | AuthError;\ntype Nullable = T | null;\n\n \n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/CreateWorkspaceInput.html":{"url":"classes/CreateWorkspaceInput.html","title":"class - CreateWorkspaceInput","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n CreateWorkspaceInput\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/graphql/graphql.ts\n \n\n\n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Optional\n color\n \n \n Optional\n description\n \n \n name\n \n \n \n \n\n\n\n\n\n\n \n \n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n Optional\n color\n \n \n \n \n \n \n Type : Nullable\n\n \n \n \n \n Defined in src/graphql/graphql.ts:100\n \n \n\n\n \n \n \n \n \n \n \n \n Optional\n description\n \n \n \n \n \n \n Type : Nullable\n\n \n \n \n \n Defined in src/graphql/graphql.ts:99\n \n \n\n\n \n \n \n \n \n \n \n \n name\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:98\n \n \n\n\n \n \n\n\n\n\n\n\n\n\n \n\n\n \n export enum Role {\n Admin = \"Admin\",\n Member = \"Member\",\n Viewer = \"Viewer\"\n}\n\nexport class CreateBoardInput {\n title: string;\n description?: Nullable;\n color: string;\n workspace_id: string;\n}\n\nexport class UpdateBoardInput {\n board_id: string;\n title?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateListInput {\n title: string;\n board_id: string;\n position: number;\n color?: Nullable;\n}\n\nexport class UpdateListInput {\n list_id: string;\n title?: Nullable;\n position?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateCardInput {\n title: string;\n list_id: string;\n description?: Nullable;\n position: number;\n due_date?: Nullable;\n}\n\nexport class UpdateCardInput {\n card_id: string;\n title?: Nullable;\n description?: Nullable;\n position?: Nullable;\n due_date?: Nullable;\n}\n\nexport class CreateLabelInput {\n name: string;\n color: string;\n board_id: string;\n}\n\nexport class UpdateLabelInput {\n label_id: string;\n name?: Nullable;\n color?: Nullable;\n}\n\nexport class LoginInput {\n email: string;\n password: string;\n}\n\nexport class RegisterInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class CreateUserInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class UpdateUserInput {\n user_id: string;\n username?: Nullable;\n email?: Nullable;\n password?: Nullable;\n}\n\nexport class CreateWorkspaceInput {\n name: string;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class UpdateWorkspaceInput {\n name?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class AddWorkspaceMemberInput {\n workspace_id: string;\n user_email: string;\n role?: Nullable;\n}\n\nexport class UpdateMemberRoleInput {\n workspace_id: string;\n user_id: string;\n role: Role;\n}\n\nexport class Board {\n board_id: string;\n title: string;\n description?: Nullable;\n color: string;\n lists: List[];\n workspace_id: string;\n}\n\nexport class List {\n list_id: string;\n title: string;\n position: number;\n color: string;\n board_id: string;\n cards?: Nullable[]>;\n}\n\nexport class Card {\n card_id: string;\n title: string;\n description?: Nullable;\n position: number;\n list_id: string;\n labels?: Nullable[]>;\n due_date?: Nullable;\n comments?: Nullable[]>;\n attachments?: Nullable[]>;\n members?: Nullable[]>;\n}\n\nexport class Comment {\n comment_id: string;\n content: string;\n created_at: DateTime;\n card_id: string;\n user_id: string;\n}\n\nexport class Label {\n label_id: string;\n name: string;\n color: string;\n workspace_id: string;\n}\n\nexport class Attachment {\n attachment_id: string;\n card_id: string;\n url: string;\n filename: string;\n}\n\nexport class CardLabel {\n card_id: string;\n label_id: string;\n}\n\nexport class CardMember {\n card_id: string;\n user_id: string;\n}\n\nexport abstract class IQuery {\n abstract boards(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract board(board_id: string): Nullable | Promise>;\n\n abstract lists(board_id: string): Nullable[]> | Promise[]>>;\n\n abstract list(list_id: string): Nullable | Promise>;\n\n abstract cards(list_id: string): Nullable[]> | Promise[]>>;\n\n abstract card(card_id: string): Nullable | Promise>;\n\n abstract labels(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract comments(card_id: string): Nullable[]> | Promise[]>>;\n\n abstract users(): Nullable[]> | Promise[]>>;\n\n abstract user(user_id: string): Nullable | Promise>;\n\n abstract me(): Nullable | Promise>;\n\n abstract workspaces(): Nullable[]> | Promise[]>>;\n\n abstract workspace(workspace_id: string): Nullable | Promise>;\n\n abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise;\n}\n\nexport class CreateBoardPayload {\n board?: Nullable;\n}\n\nexport abstract class IMutation {\n abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise;\n\n abstract updateBoard(input: UpdateBoardInput): Board | Promise;\n\n abstract deleteBoard(board_id: string): Status | Promise;\n\n abstract createList(input: CreateListInput): List | Promise;\n\n abstract updateList(input: UpdateListInput): List | Promise;\n\n abstract deleteList(list_id: string): Status | Promise;\n\n abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise;\n\n abstract createCard(input: CreateCardInput): Card | Promise;\n\n abstract updateCard(input: UpdateCardInput): Card | Promise;\n\n abstract deleteCard(card_id: string): Status | Promise;\n\n abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise;\n\n abstract createLabel(input: CreateLabelInput): Label | Promise;\n\n abstract updateLabel(input: UpdateLabelInput): Label | Promise;\n\n abstract deleteLabel(label_id: string): Status | Promise;\n\n abstract uploadFile(file: Upload): FileResponse | Promise;\n\n abstract createUser(input: CreateUserInput): Nullable | Promise>;\n\n abstract updateUser(input: UpdateUserInput): Nullable | Promise>;\n\n abstract deleteUser(user_id: string): Nullable | Promise>;\n\n abstract login(input: LoginInput): Nullable | Promise>;\n\n abstract register(input: RegisterInput): Nullable | Promise>;\n\n abstract logout(): Status | Promise;\n\n abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise;\n\n abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise;\n\n abstract deleteWorkspace(workspace_id: string): Status | Promise;\n\n abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise;\n\n abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise;\n\n abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise;\n}\n\nexport class Success {\n successMessage?: Nullable;\n}\n\nexport class Error {\n errorMessage: string;\n code?: Nullable;\n}\n\nexport class FileResponse {\n success: boolean;\n url?: Nullable;\n message?: Nullable;\n}\n\nexport class User {\n user_id: string;\n username: string;\n email: string;\n picture?: Nullable;\n created_at: DateTime;\n}\n\nexport class AuthSuccess {\n token: string;\n user: User;\n}\n\nexport class AuthError {\n message: string;\n code?: Nullable;\n field?: Nullable;\n}\n\nexport class Workspace {\n workspace_id: string;\n name: string;\n color: string;\n description?: Nullable;\n owner_id: string;\n owner: User;\n members: WorkspaceMembers[];\n boards?: Nullable[]>;\n labels?: Nullable[]>;\n is_pinned: boolean;\n}\n\nexport class WorkspaceMembers {\n workspace_id: string;\n user_id: string;\n role: string;\n user: User;\n workspace: Workspace;\n}\n\nexport class PinWorkspacePayload {\n workspace: Workspace;\n}\n\nexport type DateTime = any;\nexport type Upload = any;\nexport type Status = Success | Error;\nexport type AuthResult = AuthSuccess | AuthError;\ntype Nullable = T | null;\n\n \n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/Error.html":{"url":"classes/Error.html","title":"class - Error","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n Error\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/graphql/graphql.ts\n \n\n\n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Optional\n code\n \n \n errorMessage\n \n \n \n \n\n\n\n\n\n\n \n \n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n Optional\n code\n \n \n \n \n \n \n Type : Nullable\n\n \n \n \n \n Defined in src/graphql/graphql.ts:284\n \n \n\n\n \n \n \n \n \n \n \n \n errorMessage\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:283\n \n \n\n\n \n \n\n\n\n\n\n\n\n\n \n\n\n \n export enum Role {\n Admin = \"Admin\",\n Member = \"Member\",\n Viewer = \"Viewer\"\n}\n\nexport class CreateBoardInput {\n title: string;\n description?: Nullable;\n color: string;\n workspace_id: string;\n}\n\nexport class UpdateBoardInput {\n board_id: string;\n title?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateListInput {\n title: string;\n board_id: string;\n position: number;\n color?: Nullable;\n}\n\nexport class UpdateListInput {\n list_id: string;\n title?: Nullable;\n position?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateCardInput {\n title: string;\n list_id: string;\n description?: Nullable;\n position: number;\n due_date?: Nullable;\n}\n\nexport class UpdateCardInput {\n card_id: string;\n title?: Nullable;\n description?: Nullable;\n position?: Nullable;\n due_date?: Nullable;\n}\n\nexport class CreateLabelInput {\n name: string;\n color: string;\n board_id: string;\n}\n\nexport class UpdateLabelInput {\n label_id: string;\n name?: Nullable;\n color?: Nullable;\n}\n\nexport class LoginInput {\n email: string;\n password: string;\n}\n\nexport class RegisterInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class CreateUserInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class UpdateUserInput {\n user_id: string;\n username?: Nullable;\n email?: Nullable;\n password?: Nullable;\n}\n\nexport class CreateWorkspaceInput {\n name: string;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class UpdateWorkspaceInput {\n name?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class AddWorkspaceMemberInput {\n workspace_id: string;\n user_email: string;\n role?: Nullable;\n}\n\nexport class UpdateMemberRoleInput {\n workspace_id: string;\n user_id: string;\n role: Role;\n}\n\nexport class Board {\n board_id: string;\n title: string;\n description?: Nullable;\n color: string;\n lists: List[];\n workspace_id: string;\n}\n\nexport class List {\n list_id: string;\n title: string;\n position: number;\n color: string;\n board_id: string;\n cards?: Nullable[]>;\n}\n\nexport class Card {\n card_id: string;\n title: string;\n description?: Nullable;\n position: number;\n list_id: string;\n labels?: Nullable[]>;\n due_date?: Nullable;\n comments?: Nullable[]>;\n attachments?: Nullable[]>;\n members?: Nullable[]>;\n}\n\nexport class Comment {\n comment_id: string;\n content: string;\n created_at: DateTime;\n card_id: string;\n user_id: string;\n}\n\nexport class Label {\n label_id: string;\n name: string;\n color: string;\n workspace_id: string;\n}\n\nexport class Attachment {\n attachment_id: string;\n card_id: string;\n url: string;\n filename: string;\n}\n\nexport class CardLabel {\n card_id: string;\n label_id: string;\n}\n\nexport class CardMember {\n card_id: string;\n user_id: string;\n}\n\nexport abstract class IQuery {\n abstract boards(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract board(board_id: string): Nullable | Promise>;\n\n abstract lists(board_id: string): Nullable[]> | Promise[]>>;\n\n abstract list(list_id: string): Nullable | Promise>;\n\n abstract cards(list_id: string): Nullable[]> | Promise[]>>;\n\n abstract card(card_id: string): Nullable | Promise>;\n\n abstract labels(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract comments(card_id: string): Nullable[]> | Promise[]>>;\n\n abstract users(): Nullable[]> | Promise[]>>;\n\n abstract user(user_id: string): Nullable | Promise>;\n\n abstract me(): Nullable | Promise>;\n\n abstract workspaces(): Nullable[]> | Promise[]>>;\n\n abstract workspace(workspace_id: string): Nullable | Promise>;\n\n abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise;\n}\n\nexport class CreateBoardPayload {\n board?: Nullable;\n}\n\nexport abstract class IMutation {\n abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise;\n\n abstract updateBoard(input: UpdateBoardInput): Board | Promise;\n\n abstract deleteBoard(board_id: string): Status | Promise;\n\n abstract createList(input: CreateListInput): List | Promise;\n\n abstract updateList(input: UpdateListInput): List | Promise;\n\n abstract deleteList(list_id: string): Status | Promise;\n\n abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise;\n\n abstract createCard(input: CreateCardInput): Card | Promise;\n\n abstract updateCard(input: UpdateCardInput): Card | Promise;\n\n abstract deleteCard(card_id: string): Status | Promise;\n\n abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise;\n\n abstract createLabel(input: CreateLabelInput): Label | Promise;\n\n abstract updateLabel(input: UpdateLabelInput): Label | Promise;\n\n abstract deleteLabel(label_id: string): Status | Promise;\n\n abstract uploadFile(file: Upload): FileResponse | Promise;\n\n abstract createUser(input: CreateUserInput): Nullable | Promise>;\n\n abstract updateUser(input: UpdateUserInput): Nullable | Promise>;\n\n abstract deleteUser(user_id: string): Nullable | Promise>;\n\n abstract login(input: LoginInput): Nullable | Promise>;\n\n abstract register(input: RegisterInput): Nullable | Promise>;\n\n abstract logout(): Status | Promise;\n\n abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise;\n\n abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise;\n\n abstract deleteWorkspace(workspace_id: string): Status | Promise;\n\n abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise;\n\n abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise;\n\n abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise;\n}\n\nexport class Success {\n successMessage?: Nullable;\n}\n\nexport class Error {\n errorMessage: string;\n code?: Nullable;\n}\n\nexport class FileResponse {\n success: boolean;\n url?: Nullable;\n message?: Nullable;\n}\n\nexport class User {\n user_id: string;\n username: string;\n email: string;\n picture?: Nullable;\n created_at: DateTime;\n}\n\nexport class AuthSuccess {\n token: string;\n user: User;\n}\n\nexport class AuthError {\n message: string;\n code?: Nullable;\n field?: Nullable;\n}\n\nexport class Workspace {\n workspace_id: string;\n name: string;\n color: string;\n description?: Nullable;\n owner_id: string;\n owner: User;\n members: WorkspaceMembers[];\n boards?: Nullable[]>;\n labels?: Nullable[]>;\n is_pinned: boolean;\n}\n\nexport class WorkspaceMembers {\n workspace_id: string;\n user_id: string;\n role: string;\n user: User;\n workspace: Workspace;\n}\n\nexport class PinWorkspacePayload {\n workspace: Workspace;\n}\n\nexport type DateTime = any;\nexport type Upload = any;\nexport type Status = Success | Error;\nexport type AuthResult = AuthSuccess | AuthError;\ntype Nullable = T | null;\n\n \n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/FileResponse.html":{"url":"classes/FileResponse.html","title":"class - FileResponse","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n FileResponse\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/graphql/graphql.ts\n \n\n\n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Optional\n message\n \n \n success\n \n \n Optional\n url\n \n \n \n \n\n\n\n\n\n\n \n \n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n Optional\n message\n \n \n \n \n \n \n Type : Nullable\n\n \n \n \n \n Defined in src/graphql/graphql.ts:290\n \n \n\n\n \n \n \n \n \n \n \n \n success\n \n \n \n \n \n \n Type : boolean\n\n \n \n \n \n Defined in src/graphql/graphql.ts:288\n \n \n\n\n \n \n \n \n \n \n \n \n Optional\n url\n \n \n \n \n \n \n Type : Nullable\n\n \n \n \n \n Defined in src/graphql/graphql.ts:289\n \n \n\n\n \n \n\n\n\n\n\n\n\n\n \n\n\n \n export enum Role {\n Admin = \"Admin\",\n Member = \"Member\",\n Viewer = \"Viewer\"\n}\n\nexport class CreateBoardInput {\n title: string;\n description?: Nullable;\n color: string;\n workspace_id: string;\n}\n\nexport class UpdateBoardInput {\n board_id: string;\n title?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateListInput {\n title: string;\n board_id: string;\n position: number;\n color?: Nullable;\n}\n\nexport class UpdateListInput {\n list_id: string;\n title?: Nullable;\n position?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateCardInput {\n title: string;\n list_id: string;\n description?: Nullable;\n position: number;\n due_date?: Nullable;\n}\n\nexport class UpdateCardInput {\n card_id: string;\n title?: Nullable;\n description?: Nullable;\n position?: Nullable;\n due_date?: Nullable;\n}\n\nexport class CreateLabelInput {\n name: string;\n color: string;\n board_id: string;\n}\n\nexport class UpdateLabelInput {\n label_id: string;\n name?: Nullable;\n color?: Nullable;\n}\n\nexport class LoginInput {\n email: string;\n password: string;\n}\n\nexport class RegisterInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class CreateUserInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class UpdateUserInput {\n user_id: string;\n username?: Nullable;\n email?: Nullable;\n password?: Nullable;\n}\n\nexport class CreateWorkspaceInput {\n name: string;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class UpdateWorkspaceInput {\n name?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class AddWorkspaceMemberInput {\n workspace_id: string;\n user_email: string;\n role?: Nullable;\n}\n\nexport class UpdateMemberRoleInput {\n workspace_id: string;\n user_id: string;\n role: Role;\n}\n\nexport class Board {\n board_id: string;\n title: string;\n description?: Nullable;\n color: string;\n lists: List[];\n workspace_id: string;\n}\n\nexport class List {\n list_id: string;\n title: string;\n position: number;\n color: string;\n board_id: string;\n cards?: Nullable[]>;\n}\n\nexport class Card {\n card_id: string;\n title: string;\n description?: Nullable;\n position: number;\n list_id: string;\n labels?: Nullable[]>;\n due_date?: Nullable;\n comments?: Nullable[]>;\n attachments?: Nullable[]>;\n members?: Nullable[]>;\n}\n\nexport class Comment {\n comment_id: string;\n content: string;\n created_at: DateTime;\n card_id: string;\n user_id: string;\n}\n\nexport class Label {\n label_id: string;\n name: string;\n color: string;\n workspace_id: string;\n}\n\nexport class Attachment {\n attachment_id: string;\n card_id: string;\n url: string;\n filename: string;\n}\n\nexport class CardLabel {\n card_id: string;\n label_id: string;\n}\n\nexport class CardMember {\n card_id: string;\n user_id: string;\n}\n\nexport abstract class IQuery {\n abstract boards(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract board(board_id: string): Nullable | Promise>;\n\n abstract lists(board_id: string): Nullable[]> | Promise[]>>;\n\n abstract list(list_id: string): Nullable | Promise>;\n\n abstract cards(list_id: string): Nullable[]> | Promise[]>>;\n\n abstract card(card_id: string): Nullable | Promise>;\n\n abstract labels(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract comments(card_id: string): Nullable[]> | Promise[]>>;\n\n abstract users(): Nullable[]> | Promise[]>>;\n\n abstract user(user_id: string): Nullable | Promise>;\n\n abstract me(): Nullable | Promise>;\n\n abstract workspaces(): Nullable[]> | Promise[]>>;\n\n abstract workspace(workspace_id: string): Nullable | Promise>;\n\n abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise;\n}\n\nexport class CreateBoardPayload {\n board?: Nullable;\n}\n\nexport abstract class IMutation {\n abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise;\n\n abstract updateBoard(input: UpdateBoardInput): Board | Promise;\n\n abstract deleteBoard(board_id: string): Status | Promise;\n\n abstract createList(input: CreateListInput): List | Promise;\n\n abstract updateList(input: UpdateListInput): List | Promise;\n\n abstract deleteList(list_id: string): Status | Promise;\n\n abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise;\n\n abstract createCard(input: CreateCardInput): Card | Promise;\n\n abstract updateCard(input: UpdateCardInput): Card | Promise;\n\n abstract deleteCard(card_id: string): Status | Promise;\n\n abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise;\n\n abstract createLabel(input: CreateLabelInput): Label | Promise;\n\n abstract updateLabel(input: UpdateLabelInput): Label | Promise;\n\n abstract deleteLabel(label_id: string): Status | Promise;\n\n abstract uploadFile(file: Upload): FileResponse | Promise;\n\n abstract createUser(input: CreateUserInput): Nullable | Promise>;\n\n abstract updateUser(input: UpdateUserInput): Nullable | Promise>;\n\n abstract deleteUser(user_id: string): Nullable | Promise>;\n\n abstract login(input: LoginInput): Nullable | Promise>;\n\n abstract register(input: RegisterInput): Nullable | Promise>;\n\n abstract logout(): Status | Promise;\n\n abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise;\n\n abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise;\n\n abstract deleteWorkspace(workspace_id: string): Status | Promise;\n\n abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise;\n\n abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise;\n\n abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise;\n}\n\nexport class Success {\n successMessage?: Nullable;\n}\n\nexport class Error {\n errorMessage: string;\n code?: Nullable;\n}\n\nexport class FileResponse {\n success: boolean;\n url?: Nullable;\n message?: Nullable;\n}\n\nexport class User {\n user_id: string;\n username: string;\n email: string;\n picture?: Nullable;\n created_at: DateTime;\n}\n\nexport class AuthSuccess {\n token: string;\n user: User;\n}\n\nexport class AuthError {\n message: string;\n code?: Nullable;\n field?: Nullable;\n}\n\nexport class Workspace {\n workspace_id: string;\n name: string;\n color: string;\n description?: Nullable;\n owner_id: string;\n owner: User;\n members: WorkspaceMembers[];\n boards?: Nullable[]>;\n labels?: Nullable[]>;\n is_pinned: boolean;\n}\n\nexport class WorkspaceMembers {\n workspace_id: string;\n user_id: string;\n role: string;\n user: User;\n workspace: Workspace;\n}\n\nexport class PinWorkspacePayload {\n workspace: Workspace;\n}\n\nexport type DateTime = any;\nexport type Upload = any;\nexport type Status = Success | Error;\nexport type AuthResult = AuthSuccess | AuthError;\ntype Nullable = T | null;\n\n \n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"injectables/HbsRenderService.html":{"url":"injectables/HbsRenderService.html","title":"injectable - HbsRenderService","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n Injectables\n HbsRenderService\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n documentation/template-playground/hbs-render.service.ts\n \n\n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Private\n handlebarsInstance\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n getMockData\n \n \n Private\n initializeHandlebars\n \n \n Private\n registerHelpers\n \n \n renderTemplate\n \n \n \n \n\n\n\n\n\n \n \n\n\n \n Constructor\n \n \n \n \nconstructor()\n \n \n \n \n Defined in documentation/template-playground/hbs-render.service.ts:9\n \n \n\n \n \n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n getMockData\n \n \n \n \n \n \ngetMockData()\n \n \n\n\n \n \n Defined in documentation/template-playground/hbs-render.service.ts:184\n \n \n\n\n \n \n\n \n Returns : any\n\n \n \n \n \n \n \n \n \n \n \n \n Private\n initializeHandlebars\n \n \n \n \n \n \n \n initializeHandlebars()\n \n \n\n\n \n \n Defined in documentation/template-playground/hbs-render.service.ts:15\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n Private\n registerHelpers\n \n \n \n \n \n \n \n registerHelpers()\n \n \n\n\n \n \n Defined in documentation/template-playground/hbs-render.service.ts:23\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n renderTemplate\n \n \n \n \n \n \nrenderTemplate(templateContent: string, data: any)\n \n \n\n\n \n \n Defined in documentation/template-playground/hbs-render.service.ts:131\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n templateContent\n \n string\n \n\n \n No\n \n\n\n \n \n data\n \n any\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : string\n\n \n \n \n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n \n \n Private\n handlebarsInstance\n \n \n \n \n \n \n Type : any\n\n \n \n \n \n Defined in documentation/template-playground/hbs-render.service.ts:9\n \n \n\n\n \n \n\n\n \n\n\n \n import { Injectable } from '@angular/core';\n\ndeclare const Handlebars: any;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HbsRenderService {\n private handlebarsInstance: any;\n\n constructor() {\n this.initializeHandlebars();\n }\n\n private initializeHandlebars() {\n // Create a new Handlebars instance for the playground\n this.handlebarsInstance = Handlebars.create();\n\n // Register common helpers used in Compodoc templates\n this.registerHelpers();\n }\n\n private registerHelpers() {\n // Register the 'compare' helper\n this.handlebarsInstance.registerHelper('compare', (left: any, operator: string, right: any, options: any) => {\n let result;\n switch (operator) {\n case '===':\n result = left === right;\n break;\n case '!==':\n result = left !== right;\n break;\n case '':\n result = left > right;\n break;\n case '=':\n result = left >= right;\n break;\n default:\n result = false;\n }\n return result ? options.fn(this) : options.inverse(this);\n });\n\n // Register the 'unless' helper\n this.handlebarsInstance.registerHelper('unless', (conditional: any, options: any) => {\n return !conditional ? options.fn(this) : options.inverse(this);\n });\n\n // Register the 'each' helper with index\n this.handlebarsInstance.registerHelper('each', (context: any, options: any) => {\n let ret = '';\n for (let i = 0; i {\n return conditional ? options.fn(this) : options.inverse(this);\n });\n\n // Register the 'relativeURL' helper\n this.handlebarsInstance.registerHelper('relativeURL', (depth: number, page?: string) => {\n let url = '';\n for (let i = 0; i {\n // Simple translation mapping for preview\n const translations: { [key: string]: string } = {\n 'info': 'Information',\n 'source': 'Source',\n 'example': 'Example',\n 'template': 'Template',\n 'styles': 'Styles',\n 'component': 'Component',\n 'module': 'Module',\n 'overview': 'Overview',\n 'components': 'Components',\n 'modules': 'Modules',\n 'file': 'File',\n 'description': 'Description',\n 'selector': 'Selector',\n 'properties': 'Properties',\n 'methods': 'Methods',\n 'inputs': 'Inputs',\n 'outputs': 'Outputs'\n };\n return translations[key] || key;\n });\n\n // Register the 'orLength' helper\n this.handlebarsInstance.registerHelper('orLength', (...args: any[]) => {\n const options = args[args.length - 1];\n const values = args.slice(0, -1);\n\n for (const value of values) {\n if (value && value.length && value.length > 0) {\n return options.fn(this);\n }\n }\n return options.inverse(this);\n });\n\n // Register the 'isTabEnabled' helper\n this.handlebarsInstance.registerHelper('isTabEnabled', (navTabs: any[], tabId: string, options: any) => {\n const tab = navTabs && navTabs.find((t: any) => t.id === tabId);\n return tab ? options.fn(this) : options.inverse(this);\n });\n\n // Register the 'isInitialTab' helper\n this.handlebarsInstance.registerHelper('isInitialTab', (navTabs: any[], tabId: string, options: any) => {\n const isInitial = navTabs && navTabs.length > 0 && navTabs[0].id === tabId;\n return isInitial ? options.fn(this) : options.inverse(this);\n });\n }\n\n renderTemplate(templateContent: string, data: any): string {\n try {\n // Create a complete HTML document for preview\n const template = this.handlebarsInstance.compile(templateContent);\n const rendered = template({ data });\n\n // Wrap in a basic HTML structure for preview\n return `\n \n \n \n \n Template Preview\n \n body { font-family: Arial, sans-serif; margin: 20px; }\n .preview-wrapper { border: 1px solid #ddd; padding: 20px; }\n .preview-notice { background: #f0f8ff; padding: 10px; margin-bottom: 20px; border-left: 4px solid #007bff; }\n \n \n \n \n Template Preview: This is a live preview of your template with mock data.\n \n \n ${rendered}\n \n \n \n `;\n } catch (error) {\n return `\n \n \n \n \n Template Preview - Error\n \n body { font-family: Arial, sans-serif; margin: 20px; }\n .error { color: red; background: #fff5f5; padding: 20px; border: 1px solid #red; }\n \n \n \n \n Template Error\n Error: ${error.message}\n Please check your template syntax and try again.\n \n \n \n `;\n }\n }\n\n getMockData(): any {\n return {\n documentationMainName: 'Sample Documentation',\n depth: 0,\n context: 'component',\n components: [\n {\n name: 'SampleComponent',\n selector: 'app-sample',\n file: 'src/app/sample/sample.component.ts',\n description: 'A sample component for demonstration',\n properties: [\n { name: 'title', type: 'string', description: 'The component title' },\n { name: 'isVisible', type: 'boolean', description: 'Whether the component is visible' }\n ],\n methods: [\n { name: 'ngOnInit', description: 'Lifecycle hook', signature: 'ngOnInit(): void' },\n { name: 'onClick', description: 'Handle click events', signature: 'onClick(event: MouseEvent): void' }\n ]\n }\n ],\n navTabs: [\n { id: 'info', label: 'Info', href: '#info' },\n { id: 'source', label: 'Source', href: '#source' },\n { id: 'example', label: 'Example', href: '#example' }\n ]\n };\n }\n}\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/IQuery.html":{"url":"classes/IQuery.html","title":"class - IQuery","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n IQuery\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/graphql/graphql.ts\n \n\n\n\n\n\n\n \n Index\n \n \n\n \n \n Methods\n \n \n \n \n \n \n Abstract\n board\n \n \n Abstract\n boards\n \n \n Abstract\n card\n \n \n Abstract\n cards\n \n \n Abstract\n comments\n \n \n Abstract\n labels\n \n \n Abstract\n list\n \n \n Abstract\n lists\n \n \n Abstract\n me\n \n \n Abstract\n user\n \n \n Abstract\n users\n \n \n Abstract\n workspace\n \n \n Abstract\n workspaceMembers\n \n \n Abstract\n workspaces\n \n \n \n \n\n\n\n\n\n \n \n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n Abstract\n board\n \n \n \n \n \n \n \n board(board_id: string)\n \n \n\n\n \n \n Defined in src/graphql/graphql.ts:187\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n board_id\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : Nullable | Promise\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Abstract\n boards\n \n \n \n \n \n \n \n boards(workspace_id: string)\n \n \n\n\n \n \n Defined in src/graphql/graphql.ts:185\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n workspace_id\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : Nullable | Promise\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Abstract\n card\n \n \n \n \n \n \n \n card(card_id: string)\n \n \n\n\n \n \n Defined in src/graphql/graphql.ts:195\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n card_id\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : Nullable | Promise\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Abstract\n cards\n \n \n \n \n \n \n \n cards(list_id: string)\n \n \n\n\n \n \n Defined in src/graphql/graphql.ts:193\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n list_id\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : Nullable | Promise\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Abstract\n comments\n \n \n \n \n \n \n \n comments(card_id: string)\n \n \n\n\n \n \n Defined in src/graphql/graphql.ts:199\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n card_id\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : Nullable | Promise\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Abstract\n labels\n \n \n \n \n \n \n \n labels(workspace_id: string)\n \n \n\n\n \n \n Defined in src/graphql/graphql.ts:197\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n workspace_id\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : Nullable | Promise\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Abstract\n list\n \n \n \n \n \n \n \n list(list_id: string)\n \n \n\n\n \n \n Defined in src/graphql/graphql.ts:191\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n list_id\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : Nullable | Promise\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Abstract\n lists\n \n \n \n \n \n \n \n lists(board_id: string)\n \n \n\n\n \n \n Defined in src/graphql/graphql.ts:189\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n board_id\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : Nullable | Promise\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Abstract\n me\n \n \n \n \n \n \n \n me()\n \n \n\n\n \n \n Defined in src/graphql/graphql.ts:205\n \n \n\n\n \n \n\n \n Returns : Nullable | Promise\n\n \n \n \n \n \n \n \n \n \n \n \n Abstract\n user\n \n \n \n \n \n \n \n user(user_id: string)\n \n \n\n\n \n \n Defined in src/graphql/graphql.ts:203\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n user_id\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : Nullable | Promise\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Abstract\n users\n \n \n \n \n \n \n \n users()\n \n \n\n\n \n \n Defined in src/graphql/graphql.ts:201\n \n \n\n\n \n \n\n \n Returns : Nullable | Promise\n\n \n \n \n \n \n \n \n \n \n \n \n Abstract\n workspace\n \n \n \n \n \n \n \n workspace(workspace_id: string)\n \n \n\n\n \n \n Defined in src/graphql/graphql.ts:209\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n workspace_id\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : Nullable | Promise\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Abstract\n workspaceMembers\n \n \n \n \n \n \n \n workspaceMembers(workspace_id: string)\n \n \n\n\n \n \n Defined in src/graphql/graphql.ts:211\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n workspace_id\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : [] | Promise\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Abstract\n workspaces\n \n \n \n \n \n \n \n workspaces()\n \n \n\n\n \n \n Defined in src/graphql/graphql.ts:207\n \n \n\n\n \n \n\n \n Returns : Nullable | Promise\n\n \n \n \n \n \n\n\n\n\n\n\n \n\n\n \n export enum Role {\n Admin = \"Admin\",\n Member = \"Member\",\n Viewer = \"Viewer\"\n}\n\nexport class CreateBoardInput {\n title: string;\n description?: Nullable;\n color: string;\n workspace_id: string;\n}\n\nexport class UpdateBoardInput {\n board_id: string;\n title?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateListInput {\n title: string;\n board_id: string;\n position: number;\n color?: Nullable;\n}\n\nexport class UpdateListInput {\n list_id: string;\n title?: Nullable;\n position?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateCardInput {\n title: string;\n list_id: string;\n description?: Nullable;\n position: number;\n due_date?: Nullable;\n}\n\nexport class UpdateCardInput {\n card_id: string;\n title?: Nullable;\n description?: Nullable;\n position?: Nullable;\n due_date?: Nullable;\n}\n\nexport class CreateLabelInput {\n name: string;\n color: string;\n board_id: string;\n}\n\nexport class UpdateLabelInput {\n label_id: string;\n name?: Nullable;\n color?: Nullable;\n}\n\nexport class LoginInput {\n email: string;\n password: string;\n}\n\nexport class RegisterInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class CreateUserInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class UpdateUserInput {\n user_id: string;\n username?: Nullable;\n email?: Nullable;\n password?: Nullable;\n}\n\nexport class CreateWorkspaceInput {\n name: string;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class UpdateWorkspaceInput {\n name?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class AddWorkspaceMemberInput {\n workspace_id: string;\n user_email: string;\n role?: Nullable;\n}\n\nexport class UpdateMemberRoleInput {\n workspace_id: string;\n user_id: string;\n role: Role;\n}\n\nexport class Board {\n board_id: string;\n title: string;\n description?: Nullable;\n color: string;\n lists: List[];\n workspace_id: string;\n}\n\nexport class List {\n list_id: string;\n title: string;\n position: number;\n color: string;\n board_id: string;\n cards?: Nullable[]>;\n}\n\nexport class Card {\n card_id: string;\n title: string;\n description?: Nullable;\n position: number;\n list_id: string;\n labels?: Nullable[]>;\n due_date?: Nullable;\n comments?: Nullable[]>;\n attachments?: Nullable[]>;\n members?: Nullable[]>;\n}\n\nexport class Comment {\n comment_id: string;\n content: string;\n created_at: DateTime;\n card_id: string;\n user_id: string;\n}\n\nexport class Label {\n label_id: string;\n name: string;\n color: string;\n workspace_id: string;\n}\n\nexport class Attachment {\n attachment_id: string;\n card_id: string;\n url: string;\n filename: string;\n}\n\nexport class CardLabel {\n card_id: string;\n label_id: string;\n}\n\nexport class CardMember {\n card_id: string;\n user_id: string;\n}\n\nexport abstract class IQuery {\n abstract boards(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract board(board_id: string): Nullable | Promise>;\n\n abstract lists(board_id: string): Nullable[]> | Promise[]>>;\n\n abstract list(list_id: string): Nullable | Promise>;\n\n abstract cards(list_id: string): Nullable[]> | Promise[]>>;\n\n abstract card(card_id: string): Nullable | Promise>;\n\n abstract labels(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract comments(card_id: string): Nullable[]> | Promise[]>>;\n\n abstract users(): Nullable[]> | Promise[]>>;\n\n abstract user(user_id: string): Nullable | Promise>;\n\n abstract me(): Nullable | Promise>;\n\n abstract workspaces(): Nullable[]> | Promise[]>>;\n\n abstract workspace(workspace_id: string): Nullable | Promise>;\n\n abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise;\n}\n\nexport class CreateBoardPayload {\n board?: Nullable;\n}\n\nexport abstract class IMutation {\n abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise;\n\n abstract updateBoard(input: UpdateBoardInput): Board | Promise;\n\n abstract deleteBoard(board_id: string): Status | Promise;\n\n abstract createList(input: CreateListInput): List | Promise;\n\n abstract updateList(input: UpdateListInput): List | Promise;\n\n abstract deleteList(list_id: string): Status | Promise;\n\n abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise;\n\n abstract createCard(input: CreateCardInput): Card | Promise;\n\n abstract updateCard(input: UpdateCardInput): Card | Promise;\n\n abstract deleteCard(card_id: string): Status | Promise;\n\n abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise;\n\n abstract createLabel(input: CreateLabelInput): Label | Promise;\n\n abstract updateLabel(input: UpdateLabelInput): Label | Promise;\n\n abstract deleteLabel(label_id: string): Status | Promise;\n\n abstract uploadFile(file: Upload): FileResponse | Promise;\n\n abstract createUser(input: CreateUserInput): Nullable | Promise>;\n\n abstract updateUser(input: UpdateUserInput): Nullable | Promise>;\n\n abstract deleteUser(user_id: string): Nullable | Promise>;\n\n abstract login(input: LoginInput): Nullable | Promise>;\n\n abstract register(input: RegisterInput): Nullable | Promise>;\n\n abstract logout(): Status | Promise;\n\n abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise;\n\n abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise;\n\n abstract deleteWorkspace(workspace_id: string): Status | Promise;\n\n abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise;\n\n abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise;\n\n abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise;\n}\n\nexport class Success {\n successMessage?: Nullable;\n}\n\nexport class Error {\n errorMessage: string;\n code?: Nullable;\n}\n\nexport class FileResponse {\n success: boolean;\n url?: Nullable;\n message?: Nullable;\n}\n\nexport class User {\n user_id: string;\n username: string;\n email: string;\n picture?: Nullable;\n created_at: DateTime;\n}\n\nexport class AuthSuccess {\n token: string;\n user: User;\n}\n\nexport class AuthError {\n message: string;\n code?: Nullable;\n field?: Nullable;\n}\n\nexport class Workspace {\n workspace_id: string;\n name: string;\n color: string;\n description?: Nullable;\n owner_id: string;\n owner: User;\n members: WorkspaceMembers[];\n boards?: Nullable[]>;\n labels?: Nullable[]>;\n is_pinned: boolean;\n}\n\nexport class WorkspaceMembers {\n workspace_id: string;\n user_id: string;\n role: string;\n user: User;\n workspace: Workspace;\n}\n\nexport class PinWorkspacePayload {\n workspace: Workspace;\n}\n\nexport type DateTime = any;\nexport type Upload = any;\nexport type Status = Success | Error;\nexport type AuthResult = AuthSuccess | AuthError;\ntype Nullable = T | null;\n\n \n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/Label.html":{"url":"classes/Label.html","title":"class - Label","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n Label\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/graphql/graphql.ts\n \n\n\n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n color\n \n \n label_id\n \n \n name\n \n \n workspace_id\n \n \n \n \n\n\n\n\n\n\n \n \n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n color\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:163\n \n \n\n\n \n \n \n \n \n \n \n \n label_id\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:161\n \n \n\n\n \n \n \n \n \n \n \n \n name\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:162\n \n \n\n\n \n \n \n \n \n \n \n \n workspace_id\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:164\n \n \n\n\n \n \n\n\n\n\n\n\n\n\n \n\n\n \n export enum Role {\n Admin = \"Admin\",\n Member = \"Member\",\n Viewer = \"Viewer\"\n}\n\nexport class CreateBoardInput {\n title: string;\n description?: Nullable;\n color: string;\n workspace_id: string;\n}\n\nexport class UpdateBoardInput {\n board_id: string;\n title?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateListInput {\n title: string;\n board_id: string;\n position: number;\n color?: Nullable;\n}\n\nexport class UpdateListInput {\n list_id: string;\n title?: Nullable;\n position?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateCardInput {\n title: string;\n list_id: string;\n description?: Nullable;\n position: number;\n due_date?: Nullable;\n}\n\nexport class UpdateCardInput {\n card_id: string;\n title?: Nullable;\n description?: Nullable;\n position?: Nullable;\n due_date?: Nullable;\n}\n\nexport class CreateLabelInput {\n name: string;\n color: string;\n board_id: string;\n}\n\nexport class UpdateLabelInput {\n label_id: string;\n name?: Nullable;\n color?: Nullable;\n}\n\nexport class LoginInput {\n email: string;\n password: string;\n}\n\nexport class RegisterInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class CreateUserInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class UpdateUserInput {\n user_id: string;\n username?: Nullable;\n email?: Nullable;\n password?: Nullable;\n}\n\nexport class CreateWorkspaceInput {\n name: string;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class UpdateWorkspaceInput {\n name?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class AddWorkspaceMemberInput {\n workspace_id: string;\n user_email: string;\n role?: Nullable;\n}\n\nexport class UpdateMemberRoleInput {\n workspace_id: string;\n user_id: string;\n role: Role;\n}\n\nexport class Board {\n board_id: string;\n title: string;\n description?: Nullable;\n color: string;\n lists: List[];\n workspace_id: string;\n}\n\nexport class List {\n list_id: string;\n title: string;\n position: number;\n color: string;\n board_id: string;\n cards?: Nullable[]>;\n}\n\nexport class Card {\n card_id: string;\n title: string;\n description?: Nullable;\n position: number;\n list_id: string;\n labels?: Nullable[]>;\n due_date?: Nullable;\n comments?: Nullable[]>;\n attachments?: Nullable[]>;\n members?: Nullable[]>;\n}\n\nexport class Comment {\n comment_id: string;\n content: string;\n created_at: DateTime;\n card_id: string;\n user_id: string;\n}\n\nexport class Label {\n label_id: string;\n name: string;\n color: string;\n workspace_id: string;\n}\n\nexport class Attachment {\n attachment_id: string;\n card_id: string;\n url: string;\n filename: string;\n}\n\nexport class CardLabel {\n card_id: string;\n label_id: string;\n}\n\nexport class CardMember {\n card_id: string;\n user_id: string;\n}\n\nexport abstract class IQuery {\n abstract boards(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract board(board_id: string): Nullable | Promise>;\n\n abstract lists(board_id: string): Nullable[]> | Promise[]>>;\n\n abstract list(list_id: string): Nullable | Promise>;\n\n abstract cards(list_id: string): Nullable[]> | Promise[]>>;\n\n abstract card(card_id: string): Nullable | Promise>;\n\n abstract labels(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract comments(card_id: string): Nullable[]> | Promise[]>>;\n\n abstract users(): Nullable[]> | Promise[]>>;\n\n abstract user(user_id: string): Nullable | Promise>;\n\n abstract me(): Nullable | Promise>;\n\n abstract workspaces(): Nullable[]> | Promise[]>>;\n\n abstract workspace(workspace_id: string): Nullable | Promise>;\n\n abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise;\n}\n\nexport class CreateBoardPayload {\n board?: Nullable;\n}\n\nexport abstract class IMutation {\n abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise;\n\n abstract updateBoard(input: UpdateBoardInput): Board | Promise;\n\n abstract deleteBoard(board_id: string): Status | Promise;\n\n abstract createList(input: CreateListInput): List | Promise;\n\n abstract updateList(input: UpdateListInput): List | Promise;\n\n abstract deleteList(list_id: string): Status | Promise;\n\n abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise;\n\n abstract createCard(input: CreateCardInput): Card | Promise;\n\n abstract updateCard(input: UpdateCardInput): Card | Promise;\n\n abstract deleteCard(card_id: string): Status | Promise;\n\n abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise;\n\n abstract createLabel(input: CreateLabelInput): Label | Promise;\n\n abstract updateLabel(input: UpdateLabelInput): Label | Promise;\n\n abstract deleteLabel(label_id: string): Status | Promise;\n\n abstract uploadFile(file: Upload): FileResponse | Promise;\n\n abstract createUser(input: CreateUserInput): Nullable | Promise>;\n\n abstract updateUser(input: UpdateUserInput): Nullable | Promise>;\n\n abstract deleteUser(user_id: string): Nullable | Promise>;\n\n abstract login(input: LoginInput): Nullable | Promise>;\n\n abstract register(input: RegisterInput): Nullable | Promise>;\n\n abstract logout(): Status | Promise;\n\n abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise;\n\n abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise;\n\n abstract deleteWorkspace(workspace_id: string): Status | Promise;\n\n abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise;\n\n abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise;\n\n abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise;\n}\n\nexport class Success {\n successMessage?: Nullable;\n}\n\nexport class Error {\n errorMessage: string;\n code?: Nullable;\n}\n\nexport class FileResponse {\n success: boolean;\n url?: Nullable;\n message?: Nullable;\n}\n\nexport class User {\n user_id: string;\n username: string;\n email: string;\n picture?: Nullable;\n created_at: DateTime;\n}\n\nexport class AuthSuccess {\n token: string;\n user: User;\n}\n\nexport class AuthError {\n message: string;\n code?: Nullable;\n field?: Nullable;\n}\n\nexport class Workspace {\n workspace_id: string;\n name: string;\n color: string;\n description?: Nullable;\n owner_id: string;\n owner: User;\n members: WorkspaceMembers[];\n boards?: Nullable[]>;\n labels?: Nullable[]>;\n is_pinned: boolean;\n}\n\nexport class WorkspaceMembers {\n workspace_id: string;\n user_id: string;\n role: string;\n user: User;\n workspace: Workspace;\n}\n\nexport class PinWorkspacePayload {\n workspace: Workspace;\n}\n\nexport type DateTime = any;\nexport type Upload = any;\nexport type Status = Success | Error;\nexport type AuthResult = AuthSuccess | AuthError;\ntype Nullable = T | null;\n\n \n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/List.html":{"url":"classes/List.html","title":"class - List","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n List\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/graphql/graphql.ts\n \n\n\n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n board_id\n \n \n Optional\n cards\n \n \n color\n \n \n list_id\n \n \n position\n \n \n title\n \n \n \n \n\n\n\n\n\n\n \n \n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n board_id\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:135\n \n \n\n\n \n \n \n \n \n \n \n \n Optional\n cards\n \n \n \n \n \n \n Type : Nullable\n\n \n \n \n \n Defined in src/graphql/graphql.ts:136\n \n \n\n\n \n \n \n \n \n \n \n \n color\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:134\n \n \n\n\n \n \n \n \n \n \n \n \n list_id\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:131\n \n \n\n\n \n \n \n \n \n \n \n \n position\n \n \n \n \n \n \n Type : number\n\n \n \n \n \n Defined in src/graphql/graphql.ts:133\n \n \n\n\n \n \n \n \n \n \n \n \n title\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:132\n \n \n\n\n \n \n\n\n\n\n\n\n\n\n \n\n\n \n export enum Role {\n Admin = \"Admin\",\n Member = \"Member\",\n Viewer = \"Viewer\"\n}\n\nexport class CreateBoardInput {\n title: string;\n description?: Nullable;\n color: string;\n workspace_id: string;\n}\n\nexport class UpdateBoardInput {\n board_id: string;\n title?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateListInput {\n title: string;\n board_id: string;\n position: number;\n color?: Nullable;\n}\n\nexport class UpdateListInput {\n list_id: string;\n title?: Nullable;\n position?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateCardInput {\n title: string;\n list_id: string;\n description?: Nullable;\n position: number;\n due_date?: Nullable;\n}\n\nexport class UpdateCardInput {\n card_id: string;\n title?: Nullable;\n description?: Nullable;\n position?: Nullable;\n due_date?: Nullable;\n}\n\nexport class CreateLabelInput {\n name: string;\n color: string;\n board_id: string;\n}\n\nexport class UpdateLabelInput {\n label_id: string;\n name?: Nullable;\n color?: Nullable;\n}\n\nexport class LoginInput {\n email: string;\n password: string;\n}\n\nexport class RegisterInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class CreateUserInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class UpdateUserInput {\n user_id: string;\n username?: Nullable;\n email?: Nullable;\n password?: Nullable;\n}\n\nexport class CreateWorkspaceInput {\n name: string;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class UpdateWorkspaceInput {\n name?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class AddWorkspaceMemberInput {\n workspace_id: string;\n user_email: string;\n role?: Nullable;\n}\n\nexport class UpdateMemberRoleInput {\n workspace_id: string;\n user_id: string;\n role: Role;\n}\n\nexport class Board {\n board_id: string;\n title: string;\n description?: Nullable;\n color: string;\n lists: List[];\n workspace_id: string;\n}\n\nexport class List {\n list_id: string;\n title: string;\n position: number;\n color: string;\n board_id: string;\n cards?: Nullable[]>;\n}\n\nexport class Card {\n card_id: string;\n title: string;\n description?: Nullable;\n position: number;\n list_id: string;\n labels?: Nullable[]>;\n due_date?: Nullable;\n comments?: Nullable[]>;\n attachments?: Nullable[]>;\n members?: Nullable[]>;\n}\n\nexport class Comment {\n comment_id: string;\n content: string;\n created_at: DateTime;\n card_id: string;\n user_id: string;\n}\n\nexport class Label {\n label_id: string;\n name: string;\n color: string;\n workspace_id: string;\n}\n\nexport class Attachment {\n attachment_id: string;\n card_id: string;\n url: string;\n filename: string;\n}\n\nexport class CardLabel {\n card_id: string;\n label_id: string;\n}\n\nexport class CardMember {\n card_id: string;\n user_id: string;\n}\n\nexport abstract class IQuery {\n abstract boards(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract board(board_id: string): Nullable | Promise>;\n\n abstract lists(board_id: string): Nullable[]> | Promise[]>>;\n\n abstract list(list_id: string): Nullable | Promise>;\n\n abstract cards(list_id: string): Nullable[]> | Promise[]>>;\n\n abstract card(card_id: string): Nullable | Promise>;\n\n abstract labels(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract comments(card_id: string): Nullable[]> | Promise[]>>;\n\n abstract users(): Nullable[]> | Promise[]>>;\n\n abstract user(user_id: string): Nullable | Promise>;\n\n abstract me(): Nullable | Promise>;\n\n abstract workspaces(): Nullable[]> | Promise[]>>;\n\n abstract workspace(workspace_id: string): Nullable | Promise>;\n\n abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise;\n}\n\nexport class CreateBoardPayload {\n board?: Nullable;\n}\n\nexport abstract class IMutation {\n abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise;\n\n abstract updateBoard(input: UpdateBoardInput): Board | Promise;\n\n abstract deleteBoard(board_id: string): Status | Promise;\n\n abstract createList(input: CreateListInput): List | Promise;\n\n abstract updateList(input: UpdateListInput): List | Promise;\n\n abstract deleteList(list_id: string): Status | Promise;\n\n abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise;\n\n abstract createCard(input: CreateCardInput): Card | Promise;\n\n abstract updateCard(input: UpdateCardInput): Card | Promise;\n\n abstract deleteCard(card_id: string): Status | Promise;\n\n abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise;\n\n abstract createLabel(input: CreateLabelInput): Label | Promise;\n\n abstract updateLabel(input: UpdateLabelInput): Label | Promise;\n\n abstract deleteLabel(label_id: string): Status | Promise;\n\n abstract uploadFile(file: Upload): FileResponse | Promise;\n\n abstract createUser(input: CreateUserInput): Nullable | Promise>;\n\n abstract updateUser(input: UpdateUserInput): Nullable | Promise>;\n\n abstract deleteUser(user_id: string): Nullable | Promise>;\n\n abstract login(input: LoginInput): Nullable | Promise>;\n\n abstract register(input: RegisterInput): Nullable | Promise>;\n\n abstract logout(): Status | Promise;\n\n abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise;\n\n abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise;\n\n abstract deleteWorkspace(workspace_id: string): Status | Promise;\n\n abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise;\n\n abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise;\n\n abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise;\n}\n\nexport class Success {\n successMessage?: Nullable;\n}\n\nexport class Error {\n errorMessage: string;\n code?: Nullable;\n}\n\nexport class FileResponse {\n success: boolean;\n url?: Nullable;\n message?: Nullable;\n}\n\nexport class User {\n user_id: string;\n username: string;\n email: string;\n picture?: Nullable;\n created_at: DateTime;\n}\n\nexport class AuthSuccess {\n token: string;\n user: User;\n}\n\nexport class AuthError {\n message: string;\n code?: Nullable;\n field?: Nullable;\n}\n\nexport class Workspace {\n workspace_id: string;\n name: string;\n color: string;\n description?: Nullable;\n owner_id: string;\n owner: User;\n members: WorkspaceMembers[];\n boards?: Nullable[]>;\n labels?: Nullable[]>;\n is_pinned: boolean;\n}\n\nexport class WorkspaceMembers {\n workspace_id: string;\n user_id: string;\n role: string;\n user: User;\n workspace: Workspace;\n}\n\nexport class PinWorkspacePayload {\n workspace: Workspace;\n}\n\nexport type DateTime = any;\nexport type Upload = any;\nexport type Status = Success | Error;\nexport type AuthResult = AuthSuccess | AuthError;\ntype Nullable = T | null;\n\n \n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/LoginInput.html":{"url":"classes/LoginInput.html","title":"class - LoginInput","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n LoginInput\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/graphql/graphql.ts\n \n\n\n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n email\n \n \n password\n \n \n \n \n\n\n\n\n\n\n \n \n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n email\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:74\n \n \n\n\n \n \n \n \n \n \n \n \n password\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:75\n \n \n\n\n \n \n\n\n\n\n\n\n\n\n \n\n\n \n export enum Role {\n Admin = \"Admin\",\n Member = \"Member\",\n Viewer = \"Viewer\"\n}\n\nexport class CreateBoardInput {\n title: string;\n description?: Nullable;\n color: string;\n workspace_id: string;\n}\n\nexport class UpdateBoardInput {\n board_id: string;\n title?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateListInput {\n title: string;\n board_id: string;\n position: number;\n color?: Nullable;\n}\n\nexport class UpdateListInput {\n list_id: string;\n title?: Nullable;\n position?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateCardInput {\n title: string;\n list_id: string;\n description?: Nullable;\n position: number;\n due_date?: Nullable;\n}\n\nexport class UpdateCardInput {\n card_id: string;\n title?: Nullable;\n description?: Nullable;\n position?: Nullable;\n due_date?: Nullable;\n}\n\nexport class CreateLabelInput {\n name: string;\n color: string;\n board_id: string;\n}\n\nexport class UpdateLabelInput {\n label_id: string;\n name?: Nullable;\n color?: Nullable;\n}\n\nexport class LoginInput {\n email: string;\n password: string;\n}\n\nexport class RegisterInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class CreateUserInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class UpdateUserInput {\n user_id: string;\n username?: Nullable;\n email?: Nullable;\n password?: Nullable;\n}\n\nexport class CreateWorkspaceInput {\n name: string;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class UpdateWorkspaceInput {\n name?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class AddWorkspaceMemberInput {\n workspace_id: string;\n user_email: string;\n role?: Nullable;\n}\n\nexport class UpdateMemberRoleInput {\n workspace_id: string;\n user_id: string;\n role: Role;\n}\n\nexport class Board {\n board_id: string;\n title: string;\n description?: Nullable;\n color: string;\n lists: List[];\n workspace_id: string;\n}\n\nexport class List {\n list_id: string;\n title: string;\n position: number;\n color: string;\n board_id: string;\n cards?: Nullable[]>;\n}\n\nexport class Card {\n card_id: string;\n title: string;\n description?: Nullable;\n position: number;\n list_id: string;\n labels?: Nullable[]>;\n due_date?: Nullable;\n comments?: Nullable[]>;\n attachments?: Nullable[]>;\n members?: Nullable[]>;\n}\n\nexport class Comment {\n comment_id: string;\n content: string;\n created_at: DateTime;\n card_id: string;\n user_id: string;\n}\n\nexport class Label {\n label_id: string;\n name: string;\n color: string;\n workspace_id: string;\n}\n\nexport class Attachment {\n attachment_id: string;\n card_id: string;\n url: string;\n filename: string;\n}\n\nexport class CardLabel {\n card_id: string;\n label_id: string;\n}\n\nexport class CardMember {\n card_id: string;\n user_id: string;\n}\n\nexport abstract class IQuery {\n abstract boards(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract board(board_id: string): Nullable | Promise>;\n\n abstract lists(board_id: string): Nullable[]> | Promise[]>>;\n\n abstract list(list_id: string): Nullable | Promise>;\n\n abstract cards(list_id: string): Nullable[]> | Promise[]>>;\n\n abstract card(card_id: string): Nullable | Promise>;\n\n abstract labels(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract comments(card_id: string): Nullable[]> | Promise[]>>;\n\n abstract users(): Nullable[]> | Promise[]>>;\n\n abstract user(user_id: string): Nullable | Promise>;\n\n abstract me(): Nullable | Promise>;\n\n abstract workspaces(): Nullable[]> | Promise[]>>;\n\n abstract workspace(workspace_id: string): Nullable | Promise>;\n\n abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise;\n}\n\nexport class CreateBoardPayload {\n board?: Nullable;\n}\n\nexport abstract class IMutation {\n abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise;\n\n abstract updateBoard(input: UpdateBoardInput): Board | Promise;\n\n abstract deleteBoard(board_id: string): Status | Promise;\n\n abstract createList(input: CreateListInput): List | Promise;\n\n abstract updateList(input: UpdateListInput): List | Promise;\n\n abstract deleteList(list_id: string): Status | Promise;\n\n abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise;\n\n abstract createCard(input: CreateCardInput): Card | Promise;\n\n abstract updateCard(input: UpdateCardInput): Card | Promise;\n\n abstract deleteCard(card_id: string): Status | Promise;\n\n abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise;\n\n abstract createLabel(input: CreateLabelInput): Label | Promise;\n\n abstract updateLabel(input: UpdateLabelInput): Label | Promise;\n\n abstract deleteLabel(label_id: string): Status | Promise;\n\n abstract uploadFile(file: Upload): FileResponse | Promise;\n\n abstract createUser(input: CreateUserInput): Nullable | Promise>;\n\n abstract updateUser(input: UpdateUserInput): Nullable | Promise>;\n\n abstract deleteUser(user_id: string): Nullable | Promise>;\n\n abstract login(input: LoginInput): Nullable | Promise>;\n\n abstract register(input: RegisterInput): Nullable | Promise>;\n\n abstract logout(): Status | Promise;\n\n abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise;\n\n abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise;\n\n abstract deleteWorkspace(workspace_id: string): Status | Promise;\n\n abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise;\n\n abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise;\n\n abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise;\n}\n\nexport class Success {\n successMessage?: Nullable;\n}\n\nexport class Error {\n errorMessage: string;\n code?: Nullable;\n}\n\nexport class FileResponse {\n success: boolean;\n url?: Nullable;\n message?: Nullable;\n}\n\nexport class User {\n user_id: string;\n username: string;\n email: string;\n picture?: Nullable;\n created_at: DateTime;\n}\n\nexport class AuthSuccess {\n token: string;\n user: User;\n}\n\nexport class AuthError {\n message: string;\n code?: Nullable;\n field?: Nullable;\n}\n\nexport class Workspace {\n workspace_id: string;\n name: string;\n color: string;\n description?: Nullable;\n owner_id: string;\n owner: User;\n members: WorkspaceMembers[];\n boards?: Nullable[]>;\n labels?: Nullable[]>;\n is_pinned: boolean;\n}\n\nexport class WorkspaceMembers {\n workspace_id: string;\n user_id: string;\n role: string;\n user: User;\n workspace: Workspace;\n}\n\nexport class PinWorkspacePayload {\n workspace: Workspace;\n}\n\nexport type DateTime = any;\nexport type Upload = any;\nexport type Status = Success | Error;\nexport type AuthResult = AuthSuccess | AuthError;\ntype Nullable = T | null;\n\n \n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/PinWorkspacePayload.html":{"url":"classes/PinWorkspacePayload.html","title":"class - PinWorkspacePayload","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n PinWorkspacePayload\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/graphql/graphql.ts\n \n\n\n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n workspace\n \n \n \n \n\n\n\n\n\n\n \n \n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n workspace\n \n \n \n \n \n \n Type : Workspace\n\n \n \n \n \n Defined in src/graphql/graphql.ts:334\n \n \n\n\n \n \n\n\n\n\n\n\n\n\n \n\n\n \n export enum Role {\n Admin = \"Admin\",\n Member = \"Member\",\n Viewer = \"Viewer\"\n}\n\nexport class CreateBoardInput {\n title: string;\n description?: Nullable;\n color: string;\n workspace_id: string;\n}\n\nexport class UpdateBoardInput {\n board_id: string;\n title?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateListInput {\n title: string;\n board_id: string;\n position: number;\n color?: Nullable;\n}\n\nexport class UpdateListInput {\n list_id: string;\n title?: Nullable;\n position?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateCardInput {\n title: string;\n list_id: string;\n description?: Nullable;\n position: number;\n due_date?: Nullable;\n}\n\nexport class UpdateCardInput {\n card_id: string;\n title?: Nullable;\n description?: Nullable;\n position?: Nullable;\n due_date?: Nullable;\n}\n\nexport class CreateLabelInput {\n name: string;\n color: string;\n board_id: string;\n}\n\nexport class UpdateLabelInput {\n label_id: string;\n name?: Nullable;\n color?: Nullable;\n}\n\nexport class LoginInput {\n email: string;\n password: string;\n}\n\nexport class RegisterInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class CreateUserInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class UpdateUserInput {\n user_id: string;\n username?: Nullable;\n email?: Nullable;\n password?: Nullable;\n}\n\nexport class CreateWorkspaceInput {\n name: string;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class UpdateWorkspaceInput {\n name?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class AddWorkspaceMemberInput {\n workspace_id: string;\n user_email: string;\n role?: Nullable;\n}\n\nexport class UpdateMemberRoleInput {\n workspace_id: string;\n user_id: string;\n role: Role;\n}\n\nexport class Board {\n board_id: string;\n title: string;\n description?: Nullable;\n color: string;\n lists: List[];\n workspace_id: string;\n}\n\nexport class List {\n list_id: string;\n title: string;\n position: number;\n color: string;\n board_id: string;\n cards?: Nullable[]>;\n}\n\nexport class Card {\n card_id: string;\n title: string;\n description?: Nullable;\n position: number;\n list_id: string;\n labels?: Nullable[]>;\n due_date?: Nullable;\n comments?: Nullable[]>;\n attachments?: Nullable[]>;\n members?: Nullable[]>;\n}\n\nexport class Comment {\n comment_id: string;\n content: string;\n created_at: DateTime;\n card_id: string;\n user_id: string;\n}\n\nexport class Label {\n label_id: string;\n name: string;\n color: string;\n workspace_id: string;\n}\n\nexport class Attachment {\n attachment_id: string;\n card_id: string;\n url: string;\n filename: string;\n}\n\nexport class CardLabel {\n card_id: string;\n label_id: string;\n}\n\nexport class CardMember {\n card_id: string;\n user_id: string;\n}\n\nexport abstract class IQuery {\n abstract boards(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract board(board_id: string): Nullable | Promise>;\n\n abstract lists(board_id: string): Nullable[]> | Promise[]>>;\n\n abstract list(list_id: string): Nullable | Promise>;\n\n abstract cards(list_id: string): Nullable[]> | Promise[]>>;\n\n abstract card(card_id: string): Nullable | Promise>;\n\n abstract labels(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract comments(card_id: string): Nullable[]> | Promise[]>>;\n\n abstract users(): Nullable[]> | Promise[]>>;\n\n abstract user(user_id: string): Nullable | Promise>;\n\n abstract me(): Nullable | Promise>;\n\n abstract workspaces(): Nullable[]> | Promise[]>>;\n\n abstract workspace(workspace_id: string): Nullable | Promise>;\n\n abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise;\n}\n\nexport class CreateBoardPayload {\n board?: Nullable;\n}\n\nexport abstract class IMutation {\n abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise;\n\n abstract updateBoard(input: UpdateBoardInput): Board | Promise;\n\n abstract deleteBoard(board_id: string): Status | Promise;\n\n abstract createList(input: CreateListInput): List | Promise;\n\n abstract updateList(input: UpdateListInput): List | Promise;\n\n abstract deleteList(list_id: string): Status | Promise;\n\n abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise;\n\n abstract createCard(input: CreateCardInput): Card | Promise;\n\n abstract updateCard(input: UpdateCardInput): Card | Promise;\n\n abstract deleteCard(card_id: string): Status | Promise;\n\n abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise;\n\n abstract createLabel(input: CreateLabelInput): Label | Promise;\n\n abstract updateLabel(input: UpdateLabelInput): Label | Promise;\n\n abstract deleteLabel(label_id: string): Status | Promise;\n\n abstract uploadFile(file: Upload): FileResponse | Promise;\n\n abstract createUser(input: CreateUserInput): Nullable | Promise>;\n\n abstract updateUser(input: UpdateUserInput): Nullable | Promise>;\n\n abstract deleteUser(user_id: string): Nullable | Promise>;\n\n abstract login(input: LoginInput): Nullable | Promise>;\n\n abstract register(input: RegisterInput): Nullable | Promise>;\n\n abstract logout(): Status | Promise;\n\n abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise;\n\n abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise;\n\n abstract deleteWorkspace(workspace_id: string): Status | Promise;\n\n abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise;\n\n abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise;\n\n abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise;\n}\n\nexport class Success {\n successMessage?: Nullable;\n}\n\nexport class Error {\n errorMessage: string;\n code?: Nullable;\n}\n\nexport class FileResponse {\n success: boolean;\n url?: Nullable;\n message?: Nullable;\n}\n\nexport class User {\n user_id: string;\n username: string;\n email: string;\n picture?: Nullable;\n created_at: DateTime;\n}\n\nexport class AuthSuccess {\n token: string;\n user: User;\n}\n\nexport class AuthError {\n message: string;\n code?: Nullable;\n field?: Nullable;\n}\n\nexport class Workspace {\n workspace_id: string;\n name: string;\n color: string;\n description?: Nullable;\n owner_id: string;\n owner: User;\n members: WorkspaceMembers[];\n boards?: Nullable[]>;\n labels?: Nullable[]>;\n is_pinned: boolean;\n}\n\nexport class WorkspaceMembers {\n workspace_id: string;\n user_id: string;\n role: string;\n user: User;\n workspace: Workspace;\n}\n\nexport class PinWorkspacePayload {\n workspace: Workspace;\n}\n\nexport type DateTime = any;\nexport type Upload = any;\nexport type Status = Success | Error;\nexport type AuthResult = AuthSuccess | AuthError;\ntype Nullable = T | null;\n\n \n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"modules/PrismaModule.html":{"url":"modules/PrismaModule.html","title":"module - PrismaModule","body":"\n \n\n\n\n\n\n\n\n\n Modules\n PrismaModule\n\n\n\n \n \n\n\n\n\n\ndependencies\n\nLegend\n\n  Declarations\n\n  Module\n\n  Bootstrap\n\n  Providers\n\n  Exports\n\ncluster_PrismaModule\n\n\n\ncluster_PrismaModule_exports\n\n\n\ncluster_PrismaModule_providers\n\n\n\n\nPrismaService \n\nPrismaService \n\n\n\nPrismaModule\n\nPrismaModule\n\nPrismaService -->\n\nPrismaModule->PrismaService \n\n\n\n\n\nPrismaService\n\nPrismaService\n\nPrismaModule -->\n\nPrismaService->PrismaModule\n\n\n\n\n\n\n \n \n \n Zoom in\n Reset\n Zoom out\n \n\n\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n\n \n File\n \n \n src/prisma/prisma.module.ts\n \n\n\n\n\n\n \n \n \n Providers\n \n \n PrismaService\n \n \n \n \n Exports\n \n \n PrismaService\n \n \n \n \n \n\n\n \n\n\n \n /*\n** EPITECH PROJECT, 2025\n** TaskFlow\n** File description:\n** prisma.module\n*/\n\nimport { Global, Module } from '@nestjs/common';\nimport { PrismaService } from './prisma.service';\n\n@Global()\n@Module({\n providers: [PrismaService],\n exports: [PrismaService],\n})\nexport class PrismaModule {}\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"injectables/PrismaService.html":{"url":"injectables/PrismaService.html","title":"injectable - PrismaService","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n Injectables\n PrismaService\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/prisma/prisma.service.ts\n \n\n\n\n \n Extends\n \n \n PrismaClient\n \n\n\n \n Index\n \n \n\n \n \n Methods\n \n \n \n \n \n \n Async\n onModuleInit\n \n \n \n \n\n\n\n\n\n \n \n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n Async\n onModuleInit\n \n \n \n \n \n \n \n onModuleInit()\n \n \n\n\n \n \n Defined in src/prisma/prisma.service.ts:13\n \n \n\n\n \n \n\n \n Returns : any\n\n \n \n \n \n \n\n\n \n\n\n \n import { Injectable, OnModuleInit } from '@nestjs/common';\nimport { PrismaClient } from '@prisma/client';\n\n@Injectable()\nexport class PrismaService extends PrismaClient implements OnModuleInit {\n async onModuleInit() {\n await this.$connect();\n }\n}\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/RegisterInput.html":{"url":"classes/RegisterInput.html","title":"class - RegisterInput","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n RegisterInput\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/graphql/graphql.ts\n \n\n\n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n email\n \n \n password\n \n \n username\n \n \n \n \n\n\n\n\n\n\n \n \n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n email\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:80\n \n \n\n\n \n \n \n \n \n \n \n \n password\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:81\n \n \n\n\n \n \n \n \n \n \n \n \n username\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:79\n \n \n\n\n \n \n\n\n\n\n\n\n\n\n \n\n\n \n export enum Role {\n Admin = \"Admin\",\n Member = \"Member\",\n Viewer = \"Viewer\"\n}\n\nexport class CreateBoardInput {\n title: string;\n description?: Nullable;\n color: string;\n workspace_id: string;\n}\n\nexport class UpdateBoardInput {\n board_id: string;\n title?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateListInput {\n title: string;\n board_id: string;\n position: number;\n color?: Nullable;\n}\n\nexport class UpdateListInput {\n list_id: string;\n title?: Nullable;\n position?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateCardInput {\n title: string;\n list_id: string;\n description?: Nullable;\n position: number;\n due_date?: Nullable;\n}\n\nexport class UpdateCardInput {\n card_id: string;\n title?: Nullable;\n description?: Nullable;\n position?: Nullable;\n due_date?: Nullable;\n}\n\nexport class CreateLabelInput {\n name: string;\n color: string;\n board_id: string;\n}\n\nexport class UpdateLabelInput {\n label_id: string;\n name?: Nullable;\n color?: Nullable;\n}\n\nexport class LoginInput {\n email: string;\n password: string;\n}\n\nexport class RegisterInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class CreateUserInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class UpdateUserInput {\n user_id: string;\n username?: Nullable;\n email?: Nullable;\n password?: Nullable;\n}\n\nexport class CreateWorkspaceInput {\n name: string;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class UpdateWorkspaceInput {\n name?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class AddWorkspaceMemberInput {\n workspace_id: string;\n user_email: string;\n role?: Nullable;\n}\n\nexport class UpdateMemberRoleInput {\n workspace_id: string;\n user_id: string;\n role: Role;\n}\n\nexport class Board {\n board_id: string;\n title: string;\n description?: Nullable;\n color: string;\n lists: List[];\n workspace_id: string;\n}\n\nexport class List {\n list_id: string;\n title: string;\n position: number;\n color: string;\n board_id: string;\n cards?: Nullable[]>;\n}\n\nexport class Card {\n card_id: string;\n title: string;\n description?: Nullable;\n position: number;\n list_id: string;\n labels?: Nullable[]>;\n due_date?: Nullable;\n comments?: Nullable[]>;\n attachments?: Nullable[]>;\n members?: Nullable[]>;\n}\n\nexport class Comment {\n comment_id: string;\n content: string;\n created_at: DateTime;\n card_id: string;\n user_id: string;\n}\n\nexport class Label {\n label_id: string;\n name: string;\n color: string;\n workspace_id: string;\n}\n\nexport class Attachment {\n attachment_id: string;\n card_id: string;\n url: string;\n filename: string;\n}\n\nexport class CardLabel {\n card_id: string;\n label_id: string;\n}\n\nexport class CardMember {\n card_id: string;\n user_id: string;\n}\n\nexport abstract class IQuery {\n abstract boards(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract board(board_id: string): Nullable | Promise>;\n\n abstract lists(board_id: string): Nullable[]> | Promise[]>>;\n\n abstract list(list_id: string): Nullable | Promise>;\n\n abstract cards(list_id: string): Nullable[]> | Promise[]>>;\n\n abstract card(card_id: string): Nullable | Promise>;\n\n abstract labels(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract comments(card_id: string): Nullable[]> | Promise[]>>;\n\n abstract users(): Nullable[]> | Promise[]>>;\n\n abstract user(user_id: string): Nullable | Promise>;\n\n abstract me(): Nullable | Promise>;\n\n abstract workspaces(): Nullable[]> | Promise[]>>;\n\n abstract workspace(workspace_id: string): Nullable | Promise>;\n\n abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise;\n}\n\nexport class CreateBoardPayload {\n board?: Nullable;\n}\n\nexport abstract class IMutation {\n abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise;\n\n abstract updateBoard(input: UpdateBoardInput): Board | Promise;\n\n abstract deleteBoard(board_id: string): Status | Promise;\n\n abstract createList(input: CreateListInput): List | Promise;\n\n abstract updateList(input: UpdateListInput): List | Promise;\n\n abstract deleteList(list_id: string): Status | Promise;\n\n abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise;\n\n abstract createCard(input: CreateCardInput): Card | Promise;\n\n abstract updateCard(input: UpdateCardInput): Card | Promise;\n\n abstract deleteCard(card_id: string): Status | Promise;\n\n abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise;\n\n abstract createLabel(input: CreateLabelInput): Label | Promise;\n\n abstract updateLabel(input: UpdateLabelInput): Label | Promise;\n\n abstract deleteLabel(label_id: string): Status | Promise;\n\n abstract uploadFile(file: Upload): FileResponse | Promise;\n\n abstract createUser(input: CreateUserInput): Nullable | Promise>;\n\n abstract updateUser(input: UpdateUserInput): Nullable | Promise>;\n\n abstract deleteUser(user_id: string): Nullable | Promise>;\n\n abstract login(input: LoginInput): Nullable | Promise>;\n\n abstract register(input: RegisterInput): Nullable | Promise>;\n\n abstract logout(): Status | Promise;\n\n abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise;\n\n abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise;\n\n abstract deleteWorkspace(workspace_id: string): Status | Promise;\n\n abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise;\n\n abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise;\n\n abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise;\n}\n\nexport class Success {\n successMessage?: Nullable;\n}\n\nexport class Error {\n errorMessage: string;\n code?: Nullable;\n}\n\nexport class FileResponse {\n success: boolean;\n url?: Nullable;\n message?: Nullable;\n}\n\nexport class User {\n user_id: string;\n username: string;\n email: string;\n picture?: Nullable;\n created_at: DateTime;\n}\n\nexport class AuthSuccess {\n token: string;\n user: User;\n}\n\nexport class AuthError {\n message: string;\n code?: Nullable;\n field?: Nullable;\n}\n\nexport class Workspace {\n workspace_id: string;\n name: string;\n color: string;\n description?: Nullable;\n owner_id: string;\n owner: User;\n members: WorkspaceMembers[];\n boards?: Nullable[]>;\n labels?: Nullable[]>;\n is_pinned: boolean;\n}\n\nexport class WorkspaceMembers {\n workspace_id: string;\n user_id: string;\n role: string;\n user: User;\n workspace: Workspace;\n}\n\nexport class PinWorkspacePayload {\n workspace: Workspace;\n}\n\nexport type DateTime = any;\nexport type Upload = any;\nexport type Status = Success | Error;\nexport type AuthResult = AuthSuccess | AuthError;\ntype Nullable = T | null;\n\n \n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"interfaces/Session.html":{"url":"interfaces/Session.html","title":"interface - Session","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Interfaces\n \n Session\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n documentation/template-playground/template-playground.component.ts\n \n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n \n message\n \n \n \n \n sessionId\n \n \n \n \n success\n \n \n \n \n \n \n \n \n\n\n\n \n Properties\n \n \n \n \n \n message\n \n \n \n \n \n \n \n \n message: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n sessionId\n \n \n \n \n \n \n \n \n sessionId: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n success\n \n \n \n \n \n \n \n \n success: boolean\n\n \n \n\n\n \n \n Type : boolean\n\n \n \n\n\n\n\n\n \n \n \n \n\n\n \n import { Component, OnInit, ViewChild, ElementRef, OnDestroy } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { TemplateEditorService } from './template-editor.service';\nimport { ZipExportService } from './zip-export.service';\nimport { HbsRenderService } from './hbs-render.service';\n\ninterface Template {\n name: string;\n path: string;\n type: 'template' | 'partial';\n}\n\ninterface Session {\n sessionId: string;\n success: boolean;\n message: string;\n}\n\ninterface CompoDocConfig {\n hideGenerator?: boolean;\n disableSourceCode?: boolean;\n disableGraph?: boolean;\n disableCoverage?: boolean;\n disablePrivate?: boolean;\n disableProtected?: boolean;\n disableInternal?: boolean;\n disableLifeCycleHooks?: boolean;\n disableConstructors?: boolean;\n disableRoutesGraph?: boolean;\n disableSearch?: boolean;\n disableDependencies?: boolean;\n disableProperties?: boolean;\n disableDomTree?: boolean;\n disableTemplateTab?: boolean;\n disableStyleTab?: boolean;\n disableMainGraph?: boolean;\n disableFilePath?: boolean;\n disableOverview?: boolean;\n hideDarkModeToggle?: boolean;\n minimal?: boolean;\n customFavicon?: string;\n includes?: string;\n includesName?: string;\n}\n\n@Component({\n selector: 'template-playground-root',\n template: `\n \n \n Template Playground\n \n Session: {{sessionId.substring(0, 8)}}...\n Saving...\n Last saved: {{lastSaved | date:'short'}}\n \n \n ⚙️ Config\n Reset to Default\n Download Templates\n \n \n\n \n \n CompoDoc Configuration\n \n Hide Generator\n Hide Dark Mode Toggle\n Minimal Mode\n Disable Overview\n Disable File Path\n Disable Source Code\n Disable Graph\n Disable Main Graph\n Disable Routes Graph\n Disable Coverage\n Disable Search\n Disable Dependencies\n Disable Private\n Disable Protected\n Disable Internal\n Disable Lifecycle Hooks\n Disable Constructors\n Disable Properties\n Disable DOM Tree\n Disable Template Tab\n Disable Style Tab\n \n \n\n \n \n \n Templates\n \n \n \n {{template.name}}\n {{template.type}}\n \n \n\n \n Loading templates...\n \n \n \n\n \n \n \n {{selectedFile.path}}\n {{selectedFile.type}}\n \n \n \n\n \n \n Live Preview\n 🔄 Refresh\n \n \n \n \n \n \n `,\n styles: [`\n .template-playground {\n display: flex;\n flex-direction: column;\n height: 100vh;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n }\n\n .template-playground-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 1rem 2rem;\n background: #f8f9fa;\n border-bottom: 1px solid #dee2e6;\n }\n\n .template-playground-status {\n display: flex;\n align-items: center;\n gap: 1rem;\n font-size: 0.875rem;\n }\n\n .session-info {\n color: #6c757d;\n font-family: monospace;\n }\n\n .saving-indicator {\n color: #ffc107;\n font-weight: bold;\n }\n\n .last-saved {\n color: #28a745;\n }\n\n .template-playground-actions {\n display: flex;\n gap: 0.5rem;\n }\n\n .config-panel {\n background: #e9ecef;\n padding: 1rem 2rem;\n border-bottom: 1px solid #dee2e6;\n transition: all 0.3s ease;\n max-height: 200px;\n overflow: hidden;\n }\n\n .config-panel.collapsed {\n max-height: 0;\n padding: 0 2rem;\n }\n\n .config-options {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 0.5rem;\n margin-top: 0.5rem;\n }\n\n .config-options label {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-size: 0.875rem;\n }\n\n .template-playground-body {\n display: flex;\n flex: 1;\n overflow: hidden;\n }\n\n .template-playground-sidebar {\n width: 250px;\n background: #f8f9fa;\n border-right: 1px solid #dee2e6;\n overflow-y: auto;\n }\n\n .template-file-list {\n padding: 1rem;\n }\n\n .template-file-list h3 {\n margin: 0 0 0.5rem 0;\n font-size: 0.875rem;\n font-weight: 600;\n color: #495057;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n }\n\n .file-list {\n list-style: none;\n padding: 0;\n margin: 0 0 1.5rem 0;\n }\n\n .file-list li {\n display: flex;\n align-items: center;\n padding: 0.5rem;\n cursor: pointer;\n border-radius: 4px;\n font-size: 0.875rem;\n transition: background-color 0.15s ease;\n }\n\n .file-list li:hover {\n background: #e9ecef;\n }\n\n .file-list li.active {\n background: #007bff;\n color: white;\n }\n\n .file-icon {\n margin-right: 0.5rem;\n opacity: 0.7;\n }\n\n .file-type {\n margin-left: auto;\n font-size: 0.75rem;\n opacity: 0.7;\n text-transform: uppercase;\n }\n\n .loading-templates {\n text-align: center;\n color: #6c757d;\n font-style: italic;\n padding: 2rem;\n }\n\n .template-playground-main {\n flex: 1;\n display: flex;\n overflow: hidden;\n }\n\n .template-playground-editor {\n width: 50%;\n display: flex;\n flex-direction: column;\n border-right: 1px solid #dee2e6;\n }\n\n .editor-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 0.75rem 1rem;\n background: #f8f9fa;\n border-bottom: 1px solid #dee2e6;\n }\n\n .editor-header h4 {\n margin: 0;\n font-size: 0.875rem;\n font-weight: 600;\n }\n\n .file-type-badge {\n background: #6c757d;\n color: white;\n padding: 0.125rem 0.5rem;\n border-radius: 12px;\n font-size: 0.75rem;\n text-transform: uppercase;\n }\n\n .editor-container {\n flex: 1;\n position: relative;\n }\n\n .template-playground-preview {\n width: 50%;\n display: flex;\n flex-direction: column;\n }\n\n .preview-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 0.75rem 1rem;\n background: #f8f9fa;\n border-bottom: 1px solid #dee2e6;\n }\n\n .preview-header h4 {\n margin: 0;\n font-size: 0.875rem;\n font-weight: 600;\n }\n\n .preview-frame {\n flex: 1;\n border: none;\n background: white;\n }\n\n .btn {\n padding: 0.375rem 0.75rem;\n border: 1px solid transparent;\n border-radius: 0.25rem;\n font-size: 0.875rem;\n font-weight: 500;\n text-decoration: none;\n cursor: pointer;\n transition: all 0.15s ease;\n }\n\n .btn-primary {\n background: #007bff;\n border-color: #007bff;\n color: white;\n }\n\n .btn-primary:hover {\n background: #0056b3;\n border-color: #004085;\n }\n\n .btn-secondary {\n background: #6c757d;\n border-color: #6c757d;\n color: white;\n }\n\n .btn-secondary:hover {\n background: #545b62;\n border-color: #4e555b;\n }\n\n .btn-success {\n background: #28a745;\n border-color: #28a745;\n color: white;\n }\n\n .btn-success:hover {\n background: #1e7e34;\n border-color: #1c7430;\n }\n\n .btn-sm {\n padding: 0.25rem 0.5rem;\n font-size: 0.75rem;\n }\n `]\n})\nexport class TemplatePlaygroundComponent implements OnInit, OnDestroy {\n @ViewChild('editorContainer', { static: true }) editorContainer!: ElementRef;\n @ViewChild('previewFrame', { static: true }) previewFrame!: ElementRef;\n\n sessionId: string = '';\n templates: Template[] = [];\n selectedFile: Template | null = null;\n config: CompoDocConfig = {};\n showConfigPanel: boolean = false;\n saving: boolean = false;\n lastSaved: Date | null = null;\n\n private saveTimeout?: number;\n private readonly SAVE_DELAY = 300; // 300ms debounce\n\n get previewUrl(): string {\n return this.sessionId ? `/api/session/${this.sessionId}/docs/` : '';\n }\n\n constructor(\n private http: HttpClient,\n private editorService: TemplateEditorService,\n private zipService: ZipExportService,\n private hbsService: HbsRenderService\n ) {}\n\n async ngOnInit() {\n try {\n await this.createSession();\n await this.loadSessionTemplates();\n await this.loadSessionConfig();\n this.initializeEditor();\n } catch (error) {\n console.error('Error initializing template playground:', error);\n }\n }\n\n ngOnDestroy() {\n if (this.saveTimeout) {\n clearTimeout(this.saveTimeout);\n }\n }\n\n private async createSession(): Promise {\n const response = await this.http.post('/api/session/create', {}).toPromise();\n if (response && response.success) {\n this.sessionId = response.sessionId;\n console.log('Session created:', this.sessionId);\n } else {\n throw new Error('Failed to create session');\n }\n }\n\n private async loadSessionTemplates(): Promise {\n if (!this.sessionId) return;\n\n const response = await this.http.get(`/api/session/${this.sessionId}/templates`).toPromise();\n if (response && response.success) {\n this.templates = response.templates;\n\n // Auto-select the first template\n if (this.templates.length > 0 && !this.selectedFile) {\n this.selectFile(this.templates[0]);\n }\n }\n }\n\n private async loadSessionConfig(): Promise {\n if (!this.sessionId) return;\n\n const response = await this.http.get(`/api/session/${this.sessionId}/config`).toPromise();\n if (response && response.success) {\n this.config = response.config;\n }\n }\n\n initializeEditor() {\n this.editorService.initializeEditor(this.editorContainer.nativeElement);\n\n // Set up debounced save on content change\n this.editorService.setOnChangeCallback((content: string) => {\n this.scheduleAutoSave(content);\n });\n }\n\n async selectFile(template: Template) {\n this.selectedFile = template;\n\n if (!this.sessionId) return;\n\n try {\n const response = await this.http.get(`/api/session/${this.sessionId}/template/${template.path}`).toPromise();\n if (response && response.success) {\n this.editorService.setEditorContent(response.content, template.type === 'template' ? 'handlebars' : 'handlebars');\n }\n } catch (error) {\n console.error('Error loading template:', error);\n }\n }\n\n private scheduleAutoSave(content: string): void {\n if (!this.selectedFile || !this.sessionId) return;\n\n // Clear existing timeout\n if (this.saveTimeout) {\n clearTimeout(this.saveTimeout);\n }\n\n // Set saving indicator\n this.saving = true;\n\n // Schedule new save\n this.saveTimeout = window.setTimeout(async () => {\n try {\n await this.saveTemplate(content);\n this.saving = false;\n this.lastSaved = new Date();\n } catch (error) {\n console.error('Error saving template:', error);\n this.saving = false;\n }\n }, this.SAVE_DELAY);\n }\n\n private async saveTemplate(content: string): Promise {\n if (!this.selectedFile || !this.sessionId) return;\n\n const response = await this.http.post(`/api/session/${this.sessionId}/template/${this.selectedFile.path}`, {\n content\n }).toPromise();\n\n if (!response || !response.success) {\n throw new Error('Failed to save template');\n }\n }\n\n async updateConfig(): Promise {\n if (!this.sessionId) return;\n\n try {\n const response = await this.http.post(`/api/session/${this.sessionId}/config`, {\n config: this.config\n }).toPromise();\n\n if (response && response.success) {\n // Config updated, documentation will be regenerated automatically\n }\n } catch (error) {\n console.error('Error updating config:', error);\n }\n }\n\n toggleConfigPanel(): void {\n this.showConfigPanel = !this.showConfigPanel;\n }\n\n refreshPreview(): void {\n if (this.previewFrame?.nativeElement) {\n this.previewFrame.nativeElement.src = this.previewFrame.nativeElement.src;\n }\n }\n\n resetToDefault(): void {\n // Implementation for resetting to default templates\n if (confirm('Are you sure you want to reset all templates to their default values? This action cannot be undone.')) {\n // TODO: Implement reset functionality\n console.log('Reset to default templates');\n }\n }\n\n async exportZip(): Promise {\n try {\n if (!this.sessionId) {\n console.error('No active session. Please refresh the page and try again.');\n return;\n }\n\n console.log('Creating template package...');\n\n // Call server-side ZIP creation endpoint for all templates\n const response = await this.http.post(`/api/session/${this.sessionId}/download-all-templates`, {}, {\n responseType: 'blob',\n observe: 'response'\n }).toPromise();\n\n if (!response || !response.body) {\n throw new Error('Failed to create template package');\n }\n\n // Get the ZIP file as a blob\n const zipBlob = response.body;\n\n // Get filename from response headers or construct it\n const contentDisposition = response.headers.get('Content-Disposition');\n let filename = `compodoc-templates-${this.sessionId}.zip`;\n\n if (contentDisposition) {\n const filenameMatch = contentDisposition.match(/filename=\"([^\"]+)\"/);\n if (filenameMatch) {\n filename = filenameMatch[1];\n }\n }\n\n // Create download link and trigger download\n const url = URL.createObjectURL(zipBlob);\n const a = document.createElement('a');\n a.href = url;\n a.download = filename;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n URL.revokeObjectURL(url);\n\n console.log('Template package downloaded successfully!');\n } catch (error) {\n console.error('Error downloading template package:', error);\n }\n }\n\n trackByName(index: number, item: Template): string {\n return item.name;\n }\n}\n\n \n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/Success.html":{"url":"classes/Success.html","title":"class - Success","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n Success\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/graphql/graphql.ts\n \n\n\n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Optional\n successMessage\n \n \n \n \n\n\n\n\n\n\n \n \n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n Optional\n successMessage\n \n \n \n \n \n \n Type : Nullable\n\n \n \n \n \n Defined in src/graphql/graphql.ts:279\n \n \n\n\n \n \n\n\n\n\n\n\n\n\n \n\n\n \n export enum Role {\n Admin = \"Admin\",\n Member = \"Member\",\n Viewer = \"Viewer\"\n}\n\nexport class CreateBoardInput {\n title: string;\n description?: Nullable;\n color: string;\n workspace_id: string;\n}\n\nexport class UpdateBoardInput {\n board_id: string;\n title?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateListInput {\n title: string;\n board_id: string;\n position: number;\n color?: Nullable;\n}\n\nexport class UpdateListInput {\n list_id: string;\n title?: Nullable;\n position?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateCardInput {\n title: string;\n list_id: string;\n description?: Nullable;\n position: number;\n due_date?: Nullable;\n}\n\nexport class UpdateCardInput {\n card_id: string;\n title?: Nullable;\n description?: Nullable;\n position?: Nullable;\n due_date?: Nullable;\n}\n\nexport class CreateLabelInput {\n name: string;\n color: string;\n board_id: string;\n}\n\nexport class UpdateLabelInput {\n label_id: string;\n name?: Nullable;\n color?: Nullable;\n}\n\nexport class LoginInput {\n email: string;\n password: string;\n}\n\nexport class RegisterInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class CreateUserInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class UpdateUserInput {\n user_id: string;\n username?: Nullable;\n email?: Nullable;\n password?: Nullable;\n}\n\nexport class CreateWorkspaceInput {\n name: string;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class UpdateWorkspaceInput {\n name?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class AddWorkspaceMemberInput {\n workspace_id: string;\n user_email: string;\n role?: Nullable;\n}\n\nexport class UpdateMemberRoleInput {\n workspace_id: string;\n user_id: string;\n role: Role;\n}\n\nexport class Board {\n board_id: string;\n title: string;\n description?: Nullable;\n color: string;\n lists: List[];\n workspace_id: string;\n}\n\nexport class List {\n list_id: string;\n title: string;\n position: number;\n color: string;\n board_id: string;\n cards?: Nullable[]>;\n}\n\nexport class Card {\n card_id: string;\n title: string;\n description?: Nullable;\n position: number;\n list_id: string;\n labels?: Nullable[]>;\n due_date?: Nullable;\n comments?: Nullable[]>;\n attachments?: Nullable[]>;\n members?: Nullable[]>;\n}\n\nexport class Comment {\n comment_id: string;\n content: string;\n created_at: DateTime;\n card_id: string;\n user_id: string;\n}\n\nexport class Label {\n label_id: string;\n name: string;\n color: string;\n workspace_id: string;\n}\n\nexport class Attachment {\n attachment_id: string;\n card_id: string;\n url: string;\n filename: string;\n}\n\nexport class CardLabel {\n card_id: string;\n label_id: string;\n}\n\nexport class CardMember {\n card_id: string;\n user_id: string;\n}\n\nexport abstract class IQuery {\n abstract boards(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract board(board_id: string): Nullable | Promise>;\n\n abstract lists(board_id: string): Nullable[]> | Promise[]>>;\n\n abstract list(list_id: string): Nullable | Promise>;\n\n abstract cards(list_id: string): Nullable[]> | Promise[]>>;\n\n abstract card(card_id: string): Nullable | Promise>;\n\n abstract labels(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract comments(card_id: string): Nullable[]> | Promise[]>>;\n\n abstract users(): Nullable[]> | Promise[]>>;\n\n abstract user(user_id: string): Nullable | Promise>;\n\n abstract me(): Nullable | Promise>;\n\n abstract workspaces(): Nullable[]> | Promise[]>>;\n\n abstract workspace(workspace_id: string): Nullable | Promise>;\n\n abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise;\n}\n\nexport class CreateBoardPayload {\n board?: Nullable;\n}\n\nexport abstract class IMutation {\n abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise;\n\n abstract updateBoard(input: UpdateBoardInput): Board | Promise;\n\n abstract deleteBoard(board_id: string): Status | Promise;\n\n abstract createList(input: CreateListInput): List | Promise;\n\n abstract updateList(input: UpdateListInput): List | Promise;\n\n abstract deleteList(list_id: string): Status | Promise;\n\n abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise;\n\n abstract createCard(input: CreateCardInput): Card | Promise;\n\n abstract updateCard(input: UpdateCardInput): Card | Promise;\n\n abstract deleteCard(card_id: string): Status | Promise;\n\n abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise;\n\n abstract createLabel(input: CreateLabelInput): Label | Promise;\n\n abstract updateLabel(input: UpdateLabelInput): Label | Promise;\n\n abstract deleteLabel(label_id: string): Status | Promise;\n\n abstract uploadFile(file: Upload): FileResponse | Promise;\n\n abstract createUser(input: CreateUserInput): Nullable | Promise>;\n\n abstract updateUser(input: UpdateUserInput): Nullable | Promise>;\n\n abstract deleteUser(user_id: string): Nullable | Promise>;\n\n abstract login(input: LoginInput): Nullable | Promise>;\n\n abstract register(input: RegisterInput): Nullable | Promise>;\n\n abstract logout(): Status | Promise;\n\n abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise;\n\n abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise;\n\n abstract deleteWorkspace(workspace_id: string): Status | Promise;\n\n abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise;\n\n abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise;\n\n abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise;\n}\n\nexport class Success {\n successMessage?: Nullable;\n}\n\nexport class Error {\n errorMessage: string;\n code?: Nullable;\n}\n\nexport class FileResponse {\n success: boolean;\n url?: Nullable;\n message?: Nullable;\n}\n\nexport class User {\n user_id: string;\n username: string;\n email: string;\n picture?: Nullable;\n created_at: DateTime;\n}\n\nexport class AuthSuccess {\n token: string;\n user: User;\n}\n\nexport class AuthError {\n message: string;\n code?: Nullable;\n field?: Nullable;\n}\n\nexport class Workspace {\n workspace_id: string;\n name: string;\n color: string;\n description?: Nullable;\n owner_id: string;\n owner: User;\n members: WorkspaceMembers[];\n boards?: Nullable[]>;\n labels?: Nullable[]>;\n is_pinned: boolean;\n}\n\nexport class WorkspaceMembers {\n workspace_id: string;\n user_id: string;\n role: string;\n user: User;\n workspace: Workspace;\n}\n\nexport class PinWorkspacePayload {\n workspace: Workspace;\n}\n\nexport type DateTime = any;\nexport type Upload = any;\nexport type Status = Success | Error;\nexport type AuthResult = AuthSuccess | AuthError;\ntype Nullable = T | null;\n\n \n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"interfaces/Template.html":{"url":"interfaces/Template.html","title":"interface - Template","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Interfaces\n \n Template\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n documentation/template-playground/template-playground.component.ts\n \n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n \n name\n \n \n \n \n path\n \n \n \n \n type\n \n \n \n \n \n \n \n \n\n\n\n \n Properties\n \n \n \n \n \n name\n \n \n \n \n \n \n \n \n name: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n path\n \n \n \n \n \n \n \n \n path: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n type\n \n \n \n \n \n \n \n \n type: \"template\" | \"partial\"\n\n \n \n\n\n \n \n Type : \"template\" | \"partial\"\n\n \n \n\n\n\n\n\n \n \n \n \n\n\n \n import { Component, OnInit, ViewChild, ElementRef, OnDestroy } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { TemplateEditorService } from './template-editor.service';\nimport { ZipExportService } from './zip-export.service';\nimport { HbsRenderService } from './hbs-render.service';\n\ninterface Template {\n name: string;\n path: string;\n type: 'template' | 'partial';\n}\n\ninterface Session {\n sessionId: string;\n success: boolean;\n message: string;\n}\n\ninterface CompoDocConfig {\n hideGenerator?: boolean;\n disableSourceCode?: boolean;\n disableGraph?: boolean;\n disableCoverage?: boolean;\n disablePrivate?: boolean;\n disableProtected?: boolean;\n disableInternal?: boolean;\n disableLifeCycleHooks?: boolean;\n disableConstructors?: boolean;\n disableRoutesGraph?: boolean;\n disableSearch?: boolean;\n disableDependencies?: boolean;\n disableProperties?: boolean;\n disableDomTree?: boolean;\n disableTemplateTab?: boolean;\n disableStyleTab?: boolean;\n disableMainGraph?: boolean;\n disableFilePath?: boolean;\n disableOverview?: boolean;\n hideDarkModeToggle?: boolean;\n minimal?: boolean;\n customFavicon?: string;\n includes?: string;\n includesName?: string;\n}\n\n@Component({\n selector: 'template-playground-root',\n template: `\n \n \n Template Playground\n \n Session: {{sessionId.substring(0, 8)}}...\n Saving...\n Last saved: {{lastSaved | date:'short'}}\n \n \n ⚙️ Config\n Reset to Default\n Download Templates\n \n \n\n \n \n CompoDoc Configuration\n \n Hide Generator\n Hide Dark Mode Toggle\n Minimal Mode\n Disable Overview\n Disable File Path\n Disable Source Code\n Disable Graph\n Disable Main Graph\n Disable Routes Graph\n Disable Coverage\n Disable Search\n Disable Dependencies\n Disable Private\n Disable Protected\n Disable Internal\n Disable Lifecycle Hooks\n Disable Constructors\n Disable Properties\n Disable DOM Tree\n Disable Template Tab\n Disable Style Tab\n \n \n\n \n \n \n Templates\n \n \n \n {{template.name}}\n {{template.type}}\n \n \n\n \n Loading templates...\n \n \n \n\n \n \n \n {{selectedFile.path}}\n {{selectedFile.type}}\n \n \n \n\n \n \n Live Preview\n 🔄 Refresh\n \n \n \n \n \n \n `,\n styles: [`\n .template-playground {\n display: flex;\n flex-direction: column;\n height: 100vh;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n }\n\n .template-playground-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 1rem 2rem;\n background: #f8f9fa;\n border-bottom: 1px solid #dee2e6;\n }\n\n .template-playground-status {\n display: flex;\n align-items: center;\n gap: 1rem;\n font-size: 0.875rem;\n }\n\n .session-info {\n color: #6c757d;\n font-family: monospace;\n }\n\n .saving-indicator {\n color: #ffc107;\n font-weight: bold;\n }\n\n .last-saved {\n color: #28a745;\n }\n\n .template-playground-actions {\n display: flex;\n gap: 0.5rem;\n }\n\n .config-panel {\n background: #e9ecef;\n padding: 1rem 2rem;\n border-bottom: 1px solid #dee2e6;\n transition: all 0.3s ease;\n max-height: 200px;\n overflow: hidden;\n }\n\n .config-panel.collapsed {\n max-height: 0;\n padding: 0 2rem;\n }\n\n .config-options {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 0.5rem;\n margin-top: 0.5rem;\n }\n\n .config-options label {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-size: 0.875rem;\n }\n\n .template-playground-body {\n display: flex;\n flex: 1;\n overflow: hidden;\n }\n\n .template-playground-sidebar {\n width: 250px;\n background: #f8f9fa;\n border-right: 1px solid #dee2e6;\n overflow-y: auto;\n }\n\n .template-file-list {\n padding: 1rem;\n }\n\n .template-file-list h3 {\n margin: 0 0 0.5rem 0;\n font-size: 0.875rem;\n font-weight: 600;\n color: #495057;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n }\n\n .file-list {\n list-style: none;\n padding: 0;\n margin: 0 0 1.5rem 0;\n }\n\n .file-list li {\n display: flex;\n align-items: center;\n padding: 0.5rem;\n cursor: pointer;\n border-radius: 4px;\n font-size: 0.875rem;\n transition: background-color 0.15s ease;\n }\n\n .file-list li:hover {\n background: #e9ecef;\n }\n\n .file-list li.active {\n background: #007bff;\n color: white;\n }\n\n .file-icon {\n margin-right: 0.5rem;\n opacity: 0.7;\n }\n\n .file-type {\n margin-left: auto;\n font-size: 0.75rem;\n opacity: 0.7;\n text-transform: uppercase;\n }\n\n .loading-templates {\n text-align: center;\n color: #6c757d;\n font-style: italic;\n padding: 2rem;\n }\n\n .template-playground-main {\n flex: 1;\n display: flex;\n overflow: hidden;\n }\n\n .template-playground-editor {\n width: 50%;\n display: flex;\n flex-direction: column;\n border-right: 1px solid #dee2e6;\n }\n\n .editor-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 0.75rem 1rem;\n background: #f8f9fa;\n border-bottom: 1px solid #dee2e6;\n }\n\n .editor-header h4 {\n margin: 0;\n font-size: 0.875rem;\n font-weight: 600;\n }\n\n .file-type-badge {\n background: #6c757d;\n color: white;\n padding: 0.125rem 0.5rem;\n border-radius: 12px;\n font-size: 0.75rem;\n text-transform: uppercase;\n }\n\n .editor-container {\n flex: 1;\n position: relative;\n }\n\n .template-playground-preview {\n width: 50%;\n display: flex;\n flex-direction: column;\n }\n\n .preview-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 0.75rem 1rem;\n background: #f8f9fa;\n border-bottom: 1px solid #dee2e6;\n }\n\n .preview-header h4 {\n margin: 0;\n font-size: 0.875rem;\n font-weight: 600;\n }\n\n .preview-frame {\n flex: 1;\n border: none;\n background: white;\n }\n\n .btn {\n padding: 0.375rem 0.75rem;\n border: 1px solid transparent;\n border-radius: 0.25rem;\n font-size: 0.875rem;\n font-weight: 500;\n text-decoration: none;\n cursor: pointer;\n transition: all 0.15s ease;\n }\n\n .btn-primary {\n background: #007bff;\n border-color: #007bff;\n color: white;\n }\n\n .btn-primary:hover {\n background: #0056b3;\n border-color: #004085;\n }\n\n .btn-secondary {\n background: #6c757d;\n border-color: #6c757d;\n color: white;\n }\n\n .btn-secondary:hover {\n background: #545b62;\n border-color: #4e555b;\n }\n\n .btn-success {\n background: #28a745;\n border-color: #28a745;\n color: white;\n }\n\n .btn-success:hover {\n background: #1e7e34;\n border-color: #1c7430;\n }\n\n .btn-sm {\n padding: 0.25rem 0.5rem;\n font-size: 0.75rem;\n }\n `]\n})\nexport class TemplatePlaygroundComponent implements OnInit, OnDestroy {\n @ViewChild('editorContainer', { static: true }) editorContainer!: ElementRef;\n @ViewChild('previewFrame', { static: true }) previewFrame!: ElementRef;\n\n sessionId: string = '';\n templates: Template[] = [];\n selectedFile: Template | null = null;\n config: CompoDocConfig = {};\n showConfigPanel: boolean = false;\n saving: boolean = false;\n lastSaved: Date | null = null;\n\n private saveTimeout?: number;\n private readonly SAVE_DELAY = 300; // 300ms debounce\n\n get previewUrl(): string {\n return this.sessionId ? `/api/session/${this.sessionId}/docs/` : '';\n }\n\n constructor(\n private http: HttpClient,\n private editorService: TemplateEditorService,\n private zipService: ZipExportService,\n private hbsService: HbsRenderService\n ) {}\n\n async ngOnInit() {\n try {\n await this.createSession();\n await this.loadSessionTemplates();\n await this.loadSessionConfig();\n this.initializeEditor();\n } catch (error) {\n console.error('Error initializing template playground:', error);\n }\n }\n\n ngOnDestroy() {\n if (this.saveTimeout) {\n clearTimeout(this.saveTimeout);\n }\n }\n\n private async createSession(): Promise {\n const response = await this.http.post('/api/session/create', {}).toPromise();\n if (response && response.success) {\n this.sessionId = response.sessionId;\n console.log('Session created:', this.sessionId);\n } else {\n throw new Error('Failed to create session');\n }\n }\n\n private async loadSessionTemplates(): Promise {\n if (!this.sessionId) return;\n\n const response = await this.http.get(`/api/session/${this.sessionId}/templates`).toPromise();\n if (response && response.success) {\n this.templates = response.templates;\n\n // Auto-select the first template\n if (this.templates.length > 0 && !this.selectedFile) {\n this.selectFile(this.templates[0]);\n }\n }\n }\n\n private async loadSessionConfig(): Promise {\n if (!this.sessionId) return;\n\n const response = await this.http.get(`/api/session/${this.sessionId}/config`).toPromise();\n if (response && response.success) {\n this.config = response.config;\n }\n }\n\n initializeEditor() {\n this.editorService.initializeEditor(this.editorContainer.nativeElement);\n\n // Set up debounced save on content change\n this.editorService.setOnChangeCallback((content: string) => {\n this.scheduleAutoSave(content);\n });\n }\n\n async selectFile(template: Template) {\n this.selectedFile = template;\n\n if (!this.sessionId) return;\n\n try {\n const response = await this.http.get(`/api/session/${this.sessionId}/template/${template.path}`).toPromise();\n if (response && response.success) {\n this.editorService.setEditorContent(response.content, template.type === 'template' ? 'handlebars' : 'handlebars');\n }\n } catch (error) {\n console.error('Error loading template:', error);\n }\n }\n\n private scheduleAutoSave(content: string): void {\n if (!this.selectedFile || !this.sessionId) return;\n\n // Clear existing timeout\n if (this.saveTimeout) {\n clearTimeout(this.saveTimeout);\n }\n\n // Set saving indicator\n this.saving = true;\n\n // Schedule new save\n this.saveTimeout = window.setTimeout(async () => {\n try {\n await this.saveTemplate(content);\n this.saving = false;\n this.lastSaved = new Date();\n } catch (error) {\n console.error('Error saving template:', error);\n this.saving = false;\n }\n }, this.SAVE_DELAY);\n }\n\n private async saveTemplate(content: string): Promise {\n if (!this.selectedFile || !this.sessionId) return;\n\n const response = await this.http.post(`/api/session/${this.sessionId}/template/${this.selectedFile.path}`, {\n content\n }).toPromise();\n\n if (!response || !response.success) {\n throw new Error('Failed to save template');\n }\n }\n\n async updateConfig(): Promise {\n if (!this.sessionId) return;\n\n try {\n const response = await this.http.post(`/api/session/${this.sessionId}/config`, {\n config: this.config\n }).toPromise();\n\n if (response && response.success) {\n // Config updated, documentation will be regenerated automatically\n }\n } catch (error) {\n console.error('Error updating config:', error);\n }\n }\n\n toggleConfigPanel(): void {\n this.showConfigPanel = !this.showConfigPanel;\n }\n\n refreshPreview(): void {\n if (this.previewFrame?.nativeElement) {\n this.previewFrame.nativeElement.src = this.previewFrame.nativeElement.src;\n }\n }\n\n resetToDefault(): void {\n // Implementation for resetting to default templates\n if (confirm('Are you sure you want to reset all templates to their default values? This action cannot be undone.')) {\n // TODO: Implement reset functionality\n console.log('Reset to default templates');\n }\n }\n\n async exportZip(): Promise {\n try {\n if (!this.sessionId) {\n console.error('No active session. Please refresh the page and try again.');\n return;\n }\n\n console.log('Creating template package...');\n\n // Call server-side ZIP creation endpoint for all templates\n const response = await this.http.post(`/api/session/${this.sessionId}/download-all-templates`, {}, {\n responseType: 'blob',\n observe: 'response'\n }).toPromise();\n\n if (!response || !response.body) {\n throw new Error('Failed to create template package');\n }\n\n // Get the ZIP file as a blob\n const zipBlob = response.body;\n\n // Get filename from response headers or construct it\n const contentDisposition = response.headers.get('Content-Disposition');\n let filename = `compodoc-templates-${this.sessionId}.zip`;\n\n if (contentDisposition) {\n const filenameMatch = contentDisposition.match(/filename=\"([^\"]+)\"/);\n if (filenameMatch) {\n filename = filenameMatch[1];\n }\n }\n\n // Create download link and trigger download\n const url = URL.createObjectURL(zipBlob);\n const a = document.createElement('a');\n a.href = url;\n a.download = filename;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n URL.revokeObjectURL(url);\n\n console.log('Template package downloaded successfully!');\n } catch (error) {\n console.error('Error downloading template package:', error);\n }\n }\n\n trackByName(index: number, item: Template): string {\n return item.name;\n }\n}\n\n \n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"injectables/TemplateEditorService.html":{"url":"injectables/TemplateEditorService.html","title":"injectable - TemplateEditorService","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n Injectables\n TemplateEditorService\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n documentation/template-playground/template-editor.service.ts\n \n\n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Private\n editor\n \n \n Private\n onChangeCallback\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n destroy\n \n \n Private\n getLanguageFromFileType\n \n \n initializeEditor\n \n \n Private\n registerHandlebarsLanguage\n \n \n setEditorContent\n \n \n setOnChangeCallback\n \n \n \n \n\n\n\n\n\n \n \n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n destroy\n \n \n \n \n \n \ndestroy()\n \n \n\n\n \n \n Defined in documentation/template-playground/template-editor.service.ts:167\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n Private\n getLanguageFromFileType\n \n \n \n \n \n \n \n getLanguageFromFileType(fileType: string)\n \n \n\n\n \n \n Defined in documentation/template-playground/template-editor.service.ts:71\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n fileType\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : string\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n initializeEditor\n \n \n \n \n \n \ninitializeEditor(container: HTMLElement)\n \n \n\n\n \n \n Defined in documentation/template-playground/template-editor.service.ts:12\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n container\n \n HTMLElement\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Private\n registerHandlebarsLanguage\n \n \n \n \n \n \n \n registerHandlebarsLanguage()\n \n \n\n\n \n \n Defined in documentation/template-playground/template-editor.service.ts:87\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n setEditorContent\n \n \n \n \n \n \nsetEditorContent(content: string, fileType: string)\n \n \n\n\n \n \n Defined in documentation/template-playground/template-editor.service.ts:59\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n content\n \n string\n \n\n \n No\n \n\n\n \n \n fileType\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n setOnChangeCallback\n \n \n \n \n \n \nsetOnChangeCallback(callback: (value: string) => void)\n \n \n\n\n \n \n Defined in documentation/template-playground/template-editor.service.ts:67\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n callback\n \n function\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n \n \n Private\n editor\n \n \n \n \n \n \n Type : any\n\n \n \n \n \n Defined in documentation/template-playground/template-editor.service.ts:9\n \n \n\n\n \n \n \n \n \n \n \n \n Private\n onChangeCallback\n \n \n \n \n \n \n Type : unknown | null\n\n \n \n \n \n Default value : null\n \n \n \n \n Defined in documentation/template-playground/template-editor.service.ts:10\n \n \n\n\n \n \n\n\n \n\n\n \n import { Injectable } from '@angular/core';\n\ndeclare const monaco: any;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TemplateEditorService {\n private editor: any;\n private onChangeCallback: ((value: string) => void) | null = null;\n\n initializeEditor(container: HTMLElement) {\n // Initialize Monaco Editor\n this.editor = monaco.editor.create(container, {\n value: '',\n language: 'html',\n theme: 'vs-dark',\n automaticLayout: true,\n minimap: {\n enabled: true\n },\n scrollBeyondLastLine: false,\n fontSize: 14,\n wordWrap: 'on',\n lineNumbers: 'on',\n roundedSelection: false,\n scrollbar: {\n horizontal: 'visible',\n vertical: 'visible'\n },\n overviewRulerLanes: 2,\n quickSuggestions: {\n other: true,\n comments: true,\n strings: true\n },\n parameterHints: {\n enabled: true\n },\n autoClosingBrackets: 'always',\n autoClosingQuotes: 'always',\n suggestOnTriggerCharacters: true,\n acceptSuggestionOnEnter: 'on',\n tabCompletion: 'on',\n wordBasedSuggestions: false\n });\n\n // Set up change listener\n this.editor.onDidChangeModelContent(() => {\n if (this.onChangeCallback) {\n this.onChangeCallback(this.editor.getValue());\n }\n });\n\n // Register custom language definitions\n this.registerHandlebarsLanguage();\n }\n\n setEditorContent(content: string, fileType: string) {\n if (this.editor) {\n const language = this.getLanguageFromFileType(fileType);\n const model = monaco.editor.createModel(content, language);\n this.editor.setModel(model);\n }\n }\n\n setOnChangeCallback(callback: (value: string) => void) {\n this.onChangeCallback = callback;\n }\n\n private getLanguageFromFileType(fileType: string): string {\n switch (fileType) {\n case 'hbs':\n return 'handlebars';\n case 'css':\n case 'scss':\n return 'css';\n case 'js':\n return 'javascript';\n case 'ts':\n return 'typescript';\n default:\n return 'html';\n }\n }\n\n private registerHandlebarsLanguage() {\n // Register Handlebars language for Monaco Editor\n if (monaco.languages.getLanguages().find((lang: any) => lang.id === 'handlebars')) {\n return; // Already registered\n }\n\n monaco.languages.register({ id: 'handlebars' });\n\n monaco.languages.setMonarchTokensProvider('handlebars', {\n tokenizer: {\n root: [\n [/\\{\\{\\{/, { token: 'keyword', next: '@handlebars_unescaped' }],\n [/\\{\\{/, { token: 'keyword', next: '@handlebars' }],\n [//, 'comment', '@pop'],\n [/[^-]+/, 'comment'],\n [/./, 'comment']\n ],\n\n doctype: [\n [/[^>]+/, 'metatag.content'],\n [/>/, 'metatag', '@pop']\n ],\n\n tag: [\n [/[ \\t\\r\\n]+/, 'white'],\n [/(\\w+)(\\s*=\\s*)(\"([^\"]*)\")/, ['attribute.name', 'delimiter', 'attribute.value', 'attribute.value']],\n [/(\\w+)(\\s*=\\s*)('([^']*)')/, ['attribute.name', 'delimiter', 'attribute.value', 'attribute.value']],\n [/\\w+/, 'attribute.name'],\n [/>/, 'delimiter', '@pop']\n ]\n }\n });\n\n monaco.languages.setLanguageConfiguration('handlebars', {\n comments: {\n blockComment: ['']\n },\n brackets: [\n [''],\n ['{{', '}}'],\n ['{{{', '}}}']\n ],\n autoClosingPairs: [\n { open: '' },\n { open: '{{', close: '}}' },\n { open: '{{{', close: '}}}' },\n { open: '\"', close: '\"' },\n { open: \"'\", close: \"'\" }\n ],\n surroundingPairs: [\n { open: '' },\n { open: '{{', close: '}}' },\n { open: '{{{', close: '}}}' },\n { open: '\"', close: '\"' },\n { open: \"'\", close: \"'\" }\n ]\n });\n }\n\n destroy() {\n if (this.editor) {\n this.editor.dispose();\n this.editor = null;\n }\n }\n}\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"modules/TemplatePlaygroundModule.html":{"url":"modules/TemplatePlaygroundModule.html","title":"module - TemplatePlaygroundModule","body":"\n \n\n\n\n\n\n\n\n\n Modules\n TemplatePlaygroundModule\n\n\n\n \n \n\n\n\n\n\ndependencies\n\nLegend\n\n  Declarations\n\n  Module\n\n  Bootstrap\n\n  Providers\n\n  Exports\n\ncluster_TemplatePlaygroundModule\n\n\n\ncluster_TemplatePlaygroundModule_providers\n\n\n\ncluster_TemplatePlaygroundModule_bootstrap\n\n\n\ncluster_TemplatePlaygroundModule_imports\n\n\n\ncluster_TemplatePlaygroundModule_declarations\n\n\n\n\nTemplatePlaygroundComponent\n\nTemplatePlaygroundComponent\n\n\n\nTemplatePlaygroundModule\n\nTemplatePlaygroundModule\n\nTemplatePlaygroundModule -->\n\nTemplatePlaygroundComponent->TemplatePlaygroundModule\n\n\n\n\n\nTemplatePlaygroundComponent \n\nTemplatePlaygroundComponent \n\nTemplatePlaygroundComponent -->\n\nTemplatePlaygroundModule->TemplatePlaygroundComponent \n\n\n\n\n\nCommonModule\n\nCommonModule\n\nTemplatePlaygroundModule -->\n\nCommonModule->TemplatePlaygroundModule\n\n\n\n\n\nHbsRenderService\n\nHbsRenderService\n\nTemplatePlaygroundModule -->\n\nHbsRenderService->TemplatePlaygroundModule\n\n\n\n\n\nTemplateEditorService\n\nTemplateEditorService\n\nTemplatePlaygroundModule -->\n\nTemplateEditorService->TemplatePlaygroundModule\n\n\n\n\n\nZipExportService\n\nZipExportService\n\nTemplatePlaygroundModule -->\n\nZipExportService->TemplatePlaygroundModule\n\n\n\n\n\n\n \n \n \n Zoom in\n Reset\n Zoom out\n \n\n\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n\n \n File\n \n \n documentation/template-playground/template-playground.module.ts\n \n\n\n\n\n\n \n \n \n Declarations\n \n \n TemplatePlaygroundComponent\n \n \n \n \n Providers\n \n \n HbsRenderService\n \n \n TemplateEditorService\n \n \n ZipExportService\n \n \n \n \n Imports\n \n \n CommonModule\n \n \n \n \n Bootstrap\n \n \n TemplatePlaygroundComponent\n \n \n \n \n \n\n\n \n\n\n \n import { NgModule } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { HttpClientModule } from '@angular/common/http';\n\nimport { TemplatePlaygroundComponent } from './template-playground.component';\nimport { TemplateEditorService } from './template-editor.service';\nimport { ZipExportService } from './zip-export.service';\nimport { HbsRenderService } from './hbs-render.service';\n\n@NgModule({\n declarations: [\n TemplatePlaygroundComponent\n ],\n imports: [\n BrowserModule,\n CommonModule,\n FormsModule,\n HttpClientModule\n ],\n providers: [\n TemplateEditorService,\n ZipExportService,\n HbsRenderService\n ],\n bootstrap: [TemplatePlaygroundComponent]\n})\nexport class TemplatePlaygroundModule { }\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/UpdateBoardInput.html":{"url":"classes/UpdateBoardInput.html","title":"class - UpdateBoardInput","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n UpdateBoardInput\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/graphql/graphql.ts\n \n\n\n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n board_id\n \n \n Optional\n color\n \n \n Optional\n description\n \n \n Optional\n title\n \n \n \n \n\n\n\n\n\n\n \n \n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n board_id\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:25\n \n \n\n\n \n \n \n \n \n \n \n \n Optional\n color\n \n \n \n \n \n \n Type : Nullable\n\n \n \n \n \n Defined in src/graphql/graphql.ts:28\n \n \n\n\n \n \n \n \n \n \n \n \n Optional\n description\n \n \n \n \n \n \n Type : Nullable\n\n \n \n \n \n Defined in src/graphql/graphql.ts:27\n \n \n\n\n \n \n \n \n \n \n \n \n Optional\n title\n \n \n \n \n \n \n Type : Nullable\n\n \n \n \n \n Defined in src/graphql/graphql.ts:26\n \n \n\n\n \n \n\n\n\n\n\n\n\n\n \n\n\n \n export enum Role {\n Admin = \"Admin\",\n Member = \"Member\",\n Viewer = \"Viewer\"\n}\n\nexport class CreateBoardInput {\n title: string;\n description?: Nullable;\n color: string;\n workspace_id: string;\n}\n\nexport class UpdateBoardInput {\n board_id: string;\n title?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateListInput {\n title: string;\n board_id: string;\n position: number;\n color?: Nullable;\n}\n\nexport class UpdateListInput {\n list_id: string;\n title?: Nullable;\n position?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateCardInput {\n title: string;\n list_id: string;\n description?: Nullable;\n position: number;\n due_date?: Nullable;\n}\n\nexport class UpdateCardInput {\n card_id: string;\n title?: Nullable;\n description?: Nullable;\n position?: Nullable;\n due_date?: Nullable;\n}\n\nexport class CreateLabelInput {\n name: string;\n color: string;\n board_id: string;\n}\n\nexport class UpdateLabelInput {\n label_id: string;\n name?: Nullable;\n color?: Nullable;\n}\n\nexport class LoginInput {\n email: string;\n password: string;\n}\n\nexport class RegisterInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class CreateUserInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class UpdateUserInput {\n user_id: string;\n username?: Nullable;\n email?: Nullable;\n password?: Nullable;\n}\n\nexport class CreateWorkspaceInput {\n name: string;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class UpdateWorkspaceInput {\n name?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class AddWorkspaceMemberInput {\n workspace_id: string;\n user_email: string;\n role?: Nullable;\n}\n\nexport class UpdateMemberRoleInput {\n workspace_id: string;\n user_id: string;\n role: Role;\n}\n\nexport class Board {\n board_id: string;\n title: string;\n description?: Nullable;\n color: string;\n lists: List[];\n workspace_id: string;\n}\n\nexport class List {\n list_id: string;\n title: string;\n position: number;\n color: string;\n board_id: string;\n cards?: Nullable[]>;\n}\n\nexport class Card {\n card_id: string;\n title: string;\n description?: Nullable;\n position: number;\n list_id: string;\n labels?: Nullable[]>;\n due_date?: Nullable;\n comments?: Nullable[]>;\n attachments?: Nullable[]>;\n members?: Nullable[]>;\n}\n\nexport class Comment {\n comment_id: string;\n content: string;\n created_at: DateTime;\n card_id: string;\n user_id: string;\n}\n\nexport class Label {\n label_id: string;\n name: string;\n color: string;\n workspace_id: string;\n}\n\nexport class Attachment {\n attachment_id: string;\n card_id: string;\n url: string;\n filename: string;\n}\n\nexport class CardLabel {\n card_id: string;\n label_id: string;\n}\n\nexport class CardMember {\n card_id: string;\n user_id: string;\n}\n\nexport abstract class IQuery {\n abstract boards(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract board(board_id: string): Nullable | Promise>;\n\n abstract lists(board_id: string): Nullable[]> | Promise[]>>;\n\n abstract list(list_id: string): Nullable | Promise>;\n\n abstract cards(list_id: string): Nullable[]> | Promise[]>>;\n\n abstract card(card_id: string): Nullable | Promise>;\n\n abstract labels(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract comments(card_id: string): Nullable[]> | Promise[]>>;\n\n abstract users(): Nullable[]> | Promise[]>>;\n\n abstract user(user_id: string): Nullable | Promise>;\n\n abstract me(): Nullable | Promise>;\n\n abstract workspaces(): Nullable[]> | Promise[]>>;\n\n abstract workspace(workspace_id: string): Nullable | Promise>;\n\n abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise;\n}\n\nexport class CreateBoardPayload {\n board?: Nullable;\n}\n\nexport abstract class IMutation {\n abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise;\n\n abstract updateBoard(input: UpdateBoardInput): Board | Promise;\n\n abstract deleteBoard(board_id: string): Status | Promise;\n\n abstract createList(input: CreateListInput): List | Promise;\n\n abstract updateList(input: UpdateListInput): List | Promise;\n\n abstract deleteList(list_id: string): Status | Promise;\n\n abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise;\n\n abstract createCard(input: CreateCardInput): Card | Promise;\n\n abstract updateCard(input: UpdateCardInput): Card | Promise;\n\n abstract deleteCard(card_id: string): Status | Promise;\n\n abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise;\n\n abstract createLabel(input: CreateLabelInput): Label | Promise;\n\n abstract updateLabel(input: UpdateLabelInput): Label | Promise;\n\n abstract deleteLabel(label_id: string): Status | Promise;\n\n abstract uploadFile(file: Upload): FileResponse | Promise;\n\n abstract createUser(input: CreateUserInput): Nullable | Promise>;\n\n abstract updateUser(input: UpdateUserInput): Nullable | Promise>;\n\n abstract deleteUser(user_id: string): Nullable | Promise>;\n\n abstract login(input: LoginInput): Nullable | Promise>;\n\n abstract register(input: RegisterInput): Nullable | Promise>;\n\n abstract logout(): Status | Promise;\n\n abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise;\n\n abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise;\n\n abstract deleteWorkspace(workspace_id: string): Status | Promise;\n\n abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise;\n\n abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise;\n\n abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise;\n}\n\nexport class Success {\n successMessage?: Nullable;\n}\n\nexport class Error {\n errorMessage: string;\n code?: Nullable;\n}\n\nexport class FileResponse {\n success: boolean;\n url?: Nullable;\n message?: Nullable;\n}\n\nexport class User {\n user_id: string;\n username: string;\n email: string;\n picture?: Nullable;\n created_at: DateTime;\n}\n\nexport class AuthSuccess {\n token: string;\n user: User;\n}\n\nexport class AuthError {\n message: string;\n code?: Nullable;\n field?: Nullable;\n}\n\nexport class Workspace {\n workspace_id: string;\n name: string;\n color: string;\n description?: Nullable;\n owner_id: string;\n owner: User;\n members: WorkspaceMembers[];\n boards?: Nullable[]>;\n labels?: Nullable[]>;\n is_pinned: boolean;\n}\n\nexport class WorkspaceMembers {\n workspace_id: string;\n user_id: string;\n role: string;\n user: User;\n workspace: Workspace;\n}\n\nexport class PinWorkspacePayload {\n workspace: Workspace;\n}\n\nexport type DateTime = any;\nexport type Upload = any;\nexport type Status = Success | Error;\nexport type AuthResult = AuthSuccess | AuthError;\ntype Nullable = T | null;\n\n \n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/UpdateCardInput.html":{"url":"classes/UpdateCardInput.html","title":"class - UpdateCardInput","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n UpdateCardInput\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/graphql/graphql.ts\n \n\n\n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n card_id\n \n \n Optional\n description\n \n \n Optional\n due_date\n \n \n Optional\n position\n \n \n Optional\n title\n \n \n \n \n\n\n\n\n\n\n \n \n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n card_id\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:54\n \n \n\n\n \n \n \n \n \n \n \n \n Optional\n description\n \n \n \n \n \n \n Type : Nullable\n\n \n \n \n \n Defined in src/graphql/graphql.ts:56\n \n \n\n\n \n \n \n \n \n \n \n \n Optional\n due_date\n \n \n \n \n \n \n Type : Nullable\n\n \n \n \n \n Defined in src/graphql/graphql.ts:58\n \n \n\n\n \n \n \n \n \n \n \n \n Optional\n position\n \n \n \n \n \n \n Type : Nullable\n\n \n \n \n \n Defined in src/graphql/graphql.ts:57\n \n \n\n\n \n \n \n \n \n \n \n \n Optional\n title\n \n \n \n \n \n \n Type : Nullable\n\n \n \n \n \n Defined in src/graphql/graphql.ts:55\n \n \n\n\n \n \n\n\n\n\n\n\n\n\n \n\n\n \n export enum Role {\n Admin = \"Admin\",\n Member = \"Member\",\n Viewer = \"Viewer\"\n}\n\nexport class CreateBoardInput {\n title: string;\n description?: Nullable;\n color: string;\n workspace_id: string;\n}\n\nexport class UpdateBoardInput {\n board_id: string;\n title?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateListInput {\n title: string;\n board_id: string;\n position: number;\n color?: Nullable;\n}\n\nexport class UpdateListInput {\n list_id: string;\n title?: Nullable;\n position?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateCardInput {\n title: string;\n list_id: string;\n description?: Nullable;\n position: number;\n due_date?: Nullable;\n}\n\nexport class UpdateCardInput {\n card_id: string;\n title?: Nullable;\n description?: Nullable;\n position?: Nullable;\n due_date?: Nullable;\n}\n\nexport class CreateLabelInput {\n name: string;\n color: string;\n board_id: string;\n}\n\nexport class UpdateLabelInput {\n label_id: string;\n name?: Nullable;\n color?: Nullable;\n}\n\nexport class LoginInput {\n email: string;\n password: string;\n}\n\nexport class RegisterInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class CreateUserInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class UpdateUserInput {\n user_id: string;\n username?: Nullable;\n email?: Nullable;\n password?: Nullable;\n}\n\nexport class CreateWorkspaceInput {\n name: string;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class UpdateWorkspaceInput {\n name?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class AddWorkspaceMemberInput {\n workspace_id: string;\n user_email: string;\n role?: Nullable;\n}\n\nexport class UpdateMemberRoleInput {\n workspace_id: string;\n user_id: string;\n role: Role;\n}\n\nexport class Board {\n board_id: string;\n title: string;\n description?: Nullable;\n color: string;\n lists: List[];\n workspace_id: string;\n}\n\nexport class List {\n list_id: string;\n title: string;\n position: number;\n color: string;\n board_id: string;\n cards?: Nullable[]>;\n}\n\nexport class Card {\n card_id: string;\n title: string;\n description?: Nullable;\n position: number;\n list_id: string;\n labels?: Nullable[]>;\n due_date?: Nullable;\n comments?: Nullable[]>;\n attachments?: Nullable[]>;\n members?: Nullable[]>;\n}\n\nexport class Comment {\n comment_id: string;\n content: string;\n created_at: DateTime;\n card_id: string;\n user_id: string;\n}\n\nexport class Label {\n label_id: string;\n name: string;\n color: string;\n workspace_id: string;\n}\n\nexport class Attachment {\n attachment_id: string;\n card_id: string;\n url: string;\n filename: string;\n}\n\nexport class CardLabel {\n card_id: string;\n label_id: string;\n}\n\nexport class CardMember {\n card_id: string;\n user_id: string;\n}\n\nexport abstract class IQuery {\n abstract boards(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract board(board_id: string): Nullable | Promise>;\n\n abstract lists(board_id: string): Nullable[]> | Promise[]>>;\n\n abstract list(list_id: string): Nullable | Promise>;\n\n abstract cards(list_id: string): Nullable[]> | Promise[]>>;\n\n abstract card(card_id: string): Nullable | Promise>;\n\n abstract labels(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract comments(card_id: string): Nullable[]> | Promise[]>>;\n\n abstract users(): Nullable[]> | Promise[]>>;\n\n abstract user(user_id: string): Nullable | Promise>;\n\n abstract me(): Nullable | Promise>;\n\n abstract workspaces(): Nullable[]> | Promise[]>>;\n\n abstract workspace(workspace_id: string): Nullable | Promise>;\n\n abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise;\n}\n\nexport class CreateBoardPayload {\n board?: Nullable;\n}\n\nexport abstract class IMutation {\n abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise;\n\n abstract updateBoard(input: UpdateBoardInput): Board | Promise;\n\n abstract deleteBoard(board_id: string): Status | Promise;\n\n abstract createList(input: CreateListInput): List | Promise;\n\n abstract updateList(input: UpdateListInput): List | Promise;\n\n abstract deleteList(list_id: string): Status | Promise;\n\n abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise;\n\n abstract createCard(input: CreateCardInput): Card | Promise;\n\n abstract updateCard(input: UpdateCardInput): Card | Promise;\n\n abstract deleteCard(card_id: string): Status | Promise;\n\n abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise;\n\n abstract createLabel(input: CreateLabelInput): Label | Promise;\n\n abstract updateLabel(input: UpdateLabelInput): Label | Promise;\n\n abstract deleteLabel(label_id: string): Status | Promise;\n\n abstract uploadFile(file: Upload): FileResponse | Promise;\n\n abstract createUser(input: CreateUserInput): Nullable | Promise>;\n\n abstract updateUser(input: UpdateUserInput): Nullable | Promise>;\n\n abstract deleteUser(user_id: string): Nullable | Promise>;\n\n abstract login(input: LoginInput): Nullable | Promise>;\n\n abstract register(input: RegisterInput): Nullable | Promise>;\n\n abstract logout(): Status | Promise;\n\n abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise;\n\n abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise;\n\n abstract deleteWorkspace(workspace_id: string): Status | Promise;\n\n abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise;\n\n abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise;\n\n abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise;\n}\n\nexport class Success {\n successMessage?: Nullable;\n}\n\nexport class Error {\n errorMessage: string;\n code?: Nullable;\n}\n\nexport class FileResponse {\n success: boolean;\n url?: Nullable;\n message?: Nullable;\n}\n\nexport class User {\n user_id: string;\n username: string;\n email: string;\n picture?: Nullable;\n created_at: DateTime;\n}\n\nexport class AuthSuccess {\n token: string;\n user: User;\n}\n\nexport class AuthError {\n message: string;\n code?: Nullable;\n field?: Nullable;\n}\n\nexport class Workspace {\n workspace_id: string;\n name: string;\n color: string;\n description?: Nullable;\n owner_id: string;\n owner: User;\n members: WorkspaceMembers[];\n boards?: Nullable[]>;\n labels?: Nullable[]>;\n is_pinned: boolean;\n}\n\nexport class WorkspaceMembers {\n workspace_id: string;\n user_id: string;\n role: string;\n user: User;\n workspace: Workspace;\n}\n\nexport class PinWorkspacePayload {\n workspace: Workspace;\n}\n\nexport type DateTime = any;\nexport type Upload = any;\nexport type Status = Success | Error;\nexport type AuthResult = AuthSuccess | AuthError;\ntype Nullable = T | null;\n\n \n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/UpdateLabelInput.html":{"url":"classes/UpdateLabelInput.html","title":"class - UpdateLabelInput","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n UpdateLabelInput\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/graphql/graphql.ts\n \n\n\n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Optional\n color\n \n \n label_id\n \n \n Optional\n name\n \n \n \n \n\n\n\n\n\n\n \n \n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n Optional\n color\n \n \n \n \n \n \n Type : Nullable\n\n \n \n \n \n Defined in src/graphql/graphql.ts:70\n \n \n\n\n \n \n \n \n \n \n \n \n label_id\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:68\n \n \n\n\n \n \n \n \n \n \n \n \n Optional\n name\n \n \n \n \n \n \n Type : Nullable\n\n \n \n \n \n Defined in src/graphql/graphql.ts:69\n \n \n\n\n \n \n\n\n\n\n\n\n\n\n \n\n\n \n export enum Role {\n Admin = \"Admin\",\n Member = \"Member\",\n Viewer = \"Viewer\"\n}\n\nexport class CreateBoardInput {\n title: string;\n description?: Nullable;\n color: string;\n workspace_id: string;\n}\n\nexport class UpdateBoardInput {\n board_id: string;\n title?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateListInput {\n title: string;\n board_id: string;\n position: number;\n color?: Nullable;\n}\n\nexport class UpdateListInput {\n list_id: string;\n title?: Nullable;\n position?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateCardInput {\n title: string;\n list_id: string;\n description?: Nullable;\n position: number;\n due_date?: Nullable;\n}\n\nexport class UpdateCardInput {\n card_id: string;\n title?: Nullable;\n description?: Nullable;\n position?: Nullable;\n due_date?: Nullable;\n}\n\nexport class CreateLabelInput {\n name: string;\n color: string;\n board_id: string;\n}\n\nexport class UpdateLabelInput {\n label_id: string;\n name?: Nullable;\n color?: Nullable;\n}\n\nexport class LoginInput {\n email: string;\n password: string;\n}\n\nexport class RegisterInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class CreateUserInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class UpdateUserInput {\n user_id: string;\n username?: Nullable;\n email?: Nullable;\n password?: Nullable;\n}\n\nexport class CreateWorkspaceInput {\n name: string;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class UpdateWorkspaceInput {\n name?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class AddWorkspaceMemberInput {\n workspace_id: string;\n user_email: string;\n role?: Nullable;\n}\n\nexport class UpdateMemberRoleInput {\n workspace_id: string;\n user_id: string;\n role: Role;\n}\n\nexport class Board {\n board_id: string;\n title: string;\n description?: Nullable;\n color: string;\n lists: List[];\n workspace_id: string;\n}\n\nexport class List {\n list_id: string;\n title: string;\n position: number;\n color: string;\n board_id: string;\n cards?: Nullable[]>;\n}\n\nexport class Card {\n card_id: string;\n title: string;\n description?: Nullable;\n position: number;\n list_id: string;\n labels?: Nullable[]>;\n due_date?: Nullable;\n comments?: Nullable[]>;\n attachments?: Nullable[]>;\n members?: Nullable[]>;\n}\n\nexport class Comment {\n comment_id: string;\n content: string;\n created_at: DateTime;\n card_id: string;\n user_id: string;\n}\n\nexport class Label {\n label_id: string;\n name: string;\n color: string;\n workspace_id: string;\n}\n\nexport class Attachment {\n attachment_id: string;\n card_id: string;\n url: string;\n filename: string;\n}\n\nexport class CardLabel {\n card_id: string;\n label_id: string;\n}\n\nexport class CardMember {\n card_id: string;\n user_id: string;\n}\n\nexport abstract class IQuery {\n abstract boards(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract board(board_id: string): Nullable | Promise>;\n\n abstract lists(board_id: string): Nullable[]> | Promise[]>>;\n\n abstract list(list_id: string): Nullable | Promise>;\n\n abstract cards(list_id: string): Nullable[]> | Promise[]>>;\n\n abstract card(card_id: string): Nullable | Promise>;\n\n abstract labels(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract comments(card_id: string): Nullable[]> | Promise[]>>;\n\n abstract users(): Nullable[]> | Promise[]>>;\n\n abstract user(user_id: string): Nullable | Promise>;\n\n abstract me(): Nullable | Promise>;\n\n abstract workspaces(): Nullable[]> | Promise[]>>;\n\n abstract workspace(workspace_id: string): Nullable | Promise>;\n\n abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise;\n}\n\nexport class CreateBoardPayload {\n board?: Nullable;\n}\n\nexport abstract class IMutation {\n abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise;\n\n abstract updateBoard(input: UpdateBoardInput): Board | Promise;\n\n abstract deleteBoard(board_id: string): Status | Promise;\n\n abstract createList(input: CreateListInput): List | Promise;\n\n abstract updateList(input: UpdateListInput): List | Promise;\n\n abstract deleteList(list_id: string): Status | Promise;\n\n abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise;\n\n abstract createCard(input: CreateCardInput): Card | Promise;\n\n abstract updateCard(input: UpdateCardInput): Card | Promise;\n\n abstract deleteCard(card_id: string): Status | Promise;\n\n abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise;\n\n abstract createLabel(input: CreateLabelInput): Label | Promise;\n\n abstract updateLabel(input: UpdateLabelInput): Label | Promise;\n\n abstract deleteLabel(label_id: string): Status | Promise;\n\n abstract uploadFile(file: Upload): FileResponse | Promise;\n\n abstract createUser(input: CreateUserInput): Nullable | Promise>;\n\n abstract updateUser(input: UpdateUserInput): Nullable | Promise>;\n\n abstract deleteUser(user_id: string): Nullable | Promise>;\n\n abstract login(input: LoginInput): Nullable | Promise>;\n\n abstract register(input: RegisterInput): Nullable | Promise>;\n\n abstract logout(): Status | Promise;\n\n abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise;\n\n abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise;\n\n abstract deleteWorkspace(workspace_id: string): Status | Promise;\n\n abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise;\n\n abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise;\n\n abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise;\n}\n\nexport class Success {\n successMessage?: Nullable;\n}\n\nexport class Error {\n errorMessage: string;\n code?: Nullable;\n}\n\nexport class FileResponse {\n success: boolean;\n url?: Nullable;\n message?: Nullable;\n}\n\nexport class User {\n user_id: string;\n username: string;\n email: string;\n picture?: Nullable;\n created_at: DateTime;\n}\n\nexport class AuthSuccess {\n token: string;\n user: User;\n}\n\nexport class AuthError {\n message: string;\n code?: Nullable;\n field?: Nullable;\n}\n\nexport class Workspace {\n workspace_id: string;\n name: string;\n color: string;\n description?: Nullable;\n owner_id: string;\n owner: User;\n members: WorkspaceMembers[];\n boards?: Nullable[]>;\n labels?: Nullable[]>;\n is_pinned: boolean;\n}\n\nexport class WorkspaceMembers {\n workspace_id: string;\n user_id: string;\n role: string;\n user: User;\n workspace: Workspace;\n}\n\nexport class PinWorkspacePayload {\n workspace: Workspace;\n}\n\nexport type DateTime = any;\nexport type Upload = any;\nexport type Status = Success | Error;\nexport type AuthResult = AuthSuccess | AuthError;\ntype Nullable = T | null;\n\n \n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/UpdateListInput.html":{"url":"classes/UpdateListInput.html","title":"class - UpdateListInput","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n UpdateListInput\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/graphql/graphql.ts\n \n\n\n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Optional\n color\n \n \n list_id\n \n \n Optional\n position\n \n \n Optional\n title\n \n \n \n \n\n\n\n\n\n\n \n \n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n Optional\n color\n \n \n \n \n \n \n Type : Nullable\n\n \n \n \n \n Defined in src/graphql/graphql.ts:42\n \n \n\n\n \n \n \n \n \n \n \n \n list_id\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:39\n \n \n\n\n \n \n \n \n \n \n \n \n Optional\n position\n \n \n \n \n \n \n Type : Nullable\n\n \n \n \n \n Defined in src/graphql/graphql.ts:41\n \n \n\n\n \n \n \n \n \n \n \n \n Optional\n title\n \n \n \n \n \n \n Type : Nullable\n\n \n \n \n \n Defined in src/graphql/graphql.ts:40\n \n \n\n\n \n \n\n\n\n\n\n\n\n\n \n\n\n \n export enum Role {\n Admin = \"Admin\",\n Member = \"Member\",\n Viewer = \"Viewer\"\n}\n\nexport class CreateBoardInput {\n title: string;\n description?: Nullable;\n color: string;\n workspace_id: string;\n}\n\nexport class UpdateBoardInput {\n board_id: string;\n title?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateListInput {\n title: string;\n board_id: string;\n position: number;\n color?: Nullable;\n}\n\nexport class UpdateListInput {\n list_id: string;\n title?: Nullable;\n position?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateCardInput {\n title: string;\n list_id: string;\n description?: Nullable;\n position: number;\n due_date?: Nullable;\n}\n\nexport class UpdateCardInput {\n card_id: string;\n title?: Nullable;\n description?: Nullable;\n position?: Nullable;\n due_date?: Nullable;\n}\n\nexport class CreateLabelInput {\n name: string;\n color: string;\n board_id: string;\n}\n\nexport class UpdateLabelInput {\n label_id: string;\n name?: Nullable;\n color?: Nullable;\n}\n\nexport class LoginInput {\n email: string;\n password: string;\n}\n\nexport class RegisterInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class CreateUserInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class UpdateUserInput {\n user_id: string;\n username?: Nullable;\n email?: Nullable;\n password?: Nullable;\n}\n\nexport class CreateWorkspaceInput {\n name: string;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class UpdateWorkspaceInput {\n name?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class AddWorkspaceMemberInput {\n workspace_id: string;\n user_email: string;\n role?: Nullable;\n}\n\nexport class UpdateMemberRoleInput {\n workspace_id: string;\n user_id: string;\n role: Role;\n}\n\nexport class Board {\n board_id: string;\n title: string;\n description?: Nullable;\n color: string;\n lists: List[];\n workspace_id: string;\n}\n\nexport class List {\n list_id: string;\n title: string;\n position: number;\n color: string;\n board_id: string;\n cards?: Nullable[]>;\n}\n\nexport class Card {\n card_id: string;\n title: string;\n description?: Nullable;\n position: number;\n list_id: string;\n labels?: Nullable[]>;\n due_date?: Nullable;\n comments?: Nullable[]>;\n attachments?: Nullable[]>;\n members?: Nullable[]>;\n}\n\nexport class Comment {\n comment_id: string;\n content: string;\n created_at: DateTime;\n card_id: string;\n user_id: string;\n}\n\nexport class Label {\n label_id: string;\n name: string;\n color: string;\n workspace_id: string;\n}\n\nexport class Attachment {\n attachment_id: string;\n card_id: string;\n url: string;\n filename: string;\n}\n\nexport class CardLabel {\n card_id: string;\n label_id: string;\n}\n\nexport class CardMember {\n card_id: string;\n user_id: string;\n}\n\nexport abstract class IQuery {\n abstract boards(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract board(board_id: string): Nullable | Promise>;\n\n abstract lists(board_id: string): Nullable[]> | Promise[]>>;\n\n abstract list(list_id: string): Nullable | Promise>;\n\n abstract cards(list_id: string): Nullable[]> | Promise[]>>;\n\n abstract card(card_id: string): Nullable | Promise>;\n\n abstract labels(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract comments(card_id: string): Nullable[]> | Promise[]>>;\n\n abstract users(): Nullable[]> | Promise[]>>;\n\n abstract user(user_id: string): Nullable | Promise>;\n\n abstract me(): Nullable | Promise>;\n\n abstract workspaces(): Nullable[]> | Promise[]>>;\n\n abstract workspace(workspace_id: string): Nullable | Promise>;\n\n abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise;\n}\n\nexport class CreateBoardPayload {\n board?: Nullable;\n}\n\nexport abstract class IMutation {\n abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise;\n\n abstract updateBoard(input: UpdateBoardInput): Board | Promise;\n\n abstract deleteBoard(board_id: string): Status | Promise;\n\n abstract createList(input: CreateListInput): List | Promise;\n\n abstract updateList(input: UpdateListInput): List | Promise;\n\n abstract deleteList(list_id: string): Status | Promise;\n\n abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise;\n\n abstract createCard(input: CreateCardInput): Card | Promise;\n\n abstract updateCard(input: UpdateCardInput): Card | Promise;\n\n abstract deleteCard(card_id: string): Status | Promise;\n\n abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise;\n\n abstract createLabel(input: CreateLabelInput): Label | Promise;\n\n abstract updateLabel(input: UpdateLabelInput): Label | Promise;\n\n abstract deleteLabel(label_id: string): Status | Promise;\n\n abstract uploadFile(file: Upload): FileResponse | Promise;\n\n abstract createUser(input: CreateUserInput): Nullable | Promise>;\n\n abstract updateUser(input: UpdateUserInput): Nullable | Promise>;\n\n abstract deleteUser(user_id: string): Nullable | Promise>;\n\n abstract login(input: LoginInput): Nullable | Promise>;\n\n abstract register(input: RegisterInput): Nullable | Promise>;\n\n abstract logout(): Status | Promise;\n\n abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise;\n\n abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise;\n\n abstract deleteWorkspace(workspace_id: string): Status | Promise;\n\n abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise;\n\n abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise;\n\n abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise;\n}\n\nexport class Success {\n successMessage?: Nullable;\n}\n\nexport class Error {\n errorMessage: string;\n code?: Nullable;\n}\n\nexport class FileResponse {\n success: boolean;\n url?: Nullable;\n message?: Nullable;\n}\n\nexport class User {\n user_id: string;\n username: string;\n email: string;\n picture?: Nullable;\n created_at: DateTime;\n}\n\nexport class AuthSuccess {\n token: string;\n user: User;\n}\n\nexport class AuthError {\n message: string;\n code?: Nullable;\n field?: Nullable;\n}\n\nexport class Workspace {\n workspace_id: string;\n name: string;\n color: string;\n description?: Nullable;\n owner_id: string;\n owner: User;\n members: WorkspaceMembers[];\n boards?: Nullable[]>;\n labels?: Nullable[]>;\n is_pinned: boolean;\n}\n\nexport class WorkspaceMembers {\n workspace_id: string;\n user_id: string;\n role: string;\n user: User;\n workspace: Workspace;\n}\n\nexport class PinWorkspacePayload {\n workspace: Workspace;\n}\n\nexport type DateTime = any;\nexport type Upload = any;\nexport type Status = Success | Error;\nexport type AuthResult = AuthSuccess | AuthError;\ntype Nullable = T | null;\n\n \n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/UpdateMemberRoleInput.html":{"url":"classes/UpdateMemberRoleInput.html","title":"class - UpdateMemberRoleInput","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n UpdateMemberRoleInput\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/graphql/graphql.ts\n \n\n\n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n role\n \n \n user_id\n \n \n workspace_id\n \n \n \n \n\n\n\n\n\n\n \n \n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n role\n \n \n \n \n \n \n Type : Role\n\n \n \n \n \n Defined in src/graphql/graphql.ts:118\n \n \n\n\n \n \n \n \n \n \n \n \n user_id\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:117\n \n \n\n\n \n \n \n \n \n \n \n \n workspace_id\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:116\n \n \n\n\n \n \n\n\n\n\n\n\n\n\n \n\n\n \n export enum Role {\n Admin = \"Admin\",\n Member = \"Member\",\n Viewer = \"Viewer\"\n}\n\nexport class CreateBoardInput {\n title: string;\n description?: Nullable;\n color: string;\n workspace_id: string;\n}\n\nexport class UpdateBoardInput {\n board_id: string;\n title?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateListInput {\n title: string;\n board_id: string;\n position: number;\n color?: Nullable;\n}\n\nexport class UpdateListInput {\n list_id: string;\n title?: Nullable;\n position?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateCardInput {\n title: string;\n list_id: string;\n description?: Nullable;\n position: number;\n due_date?: Nullable;\n}\n\nexport class UpdateCardInput {\n card_id: string;\n title?: Nullable;\n description?: Nullable;\n position?: Nullable;\n due_date?: Nullable;\n}\n\nexport class CreateLabelInput {\n name: string;\n color: string;\n board_id: string;\n}\n\nexport class UpdateLabelInput {\n label_id: string;\n name?: Nullable;\n color?: Nullable;\n}\n\nexport class LoginInput {\n email: string;\n password: string;\n}\n\nexport class RegisterInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class CreateUserInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class UpdateUserInput {\n user_id: string;\n username?: Nullable;\n email?: Nullable;\n password?: Nullable;\n}\n\nexport class CreateWorkspaceInput {\n name: string;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class UpdateWorkspaceInput {\n name?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class AddWorkspaceMemberInput {\n workspace_id: string;\n user_email: string;\n role?: Nullable;\n}\n\nexport class UpdateMemberRoleInput {\n workspace_id: string;\n user_id: string;\n role: Role;\n}\n\nexport class Board {\n board_id: string;\n title: string;\n description?: Nullable;\n color: string;\n lists: List[];\n workspace_id: string;\n}\n\nexport class List {\n list_id: string;\n title: string;\n position: number;\n color: string;\n board_id: string;\n cards?: Nullable[]>;\n}\n\nexport class Card {\n card_id: string;\n title: string;\n description?: Nullable;\n position: number;\n list_id: string;\n labels?: Nullable[]>;\n due_date?: Nullable;\n comments?: Nullable[]>;\n attachments?: Nullable[]>;\n members?: Nullable[]>;\n}\n\nexport class Comment {\n comment_id: string;\n content: string;\n created_at: DateTime;\n card_id: string;\n user_id: string;\n}\n\nexport class Label {\n label_id: string;\n name: string;\n color: string;\n workspace_id: string;\n}\n\nexport class Attachment {\n attachment_id: string;\n card_id: string;\n url: string;\n filename: string;\n}\n\nexport class CardLabel {\n card_id: string;\n label_id: string;\n}\n\nexport class CardMember {\n card_id: string;\n user_id: string;\n}\n\nexport abstract class IQuery {\n abstract boards(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract board(board_id: string): Nullable | Promise>;\n\n abstract lists(board_id: string): Nullable[]> | Promise[]>>;\n\n abstract list(list_id: string): Nullable | Promise>;\n\n abstract cards(list_id: string): Nullable[]> | Promise[]>>;\n\n abstract card(card_id: string): Nullable | Promise>;\n\n abstract labels(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract comments(card_id: string): Nullable[]> | Promise[]>>;\n\n abstract users(): Nullable[]> | Promise[]>>;\n\n abstract user(user_id: string): Nullable | Promise>;\n\n abstract me(): Nullable | Promise>;\n\n abstract workspaces(): Nullable[]> | Promise[]>>;\n\n abstract workspace(workspace_id: string): Nullable | Promise>;\n\n abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise;\n}\n\nexport class CreateBoardPayload {\n board?: Nullable;\n}\n\nexport abstract class IMutation {\n abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise;\n\n abstract updateBoard(input: UpdateBoardInput): Board | Promise;\n\n abstract deleteBoard(board_id: string): Status | Promise;\n\n abstract createList(input: CreateListInput): List | Promise;\n\n abstract updateList(input: UpdateListInput): List | Promise;\n\n abstract deleteList(list_id: string): Status | Promise;\n\n abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise;\n\n abstract createCard(input: CreateCardInput): Card | Promise;\n\n abstract updateCard(input: UpdateCardInput): Card | Promise;\n\n abstract deleteCard(card_id: string): Status | Promise;\n\n abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise;\n\n abstract createLabel(input: CreateLabelInput): Label | Promise;\n\n abstract updateLabel(input: UpdateLabelInput): Label | Promise;\n\n abstract deleteLabel(label_id: string): Status | Promise;\n\n abstract uploadFile(file: Upload): FileResponse | Promise;\n\n abstract createUser(input: CreateUserInput): Nullable | Promise>;\n\n abstract updateUser(input: UpdateUserInput): Nullable | Promise>;\n\n abstract deleteUser(user_id: string): Nullable | Promise>;\n\n abstract login(input: LoginInput): Nullable | Promise>;\n\n abstract register(input: RegisterInput): Nullable | Promise>;\n\n abstract logout(): Status | Promise;\n\n abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise;\n\n abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise;\n\n abstract deleteWorkspace(workspace_id: string): Status | Promise;\n\n abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise;\n\n abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise;\n\n abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise;\n}\n\nexport class Success {\n successMessage?: Nullable;\n}\n\nexport class Error {\n errorMessage: string;\n code?: Nullable;\n}\n\nexport class FileResponse {\n success: boolean;\n url?: Nullable;\n message?: Nullable;\n}\n\nexport class User {\n user_id: string;\n username: string;\n email: string;\n picture?: Nullable;\n created_at: DateTime;\n}\n\nexport class AuthSuccess {\n token: string;\n user: User;\n}\n\nexport class AuthError {\n message: string;\n code?: Nullable;\n field?: Nullable;\n}\n\nexport class Workspace {\n workspace_id: string;\n name: string;\n color: string;\n description?: Nullable;\n owner_id: string;\n owner: User;\n members: WorkspaceMembers[];\n boards?: Nullable[]>;\n labels?: Nullable[]>;\n is_pinned: boolean;\n}\n\nexport class WorkspaceMembers {\n workspace_id: string;\n user_id: string;\n role: string;\n user: User;\n workspace: Workspace;\n}\n\nexport class PinWorkspacePayload {\n workspace: Workspace;\n}\n\nexport type DateTime = any;\nexport type Upload = any;\nexport type Status = Success | Error;\nexport type AuthResult = AuthSuccess | AuthError;\ntype Nullable = T | null;\n\n \n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/UpdateUserInput.html":{"url":"classes/UpdateUserInput.html","title":"class - UpdateUserInput","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n UpdateUserInput\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/graphql/graphql.ts\n \n\n\n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Optional\n email\n \n \n Optional\n password\n \n \n user_id\n \n \n Optional\n username\n \n \n \n \n\n\n\n\n\n\n \n \n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n Optional\n email\n \n \n \n \n \n \n Type : Nullable\n\n \n \n \n \n Defined in src/graphql/graphql.ts:93\n \n \n\n\n \n \n \n \n \n \n \n \n Optional\n password\n \n \n \n \n \n \n Type : Nullable\n\n \n \n \n \n Defined in src/graphql/graphql.ts:94\n \n \n\n\n \n \n \n \n \n \n \n \n user_id\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:91\n \n \n\n\n \n \n \n \n \n \n \n \n Optional\n username\n \n \n \n \n \n \n Type : Nullable\n\n \n \n \n \n Defined in src/graphql/graphql.ts:92\n \n \n\n\n \n \n\n\n\n\n\n\n\n\n \n\n\n \n export enum Role {\n Admin = \"Admin\",\n Member = \"Member\",\n Viewer = \"Viewer\"\n}\n\nexport class CreateBoardInput {\n title: string;\n description?: Nullable;\n color: string;\n workspace_id: string;\n}\n\nexport class UpdateBoardInput {\n board_id: string;\n title?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateListInput {\n title: string;\n board_id: string;\n position: number;\n color?: Nullable;\n}\n\nexport class UpdateListInput {\n list_id: string;\n title?: Nullable;\n position?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateCardInput {\n title: string;\n list_id: string;\n description?: Nullable;\n position: number;\n due_date?: Nullable;\n}\n\nexport class UpdateCardInput {\n card_id: string;\n title?: Nullable;\n description?: Nullable;\n position?: Nullable;\n due_date?: Nullable;\n}\n\nexport class CreateLabelInput {\n name: string;\n color: string;\n board_id: string;\n}\n\nexport class UpdateLabelInput {\n label_id: string;\n name?: Nullable;\n color?: Nullable;\n}\n\nexport class LoginInput {\n email: string;\n password: string;\n}\n\nexport class RegisterInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class CreateUserInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class UpdateUserInput {\n user_id: string;\n username?: Nullable;\n email?: Nullable;\n password?: Nullable;\n}\n\nexport class CreateWorkspaceInput {\n name: string;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class UpdateWorkspaceInput {\n name?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class AddWorkspaceMemberInput {\n workspace_id: string;\n user_email: string;\n role?: Nullable;\n}\n\nexport class UpdateMemberRoleInput {\n workspace_id: string;\n user_id: string;\n role: Role;\n}\n\nexport class Board {\n board_id: string;\n title: string;\n description?: Nullable;\n color: string;\n lists: List[];\n workspace_id: string;\n}\n\nexport class List {\n list_id: string;\n title: string;\n position: number;\n color: string;\n board_id: string;\n cards?: Nullable[]>;\n}\n\nexport class Card {\n card_id: string;\n title: string;\n description?: Nullable;\n position: number;\n list_id: string;\n labels?: Nullable[]>;\n due_date?: Nullable;\n comments?: Nullable[]>;\n attachments?: Nullable[]>;\n members?: Nullable[]>;\n}\n\nexport class Comment {\n comment_id: string;\n content: string;\n created_at: DateTime;\n card_id: string;\n user_id: string;\n}\n\nexport class Label {\n label_id: string;\n name: string;\n color: string;\n workspace_id: string;\n}\n\nexport class Attachment {\n attachment_id: string;\n card_id: string;\n url: string;\n filename: string;\n}\n\nexport class CardLabel {\n card_id: string;\n label_id: string;\n}\n\nexport class CardMember {\n card_id: string;\n user_id: string;\n}\n\nexport abstract class IQuery {\n abstract boards(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract board(board_id: string): Nullable | Promise>;\n\n abstract lists(board_id: string): Nullable[]> | Promise[]>>;\n\n abstract list(list_id: string): Nullable | Promise>;\n\n abstract cards(list_id: string): Nullable[]> | Promise[]>>;\n\n abstract card(card_id: string): Nullable | Promise>;\n\n abstract labels(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract comments(card_id: string): Nullable[]> | Promise[]>>;\n\n abstract users(): Nullable[]> | Promise[]>>;\n\n abstract user(user_id: string): Nullable | Promise>;\n\n abstract me(): Nullable | Promise>;\n\n abstract workspaces(): Nullable[]> | Promise[]>>;\n\n abstract workspace(workspace_id: string): Nullable | Promise>;\n\n abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise;\n}\n\nexport class CreateBoardPayload {\n board?: Nullable;\n}\n\nexport abstract class IMutation {\n abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise;\n\n abstract updateBoard(input: UpdateBoardInput): Board | Promise;\n\n abstract deleteBoard(board_id: string): Status | Promise;\n\n abstract createList(input: CreateListInput): List | Promise;\n\n abstract updateList(input: UpdateListInput): List | Promise;\n\n abstract deleteList(list_id: string): Status | Promise;\n\n abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise;\n\n abstract createCard(input: CreateCardInput): Card | Promise;\n\n abstract updateCard(input: UpdateCardInput): Card | Promise;\n\n abstract deleteCard(card_id: string): Status | Promise;\n\n abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise;\n\n abstract createLabel(input: CreateLabelInput): Label | Promise;\n\n abstract updateLabel(input: UpdateLabelInput): Label | Promise;\n\n abstract deleteLabel(label_id: string): Status | Promise;\n\n abstract uploadFile(file: Upload): FileResponse | Promise;\n\n abstract createUser(input: CreateUserInput): Nullable | Promise>;\n\n abstract updateUser(input: UpdateUserInput): Nullable | Promise>;\n\n abstract deleteUser(user_id: string): Nullable | Promise>;\n\n abstract login(input: LoginInput): Nullable | Promise>;\n\n abstract register(input: RegisterInput): Nullable | Promise>;\n\n abstract logout(): Status | Promise;\n\n abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise;\n\n abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise;\n\n abstract deleteWorkspace(workspace_id: string): Status | Promise;\n\n abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise;\n\n abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise;\n\n abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise;\n}\n\nexport class Success {\n successMessage?: Nullable;\n}\n\nexport class Error {\n errorMessage: string;\n code?: Nullable;\n}\n\nexport class FileResponse {\n success: boolean;\n url?: Nullable;\n message?: Nullable;\n}\n\nexport class User {\n user_id: string;\n username: string;\n email: string;\n picture?: Nullable;\n created_at: DateTime;\n}\n\nexport class AuthSuccess {\n token: string;\n user: User;\n}\n\nexport class AuthError {\n message: string;\n code?: Nullable;\n field?: Nullable;\n}\n\nexport class Workspace {\n workspace_id: string;\n name: string;\n color: string;\n description?: Nullable;\n owner_id: string;\n owner: User;\n members: WorkspaceMembers[];\n boards?: Nullable[]>;\n labels?: Nullable[]>;\n is_pinned: boolean;\n}\n\nexport class WorkspaceMembers {\n workspace_id: string;\n user_id: string;\n role: string;\n user: User;\n workspace: Workspace;\n}\n\nexport class PinWorkspacePayload {\n workspace: Workspace;\n}\n\nexport type DateTime = any;\nexport type Upload = any;\nexport type Status = Success | Error;\nexport type AuthResult = AuthSuccess | AuthError;\ntype Nullable = T | null;\n\n \n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/UpdateWorkspaceInput.html":{"url":"classes/UpdateWorkspaceInput.html","title":"class - UpdateWorkspaceInput","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n UpdateWorkspaceInput\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/graphql/graphql.ts\n \n\n\n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Optional\n color\n \n \n Optional\n description\n \n \n Optional\n name\n \n \n \n \n\n\n\n\n\n\n \n \n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n Optional\n color\n \n \n \n \n \n \n Type : Nullable\n\n \n \n \n \n Defined in src/graphql/graphql.ts:106\n \n \n\n\n \n \n \n \n \n \n \n \n Optional\n description\n \n \n \n \n \n \n Type : Nullable\n\n \n \n \n \n Defined in src/graphql/graphql.ts:105\n \n \n\n\n \n \n \n \n \n \n \n \n Optional\n name\n \n \n \n \n \n \n Type : Nullable\n\n \n \n \n \n Defined in src/graphql/graphql.ts:104\n \n \n\n\n \n \n\n\n\n\n\n\n\n\n \n\n\n \n export enum Role {\n Admin = \"Admin\",\n Member = \"Member\",\n Viewer = \"Viewer\"\n}\n\nexport class CreateBoardInput {\n title: string;\n description?: Nullable;\n color: string;\n workspace_id: string;\n}\n\nexport class UpdateBoardInput {\n board_id: string;\n title?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateListInput {\n title: string;\n board_id: string;\n position: number;\n color?: Nullable;\n}\n\nexport class UpdateListInput {\n list_id: string;\n title?: Nullable;\n position?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateCardInput {\n title: string;\n list_id: string;\n description?: Nullable;\n position: number;\n due_date?: Nullable;\n}\n\nexport class UpdateCardInput {\n card_id: string;\n title?: Nullable;\n description?: Nullable;\n position?: Nullable;\n due_date?: Nullable;\n}\n\nexport class CreateLabelInput {\n name: string;\n color: string;\n board_id: string;\n}\n\nexport class UpdateLabelInput {\n label_id: string;\n name?: Nullable;\n color?: Nullable;\n}\n\nexport class LoginInput {\n email: string;\n password: string;\n}\n\nexport class RegisterInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class CreateUserInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class UpdateUserInput {\n user_id: string;\n username?: Nullable;\n email?: Nullable;\n password?: Nullable;\n}\n\nexport class CreateWorkspaceInput {\n name: string;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class UpdateWorkspaceInput {\n name?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class AddWorkspaceMemberInput {\n workspace_id: string;\n user_email: string;\n role?: Nullable;\n}\n\nexport class UpdateMemberRoleInput {\n workspace_id: string;\n user_id: string;\n role: Role;\n}\n\nexport class Board {\n board_id: string;\n title: string;\n description?: Nullable;\n color: string;\n lists: List[];\n workspace_id: string;\n}\n\nexport class List {\n list_id: string;\n title: string;\n position: number;\n color: string;\n board_id: string;\n cards?: Nullable[]>;\n}\n\nexport class Card {\n card_id: string;\n title: string;\n description?: Nullable;\n position: number;\n list_id: string;\n labels?: Nullable[]>;\n due_date?: Nullable;\n comments?: Nullable[]>;\n attachments?: Nullable[]>;\n members?: Nullable[]>;\n}\n\nexport class Comment {\n comment_id: string;\n content: string;\n created_at: DateTime;\n card_id: string;\n user_id: string;\n}\n\nexport class Label {\n label_id: string;\n name: string;\n color: string;\n workspace_id: string;\n}\n\nexport class Attachment {\n attachment_id: string;\n card_id: string;\n url: string;\n filename: string;\n}\n\nexport class CardLabel {\n card_id: string;\n label_id: string;\n}\n\nexport class CardMember {\n card_id: string;\n user_id: string;\n}\n\nexport abstract class IQuery {\n abstract boards(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract board(board_id: string): Nullable | Promise>;\n\n abstract lists(board_id: string): Nullable[]> | Promise[]>>;\n\n abstract list(list_id: string): Nullable | Promise>;\n\n abstract cards(list_id: string): Nullable[]> | Promise[]>>;\n\n abstract card(card_id: string): Nullable | Promise>;\n\n abstract labels(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract comments(card_id: string): Nullable[]> | Promise[]>>;\n\n abstract users(): Nullable[]> | Promise[]>>;\n\n abstract user(user_id: string): Nullable | Promise>;\n\n abstract me(): Nullable | Promise>;\n\n abstract workspaces(): Nullable[]> | Promise[]>>;\n\n abstract workspace(workspace_id: string): Nullable | Promise>;\n\n abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise;\n}\n\nexport class CreateBoardPayload {\n board?: Nullable;\n}\n\nexport abstract class IMutation {\n abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise;\n\n abstract updateBoard(input: UpdateBoardInput): Board | Promise;\n\n abstract deleteBoard(board_id: string): Status | Promise;\n\n abstract createList(input: CreateListInput): List | Promise;\n\n abstract updateList(input: UpdateListInput): List | Promise;\n\n abstract deleteList(list_id: string): Status | Promise;\n\n abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise;\n\n abstract createCard(input: CreateCardInput): Card | Promise;\n\n abstract updateCard(input: UpdateCardInput): Card | Promise;\n\n abstract deleteCard(card_id: string): Status | Promise;\n\n abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise;\n\n abstract createLabel(input: CreateLabelInput): Label | Promise;\n\n abstract updateLabel(input: UpdateLabelInput): Label | Promise;\n\n abstract deleteLabel(label_id: string): Status | Promise;\n\n abstract uploadFile(file: Upload): FileResponse | Promise;\n\n abstract createUser(input: CreateUserInput): Nullable | Promise>;\n\n abstract updateUser(input: UpdateUserInput): Nullable | Promise>;\n\n abstract deleteUser(user_id: string): Nullable | Promise>;\n\n abstract login(input: LoginInput): Nullable | Promise>;\n\n abstract register(input: RegisterInput): Nullable | Promise>;\n\n abstract logout(): Status | Promise;\n\n abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise;\n\n abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise;\n\n abstract deleteWorkspace(workspace_id: string): Status | Promise;\n\n abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise;\n\n abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise;\n\n abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise;\n}\n\nexport class Success {\n successMessage?: Nullable;\n}\n\nexport class Error {\n errorMessage: string;\n code?: Nullable;\n}\n\nexport class FileResponse {\n success: boolean;\n url?: Nullable;\n message?: Nullable;\n}\n\nexport class User {\n user_id: string;\n username: string;\n email: string;\n picture?: Nullable;\n created_at: DateTime;\n}\n\nexport class AuthSuccess {\n token: string;\n user: User;\n}\n\nexport class AuthError {\n message: string;\n code?: Nullable;\n field?: Nullable;\n}\n\nexport class Workspace {\n workspace_id: string;\n name: string;\n color: string;\n description?: Nullable;\n owner_id: string;\n owner: User;\n members: WorkspaceMembers[];\n boards?: Nullable[]>;\n labels?: Nullable[]>;\n is_pinned: boolean;\n}\n\nexport class WorkspaceMembers {\n workspace_id: string;\n user_id: string;\n role: string;\n user: User;\n workspace: Workspace;\n}\n\nexport class PinWorkspacePayload {\n workspace: Workspace;\n}\n\nexport type DateTime = any;\nexport type Upload = any;\nexport type Status = Success | Error;\nexport type AuthResult = AuthSuccess | AuthError;\ntype Nullable = T | null;\n\n \n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/User.html":{"url":"classes/User.html","title":"class - User","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n User\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/graphql/graphql.ts\n \n\n\n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n created_at\n \n \n email\n \n \n Optional\n picture\n \n \n user_id\n \n \n username\n \n \n \n \n\n\n\n\n\n\n \n \n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n created_at\n \n \n \n \n \n \n Type : DateTime\n\n \n \n \n \n Defined in src/graphql/graphql.ts:298\n \n \n\n\n \n \n \n \n \n \n \n \n email\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:296\n \n \n\n\n \n \n \n \n \n \n \n \n Optional\n picture\n \n \n \n \n \n \n Type : Nullable\n\n \n \n \n \n Defined in src/graphql/graphql.ts:297\n \n \n\n\n \n \n \n \n \n \n \n \n user_id\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:294\n \n \n\n\n \n \n \n \n \n \n \n \n username\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:295\n \n \n\n\n \n \n\n\n\n\n\n\n\n\n \n\n\n \n export enum Role {\n Admin = \"Admin\",\n Member = \"Member\",\n Viewer = \"Viewer\"\n}\n\nexport class CreateBoardInput {\n title: string;\n description?: Nullable;\n color: string;\n workspace_id: string;\n}\n\nexport class UpdateBoardInput {\n board_id: string;\n title?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateListInput {\n title: string;\n board_id: string;\n position: number;\n color?: Nullable;\n}\n\nexport class UpdateListInput {\n list_id: string;\n title?: Nullable;\n position?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateCardInput {\n title: string;\n list_id: string;\n description?: Nullable;\n position: number;\n due_date?: Nullable;\n}\n\nexport class UpdateCardInput {\n card_id: string;\n title?: Nullable;\n description?: Nullable;\n position?: Nullable;\n due_date?: Nullable;\n}\n\nexport class CreateLabelInput {\n name: string;\n color: string;\n board_id: string;\n}\n\nexport class UpdateLabelInput {\n label_id: string;\n name?: Nullable;\n color?: Nullable;\n}\n\nexport class LoginInput {\n email: string;\n password: string;\n}\n\nexport class RegisterInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class CreateUserInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class UpdateUserInput {\n user_id: string;\n username?: Nullable;\n email?: Nullable;\n password?: Nullable;\n}\n\nexport class CreateWorkspaceInput {\n name: string;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class UpdateWorkspaceInput {\n name?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class AddWorkspaceMemberInput {\n workspace_id: string;\n user_email: string;\n role?: Nullable;\n}\n\nexport class UpdateMemberRoleInput {\n workspace_id: string;\n user_id: string;\n role: Role;\n}\n\nexport class Board {\n board_id: string;\n title: string;\n description?: Nullable;\n color: string;\n lists: List[];\n workspace_id: string;\n}\n\nexport class List {\n list_id: string;\n title: string;\n position: number;\n color: string;\n board_id: string;\n cards?: Nullable[]>;\n}\n\nexport class Card {\n card_id: string;\n title: string;\n description?: Nullable;\n position: number;\n list_id: string;\n labels?: Nullable[]>;\n due_date?: Nullable;\n comments?: Nullable[]>;\n attachments?: Nullable[]>;\n members?: Nullable[]>;\n}\n\nexport class Comment {\n comment_id: string;\n content: string;\n created_at: DateTime;\n card_id: string;\n user_id: string;\n}\n\nexport class Label {\n label_id: string;\n name: string;\n color: string;\n workspace_id: string;\n}\n\nexport class Attachment {\n attachment_id: string;\n card_id: string;\n url: string;\n filename: string;\n}\n\nexport class CardLabel {\n card_id: string;\n label_id: string;\n}\n\nexport class CardMember {\n card_id: string;\n user_id: string;\n}\n\nexport abstract class IQuery {\n abstract boards(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract board(board_id: string): Nullable | Promise>;\n\n abstract lists(board_id: string): Nullable[]> | Promise[]>>;\n\n abstract list(list_id: string): Nullable | Promise>;\n\n abstract cards(list_id: string): Nullable[]> | Promise[]>>;\n\n abstract card(card_id: string): Nullable | Promise>;\n\n abstract labels(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract comments(card_id: string): Nullable[]> | Promise[]>>;\n\n abstract users(): Nullable[]> | Promise[]>>;\n\n abstract user(user_id: string): Nullable | Promise>;\n\n abstract me(): Nullable | Promise>;\n\n abstract workspaces(): Nullable[]> | Promise[]>>;\n\n abstract workspace(workspace_id: string): Nullable | Promise>;\n\n abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise;\n}\n\nexport class CreateBoardPayload {\n board?: Nullable;\n}\n\nexport abstract class IMutation {\n abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise;\n\n abstract updateBoard(input: UpdateBoardInput): Board | Promise;\n\n abstract deleteBoard(board_id: string): Status | Promise;\n\n abstract createList(input: CreateListInput): List | Promise;\n\n abstract updateList(input: UpdateListInput): List | Promise;\n\n abstract deleteList(list_id: string): Status | Promise;\n\n abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise;\n\n abstract createCard(input: CreateCardInput): Card | Promise;\n\n abstract updateCard(input: UpdateCardInput): Card | Promise;\n\n abstract deleteCard(card_id: string): Status | Promise;\n\n abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise;\n\n abstract createLabel(input: CreateLabelInput): Label | Promise;\n\n abstract updateLabel(input: UpdateLabelInput): Label | Promise;\n\n abstract deleteLabel(label_id: string): Status | Promise;\n\n abstract uploadFile(file: Upload): FileResponse | Promise;\n\n abstract createUser(input: CreateUserInput): Nullable | Promise>;\n\n abstract updateUser(input: UpdateUserInput): Nullable | Promise>;\n\n abstract deleteUser(user_id: string): Nullable | Promise>;\n\n abstract login(input: LoginInput): Nullable | Promise>;\n\n abstract register(input: RegisterInput): Nullable | Promise>;\n\n abstract logout(): Status | Promise;\n\n abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise;\n\n abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise;\n\n abstract deleteWorkspace(workspace_id: string): Status | Promise;\n\n abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise;\n\n abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise;\n\n abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise;\n}\n\nexport class Success {\n successMessage?: Nullable;\n}\n\nexport class Error {\n errorMessage: string;\n code?: Nullable;\n}\n\nexport class FileResponse {\n success: boolean;\n url?: Nullable;\n message?: Nullable;\n}\n\nexport class User {\n user_id: string;\n username: string;\n email: string;\n picture?: Nullable;\n created_at: DateTime;\n}\n\nexport class AuthSuccess {\n token: string;\n user: User;\n}\n\nexport class AuthError {\n message: string;\n code?: Nullable;\n field?: Nullable;\n}\n\nexport class Workspace {\n workspace_id: string;\n name: string;\n color: string;\n description?: Nullable;\n owner_id: string;\n owner: User;\n members: WorkspaceMembers[];\n boards?: Nullable[]>;\n labels?: Nullable[]>;\n is_pinned: boolean;\n}\n\nexport class WorkspaceMembers {\n workspace_id: string;\n user_id: string;\n role: string;\n user: User;\n workspace: Workspace;\n}\n\nexport class PinWorkspacePayload {\n workspace: Workspace;\n}\n\nexport type DateTime = any;\nexport type Upload = any;\nexport type Status = Success | Error;\nexport type AuthResult = AuthSuccess | AuthError;\ntype Nullable = T | null;\n\n \n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/Workspace.html":{"url":"classes/Workspace.html","title":"class - Workspace","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n Workspace\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/graphql/graphql.ts\n \n\n\n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Optional\n boards\n \n \n color\n \n \n Optional\n description\n \n \n is_pinned\n \n \n Optional\n labels\n \n \n members\n \n \n name\n \n \n owner\n \n \n owner_id\n \n \n workspace_id\n \n \n \n \n\n\n\n\n\n\n \n \n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n Optional\n boards\n \n \n \n \n \n \n Type : Nullable\n\n \n \n \n \n Defined in src/graphql/graphql.ts:320\n \n \n\n\n \n \n \n \n \n \n \n \n color\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:315\n \n \n\n\n \n \n \n \n \n \n \n \n Optional\n description\n \n \n \n \n \n \n Type : Nullable\n\n \n \n \n \n Defined in src/graphql/graphql.ts:316\n \n \n\n\n \n \n \n \n \n \n \n \n is_pinned\n \n \n \n \n \n \n Type : boolean\n\n \n \n \n \n Defined in src/graphql/graphql.ts:322\n \n \n\n\n \n \n \n \n \n \n \n \n Optional\n labels\n \n \n \n \n \n \n Type : Nullable\n\n \n \n \n \n Defined in src/graphql/graphql.ts:321\n \n \n\n\n \n \n \n \n \n \n \n \n members\n \n \n \n \n \n \n Type : WorkspaceMembers[]\n\n \n \n \n \n Defined in src/graphql/graphql.ts:319\n \n \n\n\n \n \n \n \n \n \n \n \n name\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:314\n \n \n\n\n \n \n \n \n \n \n \n \n owner\n \n \n \n \n \n \n Type : User\n\n \n \n \n \n Defined in src/graphql/graphql.ts:318\n \n \n\n\n \n \n \n \n \n \n \n \n owner_id\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:317\n \n \n\n\n \n \n \n \n \n \n \n \n workspace_id\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:313\n \n \n\n\n \n \n\n\n\n\n\n\n\n\n \n\n\n \n export enum Role {\n Admin = \"Admin\",\n Member = \"Member\",\n Viewer = \"Viewer\"\n}\n\nexport class CreateBoardInput {\n title: string;\n description?: Nullable;\n color: string;\n workspace_id: string;\n}\n\nexport class UpdateBoardInput {\n board_id: string;\n title?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateListInput {\n title: string;\n board_id: string;\n position: number;\n color?: Nullable;\n}\n\nexport class UpdateListInput {\n list_id: string;\n title?: Nullable;\n position?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateCardInput {\n title: string;\n list_id: string;\n description?: Nullable;\n position: number;\n due_date?: Nullable;\n}\n\nexport class UpdateCardInput {\n card_id: string;\n title?: Nullable;\n description?: Nullable;\n position?: Nullable;\n due_date?: Nullable;\n}\n\nexport class CreateLabelInput {\n name: string;\n color: string;\n board_id: string;\n}\n\nexport class UpdateLabelInput {\n label_id: string;\n name?: Nullable;\n color?: Nullable;\n}\n\nexport class LoginInput {\n email: string;\n password: string;\n}\n\nexport class RegisterInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class CreateUserInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class UpdateUserInput {\n user_id: string;\n username?: Nullable;\n email?: Nullable;\n password?: Nullable;\n}\n\nexport class CreateWorkspaceInput {\n name: string;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class UpdateWorkspaceInput {\n name?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class AddWorkspaceMemberInput {\n workspace_id: string;\n user_email: string;\n role?: Nullable;\n}\n\nexport class UpdateMemberRoleInput {\n workspace_id: string;\n user_id: string;\n role: Role;\n}\n\nexport class Board {\n board_id: string;\n title: string;\n description?: Nullable;\n color: string;\n lists: List[];\n workspace_id: string;\n}\n\nexport class List {\n list_id: string;\n title: string;\n position: number;\n color: string;\n board_id: string;\n cards?: Nullable[]>;\n}\n\nexport class Card {\n card_id: string;\n title: string;\n description?: Nullable;\n position: number;\n list_id: string;\n labels?: Nullable[]>;\n due_date?: Nullable;\n comments?: Nullable[]>;\n attachments?: Nullable[]>;\n members?: Nullable[]>;\n}\n\nexport class Comment {\n comment_id: string;\n content: string;\n created_at: DateTime;\n card_id: string;\n user_id: string;\n}\n\nexport class Label {\n label_id: string;\n name: string;\n color: string;\n workspace_id: string;\n}\n\nexport class Attachment {\n attachment_id: string;\n card_id: string;\n url: string;\n filename: string;\n}\n\nexport class CardLabel {\n card_id: string;\n label_id: string;\n}\n\nexport class CardMember {\n card_id: string;\n user_id: string;\n}\n\nexport abstract class IQuery {\n abstract boards(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract board(board_id: string): Nullable | Promise>;\n\n abstract lists(board_id: string): Nullable[]> | Promise[]>>;\n\n abstract list(list_id: string): Nullable | Promise>;\n\n abstract cards(list_id: string): Nullable[]> | Promise[]>>;\n\n abstract card(card_id: string): Nullable | Promise>;\n\n abstract labels(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract comments(card_id: string): Nullable[]> | Promise[]>>;\n\n abstract users(): Nullable[]> | Promise[]>>;\n\n abstract user(user_id: string): Nullable | Promise>;\n\n abstract me(): Nullable | Promise>;\n\n abstract workspaces(): Nullable[]> | Promise[]>>;\n\n abstract workspace(workspace_id: string): Nullable | Promise>;\n\n abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise;\n}\n\nexport class CreateBoardPayload {\n board?: Nullable;\n}\n\nexport abstract class IMutation {\n abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise;\n\n abstract updateBoard(input: UpdateBoardInput): Board | Promise;\n\n abstract deleteBoard(board_id: string): Status | Promise;\n\n abstract createList(input: CreateListInput): List | Promise;\n\n abstract updateList(input: UpdateListInput): List | Promise;\n\n abstract deleteList(list_id: string): Status | Promise;\n\n abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise;\n\n abstract createCard(input: CreateCardInput): Card | Promise;\n\n abstract updateCard(input: UpdateCardInput): Card | Promise;\n\n abstract deleteCard(card_id: string): Status | Promise;\n\n abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise;\n\n abstract createLabel(input: CreateLabelInput): Label | Promise;\n\n abstract updateLabel(input: UpdateLabelInput): Label | Promise;\n\n abstract deleteLabel(label_id: string): Status | Promise;\n\n abstract uploadFile(file: Upload): FileResponse | Promise;\n\n abstract createUser(input: CreateUserInput): Nullable | Promise>;\n\n abstract updateUser(input: UpdateUserInput): Nullable | Promise>;\n\n abstract deleteUser(user_id: string): Nullable | Promise>;\n\n abstract login(input: LoginInput): Nullable | Promise>;\n\n abstract register(input: RegisterInput): Nullable | Promise>;\n\n abstract logout(): Status | Promise;\n\n abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise;\n\n abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise;\n\n abstract deleteWorkspace(workspace_id: string): Status | Promise;\n\n abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise;\n\n abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise;\n\n abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise;\n}\n\nexport class Success {\n successMessage?: Nullable;\n}\n\nexport class Error {\n errorMessage: string;\n code?: Nullable;\n}\n\nexport class FileResponse {\n success: boolean;\n url?: Nullable;\n message?: Nullable;\n}\n\nexport class User {\n user_id: string;\n username: string;\n email: string;\n picture?: Nullable;\n created_at: DateTime;\n}\n\nexport class AuthSuccess {\n token: string;\n user: User;\n}\n\nexport class AuthError {\n message: string;\n code?: Nullable;\n field?: Nullable;\n}\n\nexport class Workspace {\n workspace_id: string;\n name: string;\n color: string;\n description?: Nullable;\n owner_id: string;\n owner: User;\n members: WorkspaceMembers[];\n boards?: Nullable[]>;\n labels?: Nullable[]>;\n is_pinned: boolean;\n}\n\nexport class WorkspaceMembers {\n workspace_id: string;\n user_id: string;\n role: string;\n user: User;\n workspace: Workspace;\n}\n\nexport class PinWorkspacePayload {\n workspace: Workspace;\n}\n\nexport type DateTime = any;\nexport type Upload = any;\nexport type Status = Success | Error;\nexport type AuthResult = AuthSuccess | AuthError;\ntype Nullable = T | null;\n\n \n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"guards/WorkspaceGuard.html":{"url":"guards/WorkspaceGuard.html","title":"guard - WorkspaceGuard","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Guards\n WorkspaceGuard\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/common/guards/workspace.guard.ts\n \n\n\n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Ò\n \n \n Private\n roleHierarchy\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n Async\n canActivate\n \n \n \n \n\n\n\n\n\n \n \n\n\n \n Constructor\n \n \n \n \nconstructor(reflector: Reflector, prisma: PrismaService)\n \n \n \n \n Defined in src/common/guards/workspace.guard.ts:21\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n reflector\n \n \n Reflector\n \n \n \n No\n \n \n \n \n prisma\n \n \n PrismaService\n \n \n \n No\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n Async\n canActivate\n \n \n \n \n \n \n \n canActivate(context: ExecutionContext)\n \n \n\n\n \n \n Defined in src/common/guards/workspace.guard.ts:33\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n context\n \n ExecutionContext\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : Promise\n\n \n \n \n \n \n \n \n \n\n \n\n\n \n import {\n CanActivate,\n ExecutionContext,\n Injectable,\n ForbiddenException,\n} from '@nestjs/common';\nimport { Reflector } from '@nestjs/core';\nimport { GqlExecutionContext } from '@nestjs/graphql';\nimport { PrismaService } from '../../prisma/prisma.service';\nimport { Role } from '@prisma/client';\nimport { ROLES_KEY } from '../decorators/workspace-auth.decorator';\n\n@Injectable()\nexport class WorkspaceGuard implements CanActivate {\n constructor(\n private reflector: Reflector,\n private prisma: PrismaService,\n ) {}\n Ò;\n private roleHierarchy = {\n [Role.Viewer]: 1,\n [Role.Member]: 2,\n [Role.Admin]: 3,\n };\n\n async canActivate(context: ExecutionContext): Promise {\n const requiredRole = this.reflector.getAllAndOverride(ROLES_KEY, [\n context.getHandler(),\n context.getClass(),\n ]);\n\n if (!requiredRole) return true;\n\n const ctx = GqlExecutionContext.create(context);\n const { user } = ctx.getContext();\n const args = ctx.getArgs();\n\n const workspaceId = args.workspace_id || args.input?.workspace_id;\n if (!workspaceId) {\n throw new ForbiddenException(\n 'Cannot verify permissions: No workspace_id provided',\n );\n }\n\n const membership = await this.prisma.workspaceMembers.findUnique({\n where: {\n workspace_id_user_id: {\n workspace_id: workspaceId,\n user_id: user.user_id,\n },\n },\n });\n\n if (!membership)\n throw new ForbiddenException(\n 'You are not a member of this workspace',\n );\n\n const userLevel = this.roleHierarchy[membership.role];\n const requiredLevel = this.roleHierarchy[requiredRole];\n\n if (userLevel \n \n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/WorkspaceMembers.html":{"url":"classes/WorkspaceMembers.html","title":"class - WorkspaceMembers","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n WorkspaceMembers\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/graphql/graphql.ts\n \n\n\n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n role\n \n \n user\n \n \n user_id\n \n \n workspace\n \n \n workspace_id\n \n \n \n \n\n\n\n\n\n\n \n \n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n role\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:328\n \n \n\n\n \n \n \n \n \n \n \n \n user\n \n \n \n \n \n \n Type : User\n\n \n \n \n \n Defined in src/graphql/graphql.ts:329\n \n \n\n\n \n \n \n \n \n \n \n \n user_id\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:327\n \n \n\n\n \n \n \n \n \n \n \n \n workspace\n \n \n \n \n \n \n Type : Workspace\n\n \n \n \n \n Defined in src/graphql/graphql.ts:330\n \n \n\n\n \n \n \n \n \n \n \n \n workspace_id\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/graphql/graphql.ts:326\n \n \n\n\n \n \n\n\n\n\n\n\n\n\n \n\n\n \n export enum Role {\n Admin = \"Admin\",\n Member = \"Member\",\n Viewer = \"Viewer\"\n}\n\nexport class CreateBoardInput {\n title: string;\n description?: Nullable;\n color: string;\n workspace_id: string;\n}\n\nexport class UpdateBoardInput {\n board_id: string;\n title?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateListInput {\n title: string;\n board_id: string;\n position: number;\n color?: Nullable;\n}\n\nexport class UpdateListInput {\n list_id: string;\n title?: Nullable;\n position?: Nullable;\n color?: Nullable;\n}\n\nexport class CreateCardInput {\n title: string;\n list_id: string;\n description?: Nullable;\n position: number;\n due_date?: Nullable;\n}\n\nexport class UpdateCardInput {\n card_id: string;\n title?: Nullable;\n description?: Nullable;\n position?: Nullable;\n due_date?: Nullable;\n}\n\nexport class CreateLabelInput {\n name: string;\n color: string;\n board_id: string;\n}\n\nexport class UpdateLabelInput {\n label_id: string;\n name?: Nullable;\n color?: Nullable;\n}\n\nexport class LoginInput {\n email: string;\n password: string;\n}\n\nexport class RegisterInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class CreateUserInput {\n username: string;\n email: string;\n password: string;\n}\n\nexport class UpdateUserInput {\n user_id: string;\n username?: Nullable;\n email?: Nullable;\n password?: Nullable;\n}\n\nexport class CreateWorkspaceInput {\n name: string;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class UpdateWorkspaceInput {\n name?: Nullable;\n description?: Nullable;\n color?: Nullable;\n}\n\nexport class AddWorkspaceMemberInput {\n workspace_id: string;\n user_email: string;\n role?: Nullable;\n}\n\nexport class UpdateMemberRoleInput {\n workspace_id: string;\n user_id: string;\n role: Role;\n}\n\nexport class Board {\n board_id: string;\n title: string;\n description?: Nullable;\n color: string;\n lists: List[];\n workspace_id: string;\n}\n\nexport class List {\n list_id: string;\n title: string;\n position: number;\n color: string;\n board_id: string;\n cards?: Nullable[]>;\n}\n\nexport class Card {\n card_id: string;\n title: string;\n description?: Nullable;\n position: number;\n list_id: string;\n labels?: Nullable[]>;\n due_date?: Nullable;\n comments?: Nullable[]>;\n attachments?: Nullable[]>;\n members?: Nullable[]>;\n}\n\nexport class Comment {\n comment_id: string;\n content: string;\n created_at: DateTime;\n card_id: string;\n user_id: string;\n}\n\nexport class Label {\n label_id: string;\n name: string;\n color: string;\n workspace_id: string;\n}\n\nexport class Attachment {\n attachment_id: string;\n card_id: string;\n url: string;\n filename: string;\n}\n\nexport class CardLabel {\n card_id: string;\n label_id: string;\n}\n\nexport class CardMember {\n card_id: string;\n user_id: string;\n}\n\nexport abstract class IQuery {\n abstract boards(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract board(board_id: string): Nullable | Promise>;\n\n abstract lists(board_id: string): Nullable[]> | Promise[]>>;\n\n abstract list(list_id: string): Nullable | Promise>;\n\n abstract cards(list_id: string): Nullable[]> | Promise[]>>;\n\n abstract card(card_id: string): Nullable | Promise>;\n\n abstract labels(workspace_id: string): Nullable[]> | Promise[]>>;\n\n abstract comments(card_id: string): Nullable[]> | Promise[]>>;\n\n abstract users(): Nullable[]> | Promise[]>>;\n\n abstract user(user_id: string): Nullable | Promise>;\n\n abstract me(): Nullable | Promise>;\n\n abstract workspaces(): Nullable[]> | Promise[]>>;\n\n abstract workspace(workspace_id: string): Nullable | Promise>;\n\n abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise;\n}\n\nexport class CreateBoardPayload {\n board?: Nullable;\n}\n\nexport abstract class IMutation {\n abstract createBoard(input: CreateBoardInput): CreateBoardPayload | Promise;\n\n abstract updateBoard(input: UpdateBoardInput): Board | Promise;\n\n abstract deleteBoard(board_id: string): Status | Promise;\n\n abstract createList(input: CreateListInput): List | Promise;\n\n abstract updateList(input: UpdateListInput): List | Promise;\n\n abstract deleteList(list_id: string): Status | Promise;\n\n abstract reorderLists(board_id: string, list_ids: string[]): List[] | Promise;\n\n abstract createCard(input: CreateCardInput): Card | Promise;\n\n abstract updateCard(input: UpdateCardInput): Card | Promise;\n\n abstract deleteCard(card_id: string): Status | Promise;\n\n abstract moveCard(card_id: string, list_id: string, position: number): Card | Promise;\n\n abstract createLabel(input: CreateLabelInput): Label | Promise;\n\n abstract updateLabel(input: UpdateLabelInput): Label | Promise;\n\n abstract deleteLabel(label_id: string): Status | Promise;\n\n abstract uploadFile(file: Upload): FileResponse | Promise;\n\n abstract createUser(input: CreateUserInput): Nullable | Promise>;\n\n abstract updateUser(input: UpdateUserInput): Nullable | Promise>;\n\n abstract deleteUser(user_id: string): Nullable | Promise>;\n\n abstract login(input: LoginInput): Nullable | Promise>;\n\n abstract register(input: RegisterInput): Nullable | Promise>;\n\n abstract logout(): Status | Promise;\n\n abstract createWorkspace(input: CreateWorkspaceInput): Workspace | Promise;\n\n abstract updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput): Workspace | Promise;\n\n abstract deleteWorkspace(workspace_id: string): Status | Promise;\n\n abstract pinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract unpinWorkspace(workspace_id: string): PinWorkspacePayload | Promise;\n\n abstract addWorkspaceMember(input: AddWorkspaceMemberInput): WorkspaceMembers | Promise;\n\n abstract removeWorkspaceMember(workspace_id: string, user_id: string): Status | Promise;\n\n abstract updateMemberRole(input: UpdateMemberRoleInput): WorkspaceMembers | Promise;\n}\n\nexport class Success {\n successMessage?: Nullable;\n}\n\nexport class Error {\n errorMessage: string;\n code?: Nullable;\n}\n\nexport class FileResponse {\n success: boolean;\n url?: Nullable;\n message?: Nullable;\n}\n\nexport class User {\n user_id: string;\n username: string;\n email: string;\n picture?: Nullable;\n created_at: DateTime;\n}\n\nexport class AuthSuccess {\n token: string;\n user: User;\n}\n\nexport class AuthError {\n message: string;\n code?: Nullable;\n field?: Nullable;\n}\n\nexport class Workspace {\n workspace_id: string;\n name: string;\n color: string;\n description?: Nullable;\n owner_id: string;\n owner: User;\n members: WorkspaceMembers[];\n boards?: Nullable[]>;\n labels?: Nullable[]>;\n is_pinned: boolean;\n}\n\nexport class WorkspaceMembers {\n workspace_id: string;\n user_id: string;\n role: string;\n user: User;\n workspace: Workspace;\n}\n\nexport class PinWorkspacePayload {\n workspace: Workspace;\n}\n\nexport type DateTime = any;\nexport type Upload = any;\nexport type Status = Success | Error;\nexport type AuthResult = AuthSuccess | AuthError;\ntype Nullable = T | null;\n\n \n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"modules/WorkspaceModule.html":{"url":"modules/WorkspaceModule.html","title":"module - WorkspaceModule","body":"\n \n\n\n\n\n\n\n\n\n Modules\n WorkspaceModule\n\n\n\n \n \n\n\n\n\n\ndependencies\n\nLegend\n\n  Declarations\n\n  Module\n\n  Bootstrap\n\n  Providers\n\n  Exports\n\ncluster_WorkspaceModule\n\n\n\ncluster_WorkspaceModule_providers\n\n\n\n\nWorkspaceService\n\nWorkspaceService\n\n\n\nWorkspaceModule\n\nWorkspaceModule\n\nWorkspaceModule -->\n\nWorkspaceService->WorkspaceModule\n\n\n\n\n\n\n \n \n \n Zoom in\n Reset\n Zoom out\n \n\n\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n\n \n File\n \n \n src/workspace/workspace.module.ts\n \n\n\n\n\n\n \n \n \n Providers\n \n \n WorkspaceService\n \n \n \n \n \n\n\n \n\n\n \n /*\n** EPITECH PROJECT, 2025\n** TaskFlow\n** File description:\n** workspace.module\n*/\n\nimport { Module } from '@nestjs/common';\nimport { WorkspaceService } from './workspace.service';\nimport { WorkspaceResolver } from './workspace.resolver';\n\n@Module({\n providers: [WorkspaceService, WorkspaceResolver]\n})\nexport class WorkspaceModule {}\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/WorkspaceResolver.html":{"url":"classes/WorkspaceResolver.html","title":"class - WorkspaceResolver","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n WorkspaceResolver\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/workspace/workspace.resolver.ts\n \n\n\n\n\n\n\n \n Index\n \n \n\n \n \n Methods\n \n \n \n \n \n \n \n \n Async\n createWorkspace\n \n \n \n \n Async\n deleteWorkspace\n \n \n \n \n Async\n getUserWorkspaces\n \n \n \n \n Async\n getWorkspace\n \n \n \n \n Async\n updateWorkspace\n \n \n \n \n\n\n\n\n\n \n \n\n\n \n Constructor\n \n \n \n \nconstructor(workspaceService: WorkspaceService)\n \n \n \n \n Defined in src/workspace/workspace.resolver.ts:17\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n workspaceService\n \n \n WorkspaceService\n \n \n \n No\n \n \n \n \n \n \n \n \n \n \n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n \n \n Async\n createWorkspace\n \n \n \n \n \n \n \n createWorkspace(input: CreateWorkspaceInput, context: any)\n \n \n\n \n \n Decorators : \n \n @Mutation()@UseGuards(AuthGuard)\n \n \n\n \n \n Defined in src/workspace/workspace.resolver.ts:22\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n input\n \n CreateWorkspaceInput\n \n\n \n No\n \n\n\n \n \n context\n \n any\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : unknown\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Async\n deleteWorkspace\n \n \n \n \n \n \n \n deleteWorkspace(workspace_id: string, context: any)\n \n \n\n \n \n Decorators : \n \n @Mutation()@WorkspaceAuth(Role.Admin)\n \n \n\n \n \n Defined in src/workspace/workspace.resolver.ts:52\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n workspace_id\n \n string\n \n\n \n No\n \n\n\n \n \n context\n \n any\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : unknown\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Async\n getUserWorkspaces\n \n \n \n \n \n \n \n getUserWorkspaces(context: any)\n \n \n\n \n \n Decorators : \n \n @Query('workspaces')@UseGuards(AuthGuard)\n \n \n\n \n \n Defined in src/workspace/workspace.resolver.ts:31\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n context\n \n any\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : unknown\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Async\n getWorkspace\n \n \n \n \n \n \n \n getWorkspace(workspace_id: string)\n \n \n\n \n \n Decorators : \n \n @Query('workspace')@WorkspaceAuth(Role.Viewer)\n \n \n\n \n \n Defined in src/workspace/workspace.resolver.ts:37\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n workspace_id\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : unknown\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Async\n updateWorkspace\n \n \n \n \n \n \n \n updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput)\n \n \n\n \n \n Decorators : \n \n @Mutation('updateWorkspace')@WorkspaceAuth(Role.Admin)\n \n \n\n \n \n Defined in src/workspace/workspace.resolver.ts:43\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n workspace_id\n \n string\n \n\n \n No\n \n\n\n \n \n input\n \n UpdateWorkspaceInput\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : unknown\n\n \n \n \n \n \n \n \n \n\n\n\n\n\n\n \n\n\n \n import { Args, Mutation, Resolver, Context, Query } from '@nestjs/graphql';\nimport { UseGuards } from '@nestjs/common';\nimport { WorkspaceService } from './workspace.service';\nimport { AuthGuard } from '../common/guards/auth.guard';\nimport { WorkspaceAuth } from '../common/decorators/workspace-auth.decorator';\nimport { CreateWorkspaceInput, UpdateWorkspaceInput } from '../graphql/graphql';\nimport { Role } from '@prisma/client';\n\n@Resolver('Workspace')\nexport class WorkspaceResolver {\n constructor(private workspaceService: WorkspaceService) {}\n\n @Mutation()\n @UseGuards(AuthGuard)\n async createWorkspace(\n @Args('input') input: CreateWorkspaceInput,\n @Context() context: any,\n ) {\n return this.workspaceService.createWorkspace(context.user.user_id, input);\n }\n\n @Query(\"workspaces\")\n @UseGuards(AuthGuard)\n async getUserWorkspaces(@Context() context: any) {\n return this.workspaceService.findAllUserWorkspaces(context.user.user_id);\n }\n\n @Query(\"workspace\")\n @WorkspaceAuth(Role.Viewer)\n async getWorkspace(@Args('workspace_id') workspace_id: string) {\n return this.workspaceService.findWorkspace(workspace_id);\n }\n\n @Mutation(\"updateWorkspace\") \n @WorkspaceAuth(Role.Admin)\n async updateWorkspace(\n @Args('workspace_id') workspace_id: string,\n @Args('input') input: UpdateWorkspaceInput,\n ) {\n return this.workspaceService.updateWorkspace(workspace_id, input);\n }\n\n @Mutation()\n @WorkspaceAuth(Role.Admin)\n async deleteWorkspace(\n @Args('workspace_id') workspace_id: string,\n @Context() context: any,\n ) {\n return this.workspaceService.delete(\n workspace_id,\n context.user.user_id,\n );\n }\n}\n\n \n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"injectables/WorkspaceService.html":{"url":"injectables/WorkspaceService.html","title":"injectable - WorkspaceService","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n Injectables\n WorkspaceService\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/workspace/workspace.service.ts\n \n\n\n\n\n\n \n Index\n \n \n\n \n \n Methods\n \n \n \n \n \n \n Async\n createWorkspace\n \n \n Async\n delete\n \n \n Async\n findAllUserWorkspaces\n \n \n Async\n findWorkspace\n \n \n Async\n updateWorkspace\n \n \n \n \n\n\n\n\n\n \n \n\n\n \n Constructor\n \n \n \n \nconstructor(prisma: PrismaService)\n \n \n \n \n Defined in src/workspace/workspace.service.ts:7\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n prisma\n \n \n PrismaService\n \n \n \n No\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n Async\n createWorkspace\n \n \n \n \n \n \n \n createWorkspace(user_id: string, input: CreateWorkspaceInput)\n \n \n\n\n \n \n Defined in src/workspace/workspace.service.ts:28\n \n \n\n\n \n \n Creates a new workspace with the specified user as owner and admin member.\nExample :const workspace = await createWorkspace('user-123', {\n name: 'My Workspace',\n description: 'A workspace for my project',\n color: '#ff5733'\n});\n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n Description\n \n \n \n \n user_id\n \n string\n \n\n \n No\n \n\n\n \n \nThe ID of the user who will own the workspace\n\n\n \n \n \n input\n \n CreateWorkspaceInput\n \n\n \n No\n \n\n\n \n \nThe workspace creation input containing name, description, and optional color\n\n\n \n \n \n \n \n \n Returns : unknown\n\n \n \n A promise that resolves to the created workspace object\n\n \n \n \n \n \n \n \n \n \n \n \n Async\n delete\n \n \n \n \n \n \n \n delete(workspaceId: string, userId: string)\n \n \n\n\n \n \n Defined in src/workspace/workspace.service.ts:77\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n workspaceId\n \n string\n \n\n \n No\n \n\n\n \n \n userId\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : unknown\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Async\n findAllUserWorkspaces\n \n \n \n \n \n \n \n findAllUserWorkspaces(user_id: string)\n \n \n\n\n \n \n Defined in src/workspace/workspace.service.ts:45\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n user_id\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : unknown\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Async\n findWorkspace\n \n \n \n \n \n \n \n findWorkspace(workspace_id: string)\n \n \n\n\n \n \n Defined in src/workspace/workspace.service.ts:60\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n workspace_id\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : unknown\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Async\n updateWorkspace\n \n \n \n \n \n \n \n updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput)\n \n \n\n\n \n \n Defined in src/workspace/workspace.service.ts:66\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n workspace_id\n \n string\n \n\n \n No\n \n\n\n \n \n input\n \n UpdateWorkspaceInput\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : unknown\n\n \n \n \n \n \n \n \n \n\n\n \n\n\n \n import { Injectable, ForbiddenException } from '@nestjs/common';\nimport { PrismaService } from '../prisma/prisma.service';\nimport { CreateWorkspaceInput, UpdateWorkspaceInput } from '../graphql/graphql';\nimport { Role } from '@prisma/client';\n\n@Injectable()\nexport class WorkspaceService {\n constructor(private prisma: PrismaService) {}\n\n /**\n * Creates a new workspace with the specified user as owner and admin member.\n * \n * @param user_id - The ID of the user who will own the workspace\n * @param input - The workspace creation input containing name, description, and optional color\n * @returns A promise that resolves to the created workspace object\n * @throws {PrismaClientKnownRequestError} When workspace creation fails due to database constraints\n * @throws {PrismaClientValidationError} When input validation fails\n * \n * @example\n * ```typescript\n * const workspace = await createWorkspace('user-123', {\n * name: 'My Workspace',\n * description: 'A workspace for my project',\n * color: '#ff5733'\n * });\n * ```\n */\n async createWorkspace(user_id: string, input: CreateWorkspaceInput) {\n return this.prisma.workspace.create({\n data: {\n name: input.name,\n description: input.description,\n color: input.color || '#007cefff',\n owner_id: user_id,\n members: {\n create: {\n user_id: user_id,\n role: Role.Admin,\n },\n },\n },\n });\n }\n\n async findAllUserWorkspaces(user_id: string) {\n return this.prisma.workspace.findMany({\n where: {\n members: {\n some: {\n user_id: user_id,\n },\n },\n },\n orderBy: {\n name: 'asc',\n },\n });\n }\n\n async findWorkspace(workspace_id: string) {\n return this.prisma.workspace.findUniqueOrThrow({\n where: { workspace_id },\n });\n }\n\n async updateWorkspace(workspace_id: string, input: UpdateWorkspaceInput) {\n return this.prisma.workspace.update({\n where: { workspace_id },\n data: {\n name: input.name ?? undefined,\n description: input.description ?? undefined,\n color: input.color ?? undefined,\n },\n });\n }\n\n async delete(workspaceId: string, userId: string) {\n const workspace = await this.findWorkspace(workspaceId);\n\n if (workspace.owner_id !== userId) {\n throw new ForbiddenException(\n 'Only the workspace owner can delete it',\n );\n }\n\n await this.prisma.workspace.delete({\n where: { workspace_id: workspaceId },\n });\n\n return { success: true, message: 'Workspace deleted' };\n }\n}\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"injectables/ZipExportService.html":{"url":"injectables/ZipExportService.html","title":"injectable - ZipExportService","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n Injectables\n ZipExportService\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n documentation/template-playground/zip-export.service.ts\n \n\n\n\n\n\n \n Index\n \n \n\n \n \n Methods\n \n \n \n \n \n \n Private\n downloadBlob\n \n \n exportTemplates\n \n \n Private\n generateReadme\n \n \n \n \n\n\n\n\n\n \n \n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n Private\n downloadBlob\n \n \n \n \n \n \n \n downloadBlob(blob: Blob, filename: string)\n \n \n\n\n \n \n Defined in documentation/template-playground/zip-export.service.ts:75\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n blob\n \n Blob\n \n\n \n No\n \n\n\n \n \n filename\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n exportTemplates\n \n \n \n \n \n \nexportTemplates(files: any[])\n \n \n\n\n \n \n Defined in documentation/template-playground/zip-export.service.ts:10\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n files\n \n any[]\n \n\n \n No\n \n\n\n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Private\n generateReadme\n \n \n \n \n \n \n \n generateReadme()\n \n \n\n\n \n \n Defined in documentation/template-playground/zip-export.service.ts:29\n \n \n\n\n \n \n\n \n Returns : string\n\n \n \n \n \n \n\n\n \n\n\n \n import { Injectable } from '@angular/core';\n\ndeclare const JSZip: any;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ZipExportService {\n\n exportTemplates(files: any[]) {\n const zip = new JSZip();\n\n // Add all template files to the ZIP\n files.forEach(file => {\n zip.file(file.path, file.content);\n });\n\n // Add a README with instructions\n const readme = this.generateReadme();\n zip.file('README.md', readme);\n\n // Generate and download the ZIP file\n zip.generateAsync({ type: 'blob' })\n .then((content: Blob) => {\n this.downloadBlob(content, 'compodoc-templates.zip');\n });\n }\n\n private generateReadme(): string {\n return `# Compodoc Custom Templates\n\nThis ZIP file contains customized templates for Compodoc documentation generation.\n\n## Contents\n\n- **Templates** (\\`.hbs\\` files): Handlebars templates for generating documentation pages\n- **Styles** (\\`.css\\` files): Stylesheets for customizing the appearance\n- **Scripts** (\\`.js\\` files): JavaScript files for additional functionality\n\n## Usage\n\n1. Extract this ZIP file to a directory on your system\n2. Use the \\`--templates\\` flag when running Compodoc to specify the path to your custom templates:\n\n \\`\\`\\`bash\n compodoc -p tsconfig.json --templates ./path/to/custom/templates/\n \\`\\`\\`\n\n## Template Structure\n\n- \\`page.hbs\\` - Main page template\n- \\`partials/\\` - Directory containing partial templates\n- \\`styles/\\` - Directory containing CSS files\n- \\`js/\\` - Directory containing JavaScript files\n\n## Customization Tips\n\n1. **Templates**: Use Handlebars syntax to customize the HTML structure\n2. **Styles**: Modify CSS to change colors, fonts, layout, etc.\n3. **Scripts**: Add custom JavaScript functionality\n\n## Backup\n\nAlways keep a backup of your original templates before making changes.\n\n## Documentation\n\nFor more information about customizing Compodoc templates, visit:\nhttps://compodoc.app/guides/template-customization.html\n\nGenerated by Compodoc Template Playground\n`;\n }\n\n private downloadBlob(blob: Blob, filename: string) {\n const url = window.URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = filename;\n a.style.display = 'none';\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n window.URL.revokeObjectURL(url);\n }\n}\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"coverage.html":{"url":"coverage.html","title":"coverage - coverage","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Documentation coverage\n\n\n\n \n\n\n\n \n \n File\n Type\n Identifier\n Statements\n \n \n \n \n \n \n documentation/template-playground/hbs-render.service.ts\n \n injectable\n HbsRenderService\n \n 0 %\n (0/7)\n \n \n \n \n \n documentation/template-playground/hbs-render.service.ts\n \n variable\n Handlebars\n \n 0 %\n (0/1)\n \n \n \n \n \n documentation/template-playground/template-editor.service.ts\n \n injectable\n TemplateEditorService\n \n 0 %\n (0/9)\n \n \n \n \n \n documentation/template-playground/template-editor.service.ts\n \n variable\n monaco\n \n 0 %\n (0/1)\n \n \n \n \n \n documentation/template-playground/template-playground.component.ts\n \n component\n TemplatePlaygroundComponent\n \n 0 %\n (0/28)\n \n \n \n \n \n documentation/template-playground/template-playground.component.ts\n \n interface\n CompoDocConfig\n \n 0 %\n (0/25)\n \n \n \n \n \n documentation/template-playground/template-playground.component.ts\n \n interface\n Session\n \n 0 %\n (0/4)\n \n \n \n \n \n documentation/template-playground/template-playground.component.ts\n \n interface\n Template\n \n 0 %\n (0/4)\n \n \n \n \n \n documentation/template-playground/zip-export.service.ts\n \n injectable\n ZipExportService\n \n 0 %\n (0/4)\n \n \n \n \n \n documentation/template-playground/zip-export.service.ts\n \n variable\n JSZip\n \n 0 %\n (0/1)\n \n \n \n \n \n src/app.controller.ts\n \n controller\n AppController\n \n 0 %\n (0/2)\n \n \n \n \n \n src/app.service.ts\n \n injectable\n AppService\n \n 0 %\n (0/2)\n \n \n \n \n \n src/auth/auth.resolver.ts\n \n class\n AuthResolver\n \n 60 %\n (3/5)\n \n \n \n \n \n src/auth/auth.resolver.ts\n \n class\n AuthResultResolver\n \n 0 %\n (0/2)\n \n \n \n \n \n src/auth/auth.service.ts\n \n injectable\n AuthService\n \n 0 %\n (0/4)\n \n \n \n \n \n src/common/decorators/workspace-auth.decorator.ts\n \n function\n WorkspaceAuth\n \n 0 %\n (0/1)\n \n \n \n \n \n src/common/decorators/workspace-auth.decorator.ts\n \n variable\n ROLES_KEY\n \n 0 %\n (0/1)\n \n \n \n \n \n src/common/guards/auth.guard.ts\n \n guard\n AuthGuard\n \n 0 %\n (0/3)\n \n \n \n \n \n src/common/guards/workspace.guard.ts\n \n guard\n WorkspaceGuard\n \n 0 %\n (0/5)\n \n \n \n \n \n src/graphql/graphql.ts\n \n class\n AddWorkspaceMemberInput\n \n 0 %\n (0/4)\n \n \n \n \n \n src/graphql/graphql.ts\n \n class\n Attachment\n \n 0 %\n (0/5)\n \n \n \n \n \n src/graphql/graphql.ts\n \n class\n AuthError\n \n 0 %\n (0/4)\n \n \n \n \n \n src/graphql/graphql.ts\n \n class\n AuthSuccess\n \n 0 %\n (0/3)\n \n \n \n \n \n src/graphql/graphql.ts\n \n class\n Board\n \n 0 %\n (0/7)\n \n \n \n \n \n src/graphql/graphql.ts\n \n class\n Card\n \n 0 %\n (0/11)\n \n \n \n \n \n src/graphql/graphql.ts\n \n class\n CardLabel\n \n 0 %\n (0/3)\n \n \n \n \n \n src/graphql/graphql.ts\n \n class\n CardMember\n \n 0 %\n (0/3)\n \n \n \n \n \n src/graphql/graphql.ts\n \n class\n Comment\n \n 0 %\n (0/6)\n \n \n \n \n \n src/graphql/graphql.ts\n \n class\n CreateBoardInput\n \n 0 %\n (0/5)\n \n \n \n \n \n src/graphql/graphql.ts\n \n class\n CreateBoardPayload\n \n 0 %\n (0/2)\n \n \n \n \n \n src/graphql/graphql.ts\n \n class\n CreateCardInput\n \n 0 %\n (0/6)\n \n \n \n \n \n src/graphql/graphql.ts\n \n class\n CreateLabelInput\n \n 0 %\n (0/4)\n \n \n \n \n \n src/graphql/graphql.ts\n \n class\n CreateListInput\n \n 0 %\n (0/5)\n \n \n \n \n \n src/graphql/graphql.ts\n \n class\n CreateUserInput\n \n 0 %\n (0/4)\n \n \n \n \n \n src/graphql/graphql.ts\n \n class\n CreateWorkspaceInput\n \n 0 %\n (0/4)\n \n \n \n \n \n src/graphql/graphql.ts\n \n class\n Error\n \n 0 %\n (0/3)\n \n \n \n \n \n src/graphql/graphql.ts\n \n class\n FileResponse\n \n 0 %\n (0/4)\n \n \n \n \n \n src/graphql/graphql.ts\n \n class\n IMutation\n \n 0 %\n (0/30)\n \n \n \n \n \n src/graphql/graphql.ts\n \n class\n IQuery\n \n 0 %\n (0/15)\n \n \n \n \n \n src/graphql/graphql.ts\n \n class\n Label\n \n 0 %\n (0/5)\n \n \n \n \n \n src/graphql/graphql.ts\n \n class\n List\n \n 0 %\n (0/7)\n \n \n \n \n \n src/graphql/graphql.ts\n \n class\n LoginInput\n \n 0 %\n (0/3)\n \n \n \n \n \n src/graphql/graphql.ts\n \n class\n PinWorkspacePayload\n \n 0 %\n (0/2)\n \n \n \n \n \n src/graphql/graphql.ts\n \n class\n RegisterInput\n \n 0 %\n (0/4)\n \n \n \n \n \n src/graphql/graphql.ts\n \n class\n Success\n \n 0 %\n (0/2)\n \n \n \n \n \n src/graphql/graphql.ts\n \n class\n UpdateBoardInput\n \n 0 %\n (0/5)\n \n \n \n \n \n src/graphql/graphql.ts\n \n class\n UpdateCardInput\n \n 0 %\n (0/6)\n \n \n \n \n \n src/graphql/graphql.ts\n \n class\n UpdateLabelInput\n \n 0 %\n (0/4)\n \n \n \n \n \n src/graphql/graphql.ts\n \n class\n UpdateListInput\n \n 0 %\n (0/5)\n \n \n \n \n \n src/graphql/graphql.ts\n \n class\n UpdateMemberRoleInput\n \n 0 %\n (0/4)\n \n \n \n \n \n src/graphql/graphql.ts\n \n class\n UpdateUserInput\n \n 0 %\n (0/5)\n \n \n \n \n \n src/graphql/graphql.ts\n \n class\n UpdateWorkspaceInput\n \n 0 %\n (0/4)\n \n \n \n \n \n src/graphql/graphql.ts\n \n class\n User\n \n 0 %\n (0/6)\n \n \n \n \n \n src/graphql/graphql.ts\n \n class\n Workspace\n \n 0 %\n (0/11)\n \n \n \n \n \n src/graphql/graphql.ts\n \n class\n WorkspaceMembers\n \n 0 %\n (0/6)\n \n \n \n \n \n src/graphql/graphql.ts\n \n type alias\n AuthResult\n \n 0 %\n (0/1)\n \n \n \n \n \n src/graphql/graphql.ts\n \n type alias\n DateTime\n \n 0 %\n (0/1)\n \n \n \n \n \n src/graphql/graphql.ts\n \n type alias\n Nullable\n \n 0 %\n (0/1)\n \n \n \n \n \n src/graphql/graphql.ts\n \n type alias\n Status\n \n 0 %\n (0/1)\n \n \n \n \n \n src/graphql/graphql.ts\n \n type alias\n Upload\n \n 0 %\n (0/1)\n \n \n \n \n \n src/main.ts\n \n function\n bootstrap\n \n 0 %\n (0/1)\n \n \n \n \n \n src/prisma/prisma.service.ts\n \n injectable\n PrismaService\n \n 0 %\n (0/2)\n \n \n \n \n \n src/workspace/workspace.resolver.ts\n \n class\n WorkspaceResolver\n \n 0 %\n (0/7)\n \n \n \n \n \n src/workspace/workspace.service.ts\n \n injectable\n WorkspaceService\n \n 14 %\n (1/7)\n \n \n \n\n\n\n\n\n new Tablesort(document.getElementById('coverage-table'));\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"dependencies.html":{"url":"dependencies.html","title":"package-dependencies - dependencies","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n Dependencies\n \n \n \n @fastify/cookie : ^11.0.2\n \n @nestjs/common : ^11.0.1\n \n @nestjs/config : ^4.0.2\n \n @nestjs/core : ^11.0.1\n \n @nestjs/graphql : ^13.2.0\n \n @nestjs/jwt : ^11.0.1\n \n @nestjs/mercurius : ^13.2.0\n \n @nestjs/platform-fastify : ^11.1.9\n \n @prisma/client : 5.22.0\n \n @prisma/config : ^7.0.0\n \n bcrypt : ^6.0.0\n \n mercurius : ^16.6.0\n \n prisma : 5.22.0\n \n reflect-metadata : ^0.2.2\n \n rxjs : ^7.8.1\n \n ts-morph : ^25.0.1\n \n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"miscellaneous/enumerations.html":{"url":"miscellaneous/enumerations.html","title":"miscellaneous-enumerations - enumerations","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Miscellaneous\n Enumerations\n\n\n\n Index\n \n \n \n \n \n \n Role   (src/.../graphql.ts)\n \n \n \n \n \n \n\n\n src/graphql/graphql.ts\n \n \n \n \n \n \n Role\n \n \n \n \n  Admin\n \n \n \n \n Value : Admin\n \n \n \n \n  Member\n \n \n \n \n Value : Member\n \n \n \n \n  Viewer\n \n \n \n \n Value : Viewer\n \n \n \n \n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"miscellaneous/functions.html":{"url":"miscellaneous/functions.html","title":"miscellaneous-functions - functions","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Miscellaneous\n Functions\n\n\n\n Index\n \n \n \n \n \n \n bootstrap   (src/.../main.ts)\n \n \n WorkspaceAuth   (src/.../workspace-auth.decorator.ts)\n \n \n \n \n \n \n\n\n src/main.ts\n \n \n \n \n \n \n \n bootstrap\n \n \n \n \n \n \nbootstrap()\n \n \n\n\n\n\n \n \n src/common/decorators/workspace-auth.decorator.ts\n \n \n \n \n \n \n \n WorkspaceAuth\n \n \n \n \n \n \nWorkspaceAuth(role: Role)\n \n \n\n\n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n Default value\n \n \n \n \n role\n \n Role\n \n\n \n No\n \n\n \n Role.Member\n \n\n \n \n \n \n \n \n \n \n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"index.html":{"url":"index.html","title":"readme - index","body":"\n \n\n\n\n \n\n\n A progressive Node.js framework for building efficient and scalable server-side applications.\n \n\n\n\n\n\n\n\n \n \n \n\n \n\nDescription\nNest framework TypeScript starter repository.\nProject setup\nExample :$ npm installCompile and run the project\nExample :# development\n$ npm run start\n\n# watch mode\n$ npm run start:dev\n\n# production mode\n$ npm run start:prodRun tests\nExample :# unit tests\n$ npm run test\n\n# e2e tests\n$ npm run test:e2e\n\n# test coverage\n$ npm run test:covDeployment\nWhen you're ready to deploy your NestJS application to production, there are some key steps you can take to ensure it runs as efficiently as possible. Check out the deployment documentation for more information.\nIf you are looking for a cloud-based platform to deploy your NestJS application, check out Mau, our official platform for deploying NestJS applications on AWS. Mau makes deployment straightforward and fast, requiring just a few simple steps:\nExample :$ npm install -g @nestjs/mau\n$ mau deployWith Mau, you can deploy your application in just a few clicks, allowing you to focus on building features rather than managing infrastructure.\nResources\nCheck out a few resources that may come in handy when working with NestJS:\n\nVisit the NestJS Documentation to learn more about the framework.\nFor questions and support, please visit our Discord channel.\nTo dive deeper and get more hands-on experience, check out our official video courses.\nDeploy your application to AWS with the help of NestJS Mau in just a few clicks.\nVisualize your application graph and interact with the NestJS application in real-time using NestJS Devtools.\nNeed help with your project (part-time to full-time)? Check out our official enterprise support.\nTo stay in the loop and get updates, follow us on X and LinkedIn.\nLooking for a job, or have a job to offer? Check out our official Jobs board.\n\nSupport\nNest is an MIT-licensed open source project. It can grow thanks to the sponsors and support by the amazing backers. If you'd like to join them, please read more here.\nStay in touch\n\nAuthor - Kamil Myśliwiec\nWebsite - https://nestjs.com\nTwitter - @nestframework\n\nLicense\nNest is MIT licensed.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"modules.html":{"url":"modules.html","title":"modules - modules","body":"\n \n\n\n\n\n\n\n\n\n Modules\n\n\n \n \n \n \n AppModule\n \n \n \n \n Your browser does not support SVG\n \n \n \n Browse\n \n \n \n \n \n \n \n AuthModule\n \n \n \n \n Your browser does not support SVG\n \n \n \n Browse\n \n \n \n \n \n \n \n CommonModule\n \n \n \n \n Your browser does not support SVG\n \n \n \n Browse\n \n \n \n \n \n \n \n PrismaModule\n \n \n \n \n Your browser does not support SVG\n \n \n \n Browse\n \n \n \n \n \n \n \n TemplatePlaygroundModule\n \n \n \n \n Your browser does not support SVG\n \n \n \n Browse\n \n \n \n \n \n \n \n WorkspaceModule\n \n \n \n \n Your browser does not support SVG\n \n \n \n Browse\n \n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"overview.html":{"url":"overview.html","title":"overview - overview","body":"\n \n\n\n\n\n\n\n\n Overview\n\n \n\n \n \n\n\n\n\n\ndependencies\n\nLegend\n\n  Declarations\n\n  Module\n\n  Bootstrap\n\n  Providers\n\n  Exports\n\ncluster_AppModule\n\n\n\ncluster_AppModule_imports\n\n\n\ncluster_AppModule_providers\n\n\n\ncluster_AuthModule\n\n\n\ncluster_AuthModule_providers\n\n\n\ncluster_CommonModule\n\n\n\ncluster_CommonModule_exports\n\n\n\ncluster_PrismaModule\n\n\n\ncluster_PrismaModule_exports\n\n\n\ncluster_TemplatePlaygroundModule\n\n\n\ncluster_TemplatePlaygroundModule_declarations\n\n\n\ncluster_TemplatePlaygroundModule_bootstrap\n\n\n\ncluster_TemplatePlaygroundModule_providers\n\n\n\ncluster_WorkspaceModule\n\n\n\ncluster_WorkspaceModule_providers\n\n\n\n\nAuthModule\n\nAuthModule\n\n\n\nAppModule\n\nAppModule\n\nAppModule -->\n\nAuthModule->AppModule\n\n\n\n\n\nCommonModule\n\nCommonModule\n\nAppModule -->\n\nCommonModule->AppModule\n\n\n\n\n\nAuthGuard \n\nAuthGuard \n\nAuthGuard -->\n\nCommonModule->AuthGuard \n\n\n\n\n\nWorkspaceGuard \n\nWorkspaceGuard \n\nWorkspaceGuard -->\n\nCommonModule->WorkspaceGuard \n\n\n\n\n\nTemplatePlaygroundModule\n\nTemplatePlaygroundModule\n\nTemplatePlaygroundModule -->\n\nCommonModule->TemplatePlaygroundModule\n\n\n\n\n\nPrismaModule\n\nPrismaModule\n\nCommonModule -->\n\nPrismaModule->CommonModule\n\n\n\nAppModule -->\n\nPrismaModule->AppModule\n\n\n\n\n\nPrismaService \n\nPrismaService \n\nPrismaService -->\n\nPrismaModule->PrismaService \n\n\n\n\n\nWorkspaceModule\n\nWorkspaceModule\n\nAppModule -->\n\nWorkspaceModule->AppModule\n\n\n\n\n\nAppService\n\nAppService\n\nAppModule -->\n\nAppService->AppModule\n\n\n\n\n\nAuthService\n\nAuthService\n\nAuthModule -->\n\nAuthService->AuthModule\n\n\n\n\n\nPrismaService\n\nPrismaService\n\nAuthModule -->\n\nPrismaService->AuthModule\n\n\n\nPrismaModule -->\n\nPrismaService->PrismaModule\n\n\n\n\n\nTemplatePlaygroundComponent\n\nTemplatePlaygroundComponent\n\nTemplatePlaygroundModule -->\n\nTemplatePlaygroundComponent->TemplatePlaygroundModule\n\n\n\n\n\nTemplatePlaygroundComponent \n\nTemplatePlaygroundComponent \n\nTemplatePlaygroundComponent -->\n\nTemplatePlaygroundModule->TemplatePlaygroundComponent \n\n\n\n\n\nHbsRenderService\n\nHbsRenderService\n\nTemplatePlaygroundModule -->\n\nHbsRenderService->TemplatePlaygroundModule\n\n\n\n\n\nTemplateEditorService\n\nTemplateEditorService\n\nTemplatePlaygroundModule -->\n\nTemplateEditorService->TemplatePlaygroundModule\n\n\n\n\n\nZipExportService\n\nZipExportService\n\nTemplatePlaygroundModule -->\n\nZipExportService->TemplatePlaygroundModule\n\n\n\n\n\nWorkspaceService\n\nWorkspaceService\n\nWorkspaceModule -->\n\nWorkspaceService->WorkspaceModule\n\n\n\n\n\n\n \n \n \n Zoom in\n Reset\n Zoom out\n \n\n \n\n \n \n \n \n \n \n 6 Modules\n \n \n \n \n \n \n \n \n 1 Component\n \n \n \n \n \n \n \n 1 Controller\n \n \n \n \n \n \n \n 7 Injectables\n \n \n \n \n \n \n \n 39 Classes\n \n \n \n \n \n \n \n 2 Guards\n \n \n \n \n \n \n \n 3 Interfaces\n \n \n \n \n \n \n \n \n 0 \n \n \n \n \n \n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"properties.html":{"url":"properties.html","title":"package-properties - properties","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n Properties\n \n \n \n Version : 0.0.1\n \n Description : \n \n License : UNLICENSED\n \n Author : \n \n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"routes.html":{"url":"routes.html","title":"routes - routes","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Routes\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"miscellaneous/typealiases.html":{"url":"miscellaneous/typealiases.html","title":"miscellaneous-typealiases - typealiases","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Miscellaneous\n Type aliases\n\n\n\n Index\n \n \n \n \n \n \n AuthResult   (src/.../graphql.ts)\n \n \n DateTime   (src/.../graphql.ts)\n \n \n Nullable   (src/.../graphql.ts)\n \n \n Status   (src/.../graphql.ts)\n \n \n Upload   (src/.../graphql.ts)\n \n \n \n \n \n \n\n\n src/graphql/graphql.ts\n \n \n \n \n \n \n AuthResult\n \n \n \n \n AuthSuccess | AuthError\n\n \n \n \n \n \n \n \n \n \n DateTime\n \n \n \n \n any\n\n \n \n \n \n \n \n \n \n \n Nullable\n \n \n \n \n T | null\n\n \n \n \n \n \n \n \n \n \n Status\n \n \n \n \n Success | Error\n\n \n \n \n \n \n \n \n \n \n Upload\n \n \n \n \n any\n\n \n \n \n \n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"miscellaneous/variables.html":{"url":"miscellaneous/variables.html","title":"miscellaneous-variables - variables","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Miscellaneous\n Variables\n\n\n\n Index\n \n \n \n \n \n \n Handlebars   (documentation/.../hbs-render.service.ts)\n \n \n JSZip   (documentation/.../zip-export.service.ts)\n \n \n monaco   (documentation/.../template-editor.service.ts)\n \n \n ROLES_KEY   (src/.../workspace-auth.decorator.ts)\n \n \n \n \n \n \n\n\n documentation/template-playground/hbs-render.service.ts\n \n \n \n \n \n \n \n Handlebars\n \n \n \n \n \n \n Type : any\n\n \n \n\n\n \n \n\n documentation/template-playground/zip-export.service.ts\n \n \n \n \n \n \n \n JSZip\n \n \n \n \n \n \n Type : any\n\n \n \n\n\n \n \n\n documentation/template-playground/template-editor.service.ts\n \n \n \n \n \n \n \n monaco\n \n \n \n \n \n \n Type : any\n\n \n \n\n\n \n \n\n src/common/decorators/workspace-auth.decorator.ts\n \n \n \n \n \n \n \n ROLES_KEY\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Default value : 'roles'\n \n \n\n\n \n \n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"}} +} diff --git a/backend/documentation/js/sourceCode.js b/backend/documentation/js/sourceCode.js new file mode 100644 index 0000000..541dbd1 --- /dev/null +++ b/backend/documentation/js/sourceCode.js @@ -0,0 +1,58 @@ +document.addEventListener('DOMContentLoaded', function() { + var $tabSource = document.querySelector('#source-tab'), + $tabInfo = document.querySelector('#info-tab'), + $tabReadme = document.querySelector('#readme-tab'), + $tabTemplate = document.querySelector('#templateData-tab'), + $tabTree = document.querySelector('#tree-tab'), + $tabExample = document.querySelector('#example-tab'), + $prismPre = document.querySelector('pre.compodoc-sourcecode'); + if ($tabSource && $prismPre) { + $prismCode = $prismPre.querySelector('code'), + $content = document.querySelector('.content'), + prismLinks = document.querySelectorAll('.link-to-prism') + + for (var i = 0; i < prismLinks.length; i++) { + prismLinks[i].addEventListener('click', linkToPrism, false); + } + + function linkToPrism(event) { + var targetLine = event.target.getAttribute('data-line'); + event.preventDefault(); + + $prismPre.setAttribute('data-line', targetLine); + Prism.highlightElement($prismCode, function() {}); + + $tabSource.click(); + + setTimeout(function() { + var $prismHighlightLine = document.querySelector('.line-highlight'), + top = parseInt(getComputedStyle($prismHighlightLine)['top']); + $content.scrollTop = top; + }, 500); + }; + + window.onhashchange = function(event) { + switch (window.location.hash) { + case '': + case '#info': + $tabInfo.click(); + break; + case '#readme': + $tabReadme.click(); + break; + case '#source': + $tabSource.click(); + break; + case '#template': + $tabTemplate.click(); + break; + case '#dom-tree': + $tabTree.click(); + break; + case '#example': + $tabExample.click(); + break; + } + } + } +}); diff --git a/backend/documentation/js/svg-pan-zoom.controls.js b/backend/documentation/js/svg-pan-zoom.controls.js new file mode 100644 index 0000000..ea6d138 --- /dev/null +++ b/backend/documentation/js/svg-pan-zoom.controls.js @@ -0,0 +1,53 @@ +document.addEventListener('DOMContentLoaded', function() { + if (document.getElementById('module-graph-svg')) { + panZoom = svgPanZoom(document.getElementById('module-graph-svg').querySelector('svg'), { + zoomEnabled: true, + minZoom: 1, + maxZoom: 5 + }); + + document.getElementById('zoom-in').addEventListener('click', function(ev) { + ev.preventDefault(); + panZoom.zoomIn(); + }); + + document.getElementById('zoom-out').addEventListener('click', function(ev) { + ev.preventDefault(); + panZoom.zoomOut(); + }); + + document.getElementById('reset').addEventListener('click', function(ev) { + ev.preventDefault(); + panZoom.resetZoom(); + panZoom.resetPan(); + }); + + var overviewFullscreen = false, + originalOverviewHeight; + + document.getElementById('fullscreen').addEventListener('click', function(ev) { + if (overviewFullscreen) { + document.getElementById('module-graph-svg').style.height = originalOverviewHeight; + overviewFullscreen = false; + if (ev.target) { + ev.target.classList.remove('ion-md-close'); + ev.target.classList.add('ion-ios-resize'); + } + } else { + originalOverviewHeight = document.getElementById('module-graph-svg').style.height; + document.getElementById('module-graph-svg').style.height = '85vh'; + overviewFullscreen = true; + if (ev.target) { + ev.target.classList.remove('ion-ios-resize'); + ev.target.classList.add('ion-md-close'); + } + } + document.getElementById('module-graph-svg').querySelector('svg').style.height = document.getElementById('module-graph-svg').clientHeight; + setTimeout(function() { + panZoom.resize(); + panZoom.fit(); + panZoom.center(); + }, 0) + }); + } +}); diff --git a/backend/documentation/js/tabs.js b/backend/documentation/js/tabs.js new file mode 100644 index 0000000..dbe4c28 --- /dev/null +++ b/backend/documentation/js/tabs.js @@ -0,0 +1,21 @@ +document.addEventListener('DOMContentLoaded', function() { + var tabs = document.getElementsByClassName('nav-tabs'), + updateAddress = function(e) { + if(history.pushState && e.target.dataset.link) { + history.pushState(null, null, '#' + e.target.dataset.link); + } + }; + if (tabs.length > 0) { + tabs = tabs[0].querySelectorAll('li'); + for (var i = 0; i < tabs.length; i++) { + tabs[i].addEventListener('click', updateAddress); + var linkTag = tabs[i].querySelector('a'); + if (location.hash !== '') { + var currentHash = location.hash.substr(1); + if (currentHash === linkTag.dataset.link) { + linkTag.click(); + } + } + } + } +}); diff --git a/backend/documentation/js/tree.js b/backend/documentation/js/tree.js new file mode 100644 index 0000000..f79e1d7 --- /dev/null +++ b/backend/documentation/js/tree.js @@ -0,0 +1,147 @@ +document.addEventListener('DOMContentLoaded', function() { + var tabs = document.getElementsByClassName('nav-tabs')[0], + tabsCollection = tabs.getElementsByTagName('A'), + treeTab; + var len = tabsCollection.length; + for(var i = 0; i < len; i++) { + if (tabsCollection[i].getAttribute('id') === 'tree-tab') { + treeTab = tabsCollection[i]; + } + } + + // short-circuit if no tree tab + if (!treeTab) return; + + var handler = new Tautologistics.NodeHtmlParser.HtmlBuilder(function(error, dom) { + if (error) { + console.log('handler ko'); + } + }), + parser = new Tautologistics.NodeHtmlParser.Parser(handler), + currentLocation = window.location; + parser.parseComplete(COMPONENT_TEMPLATE); + + var newNodes = [], + newEdges = [], + parsedHtml = handler.dom[0], + nodeCount = 0, + nodeLevel = 0; + + newNodes.push({ + _id: 0, + label: parsedHtml.name, + type: parsedHtml.type + }) + //Add id for nodes + var traverseIds = function(o) { + for (i in o) { + if (!!o[i] && typeof(o[i]) == "object") { + if (!o[i].length && o[i].type === 'tag') { + nodeCount += 1; + o[i]._id = nodeCount; + } + traverseIds(o[i]); + } + } + } + parsedHtml._id = 0; + traverseIds(parsedHtml); + + + var DeepIterator = deepIterator.default, + it = DeepIterator(parsedHtml); + for (let { + value, + parent, + parentNode, + key, + type + } of it) { + if (type === 'NonIterableObject' && typeof key !== 'undefined' && value.type === 'tag') { + var newNode = { + id: value._id, + label: value.name, + type: value.type + }; + for(var i = 0; i < COMPONENTS.length; i++) { + if (COMPONENTS[i].selector === value.name) { + newNode.font = { + multi: 'html' + }; + newNode.label = '' + newNode.label + ''; + newNode.color = '#FB7E81'; + newNode.name = COMPONENTS[i].name; + } + } + for(var i = 0; i < DIRECTIVES.length; i++) { + if (value.attributes) { + for(attr in value.attributes) { + if (DIRECTIVES[i].selector.indexOf(attr) !== -1) { + newNode.font = { + multi: 'html' + }; + newNode.label = '' + newNode.label + ''; + newNode.color = '#FF9800'; + newNode.name = DIRECTIVES[i].name; + } + } + } + } + newNodes.push(newNode); + newEdges.push({ + from: parentNode._parent._id, + to: value._id, + arrows: 'to' + }); + } + } + + newNodes.shift(); + + var container = document.getElementById('tree-container'), + data = { + nodes: newNodes, + edges: newEdges + }, + options = { + layout: { + hierarchical: { + sortMethod: 'directed', + enabled: true + } + }, + nodes: { + shape: 'ellipse', + fixed: true + } + }, + + handleClickNode = function(params) { + var clickeNodeId; + if (params.nodes.length > 0) { + clickeNodeId = params.nodes[0]; + for(var i = 0; i < newNodes.length; i++) { + if (newNodes[i].id === clickeNodeId) { + for(var j = 0; j < COMPONENTS.length; j++) { + if (COMPONENTS[j].name === newNodes[i].name) { + document.location.href = currentLocation.origin + currentLocation.pathname.replace(ACTUAL_COMPONENT.name, newNodes[i].name); + } + } + } + } + } + }, + + loadTree = function () { + setTimeout(function() { + container.style.height = document.getElementsByClassName('content')[0].offsetHeight - 140 + 'px'; + var network = new vis.Network(container, data, options); + network.on('click', handleClickNode); + }, 200); // Fade is 0.150 + }; + + loadTree(); + treeTab.addEventListener('click', function() { + loadTree(); + }); +}); diff --git a/backend/documentation/miscellaneous/enumerations.html b/backend/documentation/miscellaneous/enumerations.html new file mode 100644 index 0000000..4d4789e --- /dev/null +++ b/backend/documentation/miscellaneous/enumerations.html @@ -0,0 +1,258 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                                                                                                                  +
                                                                                                                  + + +
                                                                                                                  +
                                                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                  +

                                                                                                                  Index

                                                                                                                  + + + + + + +
                                                                                                                  + +
                                                                                                                  +
                                                                                                                  + +

                                                                                                                  src/graphql/graphql.ts

                                                                                                                  +
                                                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                  + + Role +
                                                                                                                  +  Admin +
                                                                                                                  + Value : Admin +
                                                                                                                  +  Member +
                                                                                                                  + Value : Member +
                                                                                                                  +  Viewer +
                                                                                                                  + Value : Viewer +
                                                                                                                  +
                                                                                                                  + + + +
                                                                                                                  +
                                                                                                                  +

                                                                                                                  results matching ""

                                                                                                                  +
                                                                                                                    +
                                                                                                                    +
                                                                                                                    +

                                                                                                                    No results matching ""

                                                                                                                    +
                                                                                                                    +
                                                                                                                    +
                                                                                                                    + +
                                                                                                                    +
                                                                                                                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/miscellaneous/functions.html b/backend/documentation/miscellaneous/functions.html new file mode 100644 index 0000000..6c397f5 --- /dev/null +++ b/backend/documentation/miscellaneous/functions.html @@ -0,0 +1,302 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                                                                                                                    +
                                                                                                                    + + +
                                                                                                                    +
                                                                                                                    + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                    +

                                                                                                                    Index

                                                                                                                    + + + + + + +
                                                                                                                    + +
                                                                                                                    +
                                                                                                                    + +

                                                                                                                    src/main.ts

                                                                                                                    +
                                                                                                                    +

                                                                                                                    + + + + + + + + + + + + +
                                                                                                                    + + + bootstrap + + +
                                                                                                                    +bootstrap() +
                                                                                                                    +

                                                                                                                    src/common/decorators/workspace-auth.decorator.ts

                                                                                                                    +
                                                                                                                    +

                                                                                                                    + + + + + + + + + + + + + + + +
                                                                                                                    + + + WorkspaceAuth + + +
                                                                                                                    +WorkspaceAuth(role: Role) +
                                                                                                                    + +
                                                                                                                    + Parameters : + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                    NameTypeOptionalDefault value
                                                                                                                    role + Role + + No + + Role.Member +
                                                                                                                    +
                                                                                                                    +
                                                                                                                    +
                                                                                                                    + + +
                                                                                                                    +
                                                                                                                    +

                                                                                                                    results matching ""

                                                                                                                    +
                                                                                                                      +
                                                                                                                      +
                                                                                                                      +

                                                                                                                      No results matching ""

                                                                                                                      +
                                                                                                                      +
                                                                                                                      +
                                                                                                                      + +
                                                                                                                      +
                                                                                                                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/miscellaneous/typealiases.html b/backend/documentation/miscellaneous/typealiases.html new file mode 100644 index 0000000..c44dd9b --- /dev/null +++ b/backend/documentation/miscellaneous/typealiases.html @@ -0,0 +1,309 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                                                                                                                      +
                                                                                                                      + + +
                                                                                                                      +
                                                                                                                      + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                      +

                                                                                                                      Index

                                                                                                                      + + + + + + +
                                                                                                                      + +
                                                                                                                      +
                                                                                                                      + +

                                                                                                                      src/graphql/graphql.ts

                                                                                                                      +
                                                                                                                      + + + + + + + + + +
                                                                                                                      + + AuthResult +
                                                                                                                      + AuthSuccess | AuthError + +
                                                                                                                      + + + + + + + + + +
                                                                                                                      + + DateTime +
                                                                                                                      + any + +
                                                                                                                      + + + + + + + + + +
                                                                                                                      + + Nullable +
                                                                                                                      + T | null + +
                                                                                                                      + + + + + + + + + +
                                                                                                                      + + Status +
                                                                                                                      + Success | Error + +
                                                                                                                      + + + + + + + + + +
                                                                                                                      + + Upload +
                                                                                                                      + any + +
                                                                                                                      +
                                                                                                                      + + +
                                                                                                                      +
                                                                                                                      +

                                                                                                                      results matching ""

                                                                                                                      +
                                                                                                                        +
                                                                                                                        +
                                                                                                                        +

                                                                                                                        No results matching ""

                                                                                                                        +
                                                                                                                        +
                                                                                                                        +
                                                                                                                        + +
                                                                                                                        +
                                                                                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/miscellaneous/variables.html b/backend/documentation/miscellaneous/variables.html new file mode 100644 index 0000000..f60bde9 --- /dev/null +++ b/backend/documentation/miscellaneous/variables.html @@ -0,0 +1,325 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                                                                                                                        +
                                                                                                                        + + +
                                                                                                                        +
                                                                                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                        +

                                                                                                                        Index

                                                                                                                        + + + + + + +
                                                                                                                        + +
                                                                                                                        +
                                                                                                                        + +

                                                                                                                        documentation/template-playground/hbs-render.service.ts

                                                                                                                        +
                                                                                                                        +

                                                                                                                        + + + + + + + + + + +
                                                                                                                        + + + Handlebars + + +
                                                                                                                        + Type : any + +
                                                                                                                        +
                                                                                                                        +

                                                                                                                        documentation/template-playground/zip-export.service.ts

                                                                                                                        +
                                                                                                                        +

                                                                                                                        + + + + + + + + + + +
                                                                                                                        + + + JSZip + + +
                                                                                                                        + Type : any + +
                                                                                                                        +
                                                                                                                        +

                                                                                                                        documentation/template-playground/template-editor.service.ts

                                                                                                                        +
                                                                                                                        +

                                                                                                                        + + + + + + + + + + +
                                                                                                                        + + + monaco + + +
                                                                                                                        + Type : any + +
                                                                                                                        +
                                                                                                                        +

                                                                                                                        src/common/decorators/workspace-auth.decorator.ts

                                                                                                                        +
                                                                                                                        +

                                                                                                                        + + + + + + + + + + + + + +
                                                                                                                        + + + ROLES_KEY + + +
                                                                                                                        + Type : string + +
                                                                                                                        + Default value : 'roles' +
                                                                                                                        +
                                                                                                                        + + + +
                                                                                                                        +
                                                                                                                        +

                                                                                                                        results matching ""

                                                                                                                        +
                                                                                                                          +
                                                                                                                          +
                                                                                                                          +

                                                                                                                          No results matching ""

                                                                                                                          +
                                                                                                                          +
                                                                                                                          +
                                                                                                                          + +
                                                                                                                          +
                                                                                                                          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/modules.html b/backend/documentation/modules.html new file mode 100644 index 0000000..8c4e692 --- /dev/null +++ b/backend/documentation/modules.html @@ -0,0 +1,302 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                                                                                                                          +
                                                                                                                          + + +
                                                                                                                          +
                                                                                                                          + + + + + + + + +
                                                                                                                          +
                                                                                                                          +
                                                                                                                          +
                                                                                                                          +
                                                                                                                          +

                                                                                                                          AppModule

                                                                                                                          +
                                                                                                                          +
                                                                                                                          +

                                                                                                                          + + Your browser does not support SVG + +

                                                                                                                          + +
                                                                                                                          +
                                                                                                                          +
                                                                                                                          +
                                                                                                                          +
                                                                                                                          +
                                                                                                                          +

                                                                                                                          AuthModule

                                                                                                                          +
                                                                                                                          +
                                                                                                                          +

                                                                                                                          + + Your browser does not support SVG + +

                                                                                                                          + +
                                                                                                                          +
                                                                                                                          +
                                                                                                                          +
                                                                                                                          +
                                                                                                                          +
                                                                                                                          +

                                                                                                                          CommonModule

                                                                                                                          +
                                                                                                                          +
                                                                                                                          +

                                                                                                                          + + Your browser does not support SVG + +

                                                                                                                          + +
                                                                                                                          +
                                                                                                                          +
                                                                                                                          +
                                                                                                                          +
                                                                                                                          +
                                                                                                                          +

                                                                                                                          PrismaModule

                                                                                                                          +
                                                                                                                          +
                                                                                                                          +

                                                                                                                          + + Your browser does not support SVG + +

                                                                                                                          + +
                                                                                                                          +
                                                                                                                          +
                                                                                                                          +
                                                                                                                          +
                                                                                                                          +
                                                                                                                          +

                                                                                                                          TemplatePlaygroundModule

                                                                                                                          +
                                                                                                                          +
                                                                                                                          +

                                                                                                                          + + Your browser does not support SVG + +

                                                                                                                          + +
                                                                                                                          +
                                                                                                                          +
                                                                                                                          +
                                                                                                                          +
                                                                                                                          +
                                                                                                                          +

                                                                                                                          WorkspaceModule

                                                                                                                          +
                                                                                                                          +
                                                                                                                          +

                                                                                                                          + + Your browser does not support SVG + +

                                                                                                                          + +
                                                                                                                          +
                                                                                                                          +
                                                                                                                          +
                                                                                                                          +
                                                                                                                          + + + + + + + + + + + + + + + + + + +
                                                                                                                          +
                                                                                                                          +

                                                                                                                          results matching ""

                                                                                                                          +
                                                                                                                            +
                                                                                                                            +
                                                                                                                            +

                                                                                                                            No results matching ""

                                                                                                                            +
                                                                                                                            +
                                                                                                                            +
                                                                                                                            + +
                                                                                                                            +
                                                                                                                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/modules/AppModule.html b/backend/documentation/modules/AppModule.html new file mode 100644 index 0000000..d02fabc --- /dev/null +++ b/backend/documentation/modules/AppModule.html @@ -0,0 +1,435 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                                                                                                                            +
                                                                                                                            + + +
                                                                                                                            +
                                                                                                                            + + + + + + + + + +
                                                                                                                            +
                                                                                                                            + + + + + + +dependencies + +Legend + +  Declarations + +  Module + +  Bootstrap + +  Providers + +  Exports + +cluster_AppModule + + + +cluster_AppModule_providers + + + +cluster_AppModule_imports + + + + +AuthModule + +AuthModule + + + +AppModule + +AppModule + + + +AuthModule->AppModule + + + + + +CommonModule + +CommonModule + + + +CommonModule->AppModule + + + + + +PrismaModule + +PrismaModule + + + +PrismaModule->AppModule + + + + + +WorkspaceModule + +WorkspaceModule + + + +WorkspaceModule->AppModule + + + + + +AppService + +AppService + + + +AppService->AppModule + + + + + + +
                                                                                                                            + +
                                                                                                                            + + + +
                                                                                                                            +
                                                                                                                            + + + + + +
                                                                                                                            +
                                                                                                                            + +

                                                                                                                            +

                                                                                                                            File

                                                                                                                            +

                                                                                                                            +

                                                                                                                            + src/app.module.ts +

                                                                                                                            + + + + + +
                                                                                                                            +
                                                                                                                            +
                                                                                                                            +

                                                                                                                            Providers

                                                                                                                            + +
                                                                                                                            +
                                                                                                                            +

                                                                                                                            Controllers

                                                                                                                            + +
                                                                                                                            +
                                                                                                                            +

                                                                                                                            Imports

                                                                                                                            + +
                                                                                                                            +
                                                                                                                            +
                                                                                                                            + + +
                                                                                                                            + + +
                                                                                                                            +
                                                                                                                            /*
                                                                                                                            + ** EPITECH PROJECT, 2025
                                                                                                                            + ** TaskFlow
                                                                                                                            + ** File description:
                                                                                                                            + ** app.module
                                                                                                                            + */
                                                                                                                            +
                                                                                                                            +import { Module } from '@nestjs/common';
                                                                                                                            +import { AppController } from './app.controller';
                                                                                                                            +import { AppService } from './app.service';
                                                                                                                            +import { PrismaService } from './prisma/prisma.service';
                                                                                                                            +import { AuthModule } from './auth/auth.module';
                                                                                                                            +import { MercuriusDriver, MercuriusDriverConfig } from '@nestjs/mercurius';
                                                                                                                            +import { GraphQLModule } from '@nestjs/graphql';
                                                                                                                            +import { CommonModule } from './common/common.module';
                                                                                                                            +import { PrismaModule } from './prisma/prisma.module';
                                                                                                                            +import { WorkspaceResolver } from './workspace/workspace.resolver';
                                                                                                                            +import { WorkspaceService } from './workspace/workspace.service';
                                                                                                                            +import { join } from 'path';
                                                                                                                            +import { WorkspaceModule } from './workspace/workspace.module';
                                                                                                                            +
                                                                                                                            +@Module({
                                                                                                                            +    imports: [
                                                                                                                            +        GraphQLModule.forRoot<MercuriusDriverConfig>({
                                                                                                                            +            driver: MercuriusDriver,
                                                                                                                            +            typePaths: [join(process.cwd(), 'src/graphql/schemas/*.graphql')],
                                                                                                                            +            graphiql: true,
                                                                                                                            +            context: (request, reply) => ({ req: request, reply }),
                                                                                                                            +            definitions: {
                                                                                                                            +                path: join(process.cwd(), 'src/graphql/graphql.ts'),
                                                                                                                            +                outputAs: 'class',
                                                                                                                            +            },
                                                                                                                            +        }),
                                                                                                                            +        AuthModule,
                                                                                                                            +        CommonModule,
                                                                                                                            +        PrismaModule,
                                                                                                                            +        WorkspaceModule,
                                                                                                                            +    ],
                                                                                                                            +    controllers: [AppController],
                                                                                                                            +    providers: [AppService],
                                                                                                                            +})
                                                                                                                            +export class AppModule {}
                                                                                                                            +
                                                                                                                            +
                                                                                                                            +
                                                                                                                            + + + + + + + + + + + + + + + + + +
                                                                                                                            +
                                                                                                                            +

                                                                                                                            results matching ""

                                                                                                                            +
                                                                                                                              +
                                                                                                                              +
                                                                                                                              +

                                                                                                                              No results matching ""

                                                                                                                              +
                                                                                                                              +
                                                                                                                              +
                                                                                                                              + +
                                                                                                                              +
                                                                                                                              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/modules/AppModule/dependencies.svg b/backend/documentation/modules/AppModule/dependencies.svg new file mode 100644 index 0000000..21ea8b7 --- /dev/null +++ b/backend/documentation/modules/AppModule/dependencies.svg @@ -0,0 +1,102 @@ + + + + + + +dependencies + +Legend + +  Declarations + +  Module + +  Bootstrap + +  Providers + +  Exports + +cluster_AppModule + + + +cluster_AppModule_providers + + + +cluster_AppModule_imports + + + + +AuthModule + +AuthModule + + + +AppModule + +AppModule + + + +AuthModule->AppModule + + + + + +CommonModule + +CommonModule + + + +CommonModule->AppModule + + + + + +PrismaModule + +PrismaModule + + + +PrismaModule->AppModule + + + + + +WorkspaceModule + +WorkspaceModule + + + +WorkspaceModule->AppModule + + + + + +AppService + +AppService + + + +AppService->AppModule + + + + + diff --git a/backend/documentation/modules/AuthModule.html b/backend/documentation/modules/AuthModule.html new file mode 100644 index 0000000..be52e09 --- /dev/null +++ b/backend/documentation/modules/AuthModule.html @@ -0,0 +1,351 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                                                                                                                              +
                                                                                                                              + + +
                                                                                                                              +
                                                                                                                              + + + + + + + + + +
                                                                                                                              +
                                                                                                                              + + + + + + +dependencies + +Legend + +  Declarations + +  Module + +  Bootstrap + +  Providers + +  Exports + +cluster_AuthModule + + + +cluster_AuthModule_providers + + + + +AuthService + +AuthService + + + +AuthModule + +AuthModule + + + +AuthService->AuthModule + + + + + +PrismaService + +PrismaService + + + +PrismaService->AuthModule + + + + + + +
                                                                                                                              + +
                                                                                                                              + + + +
                                                                                                                              +
                                                                                                                              + + + + + +
                                                                                                                              +
                                                                                                                              + +

                                                                                                                              +

                                                                                                                              File

                                                                                                                              +

                                                                                                                              +

                                                                                                                              + src/auth/auth.module.ts +

                                                                                                                              + + + + + +
                                                                                                                              +
                                                                                                                              +
                                                                                                                              +

                                                                                                                              Providers

                                                                                                                              + +
                                                                                                                              +
                                                                                                                              +
                                                                                                                              + + +
                                                                                                                              + + +
                                                                                                                              +
                                                                                                                              /*
                                                                                                                              +** EPITECH PROJECT, 2025
                                                                                                                              +** TaskFlow
                                                                                                                              +** File description:
                                                                                                                              +** auth.module
                                                                                                                              +*/
                                                                                                                              +
                                                                                                                              +import { Module } from '@nestjs/common';
                                                                                                                              +import { AuthService } from './auth.service';
                                                                                                                              +import { JwtModule } from '@nestjs/jwt';
                                                                                                                              +import { AuthResolver } from './auth.resolver';
                                                                                                                              +import { PrismaService } from '../prisma/prisma.service';
                                                                                                                              +import { AuthResultResolver } from './auth.resolver';
                                                                                                                              +
                                                                                                                              +@Module({
                                                                                                                              +    imports: [
                                                                                                                              +        JwtModule.register({
                                                                                                                              +            secret: process.env.JWT_SECRET,
                                                                                                                              +            signOptions: { expiresIn: '7d' },
                                                                                                                              +        }),
                                                                                                                              +    ],
                                                                                                                              +    providers: [AuthService, PrismaService, AuthResolver, AuthResultResolver],
                                                                                                                              +})
                                                                                                                              +export class AuthModule {}
                                                                                                                              +
                                                                                                                              +
                                                                                                                              +
                                                                                                                              + + + + + + + + + + + + + + + + + +
                                                                                                                              +
                                                                                                                              +

                                                                                                                              results matching ""

                                                                                                                              +
                                                                                                                                +
                                                                                                                                +
                                                                                                                                +

                                                                                                                                No results matching ""

                                                                                                                                +
                                                                                                                                +
                                                                                                                                +
                                                                                                                                + +
                                                                                                                                +
                                                                                                                                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/modules/AuthModule/dependencies.svg b/backend/documentation/modules/AuthModule/dependencies.svg new file mode 100644 index 0000000..ad0f50a --- /dev/null +++ b/backend/documentation/modules/AuthModule/dependencies.svg @@ -0,0 +1,62 @@ + + + + + + +dependencies + +Legend + +  Declarations + +  Module + +  Bootstrap + +  Providers + +  Exports + +cluster_AuthModule + + + +cluster_AuthModule_providers + + + + +AuthService + +AuthService + + + +AuthModule + +AuthModule + + + +AuthService->AuthModule + + + + + +PrismaService + +PrismaService + + + +PrismaService->AuthModule + + + + + diff --git a/backend/documentation/modules/CommonModule.html b/backend/documentation/modules/CommonModule.html new file mode 100644 index 0000000..784bfb1 --- /dev/null +++ b/backend/documentation/modules/CommonModule.html @@ -0,0 +1,374 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                                                                                                                                +
                                                                                                                                + + +
                                                                                                                                +
                                                                                                                                + + + + + + + + + +
                                                                                                                                +
                                                                                                                                + + + + + + +dependencies + +Legend + +  Declarations + +  Module + +  Bootstrap + +  Providers + +  Exports + +cluster_CommonModule + + + +cluster_CommonModule_exports + + + +cluster_CommonModule_imports + + + + +PrismaModule + +PrismaModule + + + +CommonModule + +CommonModule + + + +PrismaModule->CommonModule + + + + + +AuthGuard + +AuthGuard + + + +CommonModule->AuthGuard + + + + + +WorkspaceGuard + +WorkspaceGuard + + + +CommonModule->WorkspaceGuard + + + + + + +
                                                                                                                                + +
                                                                                                                                + + + +
                                                                                                                                +
                                                                                                                                + + + + + +
                                                                                                                                +
                                                                                                                                + +

                                                                                                                                +

                                                                                                                                File

                                                                                                                                +

                                                                                                                                +

                                                                                                                                + src/common/common.module.ts +

                                                                                                                                + + + + + +
                                                                                                                                +
                                                                                                                                +
                                                                                                                                +

                                                                                                                                Imports

                                                                                                                                + +
                                                                                                                                +
                                                                                                                                +

                                                                                                                                Exports

                                                                                                                                + +
                                                                                                                                +
                                                                                                                                +
                                                                                                                                + + +
                                                                                                                                + + +
                                                                                                                                +
                                                                                                                                /*
                                                                                                                                +** EPITECH PROJECT, 2025
                                                                                                                                +** TaskFlow
                                                                                                                                +** File description:
                                                                                                                                +** common.module
                                                                                                                                +*/
                                                                                                                                +
                                                                                                                                +import { Global, Module } from '@nestjs/common';
                                                                                                                                +import { Prisma } from '@prisma/client';
                                                                                                                                +import { PrismaModule } from 'src/prisma/prisma.module';
                                                                                                                                +import { WorkspaceGuard } from './guards/workspace.guard';
                                                                                                                                +import { AuthGuard } from './guards/auth.guard';
                                                                                                                                +
                                                                                                                                +@Global()
                                                                                                                                +@Module({
                                                                                                                                +    imports: [PrismaModule],
                                                                                                                                +    providers: [WorkspaceGuard, AuthGuard],
                                                                                                                                +    exports: [WorkspaceGuard, AuthGuard],
                                                                                                                                +})
                                                                                                                                +export class CommonModule {}
                                                                                                                                +
                                                                                                                                +
                                                                                                                                +
                                                                                                                                + + + + + + + + + + + + + + + + + +
                                                                                                                                +
                                                                                                                                +

                                                                                                                                results matching ""

                                                                                                                                +
                                                                                                                                  +
                                                                                                                                  +
                                                                                                                                  +

                                                                                                                                  No results matching ""

                                                                                                                                  +
                                                                                                                                  +
                                                                                                                                  +
                                                                                                                                  + +
                                                                                                                                  +
                                                                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/modules/CommonModule/dependencies.svg b/backend/documentation/modules/CommonModule/dependencies.svg new file mode 100644 index 0000000..a7f8b2e --- /dev/null +++ b/backend/documentation/modules/CommonModule/dependencies.svg @@ -0,0 +1,78 @@ + + + + + + +dependencies + +Legend + +  Declarations + +  Module + +  Bootstrap + +  Providers + +  Exports + +cluster_CommonModule + + + +cluster_CommonModule_exports + + + +cluster_CommonModule_imports + + + + +PrismaModule + +PrismaModule + + + +CommonModule + +CommonModule + + + +PrismaModule->CommonModule + + + + + +AuthGuard + +AuthGuard + + + +CommonModule->AuthGuard + + + + + +WorkspaceGuard + +WorkspaceGuard + + + +CommonModule->WorkspaceGuard + + + + + diff --git a/backend/documentation/modules/PrismaModule.html b/backend/documentation/modules/PrismaModule.html new file mode 100644 index 0000000..ed7169c --- /dev/null +++ b/backend/documentation/modules/PrismaModule.html @@ -0,0 +1,354 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                                                                                                                                  +
                                                                                                                                  + + +
                                                                                                                                  +
                                                                                                                                  + + + + + + + + + +
                                                                                                                                  +
                                                                                                                                  + + + + + + +dependencies + +Legend + +  Declarations + +  Module + +  Bootstrap + +  Providers + +  Exports + +cluster_PrismaModule + + + +cluster_PrismaModule_exports + + + +cluster_PrismaModule_providers + + + + +PrismaService + +PrismaService + + + +PrismaModule + +PrismaModule + + + +PrismaModule->PrismaService + + + + + +PrismaService + +PrismaService + + + +PrismaService->PrismaModule + + + + + + +
                                                                                                                                  + +
                                                                                                                                  + + + +
                                                                                                                                  +
                                                                                                                                  + + + + + +
                                                                                                                                  +
                                                                                                                                  + +

                                                                                                                                  +

                                                                                                                                  File

                                                                                                                                  +

                                                                                                                                  +

                                                                                                                                  + src/prisma/prisma.module.ts +

                                                                                                                                  + + + + + +
                                                                                                                                  +
                                                                                                                                  +
                                                                                                                                  +

                                                                                                                                  Providers

                                                                                                                                  + +
                                                                                                                                  +
                                                                                                                                  +

                                                                                                                                  Exports

                                                                                                                                  + +
                                                                                                                                  +
                                                                                                                                  +
                                                                                                                                  + + +
                                                                                                                                  + + +
                                                                                                                                  +
                                                                                                                                  /*
                                                                                                                                  +** EPITECH PROJECT, 2025
                                                                                                                                  +** TaskFlow
                                                                                                                                  +** File description:
                                                                                                                                  +** prisma.module
                                                                                                                                  +*/
                                                                                                                                  +
                                                                                                                                  +import { Global, Module } from '@nestjs/common';
                                                                                                                                  +import { PrismaService } from './prisma.service';
                                                                                                                                  +
                                                                                                                                  +@Global()
                                                                                                                                  +@Module({
                                                                                                                                  +    providers: [PrismaService],
                                                                                                                                  +    exports: [PrismaService],
                                                                                                                                  +})
                                                                                                                                  +export class PrismaModule {}
                                                                                                                                  +
                                                                                                                                  +
                                                                                                                                  +
                                                                                                                                  + + + + + + + + + + + + + + + + + +
                                                                                                                                  +
                                                                                                                                  +

                                                                                                                                  results matching ""

                                                                                                                                  +
                                                                                                                                    +
                                                                                                                                    +
                                                                                                                                    +

                                                                                                                                    No results matching ""

                                                                                                                                    +
                                                                                                                                    +
                                                                                                                                    +
                                                                                                                                    + +
                                                                                                                                    +
                                                                                                                                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/modules/PrismaModule/dependencies.svg b/backend/documentation/modules/PrismaModule/dependencies.svg new file mode 100644 index 0000000..21b341c --- /dev/null +++ b/backend/documentation/modules/PrismaModule/dependencies.svg @@ -0,0 +1,66 @@ + + + + + + +dependencies + +Legend + +  Declarations + +  Module + +  Bootstrap + +  Providers + +  Exports + +cluster_PrismaModule + + + +cluster_PrismaModule_exports + + + +cluster_PrismaModule_providers + + + + +PrismaService + +PrismaService + + + +PrismaModule + +PrismaModule + + + +PrismaModule->PrismaService + + + + + +PrismaService + +PrismaService + + + +PrismaService->PrismaModule + + + + + diff --git a/backend/documentation/modules/TemplatePlaygroundModule.html b/backend/documentation/modules/TemplatePlaygroundModule.html new file mode 100644 index 0000000..dada621 --- /dev/null +++ b/backend/documentation/modules/TemplatePlaygroundModule.html @@ -0,0 +1,447 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                                                                                                                                    +
                                                                                                                                    + + +
                                                                                                                                    +
                                                                                                                                    + + + + + + + + + +
                                                                                                                                    +
                                                                                                                                    + + + + + + +dependencies + +Legend + +  Declarations + +  Module + +  Bootstrap + +  Providers + +  Exports + +cluster_TemplatePlaygroundModule + + + +cluster_TemplatePlaygroundModule_providers + + + +cluster_TemplatePlaygroundModule_bootstrap + + + +cluster_TemplatePlaygroundModule_imports + + + +cluster_TemplatePlaygroundModule_declarations + + + + +TemplatePlaygroundComponent + +TemplatePlaygroundComponent + + + +TemplatePlaygroundModule + +TemplatePlaygroundModule + + + +TemplatePlaygroundComponent->TemplatePlaygroundModule + + + + + +TemplatePlaygroundComponent + +TemplatePlaygroundComponent + + + +TemplatePlaygroundModule->TemplatePlaygroundComponent + + + + + +CommonModule + +CommonModule + + + +CommonModule->TemplatePlaygroundModule + + + + + +HbsRenderService + +HbsRenderService + + + +HbsRenderService->TemplatePlaygroundModule + + + + + +TemplateEditorService + +TemplateEditorService + + + +TemplateEditorService->TemplatePlaygroundModule + + + + + +ZipExportService + +ZipExportService + + + +ZipExportService->TemplatePlaygroundModule + + + + + + +
                                                                                                                                    + +
                                                                                                                                    + + + +
                                                                                                                                    +
                                                                                                                                    + + + + + +
                                                                                                                                    +
                                                                                                                                    + +

                                                                                                                                    +

                                                                                                                                    File

                                                                                                                                    +

                                                                                                                                    +

                                                                                                                                    + documentation/template-playground/template-playground.module.ts +

                                                                                                                                    + + + + + +
                                                                                                                                    +
                                                                                                                                    +
                                                                                                                                    +

                                                                                                                                    Declarations

                                                                                                                                    + +
                                                                                                                                    +
                                                                                                                                    +

                                                                                                                                    Providers

                                                                                                                                    + +
                                                                                                                                    +
                                                                                                                                    +

                                                                                                                                    Imports

                                                                                                                                    + +
                                                                                                                                    +
                                                                                                                                    +

                                                                                                                                    Bootstrap

                                                                                                                                    + +
                                                                                                                                    +
                                                                                                                                    +
                                                                                                                                    + + +
                                                                                                                                    + + +
                                                                                                                                    +
                                                                                                                                    import { NgModule } from '@angular/core';
                                                                                                                                    +import { BrowserModule } from '@angular/platform-browser';
                                                                                                                                    +import { CommonModule } from '@angular/common';
                                                                                                                                    +import { FormsModule } from '@angular/forms';
                                                                                                                                    +import { HttpClientModule } from '@angular/common/http';
                                                                                                                                    +
                                                                                                                                    +import { TemplatePlaygroundComponent } from './template-playground.component';
                                                                                                                                    +import { TemplateEditorService } from './template-editor.service';
                                                                                                                                    +import { ZipExportService } from './zip-export.service';
                                                                                                                                    +import { HbsRenderService } from './hbs-render.service';
                                                                                                                                    +
                                                                                                                                    +@NgModule({
                                                                                                                                    +  declarations: [
                                                                                                                                    +    TemplatePlaygroundComponent
                                                                                                                                    +  ],
                                                                                                                                    +  imports: [
                                                                                                                                    +    BrowserModule,
                                                                                                                                    +    CommonModule,
                                                                                                                                    +    FormsModule,
                                                                                                                                    +    HttpClientModule
                                                                                                                                    +  ],
                                                                                                                                    +  providers: [
                                                                                                                                    +    TemplateEditorService,
                                                                                                                                    +    ZipExportService,
                                                                                                                                    +    HbsRenderService
                                                                                                                                    +  ],
                                                                                                                                    +  bootstrap: [TemplatePlaygroundComponent]
                                                                                                                                    +})
                                                                                                                                    +export class TemplatePlaygroundModule { }
                                                                                                                                    +
                                                                                                                                    +
                                                                                                                                    +
                                                                                                                                    + + + + + + + + + + + + + + + + + +
                                                                                                                                    +
                                                                                                                                    +

                                                                                                                                    results matching ""

                                                                                                                                    +
                                                                                                                                      +
                                                                                                                                      +
                                                                                                                                      +

                                                                                                                                      No results matching ""

                                                                                                                                      +
                                                                                                                                      +
                                                                                                                                      +
                                                                                                                                      + +
                                                                                                                                      +
                                                                                                                                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/modules/TemplatePlaygroundModule/dependencies.svg b/backend/documentation/modules/TemplatePlaygroundModule/dependencies.svg new file mode 100644 index 0000000..508df3a --- /dev/null +++ b/backend/documentation/modules/TemplatePlaygroundModule/dependencies.svg @@ -0,0 +1,122 @@ + + + + + + +dependencies + +Legend + +  Declarations + +  Module + +  Bootstrap + +  Providers + +  Exports + +cluster_TemplatePlaygroundModule + + + +cluster_TemplatePlaygroundModule_providers + + + +cluster_TemplatePlaygroundModule_bootstrap + + + +cluster_TemplatePlaygroundModule_imports + + + +cluster_TemplatePlaygroundModule_declarations + + + + +TemplatePlaygroundComponent + +TemplatePlaygroundComponent + + + +TemplatePlaygroundModule + +TemplatePlaygroundModule + + + +TemplatePlaygroundComponent->TemplatePlaygroundModule + + + + + +TemplatePlaygroundComponent + +TemplatePlaygroundComponent + + + +TemplatePlaygroundModule->TemplatePlaygroundComponent + + + + + +CommonModule + +CommonModule + + + +CommonModule->TemplatePlaygroundModule + + + + + +HbsRenderService + +HbsRenderService + + + +HbsRenderService->TemplatePlaygroundModule + + + + + +TemplateEditorService + +TemplateEditorService + + + +TemplateEditorService->TemplatePlaygroundModule + + + + + +ZipExportService + +ZipExportService + + + +ZipExportService->TemplatePlaygroundModule + + + + + diff --git a/backend/documentation/modules/WorkspaceModule.html b/backend/documentation/modules/WorkspaceModule.html new file mode 100644 index 0000000..6abcac0 --- /dev/null +++ b/backend/documentation/modules/WorkspaceModule.html @@ -0,0 +1,327 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                                                                                                                                      +
                                                                                                                                      + + +
                                                                                                                                      +
                                                                                                                                      + + + + + + + + + +
                                                                                                                                      +
                                                                                                                                      + + + + + + +dependencies + +Legend + +  Declarations + +  Module + +  Bootstrap + +  Providers + +  Exports + +cluster_WorkspaceModule + + + +cluster_WorkspaceModule_providers + + + + +WorkspaceService + +WorkspaceService + + + +WorkspaceModule + +WorkspaceModule + + + +WorkspaceService->WorkspaceModule + + + + + + +
                                                                                                                                      + +
                                                                                                                                      + + + +
                                                                                                                                      +
                                                                                                                                      + + + + + +
                                                                                                                                      +
                                                                                                                                      + +

                                                                                                                                      +

                                                                                                                                      File

                                                                                                                                      +

                                                                                                                                      +

                                                                                                                                      + src/workspace/workspace.module.ts +

                                                                                                                                      + + + + + +
                                                                                                                                      +
                                                                                                                                      +
                                                                                                                                      +

                                                                                                                                      Providers

                                                                                                                                      + +
                                                                                                                                      +
                                                                                                                                      +
                                                                                                                                      + + +
                                                                                                                                      + + +
                                                                                                                                      +
                                                                                                                                      /*
                                                                                                                                      +** EPITECH PROJECT, 2025
                                                                                                                                      +** TaskFlow
                                                                                                                                      +** File description:
                                                                                                                                      +** workspace.module
                                                                                                                                      +*/
                                                                                                                                      +
                                                                                                                                      +import { Module } from '@nestjs/common';
                                                                                                                                      +import { WorkspaceService } from './workspace.service';
                                                                                                                                      +import { WorkspaceResolver } from './workspace.resolver';
                                                                                                                                      +
                                                                                                                                      +@Module({
                                                                                                                                      +    providers: [WorkspaceService, WorkspaceResolver]
                                                                                                                                      +})
                                                                                                                                      +export class WorkspaceModule {}
                                                                                                                                      +
                                                                                                                                      +
                                                                                                                                      +
                                                                                                                                      + + + + + + + + + + + + + + + + + +
                                                                                                                                      +
                                                                                                                                      +

                                                                                                                                      results matching ""

                                                                                                                                      +
                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        +

                                                                                                                                        No results matching ""

                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        + +
                                                                                                                                        +
                                                                                                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/modules/WorkspaceModule/dependencies.svg b/backend/documentation/modules/WorkspaceModule/dependencies.svg new file mode 100644 index 0000000..f9f37ba --- /dev/null +++ b/backend/documentation/modules/WorkspaceModule/dependencies.svg @@ -0,0 +1,50 @@ + + + + + + +dependencies + +Legend + +  Declarations + +  Module + +  Bootstrap + +  Providers + +  Exports + +cluster_WorkspaceModule + + + +cluster_WorkspaceModule_providers + + + + +WorkspaceService + +WorkspaceService + + + +WorkspaceModule + +WorkspaceModule + + + +WorkspaceService->WorkspaceModule + + + + + diff --git a/backend/documentation/overview.html b/backend/documentation/overview.html new file mode 100644 index 0000000..9ac8013 --- /dev/null +++ b/backend/documentation/overview.html @@ -0,0 +1,588 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                                                                                                                                        +
                                                                                                                                        + + +
                                                                                                                                        +
                                                                                                                                        + + + + + + + + +
                                                                                                                                        +
                                                                                                                                        + + + + + + +dependencies + +Legend + +  Declarations + +  Module + +  Bootstrap + +  Providers + +  Exports + +cluster_AppModule + + + +cluster_AppModule_imports + + + +cluster_AppModule_providers + + + +cluster_AuthModule + + + +cluster_AuthModule_providers + + + +cluster_CommonModule + + + +cluster_CommonModule_exports + + + +cluster_PrismaModule + + + +cluster_PrismaModule_exports + + + +cluster_TemplatePlaygroundModule + + + +cluster_TemplatePlaygroundModule_declarations + + + +cluster_TemplatePlaygroundModule_bootstrap + + + +cluster_TemplatePlaygroundModule_providers + + + +cluster_WorkspaceModule + + + +cluster_WorkspaceModule_providers + + + + +AuthModule + +AuthModule + + + +AppModule + +AppModule + + + +AuthModule->AppModule + + + + + +CommonModule + +CommonModule + + + +CommonModule->AppModule + + + + + +AuthGuard + +AuthGuard + + + +CommonModule->AuthGuard + + + + + +WorkspaceGuard + +WorkspaceGuard + + + +CommonModule->WorkspaceGuard + + + + + +TemplatePlaygroundModule + +TemplatePlaygroundModule + + + +CommonModule->TemplatePlaygroundModule + + + + + +PrismaModule + +PrismaModule + + + +PrismaModule->CommonModule + + + + + +PrismaModule->AppModule + + + + + +PrismaService + +PrismaService + + + +PrismaModule->PrismaService + + + + + +WorkspaceModule + +WorkspaceModule + + + +WorkspaceModule->AppModule + + + + + +AppService + +AppService + + + +AppService->AppModule + + + + + +AuthService + +AuthService + + + +AuthService->AuthModule + + + + + +PrismaService + +PrismaService + + + +PrismaService->AuthModule + + + + + +PrismaService->PrismaModule + + + + + +TemplatePlaygroundComponent + +TemplatePlaygroundComponent + + + +TemplatePlaygroundComponent->TemplatePlaygroundModule + + + + + +TemplatePlaygroundComponent + +TemplatePlaygroundComponent + + + +TemplatePlaygroundModule->TemplatePlaygroundComponent + + + + + +HbsRenderService + +HbsRenderService + + + +HbsRenderService->TemplatePlaygroundModule + + + + + +TemplateEditorService + +TemplateEditorService + + + +TemplateEditorService->TemplatePlaygroundModule + + + + + +ZipExportService + +ZipExportService + + + +ZipExportService->TemplatePlaygroundModule + + + + + +WorkspaceService + +WorkspaceService + + + +WorkspaceService->WorkspaceModule + + + + + + +
                                                                                                                                        + +
                                                                                                                                        + + + +
                                                                                                                                        +
                                                                                                                                        + +
                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        +

                                                                                                                                        +

                                                                                                                                        + 6 Modules +

                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        +

                                                                                                                                        +

                                                                                                                                        1 Component

                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        +

                                                                                                                                        +

                                                                                                                                        1 Controller

                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        +

                                                                                                                                        +

                                                                                                                                        7 Injectables

                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        +

                                                                                                                                        +

                                                                                                                                        39 Classes

                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        +

                                                                                                                                        +

                                                                                                                                        2 Guards

                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        +

                                                                                                                                        +

                                                                                                                                        3 Interfaces

                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        +

                                                                                                                                        +

                                                                                                                                        + 0 +

                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                        +
                                                                                                                                        +

                                                                                                                                        results matching ""

                                                                                                                                        +
                                                                                                                                          +
                                                                                                                                          +
                                                                                                                                          +

                                                                                                                                          No results matching ""

                                                                                                                                          +
                                                                                                                                          +
                                                                                                                                          +
                                                                                                                                          + +
                                                                                                                                          +
                                                                                                                                          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/properties.html b/backend/documentation/properties.html new file mode 100644 index 0000000..8cb905e --- /dev/null +++ b/backend/documentation/properties.html @@ -0,0 +1,206 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                                                                                                                                          +
                                                                                                                                          + + +
                                                                                                                                          +
                                                                                                                                          + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                            +
                                                                                                                                          • + Version : 0.0.1
                                                                                                                                          • +
                                                                                                                                          • + Description :
                                                                                                                                          • +
                                                                                                                                          • + License : UNLICENSED
                                                                                                                                          • +
                                                                                                                                          • + Author :
                                                                                                                                          • +
                                                                                                                                          + + + + + +
                                                                                                                                          +
                                                                                                                                          +

                                                                                                                                          results matching ""

                                                                                                                                          +
                                                                                                                                            +
                                                                                                                                            +
                                                                                                                                            +

                                                                                                                                            No results matching ""

                                                                                                                                            +
                                                                                                                                            +
                                                                                                                                            +
                                                                                                                                            + +
                                                                                                                                            +
                                                                                                                                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/routes.html b/backend/documentation/routes.html new file mode 100644 index 0000000..6b3d695 --- /dev/null +++ b/backend/documentation/routes.html @@ -0,0 +1,203 @@ + + + + + + new-backend documentation + + + + + + + + + + + + + + + +
                                                                                                                                            +
                                                                                                                                            + + +
                                                                                                                                            +
                                                                                                                                            + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                            + + + + + + + + + + + + +
                                                                                                                                            +
                                                                                                                                            +

                                                                                                                                            results matching ""

                                                                                                                                            +
                                                                                                                                              +
                                                                                                                                              +
                                                                                                                                              +

                                                                                                                                              No results matching ""

                                                                                                                                              +
                                                                                                                                              +
                                                                                                                                              +
                                                                                                                                              + +
                                                                                                                                              +
                                                                                                                                              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/documentation/styles/bootstrap-card.css b/backend/documentation/styles/bootstrap-card.css new file mode 100644 index 0000000..0869c68 --- /dev/null +++ b/backend/documentation/styles/bootstrap-card.css @@ -0,0 +1,219 @@ +.card { + position: relative; + display: block; + margin-bottom: 20px; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 4px; +} + +.card-block { + padding: 15px; +} +.card-block:before, .card-block:after { + content: " "; + display: table; +} +.card-block:after { + clear: both; +} + +.card-title { + margin: 5px; + margin-bottom: 2px; + text-align: center; +} + +.card-subtitle { + margin-top: -10px; + margin-bottom: 0; +} + +.card-text:last-child { + margin-bottom: 0; + margin-top: 10px; +} + +.card-link:hover { + text-decoration: none; +} +.card-link + .card-link { + margin-left: 15px; +} + +.card > .list-group:first-child .list-group-item:first-child { + border-top-right-radius: 4px; + border-top-left-radius: 4px; +} +.card > .list-group:last-child .list-group-item:last-child { + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} + +.card-header { + padding: 10px 15px; + background-color: #f5f5f5; + border-bottom: 1px solid #ddd; +} +.card-header:before, .card-header:after { + content: " "; + display: table; +} +.card-header:after { + clear: both; +} +.card-header:first-child { + border-radius: 4px 4px 0 0; +} + +.card-footer { + padding: 10px 15px; + background-color: #f5f5f5; + border-top: 1px solid #ddd; +} +.card-footer:before, .card-footer:after { + content: " "; + display: table; +} +.card-footer:after { + clear: both; +} +.card-footer:last-child { + border-radius: 0 0 4px 4px; +} + +.card-header-tabs { + margin-right: -5px; + margin-bottom: -10px; + margin-left: -5px; + border-bottom: 0; +} + +.card-header-pills { + margin-right: -5px; + margin-left: -5px; +} + +.card-primary { + background-color: #337ab7; + border-color: #337ab7; +} +.card-primary .card-header, +.card-primary .card-footer { + background-color: transparent; +} + +.card-success { + background-color: #5cb85c; + border-color: #5cb85c; +} +.card-success .card-header, +.card-success .card-footer { + background-color: transparent; +} + +.card-info { + background-color: #5bc0de; + border-color: #5bc0de; +} +.card-info .card-header, +.card-info .card-footer { + background-color: transparent; +} + +.card-warning { + background-color: #f0ad4e; + border-color: #f0ad4e; +} +.card-warning .card-header, +.card-warning .card-footer { + background-color: transparent; +} + +.card-danger { + background-color: #d9534f; + border-color: #d9534f; +} +.card-danger .card-header, +.card-danger .card-footer { + background-color: transparent; +} + +.card-outline-primary { + background-color: transparent; + border-color: #337ab7; +} + +.card-outline-secondary { + background-color: transparent; + border-color: #ccc; +} + +.card-outline-info { + background-color: transparent; + border-color: #5bc0de; +} + +.card-outline-success { + background-color: transparent; + border-color: #5cb85c; +} + +.card-outline-warning { + background-color: transparent; + border-color: #f0ad4e; +} + +.card-outline-danger { + background-color: transparent; + border-color: #d9534f; +} + +.card-inverse .card-header, +.card-inverse .card-footer { + border-color: rgba(255, 255, 255, 0.2); +} +.card-inverse .card-header, +.card-inverse .card-footer, +.card-inverse .card-title, +.card-inverse .card-blockquote { + color: #fff; +} +.card-inverse .card-link, +.card-inverse .card-text, +.card-inverse .card-subtitle, +.card-inverse .card-blockquote .blockquote-footer { + color: rgba(255, 255, 255, 0.65); +} +.card-inverse .card-link:hover, .card-inverse .card-link:focus { + color: #fff; +} + +.card-blockquote { + padding: 0; + margin-bottom: 0; + border-left: 0; +} + +.card-img { + border-radius: .25em; +} + +.card-img-overlay { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + padding: 15px; +} + +.card-img-top { + border-top-right-radius: 4px; + border-top-left-radius: 4px; +} + +.card-img-bottom { + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} diff --git a/backend/documentation/styles/bootstrap.min.css b/backend/documentation/styles/bootstrap.min.css new file mode 100644 index 0000000..86317ac --- /dev/null +++ b/backend/documentation/styles/bootstrap.min.css @@ -0,0 +1,6 @@ +@charset "UTF-8";/*! + * Bootstrap v5.2.0 (https://getbootstrap.com/) + * Copyright 2011-2022 The Bootstrap Authors + * Copyright 2011-2022 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13,110,253;--bs-secondary-rgb:108,117,125;--bs-success-rgb:25,135,84;--bs-info-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:220,53,69;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-body-color-rgb:33,37,41;--bs-body-bg-rgb:255,255,255;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans","Liberation Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-bg:#fff;--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:#dee2e6;--bs-border-color-translucent:rgba(0, 0, 0, 0.175);--bs-border-radius:0.375rem;--bs-border-radius-sm:0.25rem;--bs-border-radius-lg:0.5rem;--bs-border-radius-xl:1rem;--bs-border-radius-2xl:2rem;--bs-border-radius-pill:50rem;--bs-link-color:#0d6efd;--bs-link-hover-color:#0a58ca;--bs-code-color:#d63384;--bs-highlight-bg:#fff3cd}*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;border:0;border-top:1px solid;opacity:.25}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){.h1,h1{font-size:2.5rem}}.h2,h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){.h2,h2{font-size:2rem}}.h3,h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){.h3,h3{font-size:1.75rem}}.h4,h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){.h4,h4{font-size:1.5rem}}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}.small,small{font-size:.875em}.mark,mark{padding:.1875em;background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:var(--bs-link-color);text-decoration:underline}a:hover{color:var(--bs-link-hover-color)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.1875rem .375rem;font-size:.875em;color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:.25rem}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}.blockquote-footer::before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid var(--bs-border-color);border-radius:.375rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:#6c757d}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{--bs-gutter-x:1.5rem;--bs-gutter-y:0;width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-right:calc(-.5 * var(--bs-gutter-x));margin-left:calc(-.5 * var(--bs-gutter-x))}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.table{--bs-table-color:var(--bs-body-color);--bs-table-bg:transparent;--bs-table-border-color:var(--bs-border-color);--bs-table-accent-bg:transparent;--bs-table-striped-color:var(--bs-body-color);--bs-table-striped-bg:rgba(0, 0, 0, 0.05);--bs-table-active-color:var(--bs-body-color);--bs-table-active-bg:rgba(0, 0, 0, 0.1);--bs-table-hover-color:var(--bs-body-color);--bs-table-hover-bg:rgba(0, 0, 0, 0.075);width:100%;margin-bottom:1rem;color:var(--bs-table-color);vertical-align:top;border-color:var(--bs-table-border-color)}.table>:not(caption)>*>*{padding:.5rem .5rem;background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg)}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table-group-divider{border-top:2px solid currentcolor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-accent-bg:var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-striped-columns>:not(caption)>tr>:nth-child(2n){--bs-table-accent-bg:var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-active{--bs-table-accent-bg:var(--bs-table-active-bg);color:var(--bs-table-active-color)}.table-hover>tbody>tr:hover>*{--bs-table-accent-bg:var(--bs-table-hover-bg);color:var(--bs-table-hover-color)}.table-primary{--bs-table-color:#000;--bs-table-bg:#cfe2ff;--bs-table-border-color:#bacbe6;--bs-table-striped-bg:#c5d7f2;--bs-table-striped-color:#000;--bs-table-active-bg:#bacbe6;--bs-table-active-color:#000;--bs-table-hover-bg:#bfd1ec;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-secondary{--bs-table-color:#000;--bs-table-bg:#e2e3e5;--bs-table-border-color:#cbccce;--bs-table-striped-bg:#d7d8da;--bs-table-striped-color:#000;--bs-table-active-bg:#cbccce;--bs-table-active-color:#000;--bs-table-hover-bg:#d1d2d4;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-success{--bs-table-color:#000;--bs-table-bg:#d1e7dd;--bs-table-border-color:#bcd0c7;--bs-table-striped-bg:#c7dbd2;--bs-table-striped-color:#000;--bs-table-active-bg:#bcd0c7;--bs-table-active-color:#000;--bs-table-hover-bg:#c1d6cc;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-info{--bs-table-color:#000;--bs-table-bg:#cff4fc;--bs-table-border-color:#badce3;--bs-table-striped-bg:#c5e8ef;--bs-table-striped-color:#000;--bs-table-active-bg:#badce3;--bs-table-active-color:#000;--bs-table-hover-bg:#bfe2e9;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-warning{--bs-table-color:#000;--bs-table-bg:#fff3cd;--bs-table-border-color:#e6dbb9;--bs-table-striped-bg:#f2e7c3;--bs-table-striped-color:#000;--bs-table-active-bg:#e6dbb9;--bs-table-active-color:#000;--bs-table-hover-bg:#ece1be;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-danger{--bs-table-color:#000;--bs-table-bg:#f8d7da;--bs-table-border-color:#dfc2c4;--bs-table-striped-bg:#eccccf;--bs-table-striped-color:#000;--bs-table-active-bg:#dfc2c4;--bs-table-active-color:#000;--bs-table-hover-bg:#e5c7ca;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-light{--bs-table-color:#000;--bs-table-bg:#f8f9fa;--bs-table-border-color:#dfe0e1;--bs-table-striped-bg:#ecedee;--bs-table-striped-color:#000;--bs-table-active-bg:#dfe0e1;--bs-table-active-color:#000;--bs-table-hover-bg:#e5e6e7;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-dark{--bs-table-color:#fff;--bs-table-bg:#212529;--bs-table-border-color:#373b3e;--bs-table-striped-bg:#2c3034;--bs-table-striped-color:#fff;--bs-table-active-bg:#373b3e;--bs-table-active-color:#fff;--bs-table-hover-bg:#323539;--bs-table-hover-color:#fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width:575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem}.form-text{margin-top:.25rem;font-size:.875em;color:#6c757d}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:.375rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:#212529;background-color:#fff;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-control::-webkit-date-and-time-value{height:1.5em}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled{background-color:#e9ecef;opacity:1}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::-webkit-file-upload-button{-webkit-transition:none;transition:none}.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:#dde0e3}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#dde0e3}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;border-radius:.25rem}.form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;border-radius:.5rem}.form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + .75rem + 2px)}textarea.form-control-sm{min-height:calc(1.5em + .5rem + 2px)}textarea.form-control-lg{min-height:calc(1.5em + 1rem + 2px)}.form-control-color{width:3rem;height:calc(1.5em + .75rem + 2px);padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border:0!important;border-radius:.375rem}.form-control-color::-webkit-color-swatch{border-radius:.375rem}.form-control-color.form-control-sm{height:calc(1.5em + .5rem + 2px)}.form-control-color.form-control-lg{height:calc(1.5em + 1rem + 2px)}.form-select{display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;-moz-padding-start:calc(0.75rem - 3px);font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #ced4da;border-radius:.375rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-select{transition:none}}.form-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:#e9ecef}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #212529}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem;border-radius:.25rem}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem;border-radius:.5rem}.form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-reverse{padding-right:1.5em;padding-left:0;text-align:right}.form-check-reverse .form-check-input{float:right;margin-right:-1.5em;margin-left:0}.form-check-input{width:1em;height:1em;margin-top:.25em;vertical-align:top;background-color:#fff;background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid rgba(0,0,0,.25);-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact;print-color-adjust:exact}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-check-input:checked{background-color:#0d6efd;border-color:#0d6efd}.form-check-input:checked[type=checkbox]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:#0d6efd;border-color:#0d6efd;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{cursor:default;opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{width:2em;margin-left:-2.5em;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-switch.form-check-reverse{padding-right:2.5em;padding-left:0}.form-switch.form-check-reverse .form-check-input{margin-right:-2.5em;margin-left:0}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check:disabled+.btn,.btn-check[disabled]+.btn{pointer-events:none;filter:none;opacity:.65}.form-range{width:100%;height:1.5rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#0d6efd;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b6d4fe}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#0d6efd;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{-moz-transition:none;transition:none}}.form-range::-moz-range-thumb:active{background-color:#b6d4fe}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.form-range:disabled::-moz-range-thumb{background-color:#adb5bd}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select{height:calc(3.5rem + 2px);line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;width:100%;height:100%;padding:1rem .75rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:1px solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion:reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{padding:1rem .75rem}.form-floating>.form-control-plaintext::-moz-placeholder,.form-floating>.form-control::-moz-placeholder{color:transparent}.form-floating>.form-control-plaintext::placeholder,.form-floating>.form-control::placeholder{color:transparent}.form-floating>.form-control-plaintext:not(:-moz-placeholder-shown),.form-floating>.form-control:not(:-moz-placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown),.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control-plaintext:-webkit-autofill,.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:not(:-moz-placeholder-shown)~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control-plaintext~label,.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control:-webkit-autofill~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control-plaintext~label{border-width:1px 0}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-floating,.input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-floating:focus-within,.input-group>.form-select:focus{z-index:3}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:3}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.375rem}.input-group-lg>.btn,.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;border-radius:.5rem}.input-group-sm>.btn,.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text{padding:.25rem .5rem;font-size:.875rem;border-radius:.25rem}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select,.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-control,.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-select,.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select,.input-group>:not(:first-child):not(.dropdown-menu):not(.form-floating):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#198754}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:rgba(25,135,84,.9);border-radius:.375rem}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:#198754;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-valid,.was-validated .form-select:valid{border-color:#198754}.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"],.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-valid:focus,.was-validated .form-select:valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.form-control-color.is-valid,.was-validated .form-control-color:valid{width:calc(3rem + calc(1.5em + .75rem))}.form-check-input.is-valid,.was-validated .form-check-input:valid{border-color:#198754}.form-check-input.is-valid:checked,.was-validated .form-check-input:valid:checked{background-color:#198754}.form-check-input.is-valid:focus,.was-validated .form-check-input:valid:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#198754}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.input-group .form-control.is-valid,.input-group .form-select.is-valid,.was-validated .input-group .form-control:valid,.was-validated .input-group .form-select:valid{z-index:1}.input-group .form-control.is-valid:focus,.input-group .form-select.is-valid:focus,.was-validated .input-group .form-control:valid:focus,.was-validated .input-group .form-select:valid:focus{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.375rem}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-invalid,.was-validated .form-select:invalid{border-color:#dc3545}.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"],.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-invalid:focus,.was-validated .form-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.form-control-color.is-invalid,.was-validated .form-control-color:invalid{width:calc(3rem + calc(1.5em + .75rem))}.form-check-input.is-invalid,.was-validated .form-check-input:invalid{border-color:#dc3545}.form-check-input.is-invalid:checked,.was-validated .form-check-input:invalid:checked{background-color:#dc3545}.form-check-input.is-invalid:focus,.was-validated .form-check-input:invalid:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.input-group .form-control.is-invalid,.input-group .form-select.is-invalid,.was-validated .input-group .form-control:invalid,.was-validated .input-group .form-select:invalid{z-index:2}.input-group .form-control.is-invalid:focus,.input-group .form-select.is-invalid:focus,.was-validated .input-group .form-control:invalid:focus,.was-validated .input-group .form-select:invalid:focus{z-index:3}.btn{--bs-btn-padding-x:0.75rem;--bs-btn-padding-y:0.375rem;--bs-btn-font-family: ;--bs-btn-font-size:1rem;--bs-btn-font-weight:400;--bs-btn-line-height:1.5;--bs-btn-color:#212529;--bs-btn-bg:transparent;--bs-btn-border-width:1px;--bs-btn-border-color:transparent;--bs-btn-border-radius:0.375rem;--bs-btn-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.15),0 1px 1px rgba(0, 0, 0, 0.075);--bs-btn-disabled-opacity:0.65;--bs-btn-focus-box-shadow:0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);background-color:var(--bs-btn-bg);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.btn-check:focus+.btn,.btn:focus{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:active+.btn,.btn-check:checked+.btn,.btn.active,.btn.show,.btn:active{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn-check:active+.btn:focus,.btn-check:checked+.btn:focus,.btn.active:focus,.btn.show:focus,.btn:active:focus{box-shadow:var(--bs-btn-focus-box-shadow)}.btn.disabled,.btn:disabled,fieldset:disabled .btn{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.btn-primary{--bs-btn-color:#fff;--bs-btn-bg:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0b5ed7;--bs-btn-hover-border-color:#0a58ca;--bs-btn-focus-shadow-rgb:49,132,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0a58ca;--bs-btn-active-border-color:#0a53be;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#0d6efd;--bs-btn-disabled-border-color:#0d6efd}.btn-secondary{--bs-btn-color:#fff;--bs-btn-bg:#6c757d;--bs-btn-border-color:#6c757d;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#5c636a;--bs-btn-hover-border-color:#565e64;--bs-btn-focus-shadow-rgb:130,138,145;--bs-btn-active-color:#fff;--bs-btn-active-bg:#565e64;--bs-btn-active-border-color:#51585e;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#6c757d;--bs-btn-disabled-border-color:#6c757d}.btn-success{--bs-btn-color:#fff;--bs-btn-bg:#198754;--bs-btn-border-color:#198754;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#157347;--bs-btn-hover-border-color:#146c43;--bs-btn-focus-shadow-rgb:60,153,110;--bs-btn-active-color:#fff;--bs-btn-active-bg:#146c43;--bs-btn-active-border-color:#13653f;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#198754;--bs-btn-disabled-border-color:#198754}.btn-info{--bs-btn-color:#000;--bs-btn-bg:#0dcaf0;--bs-btn-border-color:#0dcaf0;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#31d2f2;--bs-btn-hover-border-color:#25cff2;--bs-btn-focus-shadow-rgb:11,172,204;--bs-btn-active-color:#000;--bs-btn-active-bg:#3dd5f3;--bs-btn-active-border-color:#25cff2;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#0dcaf0;--bs-btn-disabled-border-color:#0dcaf0}.btn-warning{--bs-btn-color:#000;--bs-btn-bg:#ffc107;--bs-btn-border-color:#ffc107;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#ffca2c;--bs-btn-hover-border-color:#ffc720;--bs-btn-focus-shadow-rgb:217,164,6;--bs-btn-active-color:#000;--bs-btn-active-bg:#ffcd39;--bs-btn-active-border-color:#ffc720;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#ffc107;--bs-btn-disabled-border-color:#ffc107}.btn-danger{--bs-btn-color:#fff;--bs-btn-bg:#dc3545;--bs-btn-border-color:#dc3545;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#bb2d3b;--bs-btn-hover-border-color:#b02a37;--bs-btn-focus-shadow-rgb:225,83,97;--bs-btn-active-color:#fff;--bs-btn-active-bg:#b02a37;--bs-btn-active-border-color:#a52834;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#dc3545;--bs-btn-disabled-border-color:#dc3545}.btn-light{--bs-btn-color:#000;--bs-btn-bg:#f8f9fa;--bs-btn-border-color:#f8f9fa;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#d3d4d5;--bs-btn-hover-border-color:#c6c7c8;--bs-btn-focus-shadow-rgb:211,212,213;--bs-btn-active-color:#000;--bs-btn-active-bg:#c6c7c8;--bs-btn-active-border-color:#babbbc;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#f8f9fa;--bs-btn-disabled-border-color:#f8f9fa}.btn-dark{--bs-btn-color:#fff;--bs-btn-bg:#212529;--bs-btn-border-color:#212529;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#424649;--bs-btn-hover-border-color:#373b3e;--bs-btn-focus-shadow-rgb:66,70,73;--bs-btn-active-color:#fff;--bs-btn-active-bg:#4d5154;--bs-btn-active-border-color:#373b3e;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#212529;--bs-btn-disabled-border-color:#212529}.btn-outline-primary{--bs-btn-color:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0d6efd;--bs-btn-hover-border-color:#0d6efd;--bs-btn-focus-shadow-rgb:13,110,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0d6efd;--bs-btn-active-border-color:#0d6efd;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#0d6efd;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#0d6efd;--bs-gradient:none}.btn-outline-secondary{--bs-btn-color:#6c757d;--bs-btn-border-color:#6c757d;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#6c757d;--bs-btn-hover-border-color:#6c757d;--bs-btn-focus-shadow-rgb:108,117,125;--bs-btn-active-color:#fff;--bs-btn-active-bg:#6c757d;--bs-btn-active-border-color:#6c757d;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#6c757d;--bs-gradient:none}.btn-outline-success{--bs-btn-color:#198754;--bs-btn-border-color:#198754;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#198754;--bs-btn-hover-border-color:#198754;--bs-btn-focus-shadow-rgb:25,135,84;--bs-btn-active-color:#fff;--bs-btn-active-bg:#198754;--bs-btn-active-border-color:#198754;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#198754;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#198754;--bs-gradient:none}.btn-outline-info{--bs-btn-color:#0dcaf0;--bs-btn-border-color:#0dcaf0;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#0dcaf0;--bs-btn-hover-border-color:#0dcaf0;--bs-btn-focus-shadow-rgb:13,202,240;--bs-btn-active-color:#000;--bs-btn-active-bg:#0dcaf0;--bs-btn-active-border-color:#0dcaf0;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#0dcaf0;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#0dcaf0;--bs-gradient:none}.btn-outline-warning{--bs-btn-color:#ffc107;--bs-btn-border-color:#ffc107;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#ffc107;--bs-btn-hover-border-color:#ffc107;--bs-btn-focus-shadow-rgb:255,193,7;--bs-btn-active-color:#000;--bs-btn-active-bg:#ffc107;--bs-btn-active-border-color:#ffc107;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#ffc107;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#ffc107;--bs-gradient:none}.btn-outline-danger{--bs-btn-color:#dc3545;--bs-btn-border-color:#dc3545;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#dc3545;--bs-btn-hover-border-color:#dc3545;--bs-btn-focus-shadow-rgb:220,53,69;--bs-btn-active-color:#fff;--bs-btn-active-bg:#dc3545;--bs-btn-active-border-color:#dc3545;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#dc3545;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#dc3545;--bs-gradient:none}.btn-outline-light{--bs-btn-color:#f8f9fa;--bs-btn-border-color:#f8f9fa;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#f8f9fa;--bs-btn-hover-border-color:#f8f9fa;--bs-btn-focus-shadow-rgb:248,249,250;--bs-btn-active-color:#000;--bs-btn-active-bg:#f8f9fa;--bs-btn-active-border-color:#f8f9fa;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#f8f9fa;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#f8f9fa;--bs-gradient:none}.btn-outline-dark{--bs-btn-color:#212529;--bs-btn-border-color:#212529;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#212529;--bs-btn-hover-border-color:#212529;--bs-btn-focus-shadow-rgb:33,37,41;--bs-btn-active-color:#fff;--bs-btn-active-bg:#212529;--bs-btn-active-border-color:#212529;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#212529;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#212529;--bs-gradient:none}.btn-link{--bs-btn-font-weight:400;--bs-btn-color:var(--bs-link-color);--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-hover-color:var(--bs-link-hover-color);--bs-btn-hover-border-color:transparent;--bs-btn-active-color:var(--bs-link-hover-color);--bs-btn-active-border-color:transparent;--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-border-color:transparent;--bs-btn-box-shadow:none;--bs-btn-focus-shadow-rgb:49,132,253;text-decoration:underline}.btn-link:focus{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-group-lg>.btn,.btn-lg{--bs-btn-padding-y:0.5rem;--bs-btn-padding-x:1rem;--bs-btn-font-size:1.25rem;--bs-btn-border-radius:0.5rem}.btn-group-sm>.btn,.btn-sm{--bs-btn-padding-y:0.25rem;--bs-btn-padding-x:0.5rem;--bs-btn-font-size:0.875rem;--bs-btn-border-radius:0.25rem}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media (prefers-reduced-motion:reduce){.collapsing.collapse-horizontal{transition:none}}.dropdown,.dropdown-center,.dropend,.dropstart,.dropup,.dropup-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{--bs-dropdown-min-width:10rem;--bs-dropdown-padding-x:0;--bs-dropdown-padding-y:0.5rem;--bs-dropdown-spacer:0.125rem;--bs-dropdown-font-size:1rem;--bs-dropdown-color:#212529;--bs-dropdown-bg:#fff;--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-border-radius:0.375rem;--bs-dropdown-border-width:1px;--bs-dropdown-inner-border-radius:calc(0.375rem - 1px);--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-divider-margin-y:0.5rem;--bs-dropdown-box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-dropdown-link-color:#212529;--bs-dropdown-link-hover-color:#1e2125;--bs-dropdown-link-hover-bg:#e9ecef;--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#0d6efd;--bs-dropdown-link-disabled-color:#adb5bd;--bs-dropdown-item-padding-x:1rem;--bs-dropdown-item-padding-y:0.25rem;--bs-dropdown-header-color:#6c757d;--bs-dropdown-header-padding-x:1rem;--bs-dropdown-header-padding-y:0.5rem;position:absolute;z-index:1000;display:none;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);margin:0;font-size:var(--bs-dropdown-font-size);color:var(--bs-dropdown-color);text-align:left;list-style:none;background-color:var(--bs-dropdown-bg);background-clip:padding-box;border:var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);border-radius:var(--bs-dropdown-border-radius)}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:var(--bs-dropdown-spacer)}.dropdown-menu-start{--bs-position:start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position:end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-start{--bs-position:start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position:end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-start{--bs-position:start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position:end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-start{--bs-position:start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position:end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-start{--bs-position:start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position:end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1400px){.dropdown-menu-xxl-start{--bs-position:start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position:end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--bs-dropdown-spacer)}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:var(--bs-dropdown-spacer)}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:var(--bs-dropdown-spacer)}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:var(--bs-dropdown-divider-margin-y) 0;overflow:hidden;border-top:1px solid var(--bs-dropdown-divider-bg);opacity:1}.dropdown-item{display:block;width:100%;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--bs-dropdown-link-color);text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:var(--bs-dropdown-link-hover-color);background-color:var(--bs-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--bs-dropdown-link-active-color);text-decoration:none;background-color:var(--bs-dropdown-link-active-bg)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--bs-dropdown-link-disabled-color);pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);margin-bottom:0;font-size:.875rem;color:var(--bs-dropdown-header-color);white-space:nowrap}.dropdown-item-text{display:block;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);color:var(--bs-dropdown-link-color)}.dropdown-menu-dark{--bs-dropdown-color:#dee2e6;--bs-dropdown-bg:#343a40;--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-box-shadow: ;--bs-dropdown-link-color:#dee2e6;--bs-dropdown-link-hover-color:#fff;--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-link-hover-bg:rgba(255, 255, 255, 0.15);--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#0d6efd;--bs-dropdown-link-disabled-color:#adb5bd;--bs-dropdown-header-color:#adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group{border-radius:.375rem}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn.dropdown-toggle-split:first-child,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn~.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{--bs-nav-link-padding-x:1rem;--bs-nav-link-padding-y:0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-link-color);--bs-nav-link-hover-color:var(--bs-link-hover-color);--bs-nav-link-disabled-color:#6c757d;display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:focus,.nav-link:hover{color:var(--bs-nav-link-hover-color)}.nav-link.disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--bs-nav-tabs-border-width:1px;--bs-nav-tabs-border-color:#dee2e6;--bs-nav-tabs-border-radius:0.375rem;--bs-nav-tabs-link-hover-border-color:#e9ecef #e9ecef #dee2e6;--bs-nav-tabs-link-active-color:#495057;--bs-nav-tabs-link-active-bg:#fff;--bs-nav-tabs-link-active-border-color:#dee2e6 #dee2e6 #fff;border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{margin-bottom:calc(var(--bs-nav-tabs-border-width) * -1);background:0 0;border:var(--bs-nav-tabs-border-width) solid transparent;border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius)}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)}.nav-tabs .nav-link.disabled,.nav-tabs .nav-link:disabled{color:var(--bs-nav-link-disabled-color);background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color)}.nav-tabs .dropdown-menu{margin-top:calc(var(--bs-nav-tabs-border-width) * -1);border-top-left-radius:0;border-top-right-radius:0}.nav-pills{--bs-nav-pills-border-radius:0.375rem;--bs-nav-pills-link-active-color:#fff;--bs-nav-pills-link-active-bg:#0d6efd}.nav-pills .nav-link{background:0 0;border:0;border-radius:var(--bs-nav-pills-border-radius)}.nav-pills .nav-link:disabled{color:var(--bs-nav-link-disabled-color);background-color:transparent;border-color:transparent}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg)}.nav-fill .nav-item,.nav-fill>.nav-link{flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{--bs-navbar-padding-x:0;--bs-navbar-padding-y:0.5rem;--bs-navbar-color:rgba(0, 0, 0, 0.55);--bs-navbar-hover-color:rgba(0, 0, 0, 0.7);--bs-navbar-disabled-color:rgba(0, 0, 0, 0.3);--bs-navbar-active-color:rgba(0, 0, 0, 0.9);--bs-navbar-brand-padding-y:0.3125rem;--bs-navbar-brand-margin-end:1rem;--bs-navbar-brand-font-size:1.25rem;--bs-navbar-brand-color:rgba(0, 0, 0, 0.9);--bs-navbar-brand-hover-color:rgba(0, 0, 0, 0.9);--bs-navbar-nav-link-padding-x:0.5rem;--bs-navbar-toggler-padding-y:0.25rem;--bs-navbar-toggler-padding-x:0.75rem;--bs-navbar-toggler-font-size:1.25rem;--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--bs-navbar-toggler-border-color:rgba(0, 0, 0, 0.1);--bs-navbar-toggler-border-radius:0.375rem;--bs-navbar-toggler-focus-width:0.25rem;--bs-navbar-toggler-transition:box-shadow 0.15s ease-in-out;position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x)}.navbar>.container,.navbar>.container-fluid,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);margin-right:var(--bs-navbar-brand-margin-end);font-size:var(--bs-navbar-brand-font-size);color:var(--bs-navbar-brand-color);text-decoration:none;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-link-padding-x:0;--bs-nav-link-padding-y:0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-navbar-color);--bs-nav-link-hover-color:var(--bs-navbar-hover-color);--bs-nav-link-disabled-color:var(--bs-navbar-disabled-color);display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link.active,.navbar-nav .show>.nav-link{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-navbar-color)}.navbar-text a,.navbar-text a:focus,.navbar-text a:hover{color:var(--bs-navbar-active-color)}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);line-height:1;color:var(--bs-navbar-color);background-color:transparent;border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);transition:var(--bs-navbar-toggler-transition)}@media (prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width)}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-image:var(--bs-navbar-toggler-icon-bg);background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height,75vh);overflow-y:auto}@media (min-width:576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}.navbar-dark{--bs-navbar-color:rgba(255, 255, 255, 0.55);--bs-navbar-hover-color:rgba(255, 255, 255, 0.75);--bs-navbar-disabled-color:rgba(255, 255, 255, 0.25);--bs-navbar-active-color:#fff;--bs-navbar-brand-color:#fff;--bs-navbar-brand-hover-color:#fff;--bs-navbar-toggler-border-color:rgba(255, 255, 255, 0.1);--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.card{--bs-card-spacer-y:1rem;--bs-card-spacer-x:1rem;--bs-card-title-spacer-y:0.5rem;--bs-card-border-width:1px;--bs-card-border-color:var(--bs-border-color-translucent);--bs-card-border-radius:0.375rem;--bs-card-box-shadow: ;--bs-card-inner-border-radius:calc(0.375rem - 1px);--bs-card-cap-padding-y:0.5rem;--bs-card-cap-padding-x:1rem;--bs-card-cap-bg:rgba(0, 0, 0, 0.03);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg:#fff;--bs-card-img-overlay-padding:1rem;--bs-card-group-margin:0.75rem;position:relative;display:flex;flex-direction:column;min-width:0;height:var(--bs-card-height);word-wrap:break-word;background-color:var(--bs-card-bg);background-clip:border-box;border:var(--bs-card-border-width) solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius)}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x);color:var(--bs-card-color)}.card-title{margin-bottom:var(--bs-card-title-spacer-y)}.card-subtitle{margin-top:calc(-.5 * var(--bs-card-title-spacer-y));margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:var(--bs-card-spacer-x)}.card-header{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);margin-bottom:0;color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-header:first-child{border-radius:var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0}.card-footer{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-top:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-footer:last-child{border-radius:0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius)}.card-header-tabs{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-bottom:calc(-1 * var(--bs-card-cap-padding-y));margin-left:calc(-.5 * var(--bs-card-cap-padding-x));border-bottom:0}.card-header-tabs .nav-link.active{background-color:var(--bs-card-bg);border-bottom-color:var(--bs-card-bg)}.card-header-pills{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-left:calc(-.5 * var(--bs-card-cap-padding-x))}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:var(--bs-card-img-overlay-padding);border-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom,.card-img-top{width:100%}.card-img,.card-img-top{border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom{border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--bs-card-group-margin)}@media (min-width:576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.accordion{--bs-accordion-color:#000;--bs-accordion-bg:#fff;--bs-accordion-transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out,border-radius 0.15s ease;--bs-accordion-border-color:var(--bs-border-color);--bs-accordion-border-width:1px;--bs-accordion-border-radius:0.375rem;--bs-accordion-inner-border-radius:calc(0.375rem - 1px);--bs-accordion-btn-padding-x:1.25rem;--bs-accordion-btn-padding-y:1rem;--bs-accordion-btn-color:var(--bs-body-color);--bs-accordion-btn-bg:var(--bs-accordion-bg);--bs-accordion-btn-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='var%28--bs-body-color%29'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-icon-width:1.25rem;--bs-accordion-btn-icon-transform:rotate(-180deg);--bs-accordion-btn-icon-transition:transform 0.2s ease-in-out;--bs-accordion-btn-active-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c63e4'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-focus-border-color:#86b7fe;--bs-accordion-btn-focus-box-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25);--bs-accordion-body-padding-x:1.25rem;--bs-accordion-body-padding-y:1rem;--bs-accordion-active-color:#0c63e4;--bs-accordion-active-bg:#e7f1ff}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);font-size:1rem;color:var(--bs-accordion-btn-color);text-align:left;background-color:var(--bs-accordion-btn-bg);border:0;border-radius:0;overflow-anchor:none;transition:var(--bs-accordion-transition)}@media (prefers-reduced-motion:reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:var(--bs-accordion-active-color);background-color:var(--bs-accordion-active-bg);box-shadow:inset 0 calc(var(--bs-accordion-border-width) * -1) 0 var(--bs-accordion-border-color)}.accordion-button:not(.collapsed)::after{background-image:var(--bs-accordion-btn-active-icon);transform:var(--bs-accordion-btn-icon-transform)}.accordion-button::after{flex-shrink:0;width:var(--bs-accordion-btn-icon-width);height:var(--bs-accordion-btn-icon-width);margin-left:auto;content:"";background-image:var(--bs-accordion-btn-icon);background-repeat:no-repeat;background-size:var(--bs-accordion-btn-icon-width);transition:var(--bs-accordion-btn-icon-transition)}@media (prefers-reduced-motion:reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:var(--bs-accordion-btn-focus-border-color);outline:0;box-shadow:var(--bs-accordion-btn-focus-box-shadow)}.accordion-header{margin-bottom:0}.accordion-item{color:var(--bs-accordion-color);background-color:var(--bs-accordion-bg);border:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.accordion-item:first-of-type{border-top-left-radius:var(--bs-accordion-border-radius);border-top-right-radius:var(--bs-accordion-border-radius)}.accordion-item:first-of-type .accordion-button{border-top-left-radius:var(--bs-accordion-inner-border-radius);border-top-right-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:var(--bs-accordion-inner-border-radius);border-bottom-left-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-body{padding:var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x)}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button{border-radius:0}.breadcrumb{--bs-breadcrumb-padding-x:0;--bs-breadcrumb-padding-y:0;--bs-breadcrumb-margin-bottom:1rem;--bs-breadcrumb-bg: ;--bs-breadcrumb-border-radius: ;--bs-breadcrumb-divider-color:#6c757d;--bs-breadcrumb-item-padding-x:0.5rem;--bs-breadcrumb-item-active-color:#6c757d;display:flex;flex-wrap:wrap;padding:var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);margin-bottom:var(--bs-breadcrumb-margin-bottom);font-size:var(--bs-breadcrumb-font-size);list-style:none;background-color:var(--bs-breadcrumb-bg);border-radius:var(--bs-breadcrumb-border-radius)}.breadcrumb-item+.breadcrumb-item{padding-left:var(--bs-breadcrumb-item-padding-x)}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:var(--bs-breadcrumb-item-padding-x);color:var(--bs-breadcrumb-divider-color);content:var(--bs-breadcrumb-divider, "/")}.breadcrumb-item.active{color:var(--bs-breadcrumb-item-active-color)}.pagination{--bs-pagination-padding-x:0.75rem;--bs-pagination-padding-y:0.375rem;--bs-pagination-font-size:1rem;--bs-pagination-color:var(--bs-link-color);--bs-pagination-bg:#fff;--bs-pagination-border-width:1px;--bs-pagination-border-color:#dee2e6;--bs-pagination-border-radius:0.375rem;--bs-pagination-hover-color:var(--bs-link-hover-color);--bs-pagination-hover-bg:#e9ecef;--bs-pagination-hover-border-color:#dee2e6;--bs-pagination-focus-color:var(--bs-link-hover-color);--bs-pagination-focus-bg:#e9ecef;--bs-pagination-focus-box-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25);--bs-pagination-active-color:#fff;--bs-pagination-active-bg:#0d6efd;--bs-pagination-active-border-color:#0d6efd;--bs-pagination-disabled-color:#6c757d;--bs-pagination-disabled-bg:#fff;--bs-pagination-disabled-border-color:#dee2e6;display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;padding:var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);font-size:var(--bs-pagination-font-size);color:var(--bs-pagination-color);text-decoration:none;background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--bs-pagination-hover-color);background-color:var(--bs-pagination-hover-bg);border-color:var(--bs-pagination-hover-border-color)}.page-link:focus{z-index:3;color:var(--bs-pagination-focus-color);background-color:var(--bs-pagination-focus-bg);outline:0;box-shadow:var(--bs-pagination-focus-box-shadow)}.active>.page-link,.page-link.active{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-pagination-active-bg);border-color:var(--bs-pagination-active-border-color)}.disabled>.page-link,.page-link.disabled{color:var(--bs-pagination-disabled-color);pointer-events:none;background-color:var(--bs-pagination-disabled-bg);border-color:var(--bs-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-left:-1px}.page-item:first-child .page-link{border-top-left-radius:var(--bs-pagination-border-radius);border-bottom-left-radius:var(--bs-pagination-border-radius)}.page-item:last-child .page-link{border-top-right-radius:var(--bs-pagination-border-radius);border-bottom-right-radius:var(--bs-pagination-border-radius)}.pagination-lg{--bs-pagination-padding-x:1.5rem;--bs-pagination-padding-y:0.75rem;--bs-pagination-font-size:1.25rem;--bs-pagination-border-radius:0.5rem}.pagination-sm{--bs-pagination-padding-x:0.5rem;--bs-pagination-padding-y:0.25rem;--bs-pagination-font-size:0.875rem;--bs-pagination-border-radius:0.25rem}.badge{--bs-badge-padding-x:0.65em;--bs-badge-padding-y:0.35em;--bs-badge-font-size:0.75em;--bs-badge-font-weight:700;--bs-badge-color:#fff;--bs-badge-border-radius:0.375rem;display:inline-block;padding:var(--bs-badge-padding-y) var(--bs-badge-padding-x);font-size:var(--bs-badge-font-size);font-weight:var(--bs-badge-font-weight);line-height:1;color:var(--bs-badge-color);text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:var(--bs-badge-border-radius)}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{--bs-alert-bg:transparent;--bs-alert-padding-x:1rem;--bs-alert-padding-y:1rem;--bs-alert-margin-bottom:1rem;--bs-alert-color:inherit;--bs-alert-border-color:transparent;--bs-alert-border:1px solid var(--bs-alert-border-color);--bs-alert-border-radius:0.375rem;position:relative;padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);margin-bottom:var(--bs-alert-margin-bottom);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border);border-radius:var(--bs-alert-border-radius)}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-primary{--bs-alert-color:#084298;--bs-alert-bg:#cfe2ff;--bs-alert-border-color:#b6d4fe}.alert-primary .alert-link{color:#06357a}.alert-secondary{--bs-alert-color:#41464b;--bs-alert-bg:#e2e3e5;--bs-alert-border-color:#d3d6d8}.alert-secondary .alert-link{color:#34383c}.alert-success{--bs-alert-color:#0f5132;--bs-alert-bg:#d1e7dd;--bs-alert-border-color:#badbcc}.alert-success .alert-link{color:#0c4128}.alert-info{--bs-alert-color:#055160;--bs-alert-bg:#cff4fc;--bs-alert-border-color:#b6effb}.alert-info .alert-link{color:#04414d}.alert-warning{--bs-alert-color:#664d03;--bs-alert-bg:#fff3cd;--bs-alert-border-color:#ffecb5}.alert-warning .alert-link{color:#523e02}.alert-danger{--bs-alert-color:#842029;--bs-alert-bg:#f8d7da;--bs-alert-border-color:#f5c2c7}.alert-danger .alert-link{color:#6a1a21}.alert-light{--bs-alert-color:#636464;--bs-alert-bg:#fefefe;--bs-alert-border-color:#fdfdfe}.alert-light .alert-link{color:#4f5050}.alert-dark{--bs-alert-color:#141619;--bs-alert-bg:#d3d3d4;--bs-alert-border-color:#bcbebf}.alert-dark .alert-link{color:#101214}@-webkit-keyframes progress-bar-stripes{0%{background-position-x:1rem}}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress{--bs-progress-height:1rem;--bs-progress-font-size:0.75rem;--bs-progress-bg:#e9ecef;--bs-progress-border-radius:0.375rem;--bs-progress-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.075);--bs-progress-bar-color:#fff;--bs-progress-bar-bg:#0d6efd;--bs-progress-bar-transition:width 0.6s ease;display:flex;height:var(--bs-progress-height);overflow:hidden;font-size:var(--bs-progress-font-size);background-color:var(--bs-progress-bg);border-radius:var(--bs-progress-border-radius)}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:var(--bs-progress-bar-color);text-align:center;white-space:nowrap;background-color:var(--bs-progress-bar-bg);transition:var(--bs-progress-bar-transition)}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:var(--bs-progress-height) var(--bs-progress-height)}.progress-bar-animated{-webkit-animation:1s linear infinite progress-bar-stripes;animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.list-group{--bs-list-group-color:#212529;--bs-list-group-bg:#fff;--bs-list-group-border-color:rgba(0, 0, 0, 0.125);--bs-list-group-border-width:1px;--bs-list-group-border-radius:0.375rem;--bs-list-group-item-padding-x:1rem;--bs-list-group-item-padding-y:0.5rem;--bs-list-group-action-color:#495057;--bs-list-group-action-hover-color:#495057;--bs-list-group-action-hover-bg:#f8f9fa;--bs-list-group-action-active-color:#212529;--bs-list-group-action-active-bg:#e9ecef;--bs-list-group-disabled-color:#6c757d;--bs-list-group-disabled-bg:#fff;--bs-list-group-active-color:#fff;--bs-list-group-active-bg:#0d6efd;--bs-list-group-active-border-color:#0d6efd;display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--bs-list-group-border-radius)}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>.list-group-item::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:var(--bs-list-group-action-color);text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:var(--bs-list-group-action-hover-color);text-decoration:none;background-color:var(--bs-list-group-action-hover-bg)}.list-group-item-action:active{color:var(--bs-list-group-action-active-color);background-color:var(--bs-list-group-action-active-bg)}.list-group-item{position:relative;display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);text-decoration:none;background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:var(--bs-list-group-disabled-color);pointer-events:none;background-color:var(--bs-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--bs-list-group-active-color);background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(var(--bs-list-group-border-width) * -1);border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:calc(var(--bs-list-group-border-width) * -1);border-left-width:var(--bs-list-group-border-width)}@media (min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:calc(var(--bs-list-group-border-width) * -1);border-left-width:var(--bs-list-group-border-width)}}@media (min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:calc(var(--bs-list-group-border-width) * -1);border-left-width:var(--bs-list-group-border-width)}}@media (min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:calc(var(--bs-list-group-border-width) * -1);border-left-width:var(--bs-list-group-border-width)}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:calc(var(--bs-list-group-border-width) * -1);border-left-width:var(--bs-list-group-border-width)}}@media (min-width:1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child{border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child{border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:calc(var(--bs-list-group-border-width) * -1);border-left-width:var(--bs-list-group-border-width)}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 var(--bs-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#084298;background-color:#cfe2ff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#084298;background-color:#bacbe6}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#084298;border-color:#084298}.list-group-item-secondary{color:#41464b;background-color:#e2e3e5}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#41464b;background-color:#cbccce}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#41464b;border-color:#41464b}.list-group-item-success{color:#0f5132;background-color:#d1e7dd}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#0f5132;background-color:#bcd0c7}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#0f5132;border-color:#0f5132}.list-group-item-info{color:#055160;background-color:#cff4fc}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#055160;background-color:#badce3}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#055160;border-color:#055160}.list-group-item-warning{color:#664d03;background-color:#fff3cd}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#664d03;background-color:#e6dbb9}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#664d03;border-color:#664d03}.list-group-item-danger{color:#842029;background-color:#f8d7da}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#842029;background-color:#dfc2c4}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#842029;border-color:#842029}.list-group-item-light{color:#636464;background-color:#fefefe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#636464;background-color:#e5e5e5}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#636464;border-color:#636464}.list-group-item-dark{color:#141619;background-color:#d3d3d4}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#141619;background-color:#bebebf}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#141619;border-color:#141619}.btn-close{box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:#000;background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;border:0;border-radius:.375rem;opacity:.5}.btn-close:hover{color:#000;text-decoration:none;opacity:.75}.btn-close:focus{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25);opacity:1}.btn-close.disabled,.btn-close:disabled{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;opacity:.25}.btn-close-white{filter:invert(1) grayscale(100%) brightness(200%)}.toast{--bs-toast-padding-x:0.75rem;--bs-toast-padding-y:0.5rem;--bs-toast-spacing:1.5rem;--bs-toast-max-width:350px;--bs-toast-font-size:0.875rem;--bs-toast-color: ;--bs-toast-bg:rgba(255, 255, 255, 0.85);--bs-toast-border-width:1px;--bs-toast-border-color:var(--bs-border-color-translucent);--bs-toast-border-radius:0.375rem;--bs-toast-box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-toast-header-color:#6c757d;--bs-toast-header-bg:rgba(255, 255, 255, 0.85);--bs-toast-header-border-color:rgba(0, 0, 0, 0.05);width:var(--bs-toast-max-width);max-width:100%;font-size:var(--bs-toast-font-size);color:var(--bs-toast-color);pointer-events:auto;background-color:var(--bs-toast-bg);background-clip:padding-box;border:var(--bs-toast-border-width) solid var(--bs-toast-border-color);box-shadow:var(--bs-toast-box-shadow);border-radius:var(--bs-toast-border-radius)}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{position:absolute;z-index:1090;width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:var(--bs-toast-spacing)}.toast-header{display:flex;align-items:center;padding:var(--bs-toast-padding-y) var(--bs-toast-padding-x);color:var(--bs-toast-header-color);background-color:var(--bs-toast-header-bg);background-clip:padding-box;border-bottom:var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);border-top-left-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));border-top-right-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width))}.toast-header .btn-close{margin-right:calc(var(--bs-toast-padding-x) * -.5);margin-left:var(--bs-toast-padding-x)}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}.modal{--bs-modal-zindex:1055;--bs-modal-width:500px;--bs-modal-padding:1rem;--bs-modal-margin:0.5rem;--bs-modal-color: ;--bs-modal-bg:#fff;--bs-modal-border-color:var(--bs-border-color-translucent);--bs-modal-border-width:1px;--bs-modal-border-radius:0.5rem;--bs-modal-box-shadow:0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-modal-inner-border-radius:calc(0.5rem - 1px);--bs-modal-header-padding-x:1rem;--bs-modal-header-padding-y:1rem;--bs-modal-header-padding:1rem 1rem;--bs-modal-header-border-color:var(--bs-border-color);--bs-modal-header-border-width:1px;--bs-modal-title-line-height:1.5;--bs-modal-footer-gap:0.5rem;--bs-modal-footer-bg: ;--bs-modal-footer-border-color:var(--bs-border-color);--bs-modal-footer-border-width:1px;position:fixed;top:0;left:0;z-index:var(--bs-modal-zindex);display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:var(--bs-modal-margin);pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - var(--bs-modal-margin) * 2)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - var(--bs-modal-margin) * 2)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;color:var(--bs-modal-color);pointer-events:auto;background-color:var(--bs-modal-bg);background-clip:padding-box;border:var(--bs-modal-border-width) solid var(--bs-modal-border-color);border-radius:var(--bs-modal-border-radius);outline:0}.modal-backdrop{--bs-backdrop-zindex:1050;--bs-backdrop-bg:#000;--bs-backdrop-opacity:0.5;position:fixed;top:0;left:0;z-index:var(--bs-backdrop-zindex);width:100vw;height:100vh;background-color:var(--bs-backdrop-bg)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--bs-backdrop-opacity)}.modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:var(--bs-modal-header-padding);border-bottom:var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);border-top-left-radius:var(--bs-modal-inner-border-radius);border-top-right-radius:var(--bs-modal-inner-border-radius)}.modal-header .btn-close{padding:calc(var(--bs-modal-header-padding-y) * .5) calc(var(--bs-modal-header-padding-x) * .5);margin:calc(var(--bs-modal-header-padding-y) * -.5) calc(var(--bs-modal-header-padding-x) * -.5) calc(var(--bs-modal-header-padding-y) * -.5) auto}.modal-title{margin-bottom:0;line-height:var(--bs-modal-title-line-height)}.modal-body{position:relative;flex:1 1 auto;padding:var(--bs-modal-padding)}.modal-footer{display:flex;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap) * .5);background-color:var(--bs-modal-footer-bg);border-top:var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color);border-bottom-right-radius:var(--bs-modal-inner-border-radius);border-bottom-left-radius:var(--bs-modal-inner-border-radius)}.modal-footer>*{margin:calc(var(--bs-modal-footer-gap) * .5)}@media (min-width:576px){.modal{--bs-modal-margin:1.75rem;--bs-modal-box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15)}.modal-dialog{max-width:var(--bs-modal-width);margin-right:auto;margin-left:auto}.modal-sm{--bs-modal-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{--bs-modal-width:800px}}@media (min-width:1200px){.modal-xl{--bs-modal-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-footer,.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}@media (max-width:575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-footer,.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media (max-width:767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-footer,.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media (max-width:991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-footer,.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media (max-width:1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-footer,.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}@media (max-width:1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-footer,.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}}.tooltip{--bs-tooltip-zindex:1080;--bs-tooltip-max-width:200px;--bs-tooltip-padding-x:0.5rem;--bs-tooltip-padding-y:0.25rem;--bs-tooltip-margin: ;--bs-tooltip-font-size:0.875rem;--bs-tooltip-color:#fff;--bs-tooltip-bg:#000;--bs-tooltip-border-radius:0.375rem;--bs-tooltip-opacity:0.9;--bs-tooltip-arrow-width:0.8rem;--bs-tooltip-arrow-height:0.4rem;z-index:var(--bs-tooltip-zindex);display:block;padding:var(--bs-tooltip-arrow-height);margin:var(--bs-tooltip-margin);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-tooltip-font-size);word-wrap:break-word;opacity:0}.tooltip.show{opacity:var(--bs-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--bs-tooltip-arrow-width);height:var(--bs-tooltip-arrow-height)}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,.bs-tooltip-top .tooltip-arrow{bottom:0}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before,.bs-tooltip-top .tooltip-arrow::before{top:-1px;border-width:var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-top-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,.bs-tooltip-end .tooltip-arrow{left:0;width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before,.bs-tooltip-end .tooltip-arrow::before{right:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-right-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:0}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before,.bs-tooltip-bottom .tooltip-arrow::before{bottom:-1px;border-width:0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-bottom-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,.bs-tooltip-start .tooltip-arrow{right:0;width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before,.bs-tooltip-start .tooltip-arrow::before{left:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) 0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-left-color:var(--bs-tooltip-bg)}.tooltip-inner{max-width:var(--bs-tooltip-max-width);padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-tooltip-color);text-align:center;background-color:var(--bs-tooltip-bg);border-radius:var(--bs-tooltip-border-radius)}.popover{--bs-popover-zindex:1070;--bs-popover-max-width:276px;--bs-popover-font-size:0.875rem;--bs-popover-bg:#fff;--bs-popover-border-width:1px;--bs-popover-border-color:var(--bs-border-color-translucent);--bs-popover-border-radius:0.5rem;--bs-popover-inner-border-radius:calc(0.5rem - 1px);--bs-popover-box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-popover-header-padding-x:1rem;--bs-popover-header-padding-y:0.5rem;--bs-popover-header-font-size:1rem;--bs-popover-header-color:var(--bs-heading-color);--bs-popover-header-bg:#f0f0f0;--bs-popover-body-padding-x:1rem;--bs-popover-body-padding-y:1rem;--bs-popover-body-color:#212529;--bs-popover-arrow-width:1rem;--bs-popover-arrow-height:0.5rem;--bs-popover-arrow-border:var(--bs-popover-border-color);z-index:var(--bs-popover-zindex);display:block;max-width:var(--bs-popover-max-width);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-popover-font-size);word-wrap:break-word;background-color:var(--bs-popover-bg);background-clip:padding-box;border:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-radius:var(--bs-popover-border-radius)}.popover .popover-arrow{display:block;width:var(--bs-popover-arrow-width);height:var(--bs-popover-arrow-height)}.popover .popover-arrow::after,.popover .popover-arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid;border-width:0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow,.bs-popover-top>.popover-arrow{bottom:calc(var(--bs-popover-arrow-height) * -1 - var(--bs-popover-border-width))}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::after,.bs-popover-top>.popover-arrow::before{border-width:var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::before{bottom:0;border-top-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,.bs-popover-top>.popover-arrow::after{bottom:var(--bs-popover-border-width);border-top-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow,.bs-popover-end>.popover-arrow{left:calc(var(--bs-popover-arrow-height) * -1 - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::after,.bs-popover-end>.popover-arrow::before{border-width:calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::before{left:0;border-right-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after,.bs-popover-end>.popover-arrow::after{left:var(--bs-popover-border-width);border-right-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow,.bs-popover-bottom>.popover-arrow{top:calc(var(--bs-popover-arrow-height) * -1 - var(--bs-popover-border-width))}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::after,.bs-popover-bottom>.popover-arrow::before{border-width:0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::before{top:0;border-bottom-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,.bs-popover-bottom>.popover-arrow::after{top:var(--bs-popover-border-width);border-bottom-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:var(--bs-popover-arrow-width);margin-left:calc(var(--bs-popover-arrow-width) * -.5);content:"";border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-header-bg)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow,.bs-popover-start>.popover-arrow{right:calc(var(--bs-popover-arrow-height) * -1 - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::after,.bs-popover-start>.popover-arrow::before{border-width:calc(var(--bs-popover-arrow-width) * .5) 0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::before{right:0;border-left-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after,.bs-popover-start>.popover-arrow::after{right:var(--bs-popover-border-width);border-left-color:var(--bs-popover-bg)}.popover-header{padding:var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);margin-bottom:0;font-size:var(--bs-popover-header-font-size);color:var(--bs-popover-header-color);background-color:var(--bs-popover-header-bg);border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-top-left-radius:var(--bs-popover-inner-border-radius);border-top-right-radius:var(--bs-popover-inner-border-radius)}.popover-header:empty{display:none}.popover-body{padding:var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);color:var(--bs-popover-body-color)}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-end,.carousel-item-next:not(.carousel-item-start){transform:translateX(100%)}.active.carousel-item-start,.carousel-item-prev:not(.carousel-item-end){transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:0 0;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%;list-style:none}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-next-icon,.carousel-dark .carousel-control-prev-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}.spinner-border,.spinner-grow{display:inline-block;width:var(--bs-spinner-width);height:var(--bs-spinner-height);vertical-align:var(--bs-spinner-vertical-align);border-radius:50%;-webkit-animation:var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name);animation:var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name)}@-webkit-keyframes spinner-border{to{transform:rotate(360deg)}}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{--bs-spinner-width:2rem;--bs-spinner-height:2rem;--bs-spinner-vertical-align:-0.125em;--bs-spinner-border-width:0.25em;--bs-spinner-animation-speed:0.75s;--bs-spinner-animation-name:spinner-border;border:var(--bs-spinner-border-width) solid currentcolor;border-right-color:transparent}.spinner-border-sm{--bs-spinner-width:1rem;--bs-spinner-height:1rem;--bs-spinner-border-width:0.2em}@-webkit-keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{--bs-spinner-width:2rem;--bs-spinner-height:2rem;--bs-spinner-vertical-align:-0.125em;--bs-spinner-animation-speed:0.75s;--bs-spinner-animation-name:spinner-grow;background-color:currentcolor;opacity:0}.spinner-grow-sm{--bs-spinner-width:1rem;--bs-spinner-height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{--bs-spinner-animation-speed:1.5s}}.offcanvas,.offcanvas-lg,.offcanvas-md,.offcanvas-sm,.offcanvas-xl,.offcanvas-xxl{--bs-offcanvas-width:400px;--bs-offcanvas-height:30vh;--bs-offcanvas-padding-x:1rem;--bs-offcanvas-padding-y:1rem;--bs-offcanvas-color: ;--bs-offcanvas-bg:#fff;--bs-offcanvas-border-width:1px;--bs-offcanvas-border-color:var(--bs-border-color-translucent);--bs-offcanvas-box-shadow:0 0.125rem 0.25rem rgba(0, 0, 0, 0.075)}@media (max-width:575.98px){.offcanvas-sm{position:fixed;bottom:0;z-index:1045;display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}}@media (max-width:575.98px) and (prefers-reduced-motion:reduce){.offcanvas-sm{transition:none}}@media (max-width:575.98px){.offcanvas-sm.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}}@media (max-width:575.98px){.offcanvas-sm.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}}@media (max-width:575.98px){.offcanvas-sm.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}}@media (max-width:575.98px){.offcanvas-sm.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}}@media (max-width:575.98px){.offcanvas-sm.show:not(.hiding),.offcanvas-sm.showing{transform:none}}@media (max-width:575.98px){.offcanvas-sm.hiding,.offcanvas-sm.show,.offcanvas-sm.showing{visibility:visible}}@media (min-width:576px){.offcanvas-sm{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:767.98px){.offcanvas-md{position:fixed;bottom:0;z-index:1045;display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}}@media (max-width:767.98px) and (prefers-reduced-motion:reduce){.offcanvas-md{transition:none}}@media (max-width:767.98px){.offcanvas-md.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}}@media (max-width:767.98px){.offcanvas-md.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}}@media (max-width:767.98px){.offcanvas-md.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}}@media (max-width:767.98px){.offcanvas-md.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}}@media (max-width:767.98px){.offcanvas-md.show:not(.hiding),.offcanvas-md.showing{transform:none}}@media (max-width:767.98px){.offcanvas-md.hiding,.offcanvas-md.show,.offcanvas-md.showing{visibility:visible}}@media (min-width:768px){.offcanvas-md{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:991.98px){.offcanvas-lg{position:fixed;bottom:0;z-index:1045;display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}}@media (max-width:991.98px) and (prefers-reduced-motion:reduce){.offcanvas-lg{transition:none}}@media (max-width:991.98px){.offcanvas-lg.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}}@media (max-width:991.98px){.offcanvas-lg.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}}@media (max-width:991.98px){.offcanvas-lg.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}}@media (max-width:991.98px){.offcanvas-lg.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}}@media (max-width:991.98px){.offcanvas-lg.show:not(.hiding),.offcanvas-lg.showing{transform:none}}@media (max-width:991.98px){.offcanvas-lg.hiding,.offcanvas-lg.show,.offcanvas-lg.showing{visibility:visible}}@media (min-width:992px){.offcanvas-lg{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:1199.98px){.offcanvas-xl{position:fixed;bottom:0;z-index:1045;display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}}@media (max-width:1199.98px) and (prefers-reduced-motion:reduce){.offcanvas-xl{transition:none}}@media (max-width:1199.98px){.offcanvas-xl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}}@media (max-width:1199.98px){.offcanvas-xl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}}@media (max-width:1199.98px){.offcanvas-xl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}}@media (max-width:1199.98px){.offcanvas-xl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}}@media (max-width:1199.98px){.offcanvas-xl.show:not(.hiding),.offcanvas-xl.showing{transform:none}}@media (max-width:1199.98px){.offcanvas-xl.hiding,.offcanvas-xl.show,.offcanvas-xl.showing{visibility:visible}}@media (min-width:1200px){.offcanvas-xl{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:1399.98px){.offcanvas-xxl{position:fixed;bottom:0;z-index:1045;display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}}@media (max-width:1399.98px) and (prefers-reduced-motion:reduce){.offcanvas-xxl{transition:none}}@media (max-width:1399.98px){.offcanvas-xxl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}}@media (max-width:1399.98px){.offcanvas-xxl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}}@media (max-width:1399.98px){.offcanvas-xxl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}}@media (max-width:1399.98px){.offcanvas-xxl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}}@media (max-width:1399.98px){.offcanvas-xxl.show:not(.hiding),.offcanvas-xxl.showing{transform:none}}@media (max-width:1399.98px){.offcanvas-xxl.hiding,.offcanvas-xxl.show,.offcanvas-xxl.showing{visibility:visible}}@media (min-width:1400px){.offcanvas-xxl{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-xxl .offcanvas-header{display:none}.offcanvas-xxl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}.offcanvas{position:fixed;bottom:0;z-index:1045;display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}@media (prefers-reduced-motion:reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas.show:not(.hiding),.offcanvas.showing{transform:none}.offcanvas.hiding,.offcanvas.show,.offcanvas.showing{visibility:visible}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;align-items:center;justify-content:space-between;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x)}.offcanvas-header .btn-close{padding:calc(var(--bs-offcanvas-padding-y) * .5) calc(var(--bs-offcanvas-padding-x) * .5);margin-top:calc(var(--bs-offcanvas-padding-y) * -.5);margin-right:calc(var(--bs-offcanvas-padding-x) * -.5);margin-bottom:calc(var(--bs-offcanvas-padding-y) * -.5)}.offcanvas-title{margin-bottom:0;line-height:1.5}.offcanvas-body{flex-grow:1;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);overflow-y:auto}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.5}.placeholder.btn::before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{-webkit-animation:placeholder-glow 2s ease-in-out infinite;animation:placeholder-glow 2s ease-in-out infinite}@-webkit-keyframes placeholder-glow{50%{opacity:.2}}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{-webkit-mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,0.8) 75%,#000 95%);mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,0.8) 75%,#000 95%);-webkit-mask-size:200% 100%;mask-size:200% 100%;-webkit-animation:placeholder-wave 2s linear infinite;animation:placeholder-wave 2s linear infinite}@-webkit-keyframes placeholder-wave{100%{-webkit-mask-position:-200% 0%;mask-position:-200% 0%}}@keyframes placeholder-wave{100%{-webkit-mask-position:-200% 0%;mask-position:-200% 0%}}.clearfix::after{display:block;clear:both;content:""}.text-bg-primary{color:#fff!important;background-color:RGBA(13,110,253,var(--bs-bg-opacity,1))!important}.text-bg-secondary{color:#fff!important;background-color:RGBA(108,117,125,var(--bs-bg-opacity,1))!important}.text-bg-success{color:#fff!important;background-color:RGBA(25,135,84,var(--bs-bg-opacity,1))!important}.text-bg-info{color:#000!important;background-color:RGBA(13,202,240,var(--bs-bg-opacity,1))!important}.text-bg-warning{color:#000!important;background-color:RGBA(255,193,7,var(--bs-bg-opacity,1))!important}.text-bg-danger{color:#fff!important;background-color:RGBA(220,53,69,var(--bs-bg-opacity,1))!important}.text-bg-light{color:#000!important;background-color:RGBA(248,249,250,var(--bs-bg-opacity,1))!important}.text-bg-dark{color:#fff!important;background-color:RGBA(33,37,41,var(--bs-bg-opacity,1))!important}.link-primary{color:#0d6efd!important}.link-primary:focus,.link-primary:hover{color:#0a58ca!important}.link-secondary{color:#6c757d!important}.link-secondary:focus,.link-secondary:hover{color:#565e64!important}.link-success{color:#198754!important}.link-success:focus,.link-success:hover{color:#146c43!important}.link-info{color:#0dcaf0!important}.link-info:focus,.link-info:hover{color:#3dd5f3!important}.link-warning{color:#ffc107!important}.link-warning:focus,.link-warning:hover{color:#ffcd39!important}.link-danger{color:#dc3545!important}.link-danger:focus,.link-danger:hover{color:#b02a37!important}.link-light{color:#f8f9fa!important}.link-light:focus,.link-light:hover{color:#f9fafb!important}.link-dark{color:#212529!important}.link-dark:focus,.link-dark:hover{color:#1a1e21!important}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio:100%}.ratio-4x3{--bs-aspect-ratio:75%}.ratio-16x9{--bs-aspect-ratio:56.25%}.ratio-21x9{--bs-aspect-ratio:42.8571428571%}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}@media (min-width:576px){.sticky-sm-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-sm-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:768px){.sticky-md-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-md-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:992px){.sticky-lg-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-lg-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:1200px){.sticky-xl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-xl-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:1400px){.sticky-xxl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-xxl-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}.hstack{display:flex;flex-direction:row;align-items:center;align-self:stretch}.vstack{display:flex;flex:1 1 auto;flex-direction:column;align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;width:1px;min-height:1em;background-color:currentcolor;opacity:.25}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.opacity-0{opacity:0!important}.opacity-25{opacity:.25!important}.opacity-50{opacity:.5!important}.opacity-75{opacity:.75!important}.opacity-100{opacity:1!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translateX(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-0{border:0!important}.border-top{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-top-0{border-top:0!important}.border-end{border-right:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-start-0{border-left:0!important}.border-primary{--bs-border-opacity:1;border-color:rgba(var(--bs-primary-rgb),var(--bs-border-opacity))!important}.border-secondary{--bs-border-opacity:1;border-color:rgba(var(--bs-secondary-rgb),var(--bs-border-opacity))!important}.border-success{--bs-border-opacity:1;border-color:rgba(var(--bs-success-rgb),var(--bs-border-opacity))!important}.border-info{--bs-border-opacity:1;border-color:rgba(var(--bs-info-rgb),var(--bs-border-opacity))!important}.border-warning{--bs-border-opacity:1;border-color:rgba(var(--bs-warning-rgb),var(--bs-border-opacity))!important}.border-danger{--bs-border-opacity:1;border-color:rgba(var(--bs-danger-rgb),var(--bs-border-opacity))!important}.border-light{--bs-border-opacity:1;border-color:rgba(var(--bs-light-rgb),var(--bs-border-opacity))!important}.border-dark{--bs-border-opacity:1;border-color:rgba(var(--bs-dark-rgb),var(--bs-border-opacity))!important}.border-white{--bs-border-opacity:1;border-color:rgba(var(--bs-white-rgb),var(--bs-border-opacity))!important}.border-1{--bs-border-width:1px}.border-2{--bs-border-width:2px}.border-3{--bs-border-width:3px}.border-4{--bs-border-width:4px}.border-5{--bs-border-width:5px}.border-opacity-10{--bs-border-opacity:0.1}.border-opacity-25{--bs-border-opacity:0.25}.border-opacity-50{--bs-border-opacity:0.5}.border-opacity-75{--bs-border-opacity:0.75}.border-opacity-100{--bs-border-opacity:1}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.font-monospace{font-family:var(--bs-font-monospace)!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + .9vw)!important}.fs-3{font-size:calc(1.3rem + .6vw)!important}.fs-4{font-size:calc(1.275rem + .3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-light{font-weight:300!important}.fw-lighter{font-weight:lighter!important}.fw-normal{font-weight:400!important}.fw-bold{font-weight:700!important}.fw-semibold{font-weight:600!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.25!important}.lh-base{line-height:1.5!important}.lh-lg{line-height:2!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{--bs-text-opacity:1;color:rgba(var(--bs-primary-rgb),var(--bs-text-opacity))!important}.text-secondary{--bs-text-opacity:1;color:rgba(var(--bs-secondary-rgb),var(--bs-text-opacity))!important}.text-success{--bs-text-opacity:1;color:rgba(var(--bs-success-rgb),var(--bs-text-opacity))!important}.text-info{--bs-text-opacity:1;color:rgba(var(--bs-info-rgb),var(--bs-text-opacity))!important}.text-warning{--bs-text-opacity:1;color:rgba(var(--bs-warning-rgb),var(--bs-text-opacity))!important}.text-danger{--bs-text-opacity:1;color:rgba(var(--bs-danger-rgb),var(--bs-text-opacity))!important}.text-light{--bs-text-opacity:1;color:rgba(var(--bs-light-rgb),var(--bs-text-opacity))!important}.text-dark{--bs-text-opacity:1;color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.text-black{--bs-text-opacity:1;color:rgba(var(--bs-black-rgb),var(--bs-text-opacity))!important}.text-white{--bs-text-opacity:1;color:rgba(var(--bs-white-rgb),var(--bs-text-opacity))!important}.text-body{--bs-text-opacity:1;color:rgba(var(--bs-body-color-rgb),var(--bs-text-opacity))!important}.text-muted{--bs-text-opacity:1;color:#6c757d!important}.text-black-50{--bs-text-opacity:1;color:rgba(0,0,0,.5)!important}.text-white-50{--bs-text-opacity:1;color:rgba(255,255,255,.5)!important}.text-reset{--bs-text-opacity:1;color:inherit!important}.text-opacity-25{--bs-text-opacity:0.25}.text-opacity-50{--bs-text-opacity:0.5}.text-opacity-75{--bs-text-opacity:0.75}.text-opacity-100{--bs-text-opacity:1}.bg-primary{--bs-bg-opacity:1;background-color:rgba(var(--bs-primary-rgb),var(--bs-bg-opacity))!important}.bg-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-rgb),var(--bs-bg-opacity))!important}.bg-success{--bs-bg-opacity:1;background-color:rgba(var(--bs-success-rgb),var(--bs-bg-opacity))!important}.bg-info{--bs-bg-opacity:1;background-color:rgba(var(--bs-info-rgb),var(--bs-bg-opacity))!important}.bg-warning{--bs-bg-opacity:1;background-color:rgba(var(--bs-warning-rgb),var(--bs-bg-opacity))!important}.bg-danger{--bs-bg-opacity:1;background-color:rgba(var(--bs-danger-rgb),var(--bs-bg-opacity))!important}.bg-light{--bs-bg-opacity:1;background-color:rgba(var(--bs-light-rgb),var(--bs-bg-opacity))!important}.bg-dark{--bs-bg-opacity:1;background-color:rgba(var(--bs-dark-rgb),var(--bs-bg-opacity))!important}.bg-black{--bs-bg-opacity:1;background-color:rgba(var(--bs-black-rgb),var(--bs-bg-opacity))!important}.bg-white{--bs-bg-opacity:1;background-color:rgba(var(--bs-white-rgb),var(--bs-bg-opacity))!important}.bg-body{--bs-bg-opacity:1;background-color:rgba(var(--bs-body-bg-rgb),var(--bs-bg-opacity))!important}.bg-transparent{--bs-bg-opacity:1;background-color:transparent!important}.bg-opacity-10{--bs-bg-opacity:0.1}.bg-opacity-25{--bs-bg-opacity:0.25}.bg-opacity-50{--bs-bg-opacity:0.5}.bg-opacity-75{--bs-bg-opacity:0.75}.bg-opacity-100{--bs-bg-opacity:1}.bg-gradient{background-image:var(--bs-gradient)!important}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:var(--bs-border-radius)!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:var(--bs-border-radius-sm)!important}.rounded-2{border-radius:var(--bs-border-radius)!important}.rounded-3{border-radius:var(--bs-border-radius-lg)!important}.rounded-4{border-radius:var(--bs-border-radius-xl)!important}.rounded-5{border-radius:var(--bs-border-radius-2xl)!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:var(--bs-border-radius-pill)!important}.rounded-top{border-top-left-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-end{border-top-right-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-bottom{border-bottom-right-radius:var(--bs-border-radius)!important;border-bottom-left-radius:var(--bs-border-radius)!important}.rounded-start{border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:var(--bs-border-radius)!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media (min-width:576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}}@media (min-width:1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:3rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media (min-width:1200px){.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}} \ No newline at end of file diff --git a/backend/documentation/styles/compodoc.css b/backend/documentation/styles/compodoc.css new file mode 100644 index 0000000..684bd9a --- /dev/null +++ b/backend/documentation/styles/compodoc.css @@ -0,0 +1,1124 @@ +body { + position: absolute; + width: 100%; + height: 100%; + font-family: 'Roboto', sans-serif; + --bs-body-font-size: 0.9rem; +} + +/* roboto-300 - latin */ + +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 300; + src: url('../fonts/roboto-v15-latin-300.eot'); + /* IE9 Compat Modes */ + src: + local('Roboto Light'), + local('Roboto-Light'), + url('../fonts/roboto-v15-latin-300.eot?#iefix') format('embedded-opentype'), + /* IE6-IE8 */ url('../fonts/roboto-v15-latin-300.woff2') format('woff2'), + /* Super Modern Browsers */ url('../fonts/roboto-v15-latin-300.woff') format('woff'), + /* Modern Browsers */ url('../fonts/roboto-v15-latin-300.ttf') format('truetype'), + /* Safari, Android, iOS */ url('../fonts/roboto-v15-latin-300.svg#Roboto') format('svg'); + /* Legacy iOS */ +} + +/* roboto-regular - latin */ + +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 400; + src: url('../fonts/roboto-v15-latin-regular.eot'); + /* IE9 Compat Modes */ + src: + local('Roboto'), + local('Roboto-Regular'), + url('../fonts/roboto-v15-latin-regular.eot?#iefix') format('embedded-opentype'), + /* IE6-IE8 */ url('../fonts/roboto-v15-latin-regular.woff2') format('woff2'), + /* Super Modern Browsers */ url('../fonts/roboto-v15-latin-regular.woff') format('woff'), + /* Modern Browsers */ url('../fonts/roboto-v15-latin-regular.ttf') format('truetype'), + /* Safari, Android, iOS */ url('../fonts/roboto-v15-latin-regular.svg#Roboto') format('svg'); + /* Legacy iOS */ +} + +/* roboto-700 - latin */ + +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 700; + src: url('../fonts/roboto-v15-latin-700.eot'); + /* IE9 Compat Modes */ + src: + local('Roboto Bold'), + local('Roboto-Bold'), + url('../fonts/roboto-v15-latin-700.eot?#iefix') format('embedded-opentype'), + /* IE6-IE8 */ url('../fonts/roboto-v15-latin-700.woff2') format('woff2'), + /* Super Modern Browsers */ url('../fonts/roboto-v15-latin-700.woff') format('woff'), + /* Modern Browsers */ url('../fonts/roboto-v15-latin-700.ttf') format('truetype'), + /* Safari, Android, iOS */ url('../fonts/roboto-v15-latin-700.svg#Roboto') format('svg'); + /* Legacy iOS */ +} + +h1 { + font-size: 26px; +} + +h2 { + font-size: 22px; +} + +h3 { + font-size: 20px; + font-weight: bold; +} + +h4, +h5 { + font-size: 18px; +} + +h6 { + font-size: 16px; +} + +a[href] { + cursor: pointer; +} + +/** + * Mobile navbar + */ + +.navbar { + min-height: 50px; +} + +.navbar-brand { + height: 50px; + font-size: 14px; + line-height: 20px; + padding: 15px; +} + +.navbar-static-top { + margin-bottom: 0; + height: 50px; +} + +/** + * Main container + */ + +.container-fluid { + overflow-y: hidden; + overflow-x: hidden; +} + +.container-fluid.main { + height: 100%; + padding: 0; +} + +.tab-content.overview { + margin-top: 50px; + margin-left: 15px; +} + +.container-fluid.modules, +.container-fluid.components, +.container-fluid.directives, +.container-fluid.classes, +.container-fluid.injectables, +.container-fluid.pipes, +.content.routes table { + margin-top: 25px; +} + +.container-fluid.modules { + width: 100%; + overflow-y: auto; +} + +.container-fluid.module { + padding: 0; + margin-top: 0; +} + +.container-fluid.module h3 a { + margin-left: 10px; + color: #333; +} + +.row.main { + height: 100%; + margin: 0; +} + +/** + * Copyright + */ + +.copyright { + margin: 0; + padding: 15px; + text-align: center; + display: flex; + flex-direction: column; + align-items: center; + z-index: 1; +} + +.copyright img { + width: 80px; + margin-top: 10px; +} + +.copyright a { + color: #009dff; + text-decoration: underline; +} + +/** + * Content + */ + +.content { + height: 100%; + overflow-y: auto; + -webkit-overflow-scrolling: touch; + width: calc(100% - 320px); + position: absolute; + top: 0; + left: 320px; + padding: 15px 30px; +} + +.content > h1:first-of-type { + margin-top: 15px; +} + +.content > h3:first-of-type { + margin-top: 5px; +} + +.content.readme h1:first-of-type { + margin-top: 0; +} + +.content table { + margin-top: 20px; +} + +.content-data { + display: flex; + flex-direction: column; + height: 100%; +} + +.content-data .tab-content { + flex: 1; +} + +.content-data .tab-pane { + height: 100%; +} + +.content-data .tab-pane.active { + opacity: 1; +} + +.content-data .exampleContainer { + height: 100%; + width: 100%; +} + +/** + * Icons + */ + +.glyphicon, +.icon { + margin-right: 10px; +} + +/** + * Menu + */ + +#book-search-input { + padding: 6px; + transition: top 0.5s ease; + background: #fff; + border-bottom: 1px solid rgba(0, 0, 0, 0.07); + border-top: 1px solid rgba(0, 0, 0, 0.07); + margin-bottom: 5px; + margin-top: -1px; +} + +#book-search-input input, +#book-search-input input:focus, +#book-search-input input:hover { + width: 100%; + background: 0 0; + border: 1px solid transparent; + box-shadow: none; + outline: 0; + line-height: 22px; + padding: 7px 7px; + color: inherit; +} + +.panel-body { + padding: 0px; +} + +.panel-group .panel-heading + .panel-collapse > .list-group, +.panel-group .panel-heading + .panel-collapse > .panel-body { + border-top: 0; +} + +.panel-body table tr td { + padding-left: 15px; +} + +.panel-body .table { + margin-bottom: 0px; +} + +.panel-group .panel:first-child { + border-top: 0; +} + +.menu { + background: #fafafa; + border-right: 1px solid #e7e7e7; + height: 100%; + padding: 0; + width: 320px; + overflow-y: auto; + -webkit-overflow-scrolling: touch; +} + +.menu ul.list { + list-style: none; + margin: 0; + padding: 0; +} + +.menu ul.list li a { + display: block; + padding: 10px 15px; + border-bottom: none; + color: #364149; + background: 0 0; + text-overflow: ellipsis; + text-decoration: none; + overflow: hidden; + white-space: nowrap; + position: relative; +} + +.menu ul.list li a.active { + color: #008cff; +} + +.menu ul.list li.divider { + height: 1px; + margin: 7px 0; + overflow: hidden; + background: rgba(0, 0, 0, 0.07); +} + +.menu ul.list li.chapter ul.links { + padding-left: 20px; +} + +.menu ul.list li.for-chapter2 { + padding-left: 0; +} + +.menu ul.list li.for-chapter3 { + padding-left: 20px; +} + +.menu ul.list li.for-chapter4 { + padding-left: 40px; +} + +.menu ul.list li.for-chapter5 { + padding-left: 60px; +} + +.menu ul.list li.chapter .simple { + padding: 10px 15px; + position: relative; +} + +.menu ul.list li.chapter .inner .simple { + padding-left: 35px; +} + +.menu ul.list li.chapter .inner ul.links { + padding-left: 40px; +} + +.menu ul.list li.chapter.additional .inner ul.links { + padding-left: 20px; +} + +.menu .panel-group { + width: 100%; + height: 100%; + overflow-y: auto; +} + +.menu .panel-default { + border-right: none; + border-left: none; + border-bottom: none; +} + +.menu .panel-group .panel-heading + .panel-collapse > .panel-body { + border-top: none; + overflow-y: auto; + max-height: 350px; +} + +.menu .panel-default:last-of-type { + border-bottom: 1px solid #ddd; +} + +.panel-group .panel + .panel { + margin-top: 0; +} + +.panel-group .panel { + z-index: 2; + position: relative; + border-radius: 0; + box-shadow: none; + border-left: 0; + border-right: 0; +} + +.menu a { + color: #3c3c3c; +} + +.xs-menu ul.list li:nth-child(2) { + margin: 0; + background: none; +} + +.menu ul.list li:nth-child(2) { + margin: 0; + background: none; +} + +.menu .title { + padding: 8px 0; +} + +.menu-toggler { + cursor: pointer; +} + +.menu-toggler .ion-ios-arrow-down, +.menu-toggler .ion-ios-arrow-up { + cursor: pointer; + padding: 5px 10px; + font-size: 16px; + position: absolute; + right: 0; + top: 7px; +} + +.overview .card-title .icon { + font-size: 50px; +} + +.overview .card-text a { + text-decoration: underline; + color: black; +} + +.overview .col-sm-3 { + width: 200px; +} + +.breadcrumb { + background: none; + padding-left: 0 !important; + margin-bottom: 10px; + font-size: 24px; + padding-top: 0; + list-style: none; +} + +ol.breadcrumb { + list-style-type: none !important; +} + +.breadcrumb a { + text-decoration: underline; + color: #333; +} + +.comment { + margin: 15px 0; +} + +.io-description { + margin: 10px 0; +} + +.io-file { + margin: 20px 0; +} + +.navbar .btn-menu { + position: absolute; + right: 0; + top: 0; + margin: 6px 10px; +} + +.content ul.nav { + padding-left: 0; +} + +.xs-menu { + height: calc(100% - 50px); + display: none; + width: 100%; + overflow-y: scroll; + z-index: 1; + top: 50px; + position: absolute; +} + +.xs-menu .copyright { + margin-top: 20px; + position: relative; +} + +.tab-source-code { + padding: 10px 0; +} + +pre { + padding: 12px 12px; + border: none; + background: #23241f; +} + +code { + background: none; + padding: 2px 0; +} + +@media (max-width: 767px) { + .container-fluid.main { + height: calc(100% - 50px); + } + + .content { + width: 100%; + left: 0; + position: relative; + } + + .menu ul.list li.title { + display: none; + } +} + +/** + * Search + */ + +.search-results { + display: none; + max-width: 800px; + margin: 0 auto; + padding: 20px 15px 40px 15px; +} + +.search-results .no-results { + display: none; +} + +.with-search .search-results { + display: block; +} + +.with-search .content-data { + display: none; +} + +.with-search .xs-menu { + height: 51px; +} + +.with-search .xs-menu nav { + display: none; +} + +.search-results.no-results .has-results { + display: none; +} + +.search-results.no-results .no-results { + display: block; +} + +.search-results .search-results-title { + text-transform: uppercase; + text-align: center; + font-weight: 200; + margin-bottom: 35px; + opacity: 0.6; +} + +.search-results ul.search-results-list { + list-style-type: none; + padding-left: 0; +} + +.search-results ul.search-results-list li { + margin-bottom: 1.5rem; + padding-bottom: 0.5rem; +} + +.search-results ul.search-results-list li p em { + background-color: rgba(255, 220, 0, 0.4); + font-style: normal; +} + +.search-results-item { + margin-bottom: 1rem !important; + margin-top: 1rem; + padding-bottom: 0 !important; +} + +.search-results-item a { + font-size: 18px; +} + +.search-results-group, +.search-results-group .search-results-list { + margin-bottom: 0 !important; +} + +.search-results-group h3 { + margin-top: 10px; +} + +.jsdoc-params { + list-style: square; + margin-top: 10px; + margin-bottom: 0 !important; +} + +.jsdoc-params li { + padding-bottom: 10px; +} + +.jsdoc-example-ul ul { + padding-left: 20px; +} + +example-url { + display: none; +} + +i { + font-style: italic; +} + +.coverage a { + color: #333; + text-decoration: underline; +} + +.coverage tr.low, +.coverage td.low { + background: rgba(216, 96, 75, 0.75); +} + +.coverage tr.medium, +.coverage td.medium { + background: rgba(218, 178, 38, 0.75); +} + +.coverage tr.good, +.coverage td.good { + background: rgba(143, 189, 8, 0.75); +} + +.coverage tr.very-good, +.coverage td.very-good { + background: rgba(77, 199, 31, 0.75); +} + +.coverage td.uncovered { + background: rgba(221, 221, 221, 0.75); +} + +.coverage-header { + background: #fafafa; +} + +thead.coverage-header > tr > td, +thead.coverage-header > tr > th { + border-bottom-width: 0; +} + +th[role='columnheader'].statements:not(.no-sort):after { + margin-left: 10px; +} + +.coverage-count { + color: grey; + font-size: 12px; + margin-left: 10px; + display: inline-block; + width: 50px; +} + +.coverage-badge { + background: #5d5d5d; + border-radius: 4px; + display: inline-block; + color: white; + padding: 4px; + padding-right: 0; + padding-left: 8px; +} + +.coverage-badge .count { + padding: 6px; + margin-left: 5px; + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; +} + +.coverage-badge .count.low { + background: #d8624c; +} + +.coverage-badge .count.medium { + background: #dab226; +} + +.coverage-badge .count.good { + background: #8fbd08; +} + +.coverage-badge .count.very-good { + background: #4dc71f; +} + +.content ol { + list-style-type: decimal; + margin-top: 0; + padding-left: 20px; + margin-bottom: 16px; +} + +.content ul { + list-style: disc; + margin-top: 0; + padding-left: 20px; + margin-bottom: 16px; +} + +.content ul.list-group { + padding-left: 0; +} + +.content ul.list-group li.list-group-item a { + display: inline-block; + max-width: 100%; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.content ul ul { + list-style-type: circle; +} + +.compodoc-table { + width: inherit; +} + +.compodoc-table thead { + font-weight: bold; +} + +.modifier { + background: #9a9a9a; + padding: 1px 5px; + color: white; + border-radius: 4px; +} + +.modifier:empty { + display: none; +} + +.modifier-icon { + color: #c7254e; +} + +.modifier-icon.method { + color: white; + background: #c7254e; + padding: 4px; + border-radius: 8px; + font-size: 10px; + margin-right: 2px; +} + +.modifier-icon.method.square { + border-radius: 4px; +} + +.modifier-icon.method.export { + display: none; +} + +.modifier-icon.method .ion-ios-radio-button-off, +.modifier-icon.method .ion-ios-square-outline { + display: none; +} + +.modifier-icon.method .ion-ios-lock { + margin-right: 0; +} + +.modifier-icon.ion-ios-reset { + margin-right: 0; +} + +/** + * Modules + */ + +.card-module { + min-height: 323px; +} + +/** + * Routes graph + */ + +.node text { + font-size: 12px; +} + +.node .icon { + font-size: 15px; + cursor: default; +} + +.node .icon.has-children { + cursor: pointer; +} + +path.link { + fill: none; + stroke: #9ecae1; + stroke-width: 1.5px; +} + +#body-routes a { + text-decoration: underline; +} + +#body-routes svg { + overflow: visible; +} + +/** + * Miscellaneous + */ + +.content.miscellaneous h2 { + margin-bottom: 20px; +} + +.content.miscellaneous h4 { + padding-top: 20px; +} + +/* highlight line */ + +.line-highlight { + background: linear-gradient(to right, hsla(0, 0%, 100%, 0.1) 70%, hsla(24, 20%, 50%, 0)); +} + +#tree-container { + width: 100%; + height: 100%; +} + +#tree { + position: relative; +} + +.tree-legend { + position: absolute; + bottom: 10px; + left: 10px; + border: 1px solid #ddd; + padding: 5px 10px; +} + +.tree-legend .title { + margin-bottom: 8px; +} + +.tree-legend .color { + width: 20px; + height: 12px; + display: inline-block; + margin-right: 5px; +} + +.tree-legend .htmlelement { + background: #97c2fc; +} + +.tree-legend .component { + background: #fb7e81; +} + +.tree-legend .directive { + background: #ff9800; +} + +#module-graph-svg { + width: 100%; + height: 250px; +} + +#module-graph-svg svg { + width: 100%; + height: 100%; +} + +.content ul.type-parameters { + margin-bottom: 5px; +} + +table.params { + width: 100%; + margin: 10px 0; + border-spacing: 0; + border: 0; + border-collapse: collapse; +} + +table.params thead { + background: #f5f5f5; + color: #525252; +} + +table.params td { + padding: 4px; + border: solid 1px #ddd; +} + +table.params td p { + margin: 0; +} + +.img-responsive { + display: inline-block; +} + +.index-table h6 { + margin-top: 5px; + margin-bottom: 5px; +} + +ul.index-list { + list-style: none; + padding: 0; + column-gap: 20px; + column-count: 3; + line-height: 25px; + margin-bottom: 0; +} + +.no-graph { + text-align: center; + height: 175px; + line-height: 175px; +} + +.name a { + display: none; + color: #6e6e6e; + margin-left: 5px; +} + +.name:hover a { + display: inline-block; +} + +.accessor b { + color: #808080; + margin-right: 8px; + font-weight: normal; +} + +.module-graph-container { + position: relative; +} + +.module-graph-container .size-buttons { + margin-top: 10px; +} + +.module-graph-fullscreen-btn { + position: absolute; + right: 5px; + top: 0; + cursor: pointer; +} + +/** + * Dependencies + */ + +.package-dependencies ul { + list-style: none; + margin: 0; +} + +.package-dependencies li { + margin: 5px 0; +} + +.deprecated { + color: #e73440; +} +.deprecated p { + margin-bottom: 0; +} +.deprecated-name, +.deprecated-name:hover { + text-decoration: line-through !important; +} +.deprecated-name::before { + text-decoration: none; + display: inline-block; +} + +/** + * Dark mode + */ + +.dark-mode-switch { + position: absolute; + top: 70px; + right: 15px; + display: inline-block; + width: 60px; + height: 34px; +} + +.dark-mode-switch input { + opacity: 0; + width: 0; + height: 0; +} + +.dark-mode-switch .slider { + position: absolute; + cursor: pointer; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: #5cc0ae80; + border-radius: 34px; + transition: 0.6s; +} + +.dark-mode-switch .slider:before { + position: absolute; + content: ''; + height: 26px; + width: 26px; + left: 4px; + bottom: 4px; + background-color: white; + border-radius: 50%; + transition: 0.4s; +} + +.dark-mode-switch input:checked + .slider { + background-color: #f1c40fb8; +} + +.dark-mode-switch.dark .slider-icon { + stroke: black; +} + +.dark-mode-switch input:checked + .slider:before { + transform: translateX(26px); +} + +.dark-mode-switch .slider-icon { + transform: rotate(250deg); + position: absolute; + right: 6px; + top: 7px; + stroke: white; +} + +@media (min-width: 768px) { + .dark-mode-switch { + top: 15px; + } +} + +ul.properties-list { + list-style: none; + padding-left: 0; +} +.properties-list li { + margin-bottom: 10px; +} + +.fade.show { + opacity: 1; +} + +.nav-tabs ::marker { + content: ''; +} + +.content { + --bs-link-color: #337ab7; +} + +.table-sm > :not(caption) > * > * { + padding: 0.5rem 0.5rem; +} + +.search-results a { + text-decoration: none; +} + +.module-graph-container .btn-default { + --bs-btn-border-color: #ccc; +} diff --git a/backend/documentation/styles/dark.css b/backend/documentation/styles/dark.css new file mode 100644 index 0000000..aeefc97 --- /dev/null +++ b/backend/documentation/styles/dark.css @@ -0,0 +1,121 @@ +body.dark { + background: #212121; + color: #fafafa; +} + +.dark code { + color: #e09393; +} + +.dark a, +.dark .menu ul.list li a.active { + color: #7fc9ff; +} + +.dark .menu { + background: #212121; + border-right: 1px solid #444; +} + +.dark .menu ul.list li a { + color: #fafafa; +} + +.dark .menu ul.list li.divider { + background: #444; +} + +.dark .xs-menu ul.list li:nth-child(2) { + margin: 0; + background: none; +} + +.dark .menu ul.list li:nth-child(2) { + margin: 0; + background: none; +} + +.dark #book-search-input { + background: #212121; + border-top: 1px solid #444; + border-bottom: 1px solid #444; + color: #fafafa; +} + +.dark .table.metadata > tbody > tr:hover { + color: #555; +} + +.dark .table-bordered { + border: 1px solid #444; +} + +.dark .table-bordered > tbody > tr > td, +.dark .table-bordered > tbody > tr > th, +.dark .table-bordered > tfoot > tr > td, +.dark .table-bordered > tfoot > tr > th, +.dark .table-bordered > thead > tr > td, +.dark .table-bordered > thead > tr > th { + border: 1px solid #444; +} + +.dark .coverage a, +.dark .coverage-count { + color: #fafafa; +} + +.dark .coverage-header { + color: black; +} + +.dark .routes svg text, +.dark .routes svg a { + fill: white; +} +.dark .routes svg rect { + fill: #212121 !important; +} + +.dark .navbar-default, +.dark .btn-default { + background-color: black; + border-color: #444; + color: #fafafa; +} + +.dark .navbar-default .navbar-brand { + color: #fafafa; +} + +.dark .overview .card, +.dark .modules .card { + background: #171717; + color: #fafafa; + border: 1px solid #444; +} +.dark .overview .card a { + color: #fafafa; +} + +.dark .modules .card-header { + background: none; + border-bottom: 1px solid #444; +} + +.dark .module .list-group-item { + background: none; + border: 1px solid #444; +} + +.dark .container-fluid.module h3 a { + color: #337ab7; +} + +.dark table.params thead { + background: #484848; + color: #fafafa; +} + +.dark .content table { + --bs-table-color: #fafafa; +} diff --git a/backend/documentation/styles/ionicons.min.css b/backend/documentation/styles/ionicons.min.css new file mode 100644 index 0000000..e50e1bb --- /dev/null +++ b/backend/documentation/styles/ionicons.min.css @@ -0,0 +1,11 @@ +/*! + Ionicons, v4.1.2 + Created by Ben Sperry for the Ionic Framework, http://ionicons.com/ + https://twitter.com/benjsperry https://twitter.com/ionicframework + MIT License: https://github.com/driftyco/ionicons + + Android-style icons originally built by Google’s + Material Design Icons: https://github.com/google/material-design-icons + used under CC BY http://creativecommons.org/licenses/by/4.0/ + Modified icons to fit ionicon’s grid from original. +*/@font-face{font-family:"Ionicons";src:url("../fonts/ionicons.eot?v=4.1.2");src:url("../fonts/ionicons.eot?v=4.1.2#iefix") format("embedded-opentype"),url("../fonts/ionicons.woff2?v=4.1.2") format("woff2"),url("../fonts/ionicons.woff?v=4.1.2") format("woff"),url("../fonts/ionicons.ttf?v=4.1.2") format("truetype"),url("../fonts/ionicons.svg?v=4.1.2#Ionicons") format("svg");font-weight:normal;font-style:normal}.ion,.ionicons,.ion-ios-add:before,.ion-ios-add-circle:before,.ion-ios-add-circle-outline:before,.ion-ios-airplane:before,.ion-ios-alarm:before,.ion-ios-albums:before,.ion-ios-alert:before,.ion-ios-american-football:before,.ion-ios-analytics:before,.ion-ios-aperture:before,.ion-ios-apps:before,.ion-ios-appstore:before,.ion-ios-archive:before,.ion-ios-arrow-back:before,.ion-ios-arrow-down:before,.ion-ios-arrow-dropdown:before,.ion-ios-arrow-dropdown-circle:before,.ion-ios-arrow-dropleft:before,.ion-ios-arrow-dropleft-circle:before,.ion-ios-arrow-dropright:before,.ion-ios-arrow-dropright-circle:before,.ion-ios-arrow-dropup:before,.ion-ios-arrow-dropup-circle:before,.ion-ios-arrow-forward:before,.ion-ios-arrow-round-back:before,.ion-ios-arrow-round-down:before,.ion-ios-arrow-round-forward:before,.ion-ios-arrow-round-up:before,.ion-ios-arrow-up:before,.ion-ios-at:before,.ion-ios-attach:before,.ion-ios-backspace:before,.ion-ios-barcode:before,.ion-ios-baseball:before,.ion-ios-basket:before,.ion-ios-basketball:before,.ion-ios-battery-charging:before,.ion-ios-battery-dead:before,.ion-ios-battery-full:before,.ion-ios-beaker:before,.ion-ios-bed:before,.ion-ios-beer:before,.ion-ios-bicycle:before,.ion-ios-bluetooth:before,.ion-ios-boat:before,.ion-ios-body:before,.ion-ios-bonfire:before,.ion-ios-book:before,.ion-ios-bookmark:before,.ion-ios-bookmarks:before,.ion-ios-bowtie:before,.ion-ios-briefcase:before,.ion-ios-browsers:before,.ion-ios-brush:before,.ion-ios-bug:before,.ion-ios-build:before,.ion-ios-bulb:before,.ion-ios-bus:before,.ion-ios-business:before,.ion-ios-cafe:before,.ion-ios-calculator:before,.ion-ios-calendar:before,.ion-ios-call:before,.ion-ios-camera:before,.ion-ios-car:before,.ion-ios-card:before,.ion-ios-cart:before,.ion-ios-cash:before,.ion-ios-cellular:before,.ion-ios-chatboxes:before,.ion-ios-chatbubbles:before,.ion-ios-checkbox:before,.ion-ios-checkbox-outline:before,.ion-ios-checkmark:before,.ion-ios-checkmark-circle:before,.ion-ios-checkmark-circle-outline:before,.ion-ios-clipboard:before,.ion-ios-clock:before,.ion-ios-close:before,.ion-ios-close-circle:before,.ion-ios-close-circle-outline:before,.ion-ios-cloud:before,.ion-ios-cloud-circle:before,.ion-ios-cloud-done:before,.ion-ios-cloud-download:before,.ion-ios-cloud-outline:before,.ion-ios-cloud-upload:before,.ion-ios-cloudy:before,.ion-ios-cloudy-night:before,.ion-ios-code:before,.ion-ios-code-download:before,.ion-ios-code-working:before,.ion-ios-cog:before,.ion-ios-color-fill:before,.ion-ios-color-filter:before,.ion-ios-color-palette:before,.ion-ios-color-wand:before,.ion-ios-compass:before,.ion-ios-construct:before,.ion-ios-contact:before,.ion-ios-contacts:before,.ion-ios-contract:before,.ion-ios-contrast:before,.ion-ios-copy:before,.ion-ios-create:before,.ion-ios-crop:before,.ion-ios-cube:before,.ion-ios-cut:before,.ion-ios-desktop:before,.ion-ios-disc:before,.ion-ios-document:before,.ion-ios-done-all:before,.ion-ios-download:before,.ion-ios-easel:before,.ion-ios-egg:before,.ion-ios-exit:before,.ion-ios-expand:before,.ion-ios-eye:before,.ion-ios-eye-off:before,.ion-ios-fastforward:before,.ion-ios-female:before,.ion-ios-filing:before,.ion-ios-film:before,.ion-ios-finger-print:before,.ion-ios-fitness:before,.ion-ios-flag:before,.ion-ios-flame:before,.ion-ios-flash:before,.ion-ios-flash-off:before,.ion-ios-flashlight:before,.ion-ios-flask:before,.ion-ios-flower:before,.ion-ios-folder:before,.ion-ios-folder-open:before,.ion-ios-football:before,.ion-ios-funnel:before,.ion-ios-gift:before,.ion-ios-git-branch:before,.ion-ios-git-commit:before,.ion-ios-git-compare:before,.ion-ios-git-merge:before,.ion-ios-git-network:before,.ion-ios-git-pull-request:before,.ion-ios-glasses:before,.ion-ios-globe:before,.ion-ios-grid:before,.ion-ios-hammer:before,.ion-ios-hand:before,.ion-ios-happy:before,.ion-ios-headset:before,.ion-ios-heart:before,.ion-ios-heart-dislike:before,.ion-ios-heart-empty:before,.ion-ios-heart-half:before,.ion-ios-help:before,.ion-ios-help-buoy:before,.ion-ios-help-circle:before,.ion-ios-help-circle-outline:before,.ion-ios-home:before,.ion-ios-hourglass:before,.ion-ios-ice-cream:before,.ion-ios-image:before,.ion-ios-images:before,.ion-ios-infinite:before,.ion-ios-information:before,.ion-ios-information-circle:before,.ion-ios-information-circle-outline:before,.ion-ios-jet:before,.ion-ios-journal:before,.ion-ios-key:before,.ion-ios-keypad:before,.ion-ios-laptop:before,.ion-ios-leaf:before,.ion-ios-link:before,.ion-ios-list:before,.ion-ios-list-box:before,.ion-ios-locate:before,.ion-ios-lock:before,.ion-ios-log-in:before,.ion-ios-log-out:before,.ion-ios-magnet:before,.ion-ios-mail:before,.ion-ios-mail-open:before,.ion-ios-mail-unread:before,.ion-ios-male:before,.ion-ios-man:before,.ion-ios-map:before,.ion-ios-medal:before,.ion-ios-medical:before,.ion-ios-medkit:before,.ion-ios-megaphone:before,.ion-ios-menu:before,.ion-ios-mic:before,.ion-ios-mic-off:before,.ion-ios-microphone:before,.ion-ios-moon:before,.ion-ios-more:before,.ion-ios-move:before,.ion-ios-musical-note:before,.ion-ios-musical-notes:before,.ion-ios-navigate:before,.ion-ios-notifications:before,.ion-ios-notifications-off:before,.ion-ios-notifications-outline:before,.ion-ios-nuclear:before,.ion-ios-nutrition:before,.ion-ios-open:before,.ion-ios-options:before,.ion-ios-outlet:before,.ion-ios-paper:before,.ion-ios-paper-plane:before,.ion-ios-partly-sunny:before,.ion-ios-pause:before,.ion-ios-paw:before,.ion-ios-people:before,.ion-ios-person:before,.ion-ios-person-add:before,.ion-ios-phone-landscape:before,.ion-ios-phone-portrait:before,.ion-ios-photos:before,.ion-ios-pie:before,.ion-ios-pin:before,.ion-ios-pint:before,.ion-ios-pizza:before,.ion-ios-planet:before,.ion-ios-play:before,.ion-ios-play-circle:before,.ion-ios-podium:before,.ion-ios-power:before,.ion-ios-pricetag:before,.ion-ios-pricetags:before,.ion-ios-print:before,.ion-ios-pulse:before,.ion-ios-qr-scanner:before,.ion-ios-quote:before,.ion-ios-radio:before,.ion-ios-radio-button-off:before,.ion-ios-radio-button-on:before,.ion-ios-rainy:before,.ion-ios-recording:before,.ion-ios-redo:before,.ion-ios-refresh:before,.ion-ios-refresh-circle:before,.ion-ios-remove:before,.ion-ios-remove-circle:before,.ion-ios-remove-circle-outline:before,.ion-ios-reorder:before,.ion-ios-repeat:before,.ion-ios-resize:before,.ion-ios-restaurant:before,.ion-ios-return-left:before,.ion-ios-return-right:before,.ion-ios-reverse-camera:before,.ion-ios-rewind:before,.ion-ios-ribbon:before,.ion-ios-rocket:before,.ion-ios-rose:before,.ion-ios-sad:before,.ion-ios-save:before,.ion-ios-school:before,.ion-ios-search:before,.ion-ios-send:before,.ion-ios-settings:before,.ion-ios-share:before,.ion-ios-share-alt:before,.ion-ios-shirt:before,.ion-ios-shuffle:before,.ion-ios-skip-backward:before,.ion-ios-skip-forward:before,.ion-ios-snow:before,.ion-ios-speedometer:before,.ion-ios-square:before,.ion-ios-square-outline:before,.ion-ios-star:before,.ion-ios-star-half:before,.ion-ios-star-outline:before,.ion-ios-stats:before,.ion-ios-stopwatch:before,.ion-ios-subway:before,.ion-ios-sunny:before,.ion-ios-swap:before,.ion-ios-switch:before,.ion-ios-sync:before,.ion-ios-tablet-landscape:before,.ion-ios-tablet-portrait:before,.ion-ios-tennisball:before,.ion-ios-text:before,.ion-ios-thermometer:before,.ion-ios-thumbs-down:before,.ion-ios-thumbs-up:before,.ion-ios-thunderstorm:before,.ion-ios-time:before,.ion-ios-timer:before,.ion-ios-today:before,.ion-ios-train:before,.ion-ios-transgender:before,.ion-ios-trash:before,.ion-ios-trending-down:before,.ion-ios-trending-up:before,.ion-ios-trophy:before,.ion-ios-tv:before,.ion-ios-umbrella:before,.ion-ios-undo:before,.ion-ios-unlock:before,.ion-ios-videocam:before,.ion-ios-volume-high:before,.ion-ios-volume-low:before,.ion-ios-volume-mute:before,.ion-ios-volume-off:before,.ion-ios-walk:before,.ion-ios-wallet:before,.ion-ios-warning:before,.ion-ios-watch:before,.ion-ios-water:before,.ion-ios-wifi:before,.ion-ios-wine:before,.ion-ios-woman:before,.ion-logo-android:before,.ion-logo-angular:before,.ion-logo-apple:before,.ion-logo-bitbucket:before,.ion-logo-bitcoin:before,.ion-logo-buffer:before,.ion-logo-chrome:before,.ion-logo-closed-captioning:before,.ion-logo-codepen:before,.ion-logo-css3:before,.ion-logo-designernews:before,.ion-logo-dribbble:before,.ion-logo-dropbox:before,.ion-logo-euro:before,.ion-logo-facebook:before,.ion-logo-flickr:before,.ion-logo-foursquare:before,.ion-logo-freebsd-devil:before,.ion-logo-game-controller-a:before,.ion-logo-game-controller-b:before,.ion-logo-github:before,.ion-logo-google:before,.ion-logo-googleplus:before,.ion-logo-hackernews:before,.ion-logo-html5:before,.ion-logo-instagram:before,.ion-logo-ionic:before,.ion-logo-ionitron:before,.ion-logo-javascript:before,.ion-logo-linkedin:before,.ion-logo-markdown:before,.ion-logo-model-s:before,.ion-logo-no-smoking:before,.ion-logo-nodejs:before,.ion-logo-npm:before,.ion-logo-octocat:before,.ion-logo-pinterest:before,.ion-logo-playstation:before,.ion-logo-polymer:before,.ion-logo-python:before,.ion-logo-reddit:before,.ion-logo-rss:before,.ion-logo-sass:before,.ion-logo-skype:before,.ion-logo-slack:before,.ion-logo-snapchat:before,.ion-logo-steam:before,.ion-logo-tumblr:before,.ion-logo-tux:before,.ion-logo-twitch:before,.ion-logo-twitter:before,.ion-logo-usd:before,.ion-logo-vimeo:before,.ion-logo-vk:before,.ion-logo-whatsapp:before,.ion-logo-windows:before,.ion-logo-wordpress:before,.ion-logo-xbox:before,.ion-logo-xing:before,.ion-logo-yahoo:before,.ion-logo-yen:before,.ion-logo-youtube:before,.ion-md-add:before,.ion-md-add-circle:before,.ion-md-add-circle-outline:before,.ion-md-airplane:before,.ion-md-alarm:before,.ion-md-albums:before,.ion-md-alert:before,.ion-md-american-football:before,.ion-md-analytics:before,.ion-md-aperture:before,.ion-md-apps:before,.ion-md-appstore:before,.ion-md-archive:before,.ion-md-arrow-back:before,.ion-md-arrow-down:before,.ion-md-arrow-dropdown:before,.ion-md-arrow-dropdown-circle:before,.ion-md-arrow-dropleft:before,.ion-md-arrow-dropleft-circle:before,.ion-md-arrow-dropright:before,.ion-md-arrow-dropright-circle:before,.ion-md-arrow-dropup:before,.ion-md-arrow-dropup-circle:before,.ion-md-arrow-forward:before,.ion-md-arrow-round-back:before,.ion-md-arrow-round-down:before,.ion-md-arrow-round-forward:before,.ion-md-arrow-round-up:before,.ion-md-arrow-up:before,.ion-md-at:before,.ion-md-attach:before,.ion-md-backspace:before,.ion-md-barcode:before,.ion-md-baseball:before,.ion-md-basket:before,.ion-md-basketball:before,.ion-md-battery-charging:before,.ion-md-battery-dead:before,.ion-md-battery-full:before,.ion-md-beaker:before,.ion-md-bed:before,.ion-md-beer:before,.ion-md-bicycle:before,.ion-md-bluetooth:before,.ion-md-boat:before,.ion-md-body:before,.ion-md-bonfire:before,.ion-md-book:before,.ion-md-bookmark:before,.ion-md-bookmarks:before,.ion-md-bowtie:before,.ion-md-briefcase:before,.ion-md-browsers:before,.ion-md-brush:before,.ion-md-bug:before,.ion-md-build:before,.ion-md-bulb:before,.ion-md-bus:before,.ion-md-business:before,.ion-md-cafe:before,.ion-md-calculator:before,.ion-md-calendar:before,.ion-md-call:before,.ion-md-camera:before,.ion-md-car:before,.ion-md-card:before,.ion-md-cart:before,.ion-md-cash:before,.ion-md-cellular:before,.ion-md-chatboxes:before,.ion-md-chatbubbles:before,.ion-md-checkbox:before,.ion-md-checkbox-outline:before,.ion-md-checkmark:before,.ion-md-checkmark-circle:before,.ion-md-checkmark-circle-outline:before,.ion-md-clipboard:before,.ion-md-clock:before,.ion-md-close:before,.ion-md-close-circle:before,.ion-md-close-circle-outline:before,.ion-md-cloud:before,.ion-md-cloud-circle:before,.ion-md-cloud-done:before,.ion-md-cloud-download:before,.ion-md-cloud-outline:before,.ion-md-cloud-upload:before,.ion-md-cloudy:before,.ion-md-cloudy-night:before,.ion-md-code:before,.ion-md-code-download:before,.ion-md-code-working:before,.ion-md-cog:before,.ion-md-color-fill:before,.ion-md-color-filter:before,.ion-md-color-palette:before,.ion-md-color-wand:before,.ion-md-compass:before,.ion-md-construct:before,.ion-md-contact:before,.ion-md-contacts:before,.ion-md-contract:before,.ion-md-contrast:before,.ion-md-copy:before,.ion-md-create:before,.ion-md-crop:before,.ion-md-cube:before,.ion-md-cut:before,.ion-md-desktop:before,.ion-md-disc:before,.ion-md-document:before,.ion-md-done-all:before,.ion-md-download:before,.ion-md-easel:before,.ion-md-egg:before,.ion-md-exit:before,.ion-md-expand:before,.ion-md-eye:before,.ion-md-eye-off:before,.ion-md-fastforward:before,.ion-md-female:before,.ion-md-filing:before,.ion-md-film:before,.ion-md-finger-print:before,.ion-md-fitness:before,.ion-md-flag:before,.ion-md-flame:before,.ion-md-flash:before,.ion-md-flash-off:before,.ion-md-flashlight:before,.ion-md-flask:before,.ion-md-flower:before,.ion-md-folder:before,.ion-md-folder-open:before,.ion-md-football:before,.ion-md-funnel:before,.ion-md-gift:before,.ion-md-git-branch:before,.ion-md-git-commit:before,.ion-md-git-compare:before,.ion-md-git-merge:before,.ion-md-git-network:before,.ion-md-git-pull-request:before,.ion-md-glasses:before,.ion-md-globe:before,.ion-md-grid:before,.ion-md-hammer:before,.ion-md-hand:before,.ion-md-happy:before,.ion-md-headset:before,.ion-md-heart:before,.ion-md-heart-dislike:before,.ion-md-heart-empty:before,.ion-md-heart-half:before,.ion-md-help:before,.ion-md-help-buoy:before,.ion-md-help-circle:before,.ion-md-help-circle-outline:before,.ion-md-home:before,.ion-md-hourglass:before,.ion-md-ice-cream:before,.ion-md-image:before,.ion-md-images:before,.ion-md-infinite:before,.ion-md-information:before,.ion-md-information-circle:before,.ion-md-information-circle-outline:before,.ion-md-jet:before,.ion-md-journal:before,.ion-md-key:before,.ion-md-keypad:before,.ion-md-laptop:before,.ion-md-leaf:before,.ion-md-link:before,.ion-md-list:before,.ion-md-list-box:before,.ion-md-locate:before,.ion-md-lock:before,.ion-md-log-in:before,.ion-md-log-out:before,.ion-md-magnet:before,.ion-md-mail:before,.ion-md-mail-open:before,.ion-md-mail-unread:before,.ion-md-male:before,.ion-md-man:before,.ion-md-map:before,.ion-md-medal:before,.ion-md-medical:before,.ion-md-medkit:before,.ion-md-megaphone:before,.ion-md-menu:before,.ion-md-mic:before,.ion-md-mic-off:before,.ion-md-microphone:before,.ion-md-moon:before,.ion-md-more:before,.ion-md-move:before,.ion-md-musical-note:before,.ion-md-musical-notes:before,.ion-md-navigate:before,.ion-md-notifications:before,.ion-md-notifications-off:before,.ion-md-notifications-outline:before,.ion-md-nuclear:before,.ion-md-nutrition:before,.ion-md-open:before,.ion-md-options:before,.ion-md-outlet:before,.ion-md-paper:before,.ion-md-paper-plane:before,.ion-md-partly-sunny:before,.ion-md-pause:before,.ion-md-paw:before,.ion-md-people:before,.ion-md-person:before,.ion-md-person-add:before,.ion-md-phone-landscape:before,.ion-md-phone-portrait:before,.ion-md-photos:before,.ion-md-pie:before,.ion-md-pin:before,.ion-md-pint:before,.ion-md-pizza:before,.ion-md-planet:before,.ion-md-play:before,.ion-md-play-circle:before,.ion-md-podium:before,.ion-md-power:before,.ion-md-pricetag:before,.ion-md-pricetags:before,.ion-md-print:before,.ion-md-pulse:before,.ion-md-qr-scanner:before,.ion-md-quote:before,.ion-md-radio:before,.ion-md-radio-button-off:before,.ion-md-radio-button-on:before,.ion-md-rainy:before,.ion-md-recording:before,.ion-md-redo:before,.ion-md-refresh:before,.ion-md-refresh-circle:before,.ion-md-remove:before,.ion-md-remove-circle:before,.ion-md-remove-circle-outline:before,.ion-md-reorder:before,.ion-md-repeat:before,.ion-md-resize:before,.ion-md-restaurant:before,.ion-md-return-left:before,.ion-md-return-right:before,.ion-md-reverse-camera:before,.ion-md-rewind:before,.ion-md-ribbon:before,.ion-md-rocket:before,.ion-md-rose:before,.ion-md-sad:before,.ion-md-save:before,.ion-md-school:before,.ion-md-search:before,.ion-md-send:before,.ion-md-settings:before,.ion-md-share:before,.ion-md-share-alt:before,.ion-md-shirt:before,.ion-md-shuffle:before,.ion-md-skip-backward:before,.ion-md-skip-forward:before,.ion-md-snow:before,.ion-md-speedometer:before,.ion-md-square:before,.ion-md-square-outline:before,.ion-md-star:before,.ion-md-star-half:before,.ion-md-star-outline:before,.ion-md-stats:before,.ion-md-stopwatch:before,.ion-md-subway:before,.ion-md-sunny:before,.ion-md-swap:before,.ion-md-switch:before,.ion-md-sync:before,.ion-md-tablet-landscape:before,.ion-md-tablet-portrait:before,.ion-md-tennisball:before,.ion-md-text:before,.ion-md-thermometer:before,.ion-md-thumbs-down:before,.ion-md-thumbs-up:before,.ion-md-thunderstorm:before,.ion-md-time:before,.ion-md-timer:before,.ion-md-today:before,.ion-md-train:before,.ion-md-transgender:before,.ion-md-trash:before,.ion-md-trending-down:before,.ion-md-trending-up:before,.ion-md-trophy:before,.ion-md-tv:before,.ion-md-umbrella:before,.ion-md-undo:before,.ion-md-unlock:before,.ion-md-videocam:before,.ion-md-volume-high:before,.ion-md-volume-low:before,.ion-md-volume-mute:before,.ion-md-volume-off:before,.ion-md-walk:before,.ion-md-wallet:before,.ion-md-warning:before,.ion-md-watch:before,.ion-md-water:before,.ion-md-wifi:before,.ion-md-wine:before,.ion-md-woman:before{display:inline-block;font-family:"Ionicons";speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;text-rendering:auto;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ion-ios-add:before{content:"\f102"}.ion-ios-add-circle:before{content:"\f101"}.ion-ios-add-circle-outline:before{content:"\f100"}.ion-ios-airplane:before{content:"\f137"}.ion-ios-alarm:before{content:"\f3c8"}.ion-ios-albums:before{content:"\f3ca"}.ion-ios-alert:before{content:"\f104"}.ion-ios-american-football:before{content:"\f106"}.ion-ios-analytics:before{content:"\f3ce"}.ion-ios-aperture:before{content:"\f108"}.ion-ios-apps:before{content:"\f10a"}.ion-ios-appstore:before{content:"\f10c"}.ion-ios-archive:before{content:"\f10e"}.ion-ios-arrow-back:before{content:"\f3cf"}.ion-ios-arrow-down:before{content:"\f3d0"}.ion-ios-arrow-dropdown:before{content:"\f110"}.ion-ios-arrow-dropdown-circle:before{content:"\f125"}.ion-ios-arrow-dropleft:before{content:"\f112"}.ion-ios-arrow-dropleft-circle:before{content:"\f129"}.ion-ios-arrow-dropright:before{content:"\f114"}.ion-ios-arrow-dropright-circle:before{content:"\f12b"}.ion-ios-arrow-dropup:before{content:"\f116"}.ion-ios-arrow-dropup-circle:before{content:"\f12d"}.ion-ios-arrow-forward:before{content:"\f3d1"}.ion-ios-arrow-round-back:before{content:"\f117"}.ion-ios-arrow-round-down:before{content:"\f118"}.ion-ios-arrow-round-forward:before{content:"\f119"}.ion-ios-arrow-round-up:before{content:"\f11a"}.ion-ios-arrow-up:before{content:"\f3d8"}.ion-ios-at:before{content:"\f3da"}.ion-ios-attach:before{content:"\f11b"}.ion-ios-backspace:before{content:"\f11d"}.ion-ios-barcode:before{content:"\f3dc"}.ion-ios-baseball:before{content:"\f3de"}.ion-ios-basket:before{content:"\f11f"}.ion-ios-basketball:before{content:"\f3e0"}.ion-ios-battery-charging:before{content:"\f120"}.ion-ios-battery-dead:before{content:"\f121"}.ion-ios-battery-full:before{content:"\f122"}.ion-ios-beaker:before{content:"\f124"}.ion-ios-bed:before{content:"\f139"}.ion-ios-beer:before{content:"\f126"}.ion-ios-bicycle:before{content:"\f127"}.ion-ios-bluetooth:before{content:"\f128"}.ion-ios-boat:before{content:"\f12a"}.ion-ios-body:before{content:"\f3e4"}.ion-ios-bonfire:before{content:"\f12c"}.ion-ios-book:before{content:"\f3e8"}.ion-ios-bookmark:before{content:"\f12e"}.ion-ios-bookmarks:before{content:"\f3ea"}.ion-ios-bowtie:before{content:"\f130"}.ion-ios-briefcase:before{content:"\f3ee"}.ion-ios-browsers:before{content:"\f3f0"}.ion-ios-brush:before{content:"\f132"}.ion-ios-bug:before{content:"\f134"}.ion-ios-build:before{content:"\f136"}.ion-ios-bulb:before{content:"\f138"}.ion-ios-bus:before{content:"\f13a"}.ion-ios-business:before{content:"\f1a3"}.ion-ios-cafe:before{content:"\f13c"}.ion-ios-calculator:before{content:"\f3f2"}.ion-ios-calendar:before{content:"\f3f4"}.ion-ios-call:before{content:"\f13e"}.ion-ios-camera:before{content:"\f3f6"}.ion-ios-car:before{content:"\f140"}.ion-ios-card:before{content:"\f142"}.ion-ios-cart:before{content:"\f3f8"}.ion-ios-cash:before{content:"\f144"}.ion-ios-cellular:before{content:"\f13d"}.ion-ios-chatboxes:before{content:"\f3fa"}.ion-ios-chatbubbles:before{content:"\f146"}.ion-ios-checkbox:before{content:"\f148"}.ion-ios-checkbox-outline:before{content:"\f147"}.ion-ios-checkmark:before{content:"\f3ff"}.ion-ios-checkmark-circle:before{content:"\f14a"}.ion-ios-checkmark-circle-outline:before{content:"\f149"}.ion-ios-clipboard:before{content:"\f14c"}.ion-ios-clock:before{content:"\f403"}.ion-ios-close:before{content:"\f406"}.ion-ios-close-circle:before{content:"\f14e"}.ion-ios-close-circle-outline:before{content:"\f14d"}.ion-ios-cloud:before{content:"\f40c"}.ion-ios-cloud-circle:before{content:"\f152"}.ion-ios-cloud-done:before{content:"\f154"}.ion-ios-cloud-download:before{content:"\f408"}.ion-ios-cloud-outline:before{content:"\f409"}.ion-ios-cloud-upload:before{content:"\f40b"}.ion-ios-cloudy:before{content:"\f410"}.ion-ios-cloudy-night:before{content:"\f40e"}.ion-ios-code:before{content:"\f157"}.ion-ios-code-download:before{content:"\f155"}.ion-ios-code-working:before{content:"\f156"}.ion-ios-cog:before{content:"\f412"}.ion-ios-color-fill:before{content:"\f159"}.ion-ios-color-filter:before{content:"\f414"}.ion-ios-color-palette:before{content:"\f15b"}.ion-ios-color-wand:before{content:"\f416"}.ion-ios-compass:before{content:"\f15d"}.ion-ios-construct:before{content:"\f15f"}.ion-ios-contact:before{content:"\f41a"}.ion-ios-contacts:before{content:"\f161"}.ion-ios-contract:before{content:"\f162"}.ion-ios-contrast:before{content:"\f163"}.ion-ios-copy:before{content:"\f41c"}.ion-ios-create:before{content:"\f165"}.ion-ios-crop:before{content:"\f41e"}.ion-ios-cube:before{content:"\f168"}.ion-ios-cut:before{content:"\f16a"}.ion-ios-desktop:before{content:"\f16c"}.ion-ios-disc:before{content:"\f16e"}.ion-ios-document:before{content:"\f170"}.ion-ios-done-all:before{content:"\f171"}.ion-ios-download:before{content:"\f420"}.ion-ios-easel:before{content:"\f173"}.ion-ios-egg:before{content:"\f175"}.ion-ios-exit:before{content:"\f177"}.ion-ios-expand:before{content:"\f178"}.ion-ios-eye:before{content:"\f425"}.ion-ios-eye-off:before{content:"\f17a"}.ion-ios-fastforward:before{content:"\f427"}.ion-ios-female:before{content:"\f17b"}.ion-ios-filing:before{content:"\f429"}.ion-ios-film:before{content:"\f42b"}.ion-ios-finger-print:before{content:"\f17c"}.ion-ios-fitness:before{content:"\f1ab"}.ion-ios-flag:before{content:"\f42d"}.ion-ios-flame:before{content:"\f42f"}.ion-ios-flash:before{content:"\f17e"}.ion-ios-flash-off:before{content:"\f12f"}.ion-ios-flashlight:before{content:"\f141"}.ion-ios-flask:before{content:"\f431"}.ion-ios-flower:before{content:"\f433"}.ion-ios-folder:before{content:"\f435"}.ion-ios-folder-open:before{content:"\f180"}.ion-ios-football:before{content:"\f437"}.ion-ios-funnel:before{content:"\f182"}.ion-ios-gift:before{content:"\f191"}.ion-ios-git-branch:before{content:"\f183"}.ion-ios-git-commit:before{content:"\f184"}.ion-ios-git-compare:before{content:"\f185"}.ion-ios-git-merge:before{content:"\f186"}.ion-ios-git-network:before{content:"\f187"}.ion-ios-git-pull-request:before{content:"\f188"}.ion-ios-glasses:before{content:"\f43f"}.ion-ios-globe:before{content:"\f18a"}.ion-ios-grid:before{content:"\f18c"}.ion-ios-hammer:before{content:"\f18e"}.ion-ios-hand:before{content:"\f190"}.ion-ios-happy:before{content:"\f192"}.ion-ios-headset:before{content:"\f194"}.ion-ios-heart:before{content:"\f443"}.ion-ios-heart-dislike:before{content:"\f13f"}.ion-ios-heart-empty:before{content:"\f19b"}.ion-ios-heart-half:before{content:"\f19d"}.ion-ios-help:before{content:"\f446"}.ion-ios-help-buoy:before{content:"\f196"}.ion-ios-help-circle:before{content:"\f198"}.ion-ios-help-circle-outline:before{content:"\f197"}.ion-ios-home:before{content:"\f448"}.ion-ios-hourglass:before{content:"\f103"}.ion-ios-ice-cream:before{content:"\f19a"}.ion-ios-image:before{content:"\f19c"}.ion-ios-images:before{content:"\f19e"}.ion-ios-infinite:before{content:"\f44a"}.ion-ios-information:before{content:"\f44d"}.ion-ios-information-circle:before{content:"\f1a0"}.ion-ios-information-circle-outline:before{content:"\f19f"}.ion-ios-jet:before{content:"\f1a5"}.ion-ios-journal:before{content:"\f189"}.ion-ios-key:before{content:"\f1a7"}.ion-ios-keypad:before{content:"\f450"}.ion-ios-laptop:before{content:"\f1a8"}.ion-ios-leaf:before{content:"\f1aa"}.ion-ios-link:before{content:"\f22a"}.ion-ios-list:before{content:"\f454"}.ion-ios-list-box:before{content:"\f143"}.ion-ios-locate:before{content:"\f1ae"}.ion-ios-lock:before{content:"\f1b0"}.ion-ios-log-in:before{content:"\f1b1"}.ion-ios-log-out:before{content:"\f1b2"}.ion-ios-magnet:before{content:"\f1b4"}.ion-ios-mail:before{content:"\f1b8"}.ion-ios-mail-open:before{content:"\f1b6"}.ion-ios-mail-unread:before{content:"\f145"}.ion-ios-male:before{content:"\f1b9"}.ion-ios-man:before{content:"\f1bb"}.ion-ios-map:before{content:"\f1bd"}.ion-ios-medal:before{content:"\f1bf"}.ion-ios-medical:before{content:"\f45c"}.ion-ios-medkit:before{content:"\f45e"}.ion-ios-megaphone:before{content:"\f1c1"}.ion-ios-menu:before{content:"\f1c3"}.ion-ios-mic:before{content:"\f461"}.ion-ios-mic-off:before{content:"\f45f"}.ion-ios-microphone:before{content:"\f1c6"}.ion-ios-moon:before{content:"\f468"}.ion-ios-more:before{content:"\f1c8"}.ion-ios-move:before{content:"\f1cb"}.ion-ios-musical-note:before{content:"\f46b"}.ion-ios-musical-notes:before{content:"\f46c"}.ion-ios-navigate:before{content:"\f46e"}.ion-ios-notifications:before{content:"\f1d3"}.ion-ios-notifications-off:before{content:"\f1d1"}.ion-ios-notifications-outline:before{content:"\f133"}.ion-ios-nuclear:before{content:"\f1d5"}.ion-ios-nutrition:before{content:"\f470"}.ion-ios-open:before{content:"\f1d7"}.ion-ios-options:before{content:"\f1d9"}.ion-ios-outlet:before{content:"\f1db"}.ion-ios-paper:before{content:"\f472"}.ion-ios-paper-plane:before{content:"\f1dd"}.ion-ios-partly-sunny:before{content:"\f1df"}.ion-ios-pause:before{content:"\f478"}.ion-ios-paw:before{content:"\f47a"}.ion-ios-people:before{content:"\f47c"}.ion-ios-person:before{content:"\f47e"}.ion-ios-person-add:before{content:"\f1e1"}.ion-ios-phone-landscape:before{content:"\f1e2"}.ion-ios-phone-portrait:before{content:"\f1e3"}.ion-ios-photos:before{content:"\f482"}.ion-ios-pie:before{content:"\f484"}.ion-ios-pin:before{content:"\f1e5"}.ion-ios-pint:before{content:"\f486"}.ion-ios-pizza:before{content:"\f1e7"}.ion-ios-planet:before{content:"\f1eb"}.ion-ios-play:before{content:"\f488"}.ion-ios-play-circle:before{content:"\f113"}.ion-ios-podium:before{content:"\f1ed"}.ion-ios-power:before{content:"\f1ef"}.ion-ios-pricetag:before{content:"\f48d"}.ion-ios-pricetags:before{content:"\f48f"}.ion-ios-print:before{content:"\f1f1"}.ion-ios-pulse:before{content:"\f493"}.ion-ios-qr-scanner:before{content:"\f1f3"}.ion-ios-quote:before{content:"\f1f5"}.ion-ios-radio:before{content:"\f1f9"}.ion-ios-radio-button-off:before{content:"\f1f6"}.ion-ios-radio-button-on:before{content:"\f1f7"}.ion-ios-rainy:before{content:"\f495"}.ion-ios-recording:before{content:"\f497"}.ion-ios-redo:before{content:"\f499"}.ion-ios-refresh:before{content:"\f49c"}.ion-ios-refresh-circle:before{content:"\f135"}.ion-ios-remove:before{content:"\f1fc"}.ion-ios-remove-circle:before{content:"\f1fb"}.ion-ios-remove-circle-outline:before{content:"\f1fa"}.ion-ios-reorder:before{content:"\f1fd"}.ion-ios-repeat:before{content:"\f1fe"}.ion-ios-resize:before{content:"\f1ff"}.ion-ios-restaurant:before{content:"\f201"}.ion-ios-return-left:before{content:"\f202"}.ion-ios-return-right:before{content:"\f203"}.ion-ios-reverse-camera:before{content:"\f49f"}.ion-ios-rewind:before{content:"\f4a1"}.ion-ios-ribbon:before{content:"\f205"}.ion-ios-rocket:before{content:"\f14b"}.ion-ios-rose:before{content:"\f4a3"}.ion-ios-sad:before{content:"\f207"}.ion-ios-save:before{content:"\f1a6"}.ion-ios-school:before{content:"\f209"}.ion-ios-search:before{content:"\f4a5"}.ion-ios-send:before{content:"\f20c"}.ion-ios-settings:before{content:"\f4a7"}.ion-ios-share:before{content:"\f211"}.ion-ios-share-alt:before{content:"\f20f"}.ion-ios-shirt:before{content:"\f213"}.ion-ios-shuffle:before{content:"\f4a9"}.ion-ios-skip-backward:before{content:"\f215"}.ion-ios-skip-forward:before{content:"\f217"}.ion-ios-snow:before{content:"\f218"}.ion-ios-speedometer:before{content:"\f4b0"}.ion-ios-square:before{content:"\f21a"}.ion-ios-square-outline:before{content:"\f15c"}.ion-ios-star:before{content:"\f4b3"}.ion-ios-star-half:before{content:"\f4b1"}.ion-ios-star-outline:before{content:"\f4b2"}.ion-ios-stats:before{content:"\f21c"}.ion-ios-stopwatch:before{content:"\f4b5"}.ion-ios-subway:before{content:"\f21e"}.ion-ios-sunny:before{content:"\f4b7"}.ion-ios-swap:before{content:"\f21f"}.ion-ios-switch:before{content:"\f221"}.ion-ios-sync:before{content:"\f222"}.ion-ios-tablet-landscape:before{content:"\f223"}.ion-ios-tablet-portrait:before{content:"\f24e"}.ion-ios-tennisball:before{content:"\f4bb"}.ion-ios-text:before{content:"\f250"}.ion-ios-thermometer:before{content:"\f252"}.ion-ios-thumbs-down:before{content:"\f254"}.ion-ios-thumbs-up:before{content:"\f256"}.ion-ios-thunderstorm:before{content:"\f4bd"}.ion-ios-time:before{content:"\f4bf"}.ion-ios-timer:before{content:"\f4c1"}.ion-ios-today:before{content:"\f14f"}.ion-ios-train:before{content:"\f258"}.ion-ios-transgender:before{content:"\f259"}.ion-ios-trash:before{content:"\f4c5"}.ion-ios-trending-down:before{content:"\f25a"}.ion-ios-trending-up:before{content:"\f25b"}.ion-ios-trophy:before{content:"\f25d"}.ion-ios-tv:before{content:"\f115"}.ion-ios-umbrella:before{content:"\f25f"}.ion-ios-undo:before{content:"\f4c7"}.ion-ios-unlock:before{content:"\f261"}.ion-ios-videocam:before{content:"\f4cd"}.ion-ios-volume-high:before{content:"\f11c"}.ion-ios-volume-low:before{content:"\f11e"}.ion-ios-volume-mute:before{content:"\f263"}.ion-ios-volume-off:before{content:"\f264"}.ion-ios-walk:before{content:"\f266"}.ion-ios-wallet:before{content:"\f18b"}.ion-ios-warning:before{content:"\f268"}.ion-ios-watch:before{content:"\f269"}.ion-ios-water:before{content:"\f26b"}.ion-ios-wifi:before{content:"\f26d"}.ion-ios-wine:before{content:"\f26f"}.ion-ios-woman:before{content:"\f271"}.ion-logo-android:before{content:"\f225"}.ion-logo-angular:before{content:"\f227"}.ion-logo-apple:before{content:"\f229"}.ion-logo-bitbucket:before{content:"\f193"}.ion-logo-bitcoin:before{content:"\f22b"}.ion-logo-buffer:before{content:"\f22d"}.ion-logo-chrome:before{content:"\f22f"}.ion-logo-closed-captioning:before{content:"\f105"}.ion-logo-codepen:before{content:"\f230"}.ion-logo-css3:before{content:"\f231"}.ion-logo-designernews:before{content:"\f232"}.ion-logo-dribbble:before{content:"\f233"}.ion-logo-dropbox:before{content:"\f234"}.ion-logo-euro:before{content:"\f235"}.ion-logo-facebook:before{content:"\f236"}.ion-logo-flickr:before{content:"\f107"}.ion-logo-foursquare:before{content:"\f237"}.ion-logo-freebsd-devil:before{content:"\f238"}.ion-logo-game-controller-a:before{content:"\f13b"}.ion-logo-game-controller-b:before{content:"\f181"}.ion-logo-github:before{content:"\f239"}.ion-logo-google:before{content:"\f23a"}.ion-logo-googleplus:before{content:"\f23b"}.ion-logo-hackernews:before{content:"\f23c"}.ion-logo-html5:before{content:"\f23d"}.ion-logo-instagram:before{content:"\f23e"}.ion-logo-ionic:before{content:"\f150"}.ion-logo-ionitron:before{content:"\f151"}.ion-logo-javascript:before{content:"\f23f"}.ion-logo-linkedin:before{content:"\f240"}.ion-logo-markdown:before{content:"\f241"}.ion-logo-model-s:before{content:"\f153"}.ion-logo-no-smoking:before{content:"\f109"}.ion-logo-nodejs:before{content:"\f242"}.ion-logo-npm:before{content:"\f195"}.ion-logo-octocat:before{content:"\f243"}.ion-logo-pinterest:before{content:"\f244"}.ion-logo-playstation:before{content:"\f245"}.ion-logo-polymer:before{content:"\f15e"}.ion-logo-python:before{content:"\f246"}.ion-logo-reddit:before{content:"\f247"}.ion-logo-rss:before{content:"\f248"}.ion-logo-sass:before{content:"\f249"}.ion-logo-skype:before{content:"\f24a"}.ion-logo-slack:before{content:"\f10b"}.ion-logo-snapchat:before{content:"\f24b"}.ion-logo-steam:before{content:"\f24c"}.ion-logo-tumblr:before{content:"\f24d"}.ion-logo-tux:before{content:"\f2ae"}.ion-logo-twitch:before{content:"\f2af"}.ion-logo-twitter:before{content:"\f2b0"}.ion-logo-usd:before{content:"\f2b1"}.ion-logo-vimeo:before{content:"\f2c4"}.ion-logo-vk:before{content:"\f10d"}.ion-logo-whatsapp:before{content:"\f2c5"}.ion-logo-windows:before{content:"\f32f"}.ion-logo-wordpress:before{content:"\f330"}.ion-logo-xbox:before{content:"\f34c"}.ion-logo-xing:before{content:"\f10f"}.ion-logo-yahoo:before{content:"\f34d"}.ion-logo-yen:before{content:"\f34e"}.ion-logo-youtube:before{content:"\f34f"}.ion-md-add:before{content:"\f273"}.ion-md-add-circle:before{content:"\f272"}.ion-md-add-circle-outline:before{content:"\f158"}.ion-md-airplane:before{content:"\f15a"}.ion-md-alarm:before{content:"\f274"}.ion-md-albums:before{content:"\f275"}.ion-md-alert:before{content:"\f276"}.ion-md-american-football:before{content:"\f277"}.ion-md-analytics:before{content:"\f278"}.ion-md-aperture:before{content:"\f279"}.ion-md-apps:before{content:"\f27a"}.ion-md-appstore:before{content:"\f27b"}.ion-md-archive:before{content:"\f27c"}.ion-md-arrow-back:before{content:"\f27d"}.ion-md-arrow-down:before{content:"\f27e"}.ion-md-arrow-dropdown:before{content:"\f280"}.ion-md-arrow-dropdown-circle:before{content:"\f27f"}.ion-md-arrow-dropleft:before{content:"\f282"}.ion-md-arrow-dropleft-circle:before{content:"\f281"}.ion-md-arrow-dropright:before{content:"\f284"}.ion-md-arrow-dropright-circle:before{content:"\f283"}.ion-md-arrow-dropup:before{content:"\f286"}.ion-md-arrow-dropup-circle:before{content:"\f285"}.ion-md-arrow-forward:before{content:"\f287"}.ion-md-arrow-round-back:before{content:"\f288"}.ion-md-arrow-round-down:before{content:"\f289"}.ion-md-arrow-round-forward:before{content:"\f28a"}.ion-md-arrow-round-up:before{content:"\f28b"}.ion-md-arrow-up:before{content:"\f28c"}.ion-md-at:before{content:"\f28d"}.ion-md-attach:before{content:"\f28e"}.ion-md-backspace:before{content:"\f28f"}.ion-md-barcode:before{content:"\f290"}.ion-md-baseball:before{content:"\f291"}.ion-md-basket:before{content:"\f292"}.ion-md-basketball:before{content:"\f293"}.ion-md-battery-charging:before{content:"\f294"}.ion-md-battery-dead:before{content:"\f295"}.ion-md-battery-full:before{content:"\f296"}.ion-md-beaker:before{content:"\f297"}.ion-md-bed:before{content:"\f160"}.ion-md-beer:before{content:"\f298"}.ion-md-bicycle:before{content:"\f299"}.ion-md-bluetooth:before{content:"\f29a"}.ion-md-boat:before{content:"\f29b"}.ion-md-body:before{content:"\f29c"}.ion-md-bonfire:before{content:"\f29d"}.ion-md-book:before{content:"\f29e"}.ion-md-bookmark:before{content:"\f29f"}.ion-md-bookmarks:before{content:"\f2a0"}.ion-md-bowtie:before{content:"\f2a1"}.ion-md-briefcase:before{content:"\f2a2"}.ion-md-browsers:before{content:"\f2a3"}.ion-md-brush:before{content:"\f2a4"}.ion-md-bug:before{content:"\f2a5"}.ion-md-build:before{content:"\f2a6"}.ion-md-bulb:before{content:"\f2a7"}.ion-md-bus:before{content:"\f2a8"}.ion-md-business:before{content:"\f1a4"}.ion-md-cafe:before{content:"\f2a9"}.ion-md-calculator:before{content:"\f2aa"}.ion-md-calendar:before{content:"\f2ab"}.ion-md-call:before{content:"\f2ac"}.ion-md-camera:before{content:"\f2ad"}.ion-md-car:before{content:"\f2b2"}.ion-md-card:before{content:"\f2b3"}.ion-md-cart:before{content:"\f2b4"}.ion-md-cash:before{content:"\f2b5"}.ion-md-cellular:before{content:"\f164"}.ion-md-chatboxes:before{content:"\f2b6"}.ion-md-chatbubbles:before{content:"\f2b7"}.ion-md-checkbox:before{content:"\f2b9"}.ion-md-checkbox-outline:before{content:"\f2b8"}.ion-md-checkmark:before{content:"\f2bc"}.ion-md-checkmark-circle:before{content:"\f2bb"}.ion-md-checkmark-circle-outline:before{content:"\f2ba"}.ion-md-clipboard:before{content:"\f2bd"}.ion-md-clock:before{content:"\f2be"}.ion-md-close:before{content:"\f2c0"}.ion-md-close-circle:before{content:"\f2bf"}.ion-md-close-circle-outline:before{content:"\f166"}.ion-md-cloud:before{content:"\f2c9"}.ion-md-cloud-circle:before{content:"\f2c2"}.ion-md-cloud-done:before{content:"\f2c3"}.ion-md-cloud-download:before{content:"\f2c6"}.ion-md-cloud-outline:before{content:"\f2c7"}.ion-md-cloud-upload:before{content:"\f2c8"}.ion-md-cloudy:before{content:"\f2cb"}.ion-md-cloudy-night:before{content:"\f2ca"}.ion-md-code:before{content:"\f2ce"}.ion-md-code-download:before{content:"\f2cc"}.ion-md-code-working:before{content:"\f2cd"}.ion-md-cog:before{content:"\f2cf"}.ion-md-color-fill:before{content:"\f2d0"}.ion-md-color-filter:before{content:"\f2d1"}.ion-md-color-palette:before{content:"\f2d2"}.ion-md-color-wand:before{content:"\f2d3"}.ion-md-compass:before{content:"\f2d4"}.ion-md-construct:before{content:"\f2d5"}.ion-md-contact:before{content:"\f2d6"}.ion-md-contacts:before{content:"\f2d7"}.ion-md-contract:before{content:"\f2d8"}.ion-md-contrast:before{content:"\f2d9"}.ion-md-copy:before{content:"\f2da"}.ion-md-create:before{content:"\f2db"}.ion-md-crop:before{content:"\f2dc"}.ion-md-cube:before{content:"\f2dd"}.ion-md-cut:before{content:"\f2de"}.ion-md-desktop:before{content:"\f2df"}.ion-md-disc:before{content:"\f2e0"}.ion-md-document:before{content:"\f2e1"}.ion-md-done-all:before{content:"\f2e2"}.ion-md-download:before{content:"\f2e3"}.ion-md-easel:before{content:"\f2e4"}.ion-md-egg:before{content:"\f2e5"}.ion-md-exit:before{content:"\f2e6"}.ion-md-expand:before{content:"\f2e7"}.ion-md-eye:before{content:"\f2e9"}.ion-md-eye-off:before{content:"\f2e8"}.ion-md-fastforward:before{content:"\f2ea"}.ion-md-female:before{content:"\f2eb"}.ion-md-filing:before{content:"\f2ec"}.ion-md-film:before{content:"\f2ed"}.ion-md-finger-print:before{content:"\f2ee"}.ion-md-fitness:before{content:"\f1ac"}.ion-md-flag:before{content:"\f2ef"}.ion-md-flame:before{content:"\f2f0"}.ion-md-flash:before{content:"\f2f1"}.ion-md-flash-off:before{content:"\f169"}.ion-md-flashlight:before{content:"\f16b"}.ion-md-flask:before{content:"\f2f2"}.ion-md-flower:before{content:"\f2f3"}.ion-md-folder:before{content:"\f2f5"}.ion-md-folder-open:before{content:"\f2f4"}.ion-md-football:before{content:"\f2f6"}.ion-md-funnel:before{content:"\f2f7"}.ion-md-gift:before{content:"\f199"}.ion-md-git-branch:before{content:"\f2fa"}.ion-md-git-commit:before{content:"\f2fb"}.ion-md-git-compare:before{content:"\f2fc"}.ion-md-git-merge:before{content:"\f2fd"}.ion-md-git-network:before{content:"\f2fe"}.ion-md-git-pull-request:before{content:"\f2ff"}.ion-md-glasses:before{content:"\f300"}.ion-md-globe:before{content:"\f301"}.ion-md-grid:before{content:"\f302"}.ion-md-hammer:before{content:"\f303"}.ion-md-hand:before{content:"\f304"}.ion-md-happy:before{content:"\f305"}.ion-md-headset:before{content:"\f306"}.ion-md-heart:before{content:"\f308"}.ion-md-heart-dislike:before{content:"\f167"}.ion-md-heart-empty:before{content:"\f1a1"}.ion-md-heart-half:before{content:"\f1a2"}.ion-md-help:before{content:"\f30b"}.ion-md-help-buoy:before{content:"\f309"}.ion-md-help-circle:before{content:"\f30a"}.ion-md-help-circle-outline:before{content:"\f16d"}.ion-md-home:before{content:"\f30c"}.ion-md-hourglass:before{content:"\f111"}.ion-md-ice-cream:before{content:"\f30d"}.ion-md-image:before{content:"\f30e"}.ion-md-images:before{content:"\f30f"}.ion-md-infinite:before{content:"\f310"}.ion-md-information:before{content:"\f312"}.ion-md-information-circle:before{content:"\f311"}.ion-md-information-circle-outline:before{content:"\f16f"}.ion-md-jet:before{content:"\f315"}.ion-md-journal:before{content:"\f18d"}.ion-md-key:before{content:"\f316"}.ion-md-keypad:before{content:"\f317"}.ion-md-laptop:before{content:"\f318"}.ion-md-leaf:before{content:"\f319"}.ion-md-link:before{content:"\f22e"}.ion-md-list:before{content:"\f31b"}.ion-md-list-box:before{content:"\f31a"}.ion-md-locate:before{content:"\f31c"}.ion-md-lock:before{content:"\f31d"}.ion-md-log-in:before{content:"\f31e"}.ion-md-log-out:before{content:"\f31f"}.ion-md-magnet:before{content:"\f320"}.ion-md-mail:before{content:"\f322"}.ion-md-mail-open:before{content:"\f321"}.ion-md-mail-unread:before{content:"\f172"}.ion-md-male:before{content:"\f323"}.ion-md-man:before{content:"\f324"}.ion-md-map:before{content:"\f325"}.ion-md-medal:before{content:"\f326"}.ion-md-medical:before{content:"\f327"}.ion-md-medkit:before{content:"\f328"}.ion-md-megaphone:before{content:"\f329"}.ion-md-menu:before{content:"\f32a"}.ion-md-mic:before{content:"\f32c"}.ion-md-mic-off:before{content:"\f32b"}.ion-md-microphone:before{content:"\f32d"}.ion-md-moon:before{content:"\f32e"}.ion-md-more:before{content:"\f1c9"}.ion-md-move:before{content:"\f331"}.ion-md-musical-note:before{content:"\f332"}.ion-md-musical-notes:before{content:"\f333"}.ion-md-navigate:before{content:"\f334"}.ion-md-notifications:before{content:"\f338"}.ion-md-notifications-off:before{content:"\f336"}.ion-md-notifications-outline:before{content:"\f337"}.ion-md-nuclear:before{content:"\f339"}.ion-md-nutrition:before{content:"\f33a"}.ion-md-open:before{content:"\f33b"}.ion-md-options:before{content:"\f33c"}.ion-md-outlet:before{content:"\f33d"}.ion-md-paper:before{content:"\f33f"}.ion-md-paper-plane:before{content:"\f33e"}.ion-md-partly-sunny:before{content:"\f340"}.ion-md-pause:before{content:"\f341"}.ion-md-paw:before{content:"\f342"}.ion-md-people:before{content:"\f343"}.ion-md-person:before{content:"\f345"}.ion-md-person-add:before{content:"\f344"}.ion-md-phone-landscape:before{content:"\f346"}.ion-md-phone-portrait:before{content:"\f347"}.ion-md-photos:before{content:"\f348"}.ion-md-pie:before{content:"\f349"}.ion-md-pin:before{content:"\f34a"}.ion-md-pint:before{content:"\f34b"}.ion-md-pizza:before{content:"\f354"}.ion-md-planet:before{content:"\f356"}.ion-md-play:before{content:"\f357"}.ion-md-play-circle:before{content:"\f174"}.ion-md-podium:before{content:"\f358"}.ion-md-power:before{content:"\f359"}.ion-md-pricetag:before{content:"\f35a"}.ion-md-pricetags:before{content:"\f35b"}.ion-md-print:before{content:"\f35c"}.ion-md-pulse:before{content:"\f35d"}.ion-md-qr-scanner:before{content:"\f35e"}.ion-md-quote:before{content:"\f35f"}.ion-md-radio:before{content:"\f362"}.ion-md-radio-button-off:before{content:"\f360"}.ion-md-radio-button-on:before{content:"\f361"}.ion-md-rainy:before{content:"\f363"}.ion-md-recording:before{content:"\f364"}.ion-md-redo:before{content:"\f365"}.ion-md-refresh:before{content:"\f366"}.ion-md-refresh-circle:before{content:"\f228"}.ion-md-remove:before{content:"\f368"}.ion-md-remove-circle:before{content:"\f367"}.ion-md-remove-circle-outline:before{content:"\f176"}.ion-md-reorder:before{content:"\f369"}.ion-md-repeat:before{content:"\f36a"}.ion-md-resize:before{content:"\f36b"}.ion-md-restaurant:before{content:"\f36c"}.ion-md-return-left:before{content:"\f36d"}.ion-md-return-right:before{content:"\f36e"}.ion-md-reverse-camera:before{content:"\f36f"}.ion-md-rewind:before{content:"\f370"}.ion-md-ribbon:before{content:"\f371"}.ion-md-rocket:before{content:"\f179"}.ion-md-rose:before{content:"\f372"}.ion-md-sad:before{content:"\f373"}.ion-md-save:before{content:"\f1a9"}.ion-md-school:before{content:"\f374"}.ion-md-search:before{content:"\f375"}.ion-md-send:before{content:"\f376"}.ion-md-settings:before{content:"\f377"}.ion-md-share:before{content:"\f379"}.ion-md-share-alt:before{content:"\f378"}.ion-md-shirt:before{content:"\f37a"}.ion-md-shuffle:before{content:"\f37b"}.ion-md-skip-backward:before{content:"\f37c"}.ion-md-skip-forward:before{content:"\f37d"}.ion-md-snow:before{content:"\f37e"}.ion-md-speedometer:before{content:"\f37f"}.ion-md-square:before{content:"\f381"}.ion-md-square-outline:before{content:"\f380"}.ion-md-star:before{content:"\f384"}.ion-md-star-half:before{content:"\f382"}.ion-md-star-outline:before{content:"\f383"}.ion-md-stats:before{content:"\f385"}.ion-md-stopwatch:before{content:"\f386"}.ion-md-subway:before{content:"\f387"}.ion-md-sunny:before{content:"\f388"}.ion-md-swap:before{content:"\f389"}.ion-md-switch:before{content:"\f38a"}.ion-md-sync:before{content:"\f38b"}.ion-md-tablet-landscape:before{content:"\f38c"}.ion-md-tablet-portrait:before{content:"\f38d"}.ion-md-tennisball:before{content:"\f38e"}.ion-md-text:before{content:"\f38f"}.ion-md-thermometer:before{content:"\f390"}.ion-md-thumbs-down:before{content:"\f391"}.ion-md-thumbs-up:before{content:"\f392"}.ion-md-thunderstorm:before{content:"\f393"}.ion-md-time:before{content:"\f394"}.ion-md-timer:before{content:"\f395"}.ion-md-today:before{content:"\f17d"}.ion-md-train:before{content:"\f396"}.ion-md-transgender:before{content:"\f397"}.ion-md-trash:before{content:"\f398"}.ion-md-trending-down:before{content:"\f399"}.ion-md-trending-up:before{content:"\f39a"}.ion-md-trophy:before{content:"\f39b"}.ion-md-tv:before{content:"\f17f"}.ion-md-umbrella:before{content:"\f39c"}.ion-md-undo:before{content:"\f39d"}.ion-md-unlock:before{content:"\f39e"}.ion-md-videocam:before{content:"\f39f"}.ion-md-volume-high:before{content:"\f123"}.ion-md-volume-low:before{content:"\f131"}.ion-md-volume-mute:before{content:"\f3a1"}.ion-md-volume-off:before{content:"\f3a2"}.ion-md-walk:before{content:"\f3a4"}.ion-md-wallet:before{content:"\f18f"}.ion-md-warning:before{content:"\f3a5"}.ion-md-watch:before{content:"\f3a6"}.ion-md-water:before{content:"\f3a7"}.ion-md-wifi:before{content:"\f3a8"}.ion-md-wine:before{content:"\f3a9"}.ion-md-woman:before{content:"\f3aa"} diff --git a/backend/documentation/styles/laravel.css b/backend/documentation/styles/laravel.css new file mode 100644 index 0000000..bae0c3a --- /dev/null +++ b/backend/documentation/styles/laravel.css @@ -0,0 +1,113 @@ +.nav-tabs > li > a { + text-decoration: none; +} + +.navbar-default .navbar-brand { + color: #f4645f; + text-decoration: none; + font-size: 16px; +} + +.menu ul.list li a[data-type='chapter-link'], +.menu ul.list li.chapter .simple { + color: #525252; + border-bottom: 1px dashed rgba(0, 0, 0, 0.1); +} + +.content h1, +.content h2, +.content h3, +.content h4, +.content h5 { + color: #292e31; + font-weight: normal; +} + +.content { + color: #4c555a; +} + +a { + color: #f4645f; + text-decoration: underline; +} +a:hover { + color: #f1362f; +} + +.menu ul.list li:nth-child(2) { + margin-top: 0; +} + +.menu ul.list li.title a { + color: #f4645f; + text-decoration: none; + font-size: 16px; +} + +.menu ul.list li a { + color: #f4645f; + text-decoration: none; +} +.menu ul.list li a.active { + color: #f4645f; + font-weight: bold; +} + +code { + box-sizing: border-box; + display: inline-block; + padding: 0 5px; + background: #f0f2f1; + border-radius: 3px; + color: #b93d6a; + font-size: 13px; + line-height: 20px; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.125); +} + +pre { + margin: 0; + padding: 12px 12px; + background: rgba(238, 238, 238, 0.35); + border-radius: 3px; + font-size: 13px; + line-height: 1.5em; + font-weight: 500; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.125); +} + +.dark body { + color: #fafafa; +} +.dark .content h1, +.dark .content h2, +.dark .content h3, +.dark .content h4, +.dark .content h5 { + color: #fafafa; +} + +.dark code { + background: none; +} + +.dark .content { + color: #fafafa; +} + +.dark .menu ul.list li a[data-type='chapter-link'], +.dark .menu ul.list li.chapter .simple { + color: #fafafa; +} + +.dark .menu ul.list li.title a { + color: #fafafa; +} + +.dark .menu ul.list li a { + color: #fafafa; +} +.dark .menu ul.list li a.active { + color: #7fc9ff; +} diff --git a/backend/documentation/styles/material.css b/backend/documentation/styles/material.css new file mode 100644 index 0000000..84d6c0e --- /dev/null +++ b/backend/documentation/styles/material.css @@ -0,0 +1,131 @@ +.menu { + background: none; +} + +a:hover { + text-decoration: none; +} + +/** LINK **/ + +.menu ul.list li a { + text-decoration: none; +} + +.menu ul.list li a:hover, +.menu ul.list li.chapter .simple:hover { + background-color: #f8f9fa; + text-decoration: none; +} + +#book-search-input { + margin-bottom: 0; +} + +.menu ul.list li.divider { + margin-top: 0; + background: #e9ecef; +} + +.menu .title:hover { + background-color: #f8f9fa; +} + +/** CARD **/ + +.card { + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), + 0 1px 5px 0 rgba(0, 0, 0, 0.12); + border-radius: 0.125rem; + border: 0; + margin-top: 1px; +} + +.card-header { + background: none; +} + +/** BUTTON **/ + +.btn { + border-radius: 0.125rem; +} + +/** NAV BAR **/ + +.nav { + border: 0; +} +.nav-tabs > li > a { + border: 0; + border-bottom: 0.214rem solid transparent; + color: rgba(0, 0, 0, 0.54); + margin-right: 0; +} +.nav-tabs > li.active > a, +.nav-tabs > li.active > a:focus, +.nav-tabs > li.active > a:hover { + color: rgba(0, 0, 0, 0.87); + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 0.214rem solid transparent; + border-color: #008cff; + font-weight: bold; +} +.nav > li > a:focus, +.nav > li > a:hover { + background: none; +} + +/** LIST **/ + +.list-group-item:first-child { + border-top-left-radius: 0.125rem; + border-top-right-radius: 0.125rem; +} +.list-group-item:last-child { + border-bottom-left-radius: 0.125rem; + border-bottom-right-radius: 0.125rem; +} + +/** MISC **/ + +.modifier { + border-radius: 0.125rem; +} + +pre[class*='language-'] { + border-radius: 0.125rem; +} + +/** TABLE **/ + +.table-hover > tbody > tr:hover { + background: rgba(0, 0, 0, 0.075); +} + +table.params thead { + background: none; +} +table.params thead td { + color: rgba(0, 0, 0, 0.54); + font-weight: bold; +} + +.dark .menu .title:hover { + background-color: #2d2d2d; +} +.dark .menu ul.list li a:hover, +.dark .menu ul.list li.chapter .simple:hover { + background-color: #2d2d2d; +} +.dark .nav-tabs > li:not(.active) > a { + color: #fafafa; +} +.dark table.params thead { + background: #484848; +} +.dark table.params thead td { + color: #fafafa; +} diff --git a/backend/documentation/styles/original.css b/backend/documentation/styles/original.css new file mode 100644 index 0000000..8e01814 --- /dev/null +++ b/backend/documentation/styles/original.css @@ -0,0 +1,51 @@ +.navbar-default .navbar-brand, +.menu ul.list li.title { + font-weight: bold; + color: #3c3c3c; + padding-bottom: 5px; +} + +.menu ul.list li a[data-type='chapter-link'], +.menu ul.list li.chapter .simple { + font-weight: bold; + font-size: 14px; +} + +.menu ul.list li a[href='./routes.html'] { + border-bottom: none; +} + +.menu ul.list > li:nth-child(2) { + display: none; +} + +.menu ul.list li.chapter ul.links { + background: #fff; + padding-left: 0; +} + +.menu ul.list li.chapter ul.links li { + border-bottom: 1px solid #ddd; + padding-left: 20px; +} + +.menu ul.list li.chapter ul.links li:last-child { + border-bottom: none; +} + +.menu ul.list li a.active { + color: #337ab7; + font-weight: bold; +} + +#book-search-input { + margin-bottom: 0; + border-bottom: none; +} +.menu ul.list li.divider { + margin: 0; +} + +.dark .menu ul.list li.chapter ul.links { + background: none; +} diff --git a/backend/documentation/styles/postmark.css b/backend/documentation/styles/postmark.css new file mode 100644 index 0000000..ae8be3e --- /dev/null +++ b/backend/documentation/styles/postmark.css @@ -0,0 +1,238 @@ +.navbar-default { + background: #ffde00; + border: none; +} + +.navbar-default .navbar-brand { + color: #333; + font-weight: bold; +} + +.menu { + background: #333; + color: #fcfcfc; +} + +.menu ul.list li a { + color: #333; +} + +.menu ul.list li.title { + background: #ffde00; + color: #333; + padding-bottom: 5px; +} + +.menu ul.list li:nth-child(2) { + margin-top: 0; +} + +.menu ul.list li.chapter a, +.menu ul.list li.chapter .simple { + color: white; + text-decoration: none; +} + +.menu ul.list li.chapter ul.links a { + color: #949494; + text-transform: none; + padding-left: 35px; +} + +.menu ul.list li.chapter ul.links a:hover, +.menu ul.list li.chapter ul.links a.active { + color: #ffde00; +} + +.menu ul.list li.chapter ul.links { + padding-left: 0; +} + +.menu ul.list li.divider { + background: rgba(255, 255, 255, 0.07); +} + +#book-search-input input, +#book-search-input input:focus, +#book-search-input input:hover { + color: #949494; +} + +.copyright { + color: #b3b3b3; + background: #272525; +} + +.content { + background: #fcfcfc; +} + +.content a { + color: #007dcc; +} + +.content a:visited { + color: #0165a5; +} + +.menu ul.list li:nth-last-child(2) { + background: none; +} + +.list-group-item:first-child, +.list-group-item:last-child { + border-radius: 0; +} + +.menu ul.list li.title a { + text-decoration: none; + font-weight: bold; +} + +.menu ul.list li.title a:hover { + background: rgba(255, 255, 255, 0.1); +} + +.breadcrumb > li + li:before { + content: '»\00a0'; +} + +.breadcrumb { + padding-bottom: 15px; + border-bottom: 1px solid #e1e4e5; +} + +code { + white-space: nowrap; + max-width: 100%; + background: #f5f5f5; + padding: 2px 5px; + color: #666666; + overflow-x: auto; + border-radius: 0; +} + +pre { + white-space: pre; + margin: 0; + padding: 12px 12px; + font-size: 12px; + line-height: 1.5; + display: block; + overflow: auto; + color: #404040; + background: #f3f3f3; +} + +pre code.hljs { + border: none; + background: inherit; +} + +/* +Atom One Light by Daniel Gamage +Original One Light Syntax theme from https://github.com/atom/one-light-syntax +base: #fafafa +mono-1: #383a42 +mono-2: #686b77 +mono-3: #a0a1a7 +hue-1: #0184bb +hue-2: #4078f2 +hue-3: #a626a4 +hue-4: #50a14f +hue-5: #e45649 +hue-5-2: #c91243 +hue-6: #986801 +hue-6-2: #c18401 +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + color: #383a42; + background: #fafafa; +} + +.hljs-comment, +.hljs-quote { + color: #a0a1a7; + font-style: italic; +} + +.hljs-doctag, +.hljs-keyword, +.hljs-formula { + color: #a626a4; +} + +.hljs-section, +.hljs-name, +.hljs-selector-tag, +.hljs-deletion, +.hljs-subst { + color: #e45649; +} + +.hljs-literal { + color: #0184bb; +} + +.hljs-string, +.hljs-regexp, +.hljs-addition, +.hljs-attribute, +.hljs-meta-string { + color: #50a14f; +} + +.hljs-built_in, +.hljs-class .hljs-title { + color: #c18401; +} + +.hljs-attr, +.hljs-variable, +.hljs-template-variable, +.hljs-type, +.hljs-selector-class, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-number { + color: #986801; +} + +.hljs-symbol, +.hljs-bullet, +.hljs-link, +.hljs-meta, +.hljs-selector-id, +.hljs-title { + color: #4078f2; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} + +.hljs-link { + text-decoration: underline; +} + +.dark .content { + background: none; +} +.dark code { + background: none; + color: #e09393; +} +.dark .menu ul.list li.chapter a.active { + color: #ffde00; +} +.dark .menu { + background: #272525; +} diff --git a/backend/documentation/styles/prism.css b/backend/documentation/styles/prism.css new file mode 100644 index 0000000..46a643b --- /dev/null +++ b/backend/documentation/styles/prism.css @@ -0,0 +1,301 @@ +/* PrismJS 1.24.0 +https://prismjs.com/download.html?#themes=prism-okaidia&languages=markup+css+clike+javascript+apacheconf+aspnet+bash+c+csharp+cpp+coffeescript+dart+docker+elm+git+go+graphql+handlebars+haskell+http+ignore+java+json+kotlin+less+markdown+markup-templating+nginx+php+powershell+ruby+rust+sass+scss+sql+swift+typescript+wasm+yaml&plugins=line-highlight+line-numbers+toolbar+copy-to-clipboard */ +/** + * okaidia theme for JavaScript, CSS and HTML + * Loosely based on Monokai textmate theme by http://www.monokai.nl/ + * @author ocodia + */ + +code[class*='language-'], +pre[class*='language-'] { + color: #f8f8f2; + background: none; + text-shadow: 0 1px rgba(0, 0, 0, 0.3); + font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; + font-size: 1em; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + word-wrap: normal; + line-height: 1.5; + + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; +} + +/* Code blocks */ +pre[class*='language-'] { + padding: 1em; + margin: 0.5em 0; + overflow: auto; + border-radius: 0.3em; +} + +:not(pre) > code[class*='language-'], +pre[class*='language-'] { + background: #272822; +} + +/* Inline code */ +:not(pre) > code[class*='language-'] { + padding: 0.1em; + border-radius: 0.3em; + white-space: normal; +} + +.token.comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: #8292a2; +} + +.token.punctuation { + color: #f8f8f2; +} + +.token.namespace { + opacity: 0.7; +} + +.token.property, +.token.tag, +.token.constant, +.token.symbol, +.token.deleted { + color: #f92672; +} + +.token.boolean, +.token.number { + color: #ae81ff; +} + +.token.selector, +.token.attr-name, +.token.string, +.token.char, +.token.builtin, +.token.inserted { + color: #a6e22e; +} + +.token.operator, +.token.entity, +.token.url, +.language-css .token.string, +.style .token.string, +.token.variable { + color: #f8f8f2; +} + +.token.atrule, +.token.attr-value, +.token.function, +.token.class-name { + color: #e6db74; +} + +.token.keyword { + color: #66d9ef; +} + +.token.regex, +.token.important { + color: #fd971f; +} + +.token.important, +.token.bold { + font-weight: bold; +} +.token.italic { + font-style: italic; +} + +.token.entity { + cursor: help; +} + +pre[data-line] { + position: relative; + padding: 1em 0 1em 3em; +} + +.line-highlight { + position: absolute; + left: 0; + right: 0; + padding: inherit 0; + margin-top: 1em; /* Same as .prism’s padding-top */ + + background: hsla(24, 20%, 50%, 0.08); + background: linear-gradient(to right, hsla(24, 20%, 50%, 0.1) 70%, hsla(24, 20%, 50%, 0)); + + pointer-events: none; + + line-height: inherit; + white-space: pre; +} + +@media print { + .line-highlight { + /* + * This will prevent browsers from replacing the background color with white. + * It's necessary because the element is layered on top of the displayed code. + */ + -webkit-print-color-adjust: exact; + color-adjust: exact; + } +} + +.line-highlight:before, +.line-highlight[data-end]:after { + content: attr(data-start); + position: absolute; + top: 0.4em; + left: 0.6em; + min-width: 1em; + padding: 0 0.5em; + background-color: hsla(24, 20%, 50%, 0.4); + color: hsl(24, 20%, 95%); + font: bold 65%/1.5 sans-serif; + text-align: center; + vertical-align: 0.3em; + border-radius: 999px; + text-shadow: none; + box-shadow: 0 1px white; +} + +.line-highlight[data-end]:after { + content: attr(data-end); + top: auto; + bottom: 0.4em; +} + +.line-numbers .line-highlight:before, +.line-numbers .line-highlight:after { + content: none; +} + +pre[id].linkable-line-numbers span.line-numbers-rows { + pointer-events: all; +} +pre[id].linkable-line-numbers span.line-numbers-rows > span:before { + cursor: pointer; +} +pre[id].linkable-line-numbers span.line-numbers-rows > span:hover:before { + background-color: rgba(128, 128, 128, 0.2); +} + +pre[class*='language-'].line-numbers { + position: relative; + padding-left: 3.8em; + counter-reset: linenumber; +} + +pre[class*='language-'].line-numbers > code { + position: relative; + white-space: inherit; +} + +.line-numbers .line-numbers-rows { + position: absolute; + pointer-events: none; + top: 0; + font-size: 100%; + left: -3.8em; + width: 3em; /* works for line-numbers below 1000 lines */ + letter-spacing: -1px; + border-right: 1px solid #999; + + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.line-numbers-rows > span { + display: block; + counter-increment: linenumber; +} + +.line-numbers-rows > span:before { + content: counter(linenumber); + color: #999; + display: block; + padding-right: 0.8em; + text-align: right; +} + +div.code-toolbar { + position: relative; +} + +div.code-toolbar > .toolbar { + position: absolute; + top: 0.3em; + right: 0.2em; + transition: opacity 0.3s ease-in-out; + opacity: 0; +} + +div.code-toolbar:hover > .toolbar { + opacity: 1; +} + +/* Separate line b/c rules are thrown out if selector is invalid. + IE11 and old Edge versions don't support :focus-within. */ +div.code-toolbar:focus-within > .toolbar { + opacity: 1; +} + +div.code-toolbar > .toolbar .toolbar-item { + display: inline-block; +} + +div.code-toolbar > .toolbar a { + cursor: pointer; +} + +div.code-toolbar > .toolbar button { + background: none; + border: 0; + color: inherit; + font: inherit; + line-height: normal; + overflow: visible; + padding: 0; + -webkit-user-select: none; /* for button */ + -moz-user-select: none; + -ms-user-select: none; +} + +div.code-toolbar > .toolbar a, +div.code-toolbar > .toolbar button, +div.code-toolbar > .toolbar span { + color: #bbb; + font-size: 0.8em; + padding: 0 0.5em; + background: #f5f2f0; + background: rgba(224, 224, 224, 0.2); + box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.2); + border-radius: 0.5em; +} + +div.code-toolbar > .toolbar a:hover, +div.code-toolbar > .toolbar a:focus, +div.code-toolbar > .toolbar button:hover, +div.code-toolbar > .toolbar button:focus, +div.code-toolbar > .toolbar span:hover, +div.code-toolbar > .toolbar span:focus { + color: inherit; + text-decoration: none; +} diff --git a/backend/documentation/styles/readthedocs.css b/backend/documentation/styles/readthedocs.css new file mode 100644 index 0000000..c3e9452 --- /dev/null +++ b/backend/documentation/styles/readthedocs.css @@ -0,0 +1,117 @@ +.navbar-default { + background: #2980b9; + border: none; +} + +.navbar-default .navbar-brand { + color: #fcfcfc; +} + +.menu { + background: #343131; + color: #fcfcfc; +} + +.menu ul.list li a { + color: #fcfcfc; +} + +.menu ul.list li.title { + background: #2980b9; + padding-bottom: 5px; +} + +.menu ul.list li:nth-child(2) { + margin-top: 0; +} + +.menu ul.list li.chapter a, +.menu ul.list li.chapter .simple { + color: #555; + text-transform: uppercase; + text-decoration: none; +} + +.menu ul.list li.chapter ul.links a { + color: #b3b3b3; + text-transform: none; + padding-left: 35px; +} + +.menu ul.list li.chapter ul.links a:hover { + background: #4e4a4a; +} + +.menu ul.list li.chapter a.active, +.menu ul.list li.chapter ul.links a.active { + color: #0099e5; +} + +.menu ul.list li.chapter ul.links { + padding-left: 0; +} + +.menu ul.list li.divider { + background: rgba(255, 255, 255, 0.07); +} + +#book-search-input input, +#book-search-input input:focus, +#book-search-input input:hover { + color: #949494; +} + +.copyright { + color: #b3b3b3; + background: #272525; +} + +.content { + background: #fcfcfc; +} + +.content a { + color: #2980b9; +} + +.content a:hover { + color: #3091d1; +} + +.content a:visited { + color: #9b59b6; +} + +.menu ul.list li:nth-last-child(2) { + background: none; +} + +code { + white-space: nowrap; + max-width: 100%; + background: #fff; + padding: 2px 5px; + color: #e74c3c; + overflow-x: auto; + border-radius: 0; +} + +pre { + white-space: pre; + margin: 0; + padding: 12px 12px; + font-size: 12px; + line-height: 1.5; + display: block; + overflow: auto; + color: #404040; + background: rgba(238, 238, 238, 0.35); +} + +.dark .content { + background: none; +} +.dark code { + background: none; + color: #e09393; +} diff --git a/backend/documentation/styles/reset.css b/backend/documentation/styles/reset.css new file mode 100644 index 0000000..9a153b5 --- /dev/null +++ b/backend/documentation/styles/reset.css @@ -0,0 +1,129 @@ +/* http://meyerweb.com/eric/tools/css/reset/ + v2.0 | 20110126 + License: none (public domain) +*/ + +html, +body, +div, +span, +applet, +object, +iframe, +h1, +h2, +h3, +h4, +h5, +h6, +p, +blockquote, +pre, +a, +abbr, +acronym, +address, +big, +cite, +code, +del, +dfn, +em, +img, +ins, +kbd, +q, +s, +samp, +small, +strike, +strong, +sub, +sup, +tt, +var, +b, +u, +i, +center, +dl, +dt, +dd, +ol, +ul, +li, +fieldset, +form, +label, +legend, +table, +caption, +tbody, +tfoot, +thead, +tr, +th, +td, +article, +aside, +canvas, +details, +embed, +figure, +figcaption, +footer, +header, +hgroup, +menu, +nav, +output, +ruby, +section, +summary, +time, +mark, +audio, +video { + margin: 0; + padding: 0; + border: 0; + font: inherit; + font-size: 100%; + vertical-align: baseline; +} +/* HTML5 display-role reset for older browsers */ +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +menu, +nav, +section { + display: block; +} +body { + line-height: 1; +} +ol, +ul { + list-style: none; +} +blockquote, +q { + quotes: none; +} +blockquote:before, +blockquote:after, +q:before, +q:after { + content: ''; + content: none; +} +table { + border-collapse: collapse; + border-spacing: 0; +} diff --git a/backend/documentation/styles/stripe.css b/backend/documentation/styles/stripe.css new file mode 100644 index 0000000..8e41582 --- /dev/null +++ b/backend/documentation/styles/stripe.css @@ -0,0 +1,106 @@ +.navbar-default .navbar-brand { + color: #0099e5; +} + +.menu ul.list li a[data-type='chapter-link'], +.menu ul.list li.chapter .simple { + color: #939da3; + text-transform: uppercase; +} + +.content h1, +.content h2, +.content h3, +.content h4, +.content h5 { + color: #292e31; + font-weight: normal; +} + +.content { + color: #4c555a; +} + +.menu ul.list li.title { + padding: 5px 0; +} + +a { + color: #0099e5; + text-decoration: none; +} +a:hover { + color: #292e31; + text-decoration: none; +} + +.menu ul.list li:nth-child(2) { + margin-top: 0; +} + +.menu ul.list li.title a, +.navbar a { + color: #0099e5; + text-decoration: none; + font-size: 16px; +} + +.menu ul.list li a.active { + color: #0099e5; +} + +code { + box-sizing: border-box; + display: inline-block; + padding: 0 5px; + background: #fafcfc; + border-radius: 4px; + color: #b93d6a; + font-size: 13px; + line-height: 20px; +} + +pre { + margin: 0; + padding: 12px 12px; + background: #272b2d; + border-radius: 5px; + font-size: 13px; + line-height: 1.5em; + font-weight: 500; +} + +.dark body { + color: #fafafa; +} +.dark .content h1, +.dark .content h2, +.dark .content h3, +.dark .content h4, +.dark .content h5 { + color: #fafafa; +} + +.dark code { + background: none; +} + +.dark .content { + color: #fafafa; +} + +.dark .menu ul.list li a[data-type='chapter-link'], +.dark .menu ul.list li.chapter .simple { + color: #fafafa; +} + +.dark .menu ul.list li.title a { + color: #fafafa; +} + +.dark .menu ul.list li a { + color: #fafafa; +} +.dark .menu ul.list li a.active { + color: #7fc9ff; +} diff --git a/backend/documentation/styles/style.css b/backend/documentation/styles/style.css new file mode 100644 index 0000000..09e9f1e --- /dev/null +++ b/backend/documentation/styles/style.css @@ -0,0 +1,7 @@ +@import "./reset.css"; +@import "./bootstrap.min.css"; +@import "./bootstrap-card.css"; +@import "./prism.css"; +@import "./ionicons.min.css"; +@import "./compodoc.css"; +@import "./tablesort.css"; diff --git a/backend/documentation/styles/tablesort.css b/backend/documentation/styles/tablesort.css new file mode 100644 index 0000000..f715483 --- /dev/null +++ b/backend/documentation/styles/tablesort.css @@ -0,0 +1,33 @@ +th[role=columnheader]:not(.no-sort) { + cursor: pointer; +} + +th[role=columnheader]:not(.no-sort):after { + content: ''; + float: right; + margin-top: 7px; + border-width: 0 4px 4px; + border-style: solid; + border-color: #404040 transparent; + visibility: visible; + opacity: 1; + -ms-user-select: none; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} + +th[aria-sort=ascending]:not(.no-sort):after { + border-bottom: none; + border-width: 4px 4px 0; +} + +th[aria-sort]:not(.no-sort):after { + visibility: visible; + opacity: 0.4; +} + +th[role=columnheader]:not(.no-sort):hover:after { + visibility: visible; + opacity: 1; +} diff --git a/backend/documentation/styles/vagrant.css b/backend/documentation/styles/vagrant.css new file mode 100644 index 0000000..f72edb0 --- /dev/null +++ b/backend/documentation/styles/vagrant.css @@ -0,0 +1,130 @@ +.navbar-default .navbar-brand { + background: white; + color: #8d9ba8; +} + +.menu .list { + background: #0c5593; +} + +.menu .chapter { + padding: 0 20px; +} + +.menu ul.list li a[data-type='chapter-link'], +.menu ul.list li.chapter .simple { + color: white; + text-transform: uppercase; + border-bottom: 1px solid rgba(255, 255, 255, 0.4); +} + +.content h1, +.content h2, +.content h3, +.content h4, +.content h5 { + color: #292e31; + font-weight: normal; +} + +.content { + color: #4c555a; +} + +a { + color: #0094bf; + text-decoration: underline; +} +a:hover { + color: #f1362f; +} + +.menu ul.list li.title { + background: white; + padding-bottom: 5px; +} + +.menu ul.list li:nth-child(2) { + margin-top: 0; +} + +.menu ul.list li:nth-last-child(2) { + background: none; +} + +.menu ul.list li.title a { + padding: 10px 15px; +} + +.menu ul.list li.title a, +.navbar a { + color: #8d9ba8; + text-decoration: none; + font-size: 16px; + font-weight: 300; +} + +.menu ul.list li a { + color: white; + padding: 10px; + font-weight: 300; + text-decoration: none; +} +.menu ul.list li a.active { + color: white; + font-weight: bold; +} + +.copyright { + color: white; + background: #000; +} + +code { + box-sizing: border-box; + display: inline-block; + padding: 0 5px; + background: rgba(0, 148, 191, 0.1); + border-radius: 3px; + color: #0094bf; + font-size: 13px; + line-height: 20px; +} + +pre { + margin: 0; + padding: 12px 12px; + background: rgba(238, 238, 238, 0.35); + border-radius: 3px; + font-size: 13px; + line-height: 1.5em; + font-weight: 500; +} + +.dark body { + color: #fafafa; +} +.dark .content h1, +.dark .content h2, +.dark .content h3, +.dark .content h4, +.dark .content h5 { + color: #fafafa; +} + +.dark code { + background: none; +} + +.dark .content { + color: #fafafa; +} + +.dark .menu ul.list li.title a, +.dark .navbar a { + color: #8d9ba8; +} + +.dark .menu ul.list li a { + color: #fafafa; +} diff --git a/backend/documentation/template-playground-app/app.js b/backend/documentation/template-playground-app/app.js new file mode 100644 index 0000000..d13a354 --- /dev/null +++ b/backend/documentation/template-playground-app/app.js @@ -0,0 +1,1389 @@ +/** + * Compodoc Template Playground Application + * Main JavaScript file that handles all playground functionality + */ + +class TemplatePlayground { + constructor() { + this.editor = null; + this.currentTemplate = null; + this.currentData = {}; + this.originalData = {}; + this.customVariables = {}; + this.debounceTimer = null; + this.sessionId = null; + + // Track last visited doc URL in the iframe + this.lastVisitedDocUrl = null; + window.addEventListener('message', (event) => { + if (event.data && event.data.type === 'compodoc-iframe-navigate') { + this.lastVisitedDocUrl = event.data.url; + // Optionally persist in sessionStorage + sessionStorage.setItem('compodocLastVisitedDocUrl', this.lastVisitedDocUrl); + } + }); + // Restore from sessionStorage if available + const storedUrl = sessionStorage.getItem('compodocLastVisitedDocUrl'); + if (storedUrl) { + this.lastVisitedDocUrl = storedUrl; + } + + this.init(); + } + + async init() { + try { + // Check JSZip availability on startup + setTimeout(() => { + if (typeof JSZip !== 'undefined') { + console.log('✅ JSZip loaded successfully'); + } else if (window.JSZipLoadError) { + console.error('❌ JSZip failed to load from all CDNs'); + } else { + console.warn('⚠️ JSZip still loading...'); + } + }, 2000); + + // First create a session + await this.createSession(); + await this.initializeMonacoEditor(); + this.setupEventListeners(); + this.setupResizer(); + await this.loadTemplateList(); + console.log('🎨 Template Playground initialized successfully'); + } catch (error) { + console.error('Failed to initialize Template Playground:', error); + this.showError('Failed to initialize editor. Please refresh the page.'); + } + } + + async createSession() { + try { + const response = await fetch('/api/session/create', { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + } + }); + + if (!response.ok) { + throw new Error('Failed to create session'); + } + + const result = await response.json(); + this.sessionId = result.sessionId; + console.log('Session created:', this.sessionId); + } catch (error) { + console.error('Error creating session:', error); + throw error; + } + } + + async loadTemplateList() { + try { + const response = await fetch(`/api/session/${this.sessionId}/templates`); + if (!response.ok) { + throw new Error('Failed to load templates'); + } + + const result = await response.json(); + const templates = result.templates; + + // Update the template dropdown + const dropdown = document.getElementById('templateSelect'); + if (dropdown) { + dropdown.innerHTML = ''; + + // Group templates by type + const mainTemplates = templates.filter(t => t.type === 'template'); + const partials = templates.filter(t => t.type === 'partial'); + + if (mainTemplates.length > 0) { + const mainGroup = document.createElement('optgroup'); + mainGroup.label = 'Main Templates'; + mainTemplates.forEach(template => { + const option = document.createElement('option'); + option.value = template.path; + option.textContent = template.name; + mainGroup.appendChild(option); + }); + dropdown.appendChild(mainGroup); + } + + if (partials.length > 0) { + const partialsGroup = document.createElement('optgroup'); + partialsGroup.label = 'Partials'; + partials.forEach(template => { + const option = document.createElement('option'); + option.value = template.path; + option.textContent = template.name; + partialsGroup.appendChild(option); + }); + dropdown.appendChild(partialsGroup); + } + } + } catch (error) { + console.error('Error loading template list:', error); + this.showError('Failed to load template list'); + } + } + + async initializeMonacoEditor() { + return new Promise((resolve, reject) => { + require.config({ paths: { 'vs': 'https://cdn.jsdelivr.net/npm/monaco-editor@0.45.0/min/vs' }}); + + require(['vs/editor/editor.main'], () => { + try { + // Register Handlebars language + monaco.languages.register({ id: 'handlebars' }); + + // Define Handlebars syntax highlighting + monaco.languages.setMonarchTokensProvider('handlebars', { + tokenizer: { + root: [ + [/\{\{\{.*?\}\}\}/, 'string.html'], + [/\{\{.*?\}\}/, 'keyword'], + [/<[^>]+>/, 'tag'], + [//, 'comment'], + [/"[^"]*"/, 'string'], + [/'[^']*'/, 'string'], + [/[{}[\]()]/, 'delimiter.bracket'], + [/[a-zA-Z_$][\w$]*/, 'identifier'], + ] + } + }); + + // Create the editor + this.editor = monaco.editor.create(document.getElementById('templateEditor'), { + value: '', + language: 'handlebars', + theme: 'vs', + automaticLayout: true, + wordWrap: 'on', + minimap: { enabled: false }, + scrollBeyondLastLine: false, + fontSize: 14, + lineNumbers: 'on', + renderWhitespace: 'selection' + }); + + // Setup editor change listener with debouncing + this.editor.onDidChangeModelContent(() => { + this.debouncePreviewUpdate(); + }); + + resolve(); + } catch (error) { + reject(error); + } + }); + }); + } + + setupEventListeners() { + // Template selection + document.getElementById('templateSelect').addEventListener('change', (e) => { + this.loadTemplate(e.target.value); + }); + + // Variable management + document.getElementById('resetVariables').addEventListener('click', () => { + this.resetVariables(); + }); + + document.getElementById('exportData').addEventListener('click', () => { + this.exportData(); + }); + + // Template actions + document.getElementById('refreshPreview').addEventListener('click', () => { + this.updatePreview(); + }); + + document.getElementById('copyTemplate').addEventListener('click', () => { + this.copyTemplate(); + }); + + document.getElementById('downloadTemplate').addEventListener('click', () => { + this.downloadTemplate(); + }); + + // Enter key for adding variables + // ['newVariableName', 'newVariableType', 'newVariableValue'].forEach(id => { + // document.getElementById(id).addEventListener('keypress', (e) => { + // if (e.key === 'Enter' && !e.shiftKey) { + // e.preventDefault(); + // this.addCustomVariable(); + // } + // }); + // }); + } + + setupResizer() { + const resizer = document.getElementById('resizer'); + const variablesPanel = document.querySelector('.variables-panel'); + let isResizing = false; + + resizer.addEventListener('mousedown', (e) => { + isResizing = true; + document.addEventListener('mousemove', handleMouseMove); + document.addEventListener('mouseup', handleMouseUp); + e.preventDefault(); + }); + + function handleMouseMove(e) { + if (!isResizing) return; + + const containerRect = document.querySelector('.playground-content').getBoundingClientRect(); + const newWidth = e.clientX - containerRect.left; + + if (newWidth >= 250 && newWidth <= containerRect.width - 400) { + variablesPanel.style.width = newWidth + 'px'; + } + } + + function handleMouseUp() { + isResizing = false; + document.removeEventListener('mousemove', handleMouseMove); + document.removeEventListener('mouseup', handleMouseUp); + } + } + + async loadTemplate(templatePath) { + if (!templatePath) { + this.clearTemplate(); + return; + } + + try { + this.showLoading('Loading template and configuration...'); + + // Load configuration data instead of template-specific data + const configResponse = await fetch(`/api/session/${this.sessionId}/config`); + if (!configResponse.ok) { + throw new Error('Failed to load configuration data'); + } + + const { config } = await configResponse.json(); + + // Format config data to match expected structure + this.currentData = { + categories: { + compodocConfig: { + title: 'Compodoc Configuration Options', + description: 'Edit these configuration options to customize the generated documentation. Changes will automatically regenerate the documentation.', + data: config + } + } + }; + this.originalData = JSON.parse(JSON.stringify(this.currentData)); + + // Load template content - try specific template first, then fallback + let templateContent = ''; + try { + const encodedTemplatePathForContent = encodeURIComponent(templatePath); + const templateResponse = await fetch(`/api/session/${this.sessionId}/template/${encodedTemplatePathForContent}`); + if (templateResponse.ok) { + const template = await templateResponse.json(); + templateContent = template.content; + } else { + // Use a generic template based on type + templateContent = this.getGenericTemplate(templatePath); + } + } catch (error) { + console.warn('Could not load specific template, using generic:', error); + templateContent = this.getGenericTemplate(templatePath); + } + + this.currentTemplate = { + path: templatePath, + content: templateContent + }; + + // Defensive: Only update metadata if config data is present + if (this.currentData && this.currentData.categories && this.currentData.categories.compodocConfig && this.currentData.categories.compodocConfig.data) { + this.updateTemplateMetadata(templatePath, this.currentData.categories.compodocConfig.data); + } else { + this.updateTemplateMetadata(templatePath, {}); + } + this.editor.setValue(templateContent); + this.renderVariables(); + this.updatePreview(); + + this.hideLoading(); + + } catch (error) { + console.error('Error loading template:', error); + this.showError(`Failed to load template: ${error.message}`); + } + } + + getGenericTemplate(templatePath) { + const templates = { + component: ` + +
                                                                                                                                              +

                                                                                                                                              {{name}}

                                                                                                                                              +

                                                                                                                                              {{description}}

                                                                                                                                              + + {{#if selector}} +

                                                                                                                                              Selector: {{selector}}

                                                                                                                                              + {{/if}} + + {{#if inputs}} +

                                                                                                                                              Inputs

                                                                                                                                              +
                                                                                                                                                + {{#each inputs}} +
                                                                                                                                              • {{name}} ({{type}}): {{description}}
                                                                                                                                              • + {{/each}} +
                                                                                                                                              + {{/if}} + + {{#if outputs}} +

                                                                                                                                              Outputs

                                                                                                                                              +
                                                                                                                                                + {{#each outputs}} +
                                                                                                                                              • {{name}} ({{type}}): {{description}}
                                                                                                                                              • + {{/each}} +
                                                                                                                                              + {{/if}} +
                                                                                                                                              `, + module: ` + +
                                                                                                                                              +

                                                                                                                                              {{name}}

                                                                                                                                              +

                                                                                                                                              {{description}}

                                                                                                                                              + + {{#if declarations}} +

                                                                                                                                              Declarations

                                                                                                                                              +
                                                                                                                                                + {{#each declarations}} +
                                                                                                                                              • {{name}} ({{type}})
                                                                                                                                              • + {{/each}} +
                                                                                                                                              + {{/if}} + + {{#if imports}} +

                                                                                                                                              Imports

                                                                                                                                              +
                                                                                                                                                + {{#each imports}} +
                                                                                                                                              • {{name}}
                                                                                                                                              • + {{/each}} +
                                                                                                                                              + {{/if}} +
                                                                                                                                              `, + interface: ` + +
                                                                                                                                              +

                                                                                                                                              {{name}}

                                                                                                                                              +

                                                                                                                                              {{description}}

                                                                                                                                              + + {{#if properties}} +

                                                                                                                                              Properties

                                                                                                                                              + + + + + + + + + + + {{#each properties}} + + + + + + + {{/each}} + +
                                                                                                                                              NameTypeOptionalDescription
                                                                                                                                              {{name}}{{type}}{{#if optional}}Yes{{else}}No{{/if}}{{description}}
                                                                                                                                              + {{/if}} +
                                                                                                                                              `, + class: ` + +
                                                                                                                                              +

                                                                                                                                              {{name}}

                                                                                                                                              +

                                                                                                                                              {{description}}

                                                                                                                                              + + {{#if methods}} +

                                                                                                                                              Methods

                                                                                                                                              + {{#each methods}} +
                                                                                                                                              +
                                                                                                                                              {{name}}
                                                                                                                                              +

                                                                                                                                              {{description}}

                                                                                                                                              +

                                                                                                                                              Returns: {{type}}

                                                                                                                                              +
                                                                                                                                              + {{/each}} + {{/if}} +
                                                                                                                                              ` + }; + + return templates[templatePath] || `

                                                                                                                                              {{name}}

                                                                                                                                              +

                                                                                                                                              {{description}}

                                                                                                                                              +

                                                                                                                                              Type: ${templatePath}

                                                                                                                                              `; + } + + updateTemplateMetadata(templatePath, data) { + const metadata = document.getElementById('templateMetadata'); + document.getElementById('templateName').textContent = data.name || templatePath; + document.getElementById('templateFile').textContent = data.file || `${templatePath}.hbs`; + document.getElementById('templateDescription').textContent = data.description || `Template for ${templatePath}`; + metadata.style.display = 'block'; + } + + renderVariables() { + const container = document.getElementById('variablesList'); + container.innerHTML = ''; + + // Check if we have the new categorized data format + if (this.currentData && this.currentData.categories) { + this.renderCategorizedVariables(container); + } else { + // Fallback to legacy format + this.renderLegacyVariables(container); + } + + // Remove custom variables section + // this.renderCustomVariables(container); + } + + renderCategorizedVariables(container) { + const categories = this.currentData.categories; + + // Only render Compodoc Configuration section + if (categories.compodocConfig) { + // Add a special header for config section + const configHeader = document.createElement('div'); + configHeader.innerHTML = ` +
                                                                                                                                              + Editable Configuration +
                                                                                                                                              + `; + container.appendChild(configHeader); + + this.createCategorySection( + container, + 'compodoc-config', + categories.compodocConfig.title, + categories.compodocConfig.description, + categories.compodocConfig.data, + '#2196F3', // Blue for config + 'config' // Mark as config category - these will be editable + ); + } + + // Template variables section removed - only show config options + } + + createCategorySection(container, categoryId, title, description, data, accentColor, categoryType = 'template') { + const section = document.createElement('div'); + section.className = 'variable-category'; + section.style.marginBottom = '20px'; + + section.innerHTML = ` +
                                                                                                                                              +
                                                                                                                                              +
                                                                                                                                              +

                                                                                                                                              ${title}

                                                                                                                                              +

                                                                                                                                              ${description}

                                                                                                                                              +
                                                                                                                                              + +
                                                                                                                                              +
                                                                                                                                              +
                                                                                                                                              +
                                                                                                                                              +
                                                                                                                                              + `; + + // Add toggle functionality + const header = section.querySelector('.category-header'); + const content = section.querySelector('.category-content'); + const toggle = section.querySelector('.category-toggle'); + + header.addEventListener('click', () => { + const isCollapsed = content.style.display === 'none'; + content.style.display = isCollapsed ? 'block' : 'none'; + toggle.style.transform = isCollapsed ? 'rotate(0deg)' : 'rotate(-180deg)'; + }); + + container.appendChild(section); + + // Populate variables in this category + const variableContainer = section.querySelector('.category-variables'); + this.createVariableElements(data, '', variableContainer, 0, accentColor, categoryType); + } + + renderLegacyVariables(container) { + // Legacy rendering for backward compatibility + const section = document.createElement('div'); + section.innerHTML = ` +
                                                                                                                                              +

                                                                                                                                              Template Data

                                                                                                                                              +

                                                                                                                                              Available template variables and context

                                                                                                                                              +
                                                                                                                                              +
                                                                                                                                              + `; + + container.appendChild(section); + const variableContainer = section.querySelector('.category-variables'); + this.createVariableElements(this.currentData, '', variableContainer); + } + + renderCustomVariables(container) { + if (Object.keys(this.customVariables).length === 0) return; + + const section = document.createElement('div'); + section.className = 'variable-category custom-variables'; + section.style.marginTop = '20px'; + + section.innerHTML = ` +
                                                                                                                                              +
                                                                                                                                              +
                                                                                                                                              +

                                                                                                                                              Custom Variables

                                                                                                                                              +

                                                                                                                                              User-defined variables for template customization

                                                                                                                                              +
                                                                                                                                              + +
                                                                                                                                              +
                                                                                                                                              +
                                                                                                                                              + `; + + container.appendChild(section); + + // Add custom variables + const customContainer = section.querySelector('.custom-variables-content'); + Object.entries(this.customVariables).forEach(([key, value]) => { + this.createVariableElement(key, typeof value, value, customContainer, true, null, '#FF9800'); + }); + } + + createVariableElements(obj, prefix, container, depth = 0, accentColor = '#007bff', categoryType = 'template') { + if (depth > 3) return; // Prevent too deep nesting + + const sortedEntries = Object.entries(obj).sort(([a], [b]) => { + // Sort by importance: put functions and complex objects at the end + const aIsSimple = typeof obj[a] !== 'object' && typeof obj[a] !== 'function'; + const bIsSimple = typeof obj[b] !== 'object' && typeof obj[b] !== 'function'; + if (aIsSimple && !bIsSimple) return -1; + if (!aIsSimple && bIsSimple) return 1; + return a.localeCompare(b); + }); + + sortedEntries.forEach(([key, value]) => { + const fullKey = prefix ? `${prefix}.${key}` : key; + + if (value && typeof value === 'object' && !Array.isArray(value)) { + // Create expandable object + if (depth < 3) { + const objectElement = document.createElement('div'); + objectElement.className = 'variable-item expandable-object'; + objectElement.style.marginBottom = '8px'; + + const isExpanded = depth === 0; // Expand top-level objects by default + + objectElement.innerHTML = ` +
                                                                                                                                              + +
                                                                                                                                              ${key}
                                                                                                                                              +
                                                                                                                                              object
                                                                                                                                              +
                                                                                                                                              +
                                                                                                                                              + `; + + // Add click handler for expansion + const header = objectElement.querySelector('.variable-header'); + const toggle = objectElement.querySelector('.expand-toggle'); + const nested = objectElement.querySelector('.nested-variables'); + + header.addEventListener('click', () => { + const isCurrentlyExpanded = nested.style.display !== 'none'; + nested.style.display = isCurrentlyExpanded ? 'none' : 'block'; + toggle.style.transform = isCurrentlyExpanded ? 'rotate(0deg)' : 'rotate(90deg)'; + }); + + container.appendChild(objectElement); + + const nestedContainer = objectElement.querySelector('.nested-variables'); + this.createVariableElements(value, fullKey, nestedContainer, depth + 1, accentColor, categoryType); + } + } else { + this.createVariableElement(key, typeof value, value, container, false, fullKey, accentColor, categoryType); + } + }); + } + + createVariableElement(name, type, value, container, isCustom = false, fullPath = null, accentColor = '#007bff', categoryType = 'template') { + const variableElement = document.createElement('div'); + variableElement.className = 'variable-item simple-variable'; + variableElement.style.marginBottom = '6px'; + + let displayValue = value; + let rows = 1; + + if (typeof value === 'object' && value !== null) { + displayValue = JSON.stringify(value, null, 2); + rows = Math.min(displayValue.split('\n').length, 6); + } else if (typeof value === 'string') { + displayValue = value; + rows = Math.min(displayValue.split('\n').length, 4); + } else if (typeof value === 'function') { + displayValue = value.toString().substring(0, 100) + '...'; + type = 'function'; + rows = 2; + } else { + displayValue = String(value); + } + + // Determine if variable should be editable + // Config variables are editable, template variables are read-only, custom variables are always editable + const isEditable = isCustom || categoryType === 'config'; + + // Determine type color + const getTypeColor = (type) => { + switch (type) { + case 'string': return '#4CAF50'; + case 'number': return '#2196F3'; + case 'boolean': return '#FF9800'; + case 'function': return '#9C27B0'; + case 'object': return '#607D8B'; + default: return '#666'; + } + }; + + // Render dropdown for string config variables with known options + let inputElement = ''; + const selectOptions = { + theme: [ + 'gitbook', 'laravel', 'material', 'readthedocs', 'postmark', 'vagrant', 'minimal', 'default', 'plain', 'stripe', 'aglio', 'book', 'github', 'vuepress', 'docusaurus', 'mkdocs', 'slate', 'swagger', 'modern', 'clean', 'classic', 'simple', 'bootstrap', 'angular', 'react', 'vue', 'bulma', 'tailwind', 'windicss', 'dracula', 'solarized', 'nord', 'night', 'light', 'dark', 'custom' + ], + language: [ + 'en-US', 'fr-FR', 'de-DE', 'es-ES', 'it-IT', 'ja-JP', 'ko-KR', 'nl-NL', 'pl-PL', 'pt-BR', 'ru-RU', 'sk-SK', 'zh-CN', 'zh-TW', 'bg-BG', 'hu-HU', 'ka-GE' + ], + exportFormat: [ + 'html', 'json', 'pdf' + ] + }; + if (isEditable && type === 'string' && selectOptions[name]) { + inputElement = ``; + } else if (isEditable && type === 'boolean') { + inputElement = ``; + } else { + inputElement = ``; + } + + variableElement.innerHTML = ` +
                                                                                                                                              +
                                                                                                                                              +
                                                                                                                                              +
                                                                                                                                              ${name}
                                                                                                                                              +
                                                                                                                                              ${type}
                                                                                                                                              + ${isCustom ? ` + + ` : ''} +
                                                                                                                                              + ${inputElement} +
                                                                                                                                              +
                                                                                                                                              + `; + + container.appendChild(variableElement); + } + + updateVariable(path, value, isCustom = false, categoryType = 'template') { + try { + let parsedValue; + + // Try to parse as JSON first + try { + parsedValue = JSON.parse(value); + } catch { + // If not valid JSON, treat as string + parsedValue = value; + } + + if (isCustom) { + this.customVariables[path] = parsedValue; + this.debouncePreviewUpdate(); + } else if (categoryType === 'config') { + // Handle config variable updates + this.updateSessionConfig(path, parsedValue); + } else { + // Update nested property for template variables + this.setNestedProperty(this.currentData, path, parsedValue); + this.debouncePreviewUpdate(); + } + + } catch (error) { + console.error('Error updating variable:', error); + } + } + + async updateSessionConfig(configPath, newValue) { + try { + // Update the local config data immediately for responsiveness + this.setNestedProperty(this.currentData.categories.compodocConfig.data, configPath, newValue); + + // Prepare config update for server + const configUpdate = {}; + this.setNestedProperty(configUpdate, configPath, newValue); + + this.showMessage('💾 Saving configuration...', 'info'); + + // Send config update to server + const response = await fetch(`/api/session/${this.sessionId}/config`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ + config: configUpdate + }) + }); + + if (!response.ok) { + throw new Error(`Server responded with ${response.status}`); + } + + const result = await response.json(); + + if (result.success) { + this.showSuccess('✅ Configuration saved! Documentation regenerating...'); + // Automatically update the preview after config is saved + this.updatePreview(); + } else { + throw new Error(result.message || 'Failed to save configuration'); + } + + } catch (error) { + console.error('Error updating session config:', error); + this.showError(`❌ Failed to save configuration: ${error.message}`); + + // Revert the local change if save failed + this.renderVariables(); + } + } + + setNestedProperty(obj, path, value) { + const keys = path.split('.'); + const lastKey = keys.pop(); + const target = keys.reduce((current, key) => current && current[key], obj); + + if (target && lastKey) { + target[lastKey] = value; + } + } + + addCustomVariable() { + const nameInput = document.getElementById('newVariableName'); + const typeInput = document.getElementById('newVariableType'); + const valueInput = document.getElementById('newVariableValue'); + + const name = nameInput.value.trim(); + const type = typeInput.value.trim() || 'string'; + const valueStr = valueInput.value.trim(); + + if (!name) { + this.showError('Variable name is required'); + return; + } + + let value; + try { + if (valueStr) { + value = JSON.parse(valueStr); + } else { + value = type === 'boolean' ? false : type === 'number' ? 0 : ''; + } + } catch { + value = valueStr; + } + + this.customVariables[name] = value; + + // Clear inputs + nameInput.value = ''; + typeInput.value = ''; + valueInput.value = ''; + + this.renderVariables(); + this.debouncePreviewUpdate(); + this.showSuccess('Variable added successfully'); + } + + removeVariable(name) { + delete this.customVariables[name]; + this.renderVariables(); + this.debouncePreviewUpdate(); + } + + resetVariables() { + this.currentData = JSON.parse(JSON.stringify(this.originalData)); + this.customVariables = {}; + this.renderVariables(); + this.updatePreview(); + this.showSuccess('Variables reset to default values'); + } + + debouncePreviewUpdate() { + clearTimeout(this.debounceTimer); + this.debounceTimer = setTimeout(() => { + this.updatePreview(); + }, 300); + } + + async updatePreview() { + if (!this.currentTemplate) return; + + try { + this.setPreviewStatus('🚀 Generating documentation with CompoDoc CLI...', true); + + const templateContent = this.editor.getValue(); + + // Use CompoDoc CLI generation API + const response = await fetch(`/api/session/${this.sessionId}/generate-docs`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ + customTemplateContent: templateContent, + templatePath: this.currentTemplate ? this.currentTemplate.path : null, + mockData: { ...this.currentData, ...this.customVariables } + }) + }); + + if (!response.ok) { + const errorData = await response.json(); + throw new Error(errorData.details || `Server responded with ${response.status}`); + } + + const result = await response.json(); + + if (result.success) { + // Documentation generated successfully, now load it in iframe + this.setPreviewStatus('📄 Loading generated documentation...', true); + + // Point iframe to the last visited documentation page if available + const iframe = document.getElementById('templatePreviewFrame'); + if (iframe) { + let url = `/docs/${this.sessionId}/index.html?t=` + Date.now(); + if (this.lastVisitedDocUrl) { + // Remove /docs// prefix if present + let docPath = this.lastVisitedDocUrl.replace(new RegExp(`^/docs/${this.sessionId}/?`), ''); + url = `/docs/${this.sessionId}/${docPath}`; + url += (url.includes('?') ? '&' : '?') + 't=' + Date.now(); + } + iframe.src = url; + + iframe.onload = () => { + this.setPreviewStatus('✅ Documentation loaded successfully', false); + setTimeout(() => { + this.setPreviewStatus('', false); + }, 2000); + }; + + iframe.onerror = () => { + this.setPreviewStatus('❌ Failed to load generated documentation', false); + }; + } else { + this.setPreviewStatus('❌ Preview iframe not found', false); + } + } else { + throw new Error('Documentation generation failed'); + } + + } catch (error) { + console.error('Error generating documentation:', error); + this.setPreviewStatus(`❌ Error: ${error.message}`, false); + + // Show error in iframe + const iframe = document.getElementById('templatePreviewFrame'); + if (iframe) { + const errorHtml = ` + + + Documentation Generation Error + + + +
                                                                                                                                              +
                                                                                                                                              ⚠️
                                                                                                                                              +

                                                                                                                                              Documentation Generation Failed

                                                                                                                                              +
                                                                                                                                              +
                                                                                                                                              +

                                                                                                                                              Possible solutions:

                                                                                                                                              +
                                                                                                                                                +
                                                                                                                                              • Check if your Handlebars template syntax is valid
                                                                                                                                              • +
                                                                                                                                              • Ensure all referenced partials exist
                                                                                                                                              • +
                                                                                                                                              • Verify that template variables match the expected data structure
                                                                                                                                              • +
                                                                                                                                              • Try refreshing the page and loading a different template
                                                                                                                                              • +
                                                                                                                                              +
                                                                                                                                              + +
                                                                                                                                              + + + `; + iframe.srcdoc = errorHtml; + } + } + } + + setPreviewStatus(text, isLoading) { + const statusElement = document.getElementById('previewStatus'); + statusElement.innerHTML = isLoading ? + `
                                                                                                                                              ${text}` : text; + } + + async copyTemplate() { + try { + await navigator.clipboard.writeText(this.editor.getValue()); + this.showSuccess('Template copied to clipboard'); + } catch (error) { + console.error('Error copying template:', error); + this.showError('Failed to copy template'); + } + } + + async downloadTemplate() { + try { + if (!this.sessionId) { + this.showError('No active session. Please refresh the page and try again.'); + return; + } + + // Show loading state + this.showLoading('Creating complete template package...'); + + // Call server-side ZIP creation endpoint for all templates + const response = await fetch(`/api/session/${this.sessionId}/download-all-templates`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + } + }); + + this.hideLoading(); + + if (!response.ok) { + if (response.headers.get('content-type')?.includes('application/json')) { + const errorData = await response.json(); + throw new Error(errorData.error || 'Failed to create template package'); + } else { + throw new Error(`Server error: ${response.status} ${response.statusText}`); + } + } + + // Get the ZIP file as a blob + const zipBlob = await response.blob(); + + // Get filename from response headers or construct it + const contentDisposition = response.headers.get('Content-Disposition'); + let filename = `compodoc-templates-${this.sessionId}.zip`; + + if (contentDisposition) { + const filenameMatch = contentDisposition.match(/filename="([^"]+)"/); + if (filenameMatch) { + filename = filenameMatch[1]; + } + } + + // Create download link and trigger download + const url = URL.createObjectURL(zipBlob); + const a = document.createElement('a'); + a.href = url; + a.download = filename; + document.body.appendChild(a); + a.click(); + document.body.removeChild(a); + URL.revokeObjectURL(url); + + this.showSuccess('Complete template package downloaded successfully'); + + } catch (error) { + console.error('Error downloading template:', error); + this.hideLoading(); + + let errorMessage = 'Failed to download complete template package'; + + if (error.message) { + errorMessage = error.message; + } + + this.showError(errorMessage); + } + } + + exportData() { + try { + // Generate the CompoDoc CLI command based on current config + const config = this.currentData.categories?.compodocConfig?.data || {}; + const booleanFlags = [ + 'hideGenerator', 'disableSourceCode', 'disableGraph', 'disableCoverage', 'disablePrivate', 'disableProtected', 'disableInternal', + 'disableLifeCycleHooks', 'disableConstructors', 'disableRoutesGraph', 'disableSearch', 'disableDependencies', 'disableProperties', + 'disableDomTree', 'disableTemplateTab', 'disableStyleTab', 'disableMainGraph', 'disableFilePath', 'disableOverview', + 'hideDarkModeToggle', 'minimal', 'serve', 'open', 'watch', 'silent', + 'coverageTest', 'coverageTestThresholdFail', 'coverageTestShowOnlyFailed' + ]; + const valueFlags = [ + 'theme', 'language', 'base', 'customFavicon', 'customLogo', 'assetsFolder', 'extTheme', 'includes', 'includesName', 'output', 'port', 'hostname', + 'exportFormat', 'coverageTestThreshold', 'coverageMinimumPerFile', 'unitTestCoverage', 'gaID', 'gaSite', 'maxSearchResults', 'toggleMenuItems', 'navTabConfig' + ]; + let cmd = ['npx compodoc']; + for (const flag of booleanFlags) { + if (config[flag] === true) { + cmd.push(`--${flag}`); + } + } + for (const flag of valueFlags) { + if (config[flag] !== undefined && config[flag] !== "") { + let value = config[flag]; + if (Array.isArray(value) || typeof value === 'object') { + value = JSON.stringify(value); + } + cmd.push(`--${flag} \"${value}\"`); + } + } + // Always include -p and -d + cmd.push(`-p \"tsconfig.json\"`); + cmd.push(`-d \"${config.output || './documentation/'}\"`); + const commandString = cmd.join(' '); + + const blob = new Blob([commandString], { type: 'text/plain' }); + const url = URL.createObjectURL(blob); + const a = document.createElement('a'); + a.href = url; + a.download = `compodoc-command.txt`; + document.body.appendChild(a); + a.click(); + document.body.removeChild(a); + URL.revokeObjectURL(url); + + this.showSuccess('CompoDoc CLI command exported successfully'); + } catch (error) { + console.error('Error exporting command:', error); + this.showError('Failed to export command'); + } + } + + clearTemplate() { + this.currentTemplate = null; + this.currentData = {}; + this.originalData = {}; + this.customVariables = {}; + + this.editor.setValue(''); + document.getElementById('templateMetadata').style.display = 'none'; + document.getElementById('variablesList').innerHTML = ` +
                                                                                                                                              +
                                                                                                                                              + Select a template to see variables +
                                                                                                                                              + `; + // Clear iframe + const iframe = document.getElementById('templatePreviewFrame'); + if (iframe) { + iframe.src = 'data:text/html,
                                                                                                                                              📝
                                                                                                                                              Select a template to see preview
                                                                                                                                              '; + } + } + + showLoading(message) { + document.getElementById('variablesList').innerHTML = ` +
                                                                                                                                              +
                                                                                                                                              + ${message} +
                                                                                                                                              + `; + } + + hideLoading() { + // Loading will be replaced by renderVariables() + } + + showError(message) { + this.showMessage(message, 'error'); + } + + showSuccess(message) { + this.showMessage(message, 'success'); + } + + showMessage(message, type) { + const className = type === 'error' ? 'error-message' : 'success-message'; + const messageElement = document.createElement('div'); + messageElement.className = className; + messageElement.textContent = message; + + const container = document.querySelector('.variables-panel .panel-content'); + container.insertBefore(messageElement, container.firstChild); + + setTimeout(() => { + if (messageElement.parentElement) { + messageElement.parentElement.removeChild(messageElement); + } + }, 3000); + } +} + +// Initialize the playground when DOM is loaded +document.addEventListener('DOMContentLoaded', () => { + window.templatePlayground = new TemplatePlayground(); +}); diff --git a/backend/documentation/template-playground-app/index.html b/backend/documentation/template-playground-app/index.html new file mode 100644 index 0000000..c328e38 --- /dev/null +++ b/backend/documentation/template-playground-app/index.html @@ -0,0 +1,462 @@ + + + + + + Compodoc Template Playground + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                              + +
                                                                                                                                              +

                                                                                                                                              + + Compodoc Template Playground +

                                                                                                                                              +

                                                                                                                                              + Customize and preview Handlebars templates with live data +

                                                                                                                                              +
                                                                                                                                              + + +
                                                                                                                                              + +
                                                                                                                                              +
                                                                                                                                              + Configuration options +
                                                                                                                                              + + +
                                                                                                                                              +
                                                                                                                                              +
                                                                                                                                              + +
                                                                                                                                              + + +
                                                                                                                                              + + + + + +
                                                                                                                                              +
                                                                                                                                              +
                                                                                                                                              + Select a template to see variables +
                                                                                                                                              +
                                                                                                                                              + + + +
                                                                                                                                              +
                                                                                                                                              + + +
                                                                                                                                              + + +
                                                                                                                                              +
                                                                                                                                              + Template Editor +
                                                                                                                                              + + + +
                                                                                                                                              +
                                                                                                                                              + +
                                                                                                                                              + +
                                                                                                                                              +
                                                                                                                                              +
                                                                                                                                              + + +
                                                                                                                                              + Live Preview +
                                                                                                                                              + Ready +
                                                                                                                                              +
                                                                                                                                              +
                                                                                                                                              + + +
                                                                                                                                              +
                                                                                                                                              +
                                                                                                                                              +
                                                                                                                                              +
                                                                                                                                              + + + + + + + + + + + + diff --git a/backend/documentation/template-playground/default-templates.json b/backend/documentation/template-playground/default-templates.json new file mode 100644 index 0000000..d183e4a --- /dev/null +++ b/backend/documentation/template-playground/default-templates.json @@ -0,0 +1,192 @@ +{ + "templates": [ + { + "name": "page.hbs", + "path": "page.hbs", + "description": "Main page template - the base layout for all documentation pages", + "type": "hbs", + "category": "core", + "content": "" + }, + { + "name": "component.hbs", + "path": "partials/component.hbs", + "description": "Component detail template - displays Angular component documentation", + "type": "hbs", + "category": "partials", + "content": "" + }, + { + "name": "module.hbs", + "path": "partials/module.hbs", + "description": "Module detail template - displays Angular module documentation", + "type": "hbs", + "category": "partials", + "content": "" + }, + { + "name": "overview.hbs", + "path": "partials/overview.hbs", + "description": "Overview template - displays the main overview page", + "type": "hbs", + "category": "partials", + "content": "" + }, + { + "name": "class.hbs", + "path": "partials/class.hbs", + "description": "Class detail template - displays TypeScript class documentation", + "type": "hbs", + "category": "partials", + "content": "" + }, + { + "name": "interface.hbs", + "path": "partials/interface.hbs", + "description": "Interface detail template - displays TypeScript interface documentation", + "type": "hbs", + "category": "partials", + "content": "" + }, + { + "name": "injectable.hbs", + "path": "partials/injectable.hbs", + "description": "Injectable service template - displays Angular service documentation", + "type": "hbs", + "category": "partials", + "content": "" + }, + { + "name": "directive.hbs", + "path": "partials/directive.hbs", + "description": "Directive template - displays Angular directive documentation", + "type": "hbs", + "category": "partials", + "content": "" + }, + { + "name": "pipe.hbs", + "path": "partials/pipe.hbs", + "description": "Pipe template - displays Angular pipe documentation", + "type": "hbs", + "category": "partials", + "content": "" + }, + { + "name": "guard.hbs", + "path": "partials/guard.hbs", + "description": "Guard template - displays Angular guard documentation", + "type": "hbs", + "category": "partials", + "content": "" + }, + { + "name": "interceptor.hbs", + "path": "partials/interceptor.hbs", + "description": "Interceptor template - displays Angular interceptor documentation", + "type": "hbs", + "category": "partials", + "content": "" + }, + { + "name": "menu.hbs", + "path": "partials/menu.hbs", + "description": "Navigation menu template - displays the sidebar navigation", + "type": "hbs", + "category": "partials", + "content": "" + } + ], + "styles": [ + { + "name": "compodoc.css", + "path": "styles/compodoc.css", + "description": "Main stylesheet - contains the core styles for Compodoc", + "type": "css", + "category": "core", + "content": "/* This will be populated with the actual compodoc.css content */" + }, + { + "name": "bootstrap.min.css", + "path": "styles/bootstrap.min.css", + "description": "Bootstrap CSS framework - provides base styling components", + "type": "css", + "category": "vendor", + "content": "/* This will be populated with the actual bootstrap.min.css content */" + }, + { + "name": "dark.css", + "path": "styles/dark.css", + "description": "Dark mode styles - contains dark theme styling", + "type": "css", + "category": "theme", + "content": "/* This will be populated with the actual dark.css content */" + }, + { + "name": "gitbook.css", + "path": "styles/gitbook.css", + "description": "GitBook theme styles - alternative theme styling", + "type": "css", + "category": "theme", + "content": "/* This will be populated with the actual gitbook.css content */" + }, + { + "name": "material.css", + "path": "styles/material.css", + "description": "Material design theme styles - Material theme styling", + "type": "css", + "category": "theme", + "content": "/* This will be populated with the actual material.css content */" + } + ], + "scripts": [ + { + "name": "compodoc.js", + "path": "js/compodoc.js", + "description": "Main JavaScript file - contains core Compodoc functionality", + "type": "js", + "category": "core", + "content": "// This will be populated with the actual compodoc.js content" + }, + { + "name": "menu.js", + "path": "js/menu.js", + "description": "Menu functionality - handles navigation menu interactions", + "type": "js", + "category": "core", + "content": "// This will be populated with the actual menu.js content" + }, + { + "name": "tabs.js", + "path": "js/tabs.js", + "description": "Tab functionality - handles tab navigation in documentation pages", + "type": "js", + "category": "core", + "content": "// This will be populated with the actual tabs.js content" + }, + { + "name": "search.js", + "path": "js/search/search.js", + "description": "Search functionality - handles documentation search features", + "type": "js", + "category": "feature", + "content": "// This will be populated with the actual search.js content" + }, + { + "name": "sourceCode.js", + "path": "js/sourceCode.js", + "description": "Source code display - handles syntax highlighting and code display", + "type": "js", + "category": "feature", + "content": "// This will be populated with the actual sourceCode.js content" + }, + { + "name": "lazy-load-graphs.js", + "path": "js/lazy-load-graphs.js", + "description": "Graph loading - handles lazy loading of dependency graphs", + "type": "js", + "category": "feature", + "content": "// This will be populated with the actual lazy-load-graphs.js content" + } + ] +} diff --git a/backend/documentation/template-playground/hbs-render.service.ts b/backend/documentation/template-playground/hbs-render.service.ts new file mode 100644 index 0000000..457d442 --- /dev/null +++ b/backend/documentation/template-playground/hbs-render.service.ts @@ -0,0 +1,212 @@ +import { Injectable } from '@angular/core'; + +declare const Handlebars: any; + +@Injectable({ + providedIn: 'root' +}) +export class HbsRenderService { + private handlebarsInstance: any; + + constructor() { + this.initializeHandlebars(); + } + + private initializeHandlebars() { + // Create a new Handlebars instance for the playground + this.handlebarsInstance = Handlebars.create(); + + // Register common helpers used in Compodoc templates + this.registerHelpers(); + } + + private registerHelpers() { + // Register the 'compare' helper + this.handlebarsInstance.registerHelper('compare', (left: any, operator: string, right: any, options: any) => { + let result; + switch (operator) { + case '===': + result = left === right; + break; + case '!==': + result = left !== right; + break; + case '<': + result = left < right; + break; + case '>': + result = left > right; + break; + case '<=': + result = left <= right; + break; + case '>=': + result = left >= right; + break; + default: + result = false; + } + return result ? options.fn(this) : options.inverse(this); + }); + + // Register the 'unless' helper + this.handlebarsInstance.registerHelper('unless', (conditional: any, options: any) => { + return !conditional ? options.fn(this) : options.inverse(this); + }); + + // Register the 'each' helper with index + this.handlebarsInstance.registerHelper('each', (context: any, options: any) => { + let ret = ''; + for (let i = 0; i < context.length; i++) { + ret += options.fn(context[i], { data: { index: i } }); + } + return ret; + }); + + // Register the 'if' helper + this.handlebarsInstance.registerHelper('if', (conditional: any, options: any) => { + return conditional ? options.fn(this) : options.inverse(this); + }); + + // Register the 'relativeURL' helper + this.handlebarsInstance.registerHelper('relativeURL', (depth: number, page?: string) => { + let url = ''; + for (let i = 0; i < depth; i++) { + url += '../'; + } + return url + (page || ''); + }); + + // Register the 't' helper for translations + this.handlebarsInstance.registerHelper('t', (key: string) => { + // Simple translation mapping for preview + const translations: { [key: string]: string } = { + 'info': 'Information', + 'source': 'Source', + 'example': 'Example', + 'template': 'Template', + 'styles': 'Styles', + 'component': 'Component', + 'module': 'Module', + 'overview': 'Overview', + 'components': 'Components', + 'modules': 'Modules', + 'file': 'File', + 'description': 'Description', + 'selector': 'Selector', + 'properties': 'Properties', + 'methods': 'Methods', + 'inputs': 'Inputs', + 'outputs': 'Outputs' + }; + return translations[key] || key; + }); + + // Register the 'orLength' helper + this.handlebarsInstance.registerHelper('orLength', (...args: any[]) => { + const options = args[args.length - 1]; + const values = args.slice(0, -1); + + for (const value of values) { + if (value && value.length && value.length > 0) { + return options.fn(this); + } + } + return options.inverse(this); + }); + + // Register the 'isTabEnabled' helper + this.handlebarsInstance.registerHelper('isTabEnabled', (navTabs: any[], tabId: string, options: any) => { + const tab = navTabs && navTabs.find((t: any) => t.id === tabId); + return tab ? options.fn(this) : options.inverse(this); + }); + + // Register the 'isInitialTab' helper + this.handlebarsInstance.registerHelper('isInitialTab', (navTabs: any[], tabId: string, options: any) => { + const isInitial = navTabs && navTabs.length > 0 && navTabs[0].id === tabId; + return isInitial ? options.fn(this) : options.inverse(this); + }); + } + + renderTemplate(templateContent: string, data: any): string { + try { + // Create a complete HTML document for preview + const template = this.handlebarsInstance.compile(templateContent); + const rendered = template({ data }); + + // Wrap in a basic HTML structure for preview + return ` + + + + + Template Preview + + + +
                                                                                                                                              + Template Preview: This is a live preview of your template with mock data. +
                                                                                                                                              +
                                                                                                                                              + ${rendered} +
                                                                                                                                              + + + `; + } catch (error) { + return ` + + + + + Template Preview - Error + + + +
                                                                                                                                              +

                                                                                                                                              Template Error

                                                                                                                                              +

                                                                                                                                              Error: ${error.message}

                                                                                                                                              +

                                                                                                                                              Please check your template syntax and try again.

                                                                                                                                              +
                                                                                                                                              + + + `; + } + } + + getMockData(): any { + return { + documentationMainName: 'Sample Documentation', + depth: 0, + context: 'component', + components: [ + { + name: 'SampleComponent', + selector: 'app-sample', + file: 'src/app/sample/sample.component.ts', + description: 'A sample component for demonstration', + properties: [ + { name: 'title', type: 'string', description: 'The component title' }, + { name: 'isVisible', type: 'boolean', description: 'Whether the component is visible' } + ], + methods: [ + { name: 'ngOnInit', description: 'Lifecycle hook', signature: 'ngOnInit(): void' }, + { name: 'onClick', description: 'Handle click events', signature: 'onClick(event: MouseEvent): void' } + ] + } + ], + navTabs: [ + { id: 'info', label: 'Info', href: '#info' }, + { id: 'source', label: 'Source', href: '#source' }, + { id: 'example', label: 'Example', href: '#example' } + ] + }; + } +} diff --git a/backend/documentation/template-playground/main.ts b/backend/documentation/template-playground/main.ts new file mode 100644 index 0000000..59f101c --- /dev/null +++ b/backend/documentation/template-playground/main.ts @@ -0,0 +1,9 @@ +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; +import { TemplatePlaygroundModule } from './template-playground.module'; + +// Bootstrap the Angular application when the DOM is ready +document.addEventListener('DOMContentLoaded', () => { + platformBrowserDynamic() + .bootstrapModule(TemplatePlaygroundModule) + .catch(err => console.error('Error starting template playground:', err)); +}); diff --git a/backend/documentation/template-playground/template-editor.service.ts b/backend/documentation/template-playground/template-editor.service.ts new file mode 100644 index 0000000..3572ea4 --- /dev/null +++ b/backend/documentation/template-playground/template-editor.service.ts @@ -0,0 +1,173 @@ +import { Injectable } from '@angular/core'; + +declare const monaco: any; + +@Injectable({ + providedIn: 'root' +}) +export class TemplateEditorService { + private editor: any; + private onChangeCallback: ((value: string) => void) | null = null; + + initializeEditor(container: HTMLElement) { + // Initialize Monaco Editor + this.editor = monaco.editor.create(container, { + value: '', + language: 'html', + theme: 'vs-dark', + automaticLayout: true, + minimap: { + enabled: true + }, + scrollBeyondLastLine: false, + fontSize: 14, + wordWrap: 'on', + lineNumbers: 'on', + roundedSelection: false, + scrollbar: { + horizontal: 'visible', + vertical: 'visible' + }, + overviewRulerLanes: 2, + quickSuggestions: { + other: true, + comments: true, + strings: true + }, + parameterHints: { + enabled: true + }, + autoClosingBrackets: 'always', + autoClosingQuotes: 'always', + suggestOnTriggerCharacters: true, + acceptSuggestionOnEnter: 'on', + tabCompletion: 'on', + wordBasedSuggestions: false + }); + + // Set up change listener + this.editor.onDidChangeModelContent(() => { + if (this.onChangeCallback) { + this.onChangeCallback(this.editor.getValue()); + } + }); + + // Register custom language definitions + this.registerHandlebarsLanguage(); + } + + setEditorContent(content: string, fileType: string) { + if (this.editor) { + const language = this.getLanguageFromFileType(fileType); + const model = monaco.editor.createModel(content, language); + this.editor.setModel(model); + } + } + + setOnChangeCallback(callback: (value: string) => void) { + this.onChangeCallback = callback; + } + + private getLanguageFromFileType(fileType: string): string { + switch (fileType) { + case 'hbs': + return 'handlebars'; + case 'css': + case 'scss': + return 'css'; + case 'js': + return 'javascript'; + case 'ts': + return 'typescript'; + default: + return 'html'; + } + } + + private registerHandlebarsLanguage() { + // Register Handlebars language for Monaco Editor + if (monaco.languages.getLanguages().find((lang: any) => lang.id === 'handlebars')) { + return; // Already registered + } + + monaco.languages.register({ id: 'handlebars' }); + + monaco.languages.setMonarchTokensProvider('handlebars', { + tokenizer: { + root: [ + [/\{\{\{/, { token: 'keyword', next: '@handlebars_unescaped' }], + [/\{\{/, { token: 'keyword', next: '@handlebars' }], + [//, 'comment', '@pop'], + [/[^-]+/, 'comment'], + [/./, 'comment'] + ], + + doctype: [ + [/[^>]+/, 'metatag.content'], + [/>/, 'metatag', '@pop'] + ], + + tag: [ + [/[ \t\r\n]+/, 'white'], + [/(\w+)(\s*=\s*)("([^"]*)")/, ['attribute.name', 'delimiter', 'attribute.value', 'attribute.value']], + [/(\w+)(\s*=\s*)('([^']*)')/, ['attribute.name', 'delimiter', 'attribute.value', 'attribute.value']], + [/\w+/, 'attribute.name'], + [/>/, 'delimiter', '@pop'] + ] + } + }); + + monaco.languages.setLanguageConfiguration('handlebars', { + comments: { + blockComment: [''] + }, + brackets: [ + ['<', '>'], + ['{{', '}}'], + ['{{{', '}}}'] + ], + autoClosingPairs: [ + { open: '<', close: '>' }, + { open: '{{', close: '}}' }, + { open: '{{{', close: '}}}' }, + { open: '"', close: '"' }, + { open: "'", close: "'" } + ], + surroundingPairs: [ + { open: '<', close: '>' }, + { open: '{{', close: '}}' }, + { open: '{{{', close: '}}}' }, + { open: '"', close: '"' }, + { open: "'", close: "'" } + ] + }); + } + + destroy() { + if (this.editor) { + this.editor.dispose(); + this.editor = null; + } + } +} diff --git a/backend/documentation/template-playground/template-playground.component.ts b/backend/documentation/template-playground/template-playground.component.ts new file mode 100644 index 0000000..80400e0 --- /dev/null +++ b/backend/documentation/template-playground/template-playground.component.ts @@ -0,0 +1,614 @@ +import { Component, OnInit, ViewChild, ElementRef, OnDestroy } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { TemplateEditorService } from './template-editor.service'; +import { ZipExportService } from './zip-export.service'; +import { HbsRenderService } from './hbs-render.service'; + +interface Template { + name: string; + path: string; + type: 'template' | 'partial'; +} + +interface Session { + sessionId: string; + success: boolean; + message: string; +} + +interface CompoDocConfig { + hideGenerator?: boolean; + disableSourceCode?: boolean; + disableGraph?: boolean; + disableCoverage?: boolean; + disablePrivate?: boolean; + disableProtected?: boolean; + disableInternal?: boolean; + disableLifeCycleHooks?: boolean; + disableConstructors?: boolean; + disableRoutesGraph?: boolean; + disableSearch?: boolean; + disableDependencies?: boolean; + disableProperties?: boolean; + disableDomTree?: boolean; + disableTemplateTab?: boolean; + disableStyleTab?: boolean; + disableMainGraph?: boolean; + disableFilePath?: boolean; + disableOverview?: boolean; + hideDarkModeToggle?: boolean; + minimal?: boolean; + customFavicon?: string; + includes?: string; + includesName?: string; +} + +@Component({ + selector: 'template-playground-root', + template: ` +
                                                                                                                                              +
                                                                                                                                              +

                                                                                                                                              Template Playground

                                                                                                                                              +
                                                                                                                                              + Session: {{sessionId.substring(0, 8)}}... + Saving... + Last saved: {{lastSaved | date:'short'}} +
                                                                                                                                              +
                                                                                                                                              + + + +
                                                                                                                                              +
                                                                                                                                              + + +
                                                                                                                                              +

                                                                                                                                              CompoDoc Configuration

                                                                                                                                              +
                                                                                                                                              + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                              +
                                                                                                                                              + +
                                                                                                                                              +
                                                                                                                                              +
                                                                                                                                              +

                                                                                                                                              Templates

                                                                                                                                              +
                                                                                                                                                +
                                                                                                                                              • + + {{template.name}} + {{template.type}} +
                                                                                                                                              • +
                                                                                                                                              + +
                                                                                                                                              + Loading templates... +
                                                                                                                                              +
                                                                                                                                              +
                                                                                                                                              + +
                                                                                                                                              +
                                                                                                                                              +
                                                                                                                                              +

                                                                                                                                              {{selectedFile.path}}

                                                                                                                                              + {{selectedFile.type}} +
                                                                                                                                              +
                                                                                                                                              +
                                                                                                                                              + +
                                                                                                                                              +
                                                                                                                                              +

                                                                                                                                              Live Preview

                                                                                                                                              + +
                                                                                                                                              + +
                                                                                                                                              +
                                                                                                                                              +
                                                                                                                                              +
                                                                                                                                              + `, + styles: [` + .template-playground { + display: flex; + flex-direction: column; + height: 100vh; + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; + } + + .template-playground-header { + display: flex; + justify-content: space-between; + align-items: center; + padding: 1rem 2rem; + background: #f8f9fa; + border-bottom: 1px solid #dee2e6; + } + + .template-playground-status { + display: flex; + align-items: center; + gap: 1rem; + font-size: 0.875rem; + } + + .session-info { + color: #6c757d; + font-family: monospace; + } + + .saving-indicator { + color: #ffc107; + font-weight: bold; + } + + .last-saved { + color: #28a745; + } + + .template-playground-actions { + display: flex; + gap: 0.5rem; + } + + .config-panel { + background: #e9ecef; + padding: 1rem 2rem; + border-bottom: 1px solid #dee2e6; + transition: all 0.3s ease; + max-height: 200px; + overflow: hidden; + } + + .config-panel.collapsed { + max-height: 0; + padding: 0 2rem; + } + + .config-options { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); + gap: 0.5rem; + margin-top: 0.5rem; + } + + .config-options label { + display: flex; + align-items: center; + gap: 0.5rem; + font-size: 0.875rem; + } + + .template-playground-body { + display: flex; + flex: 1; + overflow: hidden; + } + + .template-playground-sidebar { + width: 250px; + background: #f8f9fa; + border-right: 1px solid #dee2e6; + overflow-y: auto; + } + + .template-file-list { + padding: 1rem; + } + + .template-file-list h3 { + margin: 0 0 0.5rem 0; + font-size: 0.875rem; + font-weight: 600; + color: #495057; + text-transform: uppercase; + letter-spacing: 0.5px; + } + + .file-list { + list-style: none; + padding: 0; + margin: 0 0 1.5rem 0; + } + + .file-list li { + display: flex; + align-items: center; + padding: 0.5rem; + cursor: pointer; + border-radius: 4px; + font-size: 0.875rem; + transition: background-color 0.15s ease; + } + + .file-list li:hover { + background: #e9ecef; + } + + .file-list li.active { + background: #007bff; + color: white; + } + + .file-icon { + margin-right: 0.5rem; + opacity: 0.7; + } + + .file-type { + margin-left: auto; + font-size: 0.75rem; + opacity: 0.7; + text-transform: uppercase; + } + + .loading-templates { + text-align: center; + color: #6c757d; + font-style: italic; + padding: 2rem; + } + + .template-playground-main { + flex: 1; + display: flex; + overflow: hidden; + } + + .template-playground-editor { + width: 50%; + display: flex; + flex-direction: column; + border-right: 1px solid #dee2e6; + } + + .editor-header { + display: flex; + justify-content: space-between; + align-items: center; + padding: 0.75rem 1rem; + background: #f8f9fa; + border-bottom: 1px solid #dee2e6; + } + + .editor-header h4 { + margin: 0; + font-size: 0.875rem; + font-weight: 600; + } + + .file-type-badge { + background: #6c757d; + color: white; + padding: 0.125rem 0.5rem; + border-radius: 12px; + font-size: 0.75rem; + text-transform: uppercase; + } + + .editor-container { + flex: 1; + position: relative; + } + + .template-playground-preview { + width: 50%; + display: flex; + flex-direction: column; + } + + .preview-header { + display: flex; + justify-content: space-between; + align-items: center; + padding: 0.75rem 1rem; + background: #f8f9fa; + border-bottom: 1px solid #dee2e6; + } + + .preview-header h4 { + margin: 0; + font-size: 0.875rem; + font-weight: 600; + } + + .preview-frame { + flex: 1; + border: none; + background: white; + } + + .btn { + padding: 0.375rem 0.75rem; + border: 1px solid transparent; + border-radius: 0.25rem; + font-size: 0.875rem; + font-weight: 500; + text-decoration: none; + cursor: pointer; + transition: all 0.15s ease; + } + + .btn-primary { + background: #007bff; + border-color: #007bff; + color: white; + } + + .btn-primary:hover { + background: #0056b3; + border-color: #004085; + } + + .btn-secondary { + background: #6c757d; + border-color: #6c757d; + color: white; + } + + .btn-secondary:hover { + background: #545b62; + border-color: #4e555b; + } + + .btn-success { + background: #28a745; + border-color: #28a745; + color: white; + } + + .btn-success:hover { + background: #1e7e34; + border-color: #1c7430; + } + + .btn-sm { + padding: 0.25rem 0.5rem; + font-size: 0.75rem; + } + `] +}) +export class TemplatePlaygroundComponent implements OnInit, OnDestroy { + @ViewChild('editorContainer', { static: true }) editorContainer!: ElementRef; + @ViewChild('previewFrame', { static: true }) previewFrame!: ElementRef; + + sessionId: string = ''; + templates: Template[] = []; + selectedFile: Template | null = null; + config: CompoDocConfig = {}; + showConfigPanel: boolean = false; + saving: boolean = false; + lastSaved: Date | null = null; + + private saveTimeout?: number; + private readonly SAVE_DELAY = 300; // 300ms debounce + + get previewUrl(): string { + return this.sessionId ? `/api/session/${this.sessionId}/docs/` : ''; + } + + constructor( + private http: HttpClient, + private editorService: TemplateEditorService, + private zipService: ZipExportService, + private hbsService: HbsRenderService + ) {} + + async ngOnInit() { + try { + await this.createSession(); + await this.loadSessionTemplates(); + await this.loadSessionConfig(); + this.initializeEditor(); + } catch (error) { + console.error('Error initializing template playground:', error); + } + } + + ngOnDestroy() { + if (this.saveTimeout) { + clearTimeout(this.saveTimeout); + } + } + + private async createSession(): Promise { + const response = await this.http.post('/api/session/create', {}).toPromise(); + if (response && response.success) { + this.sessionId = response.sessionId; + console.log('Session created:', this.sessionId); + } else { + throw new Error('Failed to create session'); + } + } + + private async loadSessionTemplates(): Promise { + if (!this.sessionId) return; + + const response = await this.http.get<{templates: Template[], success: boolean}>(`/api/session/${this.sessionId}/templates`).toPromise(); + if (response && response.success) { + this.templates = response.templates; + + // Auto-select the first template + if (this.templates.length > 0 && !this.selectedFile) { + this.selectFile(this.templates[0]); + } + } + } + + private async loadSessionConfig(): Promise { + if (!this.sessionId) return; + + const response = await this.http.get<{config: CompoDocConfig, success: boolean}>(`/api/session/${this.sessionId}/config`).toPromise(); + if (response && response.success) { + this.config = response.config; + } + } + + initializeEditor() { + this.editorService.initializeEditor(this.editorContainer.nativeElement); + + // Set up debounced save on content change + this.editorService.setOnChangeCallback((content: string) => { + this.scheduleAutoSave(content); + }); + } + + async selectFile(template: Template) { + this.selectedFile = template; + + if (!this.sessionId) return; + + try { + const response = await this.http.get<{content: string, success: boolean}>(`/api/session/${this.sessionId}/template/${template.path}`).toPromise(); + if (response && response.success) { + this.editorService.setEditorContent(response.content, template.type === 'template' ? 'handlebars' : 'handlebars'); + } + } catch (error) { + console.error('Error loading template:', error); + } + } + + private scheduleAutoSave(content: string): void { + if (!this.selectedFile || !this.sessionId) return; + + // Clear existing timeout + if (this.saveTimeout) { + clearTimeout(this.saveTimeout); + } + + // Set saving indicator + this.saving = true; + + // Schedule new save + this.saveTimeout = window.setTimeout(async () => { + try { + await this.saveTemplate(content); + this.saving = false; + this.lastSaved = new Date(); + } catch (error) { + console.error('Error saving template:', error); + this.saving = false; + } + }, this.SAVE_DELAY); + } + + private async saveTemplate(content: string): Promise { + if (!this.selectedFile || !this.sessionId) return; + + const response = await this.http.post<{success: boolean}>(`/api/session/${this.sessionId}/template/${this.selectedFile.path}`, { + content + }).toPromise(); + + if (!response || !response.success) { + throw new Error('Failed to save template'); + } + } + + async updateConfig(): Promise { + if (!this.sessionId) return; + + try { + const response = await this.http.post<{success: boolean}>(`/api/session/${this.sessionId}/config`, { + config: this.config + }).toPromise(); + + if (response && response.success) { + // Config updated, documentation will be regenerated automatically + } + } catch (error) { + console.error('Error updating config:', error); + } + } + + toggleConfigPanel(): void { + this.showConfigPanel = !this.showConfigPanel; + } + + refreshPreview(): void { + if (this.previewFrame?.nativeElement) { + this.previewFrame.nativeElement.src = this.previewFrame.nativeElement.src; + } + } + + resetToDefault(): void { + // Implementation for resetting to default templates + if (confirm('Are you sure you want to reset all templates to their default values? This action cannot be undone.')) { + // TODO: Implement reset functionality + console.log('Reset to default templates'); + } + } + + async exportZip(): Promise { + try { + if (!this.sessionId) { + console.error('No active session. Please refresh the page and try again.'); + return; + } + + console.log('Creating template package...'); + + // Call server-side ZIP creation endpoint for all templates + const response = await this.http.post(`/api/session/${this.sessionId}/download-all-templates`, {}, { + responseType: 'blob', + observe: 'response' + }).toPromise(); + + if (!response || !response.body) { + throw new Error('Failed to create template package'); + } + + // Get the ZIP file as a blob + const zipBlob = response.body; + + // Get filename from response headers or construct it + const contentDisposition = response.headers.get('Content-Disposition'); + let filename = `compodoc-templates-${this.sessionId}.zip`; + + if (contentDisposition) { + const filenameMatch = contentDisposition.match(/filename="([^"]+)"/); + if (filenameMatch) { + filename = filenameMatch[1]; + } + } + + // Create download link and trigger download + const url = URL.createObjectURL(zipBlob); + const a = document.createElement('a'); + a.href = url; + a.download = filename; + document.body.appendChild(a); + a.click(); + document.body.removeChild(a); + URL.revokeObjectURL(url); + + console.log('Template package downloaded successfully!'); + } catch (error) { + console.error('Error downloading template package:', error); + } + } + + trackByName(index: number, item: Template): string { + return item.name; + } +} diff --git a/backend/documentation/template-playground/template-playground.module.ts b/backend/documentation/template-playground/template-playground.module.ts new file mode 100644 index 0000000..4ec6db4 --- /dev/null +++ b/backend/documentation/template-playground/template-playground.module.ts @@ -0,0 +1,29 @@ +import { NgModule } from '@angular/core'; +import { BrowserModule } from '@angular/platform-browser'; +import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; +import { HttpClientModule } from '@angular/common/http'; + +import { TemplatePlaygroundComponent } from './template-playground.component'; +import { TemplateEditorService } from './template-editor.service'; +import { ZipExportService } from './zip-export.service'; +import { HbsRenderService } from './hbs-render.service'; + +@NgModule({ + declarations: [ + TemplatePlaygroundComponent + ], + imports: [ + BrowserModule, + CommonModule, + FormsModule, + HttpClientModule + ], + providers: [ + TemplateEditorService, + ZipExportService, + HbsRenderService + ], + bootstrap: [TemplatePlaygroundComponent] +}) +export class TemplatePlaygroundModule { } diff --git a/backend/documentation/template-playground/zip-export.service.ts b/backend/documentation/template-playground/zip-export.service.ts new file mode 100644 index 0000000..f81ae00 --- /dev/null +++ b/backend/documentation/template-playground/zip-export.service.ts @@ -0,0 +1,86 @@ +import { Injectable } from '@angular/core'; + +declare const JSZip: any; + +@Injectable({ + providedIn: 'root' +}) +export class ZipExportService { + + exportTemplates(files: any[]) { + const zip = new JSZip(); + + // Add all template files to the ZIP + files.forEach(file => { + zip.file(file.path, file.content); + }); + + // Add a README with instructions + const readme = this.generateReadme(); + zip.file('README.md', readme); + + // Generate and download the ZIP file + zip.generateAsync({ type: 'blob' }) + .then((content: Blob) => { + this.downloadBlob(content, 'compodoc-templates.zip'); + }); + } + + private generateReadme(): string { + return `# Compodoc Custom Templates + +This ZIP file contains customized templates for Compodoc documentation generation. + +## Contents + +- **Templates** (\`.hbs\` files): Handlebars templates for generating documentation pages +- **Styles** (\`.css\` files): Stylesheets for customizing the appearance +- **Scripts** (\`.js\` files): JavaScript files for additional functionality + +## Usage + +1. Extract this ZIP file to a directory on your system +2. Use the \`--templates\` flag when running Compodoc to specify the path to your custom templates: + + \`\`\`bash + compodoc -p tsconfig.json --templates ./path/to/custom/templates/ + \`\`\` + +## Template Structure + +- \`page.hbs\` - Main page template +- \`partials/\` - Directory containing partial templates +- \`styles/\` - Directory containing CSS files +- \`js/\` - Directory containing JavaScript files + +## Customization Tips + +1. **Templates**: Use Handlebars syntax to customize the HTML structure +2. **Styles**: Modify CSS to change colors, fonts, layout, etc. +3. **Scripts**: Add custom JavaScript functionality + +## Backup + +Always keep a backup of your original templates before making changes. + +## Documentation + +For more information about customizing Compodoc templates, visit: +https://compodoc.app/guides/template-customization.html + +Generated by Compodoc Template Playground +`; + } + + private downloadBlob(blob: Blob, filename: string) { + const url = window.URL.createObjectURL(blob); + const a = document.createElement('a'); + a.href = url; + a.download = filename; + a.style.display = 'none'; + document.body.appendChild(a); + a.click(); + document.body.removeChild(a); + window.URL.revokeObjectURL(url); + } +} diff --git a/backend/eslint.config.mjs b/backend/eslint.config.mjs new file mode 100644 index 0000000..4e9f827 --- /dev/null +++ b/backend/eslint.config.mjs @@ -0,0 +1,35 @@ +// @ts-check +import eslint from '@eslint/js'; +import eslintPluginPrettierRecommended from 'eslint-plugin-prettier/recommended'; +import globals from 'globals'; +import tseslint from 'typescript-eslint'; + +export default tseslint.config( + { + ignores: ['eslint.config.mjs'], + }, + eslint.configs.recommended, + ...tseslint.configs.recommendedTypeChecked, + eslintPluginPrettierRecommended, + { + languageOptions: { + globals: { + ...globals.node, + ...globals.jest, + }, + sourceType: 'commonjs', + parserOptions: { + projectService: true, + tsconfigRootDir: import.meta.dirname, + }, + }, + }, + { + rules: { + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/no-floating-promises': 'warn', + '@typescript-eslint/no-unsafe-argument': 'warn', + "prettier/prettier": ["error", { endOfLine: "auto" }], + }, + }, +); diff --git a/backend/nest-cli.json b/backend/nest-cli.json new file mode 100644 index 0000000..f9aa683 --- /dev/null +++ b/backend/nest-cli.json @@ -0,0 +1,8 @@ +{ + "$schema": "https://json.schemastore.org/nest-cli", + "collection": "@nestjs/schematics", + "sourceRoot": "src", + "compilerOptions": { + "deleteOutDir": true + } +} diff --git a/backend/package-lock.json b/backend/package-lock.json index b465dcf..1c67e57 100644 --- a/backend/package-lock.json +++ b/backend/package-lock.json @@ -1,35 +1,60 @@ { - "name": "taskflow-backend", - "version": "1.0.0", + "name": "new-backend", + "version": "0.0.1", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "taskflow-backend", - "version": "1.0.0", - "license": "ISC", + "name": "new-backend", + "version": "0.0.1", + "license": "UNLICENSED", "dependencies": { - "@aws-sdk/client-s3": "^3.916.0", - "@aws-sdk/s3-request-presigner": "^3.916.0", - "@fastify/auth": "^5.0.3", + "@angular/core": "^21.0.1", + "@angular/forms": "^21.0.1", + "@angular/platform-browser-dynamic": "^21.0.1", "@fastify/cookie": "^11.0.2", - "@fastify/cors": "^11.1.0", - "@fastify/jwt": "^10.0.0", - "@graphql-tools/graphql-file-loader": "^8.1.7", - "@graphql-tools/load": "^8.1.6", - "@graphql-tools/schema": "^10.0.29", - "@prisma/client": "^6.19.0", - "@types/minio": "^7.1.0", + "@nestjs/common": "^11.0.1", + "@nestjs/config": "^4.0.2", + "@nestjs/core": "^11.0.1", + "@nestjs/graphql": "^13.2.0", + "@nestjs/jwt": "^11.0.1", + "@nestjs/mercurius": "^13.2.0", + "@nestjs/platform-fastify": "^11.1.9", + "@prisma/client": "5.22.0", + "@prisma/config": "^7.0.0", "bcrypt": "^6.0.0", - "dotenv": "^17.2.3", - "fastify": "^5.6.1", - "graphql": "^16.11.0", - "graphql-scalars": "^1.24.2", - "mercurius": "^16.3.0", - "minio": "^8.0.6" + "mercurius": "^16.6.0", + "prisma": "5.22.0", + "reflect-metadata": "^0.2.2", + "resolver": "^0.1.12", + "rxjs": "^7.8.1", + "ts-morph": "^25.0.1" }, "devDependencies": { - "prisma": "^6.19.0" + "@compodoc/compodoc": "^1.1.32", + "@eslint/eslintrc": "^3.2.0", + "@eslint/js": "^9.18.0", + "@nestjs/cli": "^11.0.0", + "@nestjs/schematics": "^11.0.0", + "@nestjs/testing": "^11.0.1", + "@types/express": "^5.0.0", + "@types/jest": "^30.0.0", + "@types/node": "^22.10.7", + "@types/supertest": "^6.0.2", + "eslint": "^9.18.0", + "eslint-config-prettier": "^10.0.1", + "eslint-plugin-prettier": "^5.2.2", + "globals": "^16.0.0", + "jest": "^30.0.0", + "prettier": "^3.4.2", + "source-map-support": "^0.5.21", + "supertest": "^7.0.0", + "ts-jest": "^29.2.5", + "ts-loader": "^9.5.2", + "ts-node": "^10.9.2", + "tsconfig-paths": "^4.2.0", + "typescript": "^5.7.3", + "typescript-eslint": "^8.20.0" } }, "node_modules/@actions/core": { @@ -67,1076 +92,9470 @@ "integrity": "sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q==", "license": "MIT" }, - "node_modules/@aws-crypto/crc32": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz", - "integrity": "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==", - "license": "Apache-2.0", + "node_modules/@aduh95/viz.js": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@aduh95/viz.js/-/viz.js-3.4.0.tgz", + "integrity": "sha512-KI2nVf9JdwWCXqK6RVf+9/096G7VWN4Z84mnynlyZKao2xQENW8WNEjLmvdlxS5X8PNWXFC1zqwm7tveOXw/4A==", + "dev": true, + "license": "MIT" + }, + "node_modules/@angular-devkit/core": { + "version": "19.2.19", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-19.2.19.tgz", + "integrity": "sha512-JbLL+4IMLMBgjLZlnPG4lYDfz4zGrJ/s6Aoon321NJKuw1Kb1k5KpFu9dUY0BqLIe8xPQ2UJBpI+xXdK5MXMHQ==", + "dev": true, + "license": "MIT", "dependencies": { - "@aws-crypto/util": "^5.2.0", - "@aws-sdk/types": "^3.222.0", - "tslib": "^2.6.2" + "ajv": "8.17.1", + "ajv-formats": "3.0.1", + "jsonc-parser": "3.3.1", + "picomatch": "4.0.2", + "rxjs": "7.8.1", + "source-map": "0.7.4" }, "engines": { - "node": ">=16.0.0" + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^4.0.0" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } } }, - "node_modules/@aws-crypto/crc32c": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/crc32c/-/crc32c-5.2.0.tgz", - "integrity": "sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==", - "license": "Apache-2.0", + "node_modules/@angular-devkit/core/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "license": "MIT", "dependencies": { - "@aws-crypto/util": "^5.2.0", - "@aws-sdk/types": "^3.222.0", - "tslib": "^2.6.2" + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@aws-crypto/sha1-browser": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha1-browser/-/sha1-browser-5.2.0.tgz", - "integrity": "sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==", + "node_modules/@angular-devkit/core/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/@angular-devkit/core/node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-crypto/supports-web-crypto": "^5.2.0", - "@aws-crypto/util": "^5.2.0", - "@aws-sdk/types": "^3.222.0", - "@aws-sdk/util-locate-window": "^3.0.0", - "@smithy/util-utf8": "^2.0.0", - "tslib": "^2.6.2" + "tslib": "^2.1.0" } }, - "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/is-array-buffer": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", - "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", - "license": "Apache-2.0", + "node_modules/@angular-devkit/schematics": { + "version": "19.2.19", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-19.2.19.tgz", + "integrity": "sha512-J4Jarr0SohdrHcb40gTL4wGPCQ952IMWF1G/MSAQfBAPvA9ZKApYhpxcY7PmehVePve+ujpus1dGsJ7dPxz8Kg==", + "dev": true, + "license": "MIT", "dependencies": { - "tslib": "^2.6.2" + "@angular-devkit/core": "19.2.19", + "jsonc-parser": "3.3.1", + "magic-string": "0.30.17", + "ora": "5.4.1", + "rxjs": "7.8.1" }, "engines": { - "node": ">=14.0.0" + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" } }, - "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-buffer-from": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", - "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", - "license": "Apache-2.0", + "node_modules/@angular-devkit/schematics-cli": { + "version": "19.2.19", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics-cli/-/schematics-cli-19.2.19.tgz", + "integrity": "sha512-7q9UY6HK6sccL9F3cqGRUwKhM7b/XfD2YcVaZ2WD7VMaRlRm85v6mRjSrfKIAwxcQU0UK27kMc79NIIqaHjzxA==", + "dev": true, + "license": "MIT", "dependencies": { - "@smithy/is-array-buffer": "^2.2.0", - "tslib": "^2.6.2" + "@angular-devkit/core": "19.2.19", + "@angular-devkit/schematics": "19.2.19", + "@inquirer/prompts": "7.3.2", + "ansi-colors": "4.1.3", + "symbol-observable": "4.0.0", + "yargs-parser": "21.1.1" + }, + "bin": { + "schematics": "bin/schematics.js" }, "engines": { - "node": ">=14.0.0" + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" } }, - "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", - "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", - "license": "Apache-2.0", + "node_modules/@angular-devkit/schematics-cli/node_modules/@inquirer/prompts": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.3.2.tgz", + "integrity": "sha512-G1ytyOoHh5BphmEBxSwALin3n1KGNYB6yImbICcRQdzXfOGbuJ9Jske/Of5Sebk339NSGGNfUshnzK8YWkTPsQ==", + "dev": true, + "license": "MIT", "dependencies": { - "@smithy/util-buffer-from": "^2.2.0", - "tslib": "^2.6.2" + "@inquirer/checkbox": "^4.1.2", + "@inquirer/confirm": "^5.1.6", + "@inquirer/editor": "^4.2.7", + "@inquirer/expand": "^4.0.9", + "@inquirer/input": "^4.1.6", + "@inquirer/number": "^3.0.9", + "@inquirer/password": "^4.0.9", + "@inquirer/rawlist": "^4.0.9", + "@inquirer/search": "^3.0.9", + "@inquirer/select": "^4.0.9" }, "engines": { - "node": ">=14.0.0" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@aws-crypto/sha256-browser": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", - "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==", + "node_modules/@angular-devkit/schematics/node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-crypto/sha256-js": "^5.2.0", - "@aws-crypto/supports-web-crypto": "^5.2.0", - "@aws-crypto/util": "^5.2.0", - "@aws-sdk/types": "^3.222.0", - "@aws-sdk/util-locate-window": "^3.0.0", - "@smithy/util-utf8": "^2.0.0", - "tslib": "^2.6.2" + "tslib": "^2.1.0" } }, - "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", - "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", - "license": "Apache-2.0", + "node_modules/@angular/common": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-21.0.1.tgz", + "integrity": "sha512-EqdTGpFp7PVdTVztO7TB6+QxdzUbYXKKT2jwG2Gg+PIQZ2A8XrLPRmGXyH/DLlc5IhnoJlLbngmBRCLCO4xWog==", + "license": "MIT", + "peer": true, "dependencies": { - "tslib": "^2.6.2" + "tslib": "^2.3.0" }, "engines": { - "node": ">=14.0.0" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + }, + "peerDependencies": { + "@angular/core": "21.0.1", + "rxjs": "^6.5.3 || ^7.4.0" } }, - "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", - "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", - "license": "Apache-2.0", + "node_modules/@angular/compiler": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-21.0.1.tgz", + "integrity": "sha512-YRzHpThgCaC9b3xzK1Wx859ePeHEPR7ewQklUB5TYbpzVacvnJo38PcSAx/nzOmgX9y4mgyros6LzECmBb8d8w==", + "license": "MIT", + "peer": true, "dependencies": { - "@smithy/is-array-buffer": "^2.2.0", - "tslib": "^2.6.2" + "tslib": "^2.3.0" }, "engines": { - "node": ">=14.0.0" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" } }, - "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", - "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", - "license": "Apache-2.0", + "node_modules/@angular/core": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-21.0.1.tgz", + "integrity": "sha512-z0G9Bwzgqr0fQVbtMgqwl+SbbiqtJD7I2xT6U5p45LetKHojcfigH29dxi/vqALPwEdgb2nSIx7RqVhoyynraQ==", + "license": "MIT", + "peer": true, "dependencies": { - "@smithy/util-buffer-from": "^2.2.0", - "tslib": "^2.6.2" + "tslib": "^2.3.0" }, "engines": { - "node": ">=14.0.0" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + }, + "peerDependencies": { + "@angular/compiler": "21.0.1", + "rxjs": "^6.5.3 || ^7.4.0", + "zone.js": "~0.15.0 || ~0.16.0" + }, + "peerDependenciesMeta": { + "@angular/compiler": { + "optional": true + }, + "zone.js": { + "optional": true + } } }, - "node_modules/@aws-crypto/sha256-js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", - "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==", - "license": "Apache-2.0", + "node_modules/@angular/forms": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-21.0.1.tgz", + "integrity": "sha512-BVFPuKjxkzjzKMmpc6KxUKICpVs6J2/KzA4HjtPp/UKvdZPe8dj8vIXuc9pGf8DA4XdkjCwvv8szCgzTWi02LQ==", + "license": "MIT", "dependencies": { - "@aws-crypto/util": "^5.2.0", - "@aws-sdk/types": "^3.222.0", - "tslib": "^2.6.2" + "tslib": "^2.3.0" }, "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-crypto/supports-web-crypto": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz", - "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-crypto/util": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz", - "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "^3.222.0", - "@smithy/util-utf8": "^2.0.0", - "tslib": "^2.6.2" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + }, + "peerDependencies": { + "@angular/common": "21.0.1", + "@angular/core": "21.0.1", + "@angular/platform-browser": "21.0.1", + "@standard-schema/spec": "^1.0.0", + "rxjs": "^6.5.3 || ^7.4.0" } }, - "node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", - "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", - "license": "Apache-2.0", + "node_modules/@angular/platform-browser": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-21.0.1.tgz", + "integrity": "sha512-68StH9HILKUqNhQKz6KKNHzpgk1n88CIusWlmJvnb0l6iWGf3ydq5lTMKAKiZQmSDAVP5unTGfNvIkh59GRyVg==", + "license": "MIT", + "peer": true, "dependencies": { - "tslib": "^2.6.2" + "tslib": "^2.3.0" }, "engines": { - "node": ">=14.0.0" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + }, + "peerDependencies": { + "@angular/animations": "21.0.1", + "@angular/common": "21.0.1", + "@angular/core": "21.0.1" + }, + "peerDependenciesMeta": { + "@angular/animations": { + "optional": true + } } }, - "node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", - "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", - "license": "Apache-2.0", + "node_modules/@angular/platform-browser-dynamic": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-21.0.1.tgz", + "integrity": "sha512-TzCKf3p1NBK1NYoPJXLScSjVeiQ52DaXf9gweNUGtCmX3EkVKf1sx4Ny1x4DxaTwB5XZn+O+L3nVLstPBj7UGA==", + "license": "MIT", "dependencies": { - "@smithy/is-array-buffer": "^2.2.0", - "tslib": "^2.6.2" + "tslib": "^2.3.0" }, "engines": { - "node": ">=14.0.0" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + }, + "peerDependencies": { + "@angular/common": "21.0.1", + "@angular/compiler": "21.0.1", + "@angular/core": "21.0.1", + "@angular/platform-browser": "21.0.1" } }, - "node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", - "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/util-buffer-from": "^2.2.0", - "tslib": "^2.6.2" - }, + "node_modules/@arr/every": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@arr/every/-/every-1.0.1.tgz", + "integrity": "sha512-UQFQ6SgyJ6LX42W8rHCs8KVc0JS0tzVL9ct4XYedJukskYVWTo49tNiMEK9C2HTyarbNiT/RVIRSY82vH+6sTg==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=14.0.0" + "node": ">=4" } }, - "node_modules/@aws-sdk/client-s3": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.930.0.tgz", - "integrity": "sha512-5ddhr3ShseFRIdNXH8bkh1CIC78p0ZXpa7HJZpONDU3JGvd/B+yHHgTr141rtgoFTaW0gjPdbdtqtPLnhlnK+A==", - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/sha1-browser": "5.2.0", - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.930.0", - "@aws-sdk/credential-provider-node": "3.930.0", - "@aws-sdk/middleware-bucket-endpoint": "3.930.0", - "@aws-sdk/middleware-expect-continue": "3.930.0", - "@aws-sdk/middleware-flexible-checksums": "3.930.0", - "@aws-sdk/middleware-host-header": "3.930.0", - "@aws-sdk/middleware-location-constraint": "3.930.0", - "@aws-sdk/middleware-logger": "3.930.0", - "@aws-sdk/middleware-recursion-detection": "3.930.0", - "@aws-sdk/middleware-sdk-s3": "3.930.0", - "@aws-sdk/middleware-ssec": "3.930.0", - "@aws-sdk/middleware-user-agent": "3.930.0", - "@aws-sdk/region-config-resolver": "3.930.0", - "@aws-sdk/signature-v4-multi-region": "3.930.0", - "@aws-sdk/types": "3.930.0", - "@aws-sdk/util-endpoints": "3.930.0", - "@aws-sdk/util-user-agent-browser": "3.930.0", - "@aws-sdk/util-user-agent-node": "3.930.0", - "@aws-sdk/xml-builder": "3.930.0", - "@smithy/config-resolver": "^4.4.3", - "@smithy/core": "^3.18.2", - "@smithy/eventstream-serde-browser": "^4.2.5", - "@smithy/eventstream-serde-config-resolver": "^4.3.5", - "@smithy/eventstream-serde-node": "^4.2.5", - "@smithy/fetch-http-handler": "^5.3.6", - "@smithy/hash-blob-browser": "^4.2.6", - "@smithy/hash-node": "^4.2.5", - "@smithy/hash-stream-node": "^4.2.5", - "@smithy/invalid-dependency": "^4.2.5", - "@smithy/md5-js": "^4.2.5", - "@smithy/middleware-content-length": "^4.2.5", - "@smithy/middleware-endpoint": "^4.3.9", - "@smithy/middleware-retry": "^4.4.9", - "@smithy/middleware-serde": "^4.2.5", - "@smithy/middleware-stack": "^4.2.5", - "@smithy/node-config-provider": "^4.3.5", - "@smithy/node-http-handler": "^4.4.5", - "@smithy/protocol-http": "^5.3.5", - "@smithy/smithy-client": "^4.9.5", - "@smithy/types": "^4.9.0", - "@smithy/url-parser": "^4.2.5", - "@smithy/util-base64": "^4.3.0", - "@smithy/util-body-length-browser": "^4.2.0", - "@smithy/util-body-length-node": "^4.2.1", - "@smithy/util-defaults-mode-browser": "^4.3.8", - "@smithy/util-defaults-mode-node": "^4.2.11", - "@smithy/util-endpoints": "^3.2.5", - "@smithy/util-middleware": "^4.2.5", - "@smithy/util-retry": "^4.2.5", - "@smithy/util-stream": "^4.5.6", - "@smithy/util-utf8": "^4.2.0", - "@smithy/util-waiter": "^4.2.5", - "@smithy/uuid": "^1.1.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@aws-sdk/client-sso": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.930.0.tgz", - "integrity": "sha512-sASqgm1iMLcmi+srSH9WJuqaf3GQAKhuB4xIJwkNEPUQ+yGV8HqErOOHJLXXuTUyskcdtK+4uMaBRLT2ESm+QQ==", - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.930.0", - "@aws-sdk/middleware-host-header": "3.930.0", - "@aws-sdk/middleware-logger": "3.930.0", - "@aws-sdk/middleware-recursion-detection": "3.930.0", - "@aws-sdk/middleware-user-agent": "3.930.0", - "@aws-sdk/region-config-resolver": "3.930.0", - "@aws-sdk/types": "3.930.0", - "@aws-sdk/util-endpoints": "3.930.0", - "@aws-sdk/util-user-agent-browser": "3.930.0", - "@aws-sdk/util-user-agent-node": "3.930.0", - "@smithy/config-resolver": "^4.4.3", - "@smithy/core": "^3.18.2", - "@smithy/fetch-http-handler": "^5.3.6", - "@smithy/hash-node": "^4.2.5", - "@smithy/invalid-dependency": "^4.2.5", - "@smithy/middleware-content-length": "^4.2.5", - "@smithy/middleware-endpoint": "^4.3.9", - "@smithy/middleware-retry": "^4.4.9", - "@smithy/middleware-serde": "^4.2.5", - "@smithy/middleware-stack": "^4.2.5", - "@smithy/node-config-provider": "^4.3.5", - "@smithy/node-http-handler": "^4.4.5", - "@smithy/protocol-http": "^5.3.5", - "@smithy/smithy-client": "^4.9.5", - "@smithy/types": "^4.9.0", - "@smithy/url-parser": "^4.2.5", - "@smithy/util-base64": "^4.3.0", - "@smithy/util-body-length-browser": "^4.2.0", - "@smithy/util-body-length-node": "^4.2.1", - "@smithy/util-defaults-mode-browser": "^4.3.8", - "@smithy/util-defaults-mode-node": "^4.2.11", - "@smithy/util-endpoints": "^3.2.5", - "@smithy/util-middleware": "^4.2.5", - "@smithy/util-retry": "^4.2.5", - "@smithy/util-utf8": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@aws-sdk/core": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.930.0.tgz", - "integrity": "sha512-E95pWT1ayfRWg0AW2KNOCYM7QQcVeOhMRLX5PXLeDKcdxP7s3x0LHG9t7a3nPbAbvYLRrhC7O2lLWzzMCpqjsw==", - "license": "Apache-2.0", + "node_modules/@babel/code-frame": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "dev": true, + "license": "MIT", "dependencies": { - "@aws-sdk/types": "3.930.0", - "@aws-sdk/xml-builder": "3.930.0", - "@smithy/core": "^3.18.2", - "@smithy/node-config-provider": "^4.3.5", - "@smithy/property-provider": "^4.2.5", - "@smithy/protocol-http": "^5.3.5", - "@smithy/signature-v4": "^5.3.5", - "@smithy/smithy-client": "^4.9.5", - "@smithy/types": "^4.9.0", - "@smithy/util-base64": "^4.3.0", - "@smithy/util-middleware": "^4.2.5", - "@smithy/util-utf8": "^4.2.0", - "tslib": "^2.6.2" + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" }, "engines": { - "node": ">=18.0.0" + "node": ">=6.9.0" } }, - "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.930.0.tgz", - "integrity": "sha512-5tJyxNQmm9C1XKeiWt/K67mUHtTiU2FxTkVsqVrzAMjNsF3uyA02kyTK70byh5n29oVR9XNValVEl6jk01ipYg==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "3.930.0", - "@aws-sdk/types": "3.930.0", - "@smithy/property-provider": "^4.2.5", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, + "node_modules/@babel/compat-data": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.5.tgz", + "integrity": "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=18.0.0" + "node": ">=6.9.0" } }, - "node_modules/@aws-sdk/credential-provider-http": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.930.0.tgz", - "integrity": "sha512-vw565GctpOPoRJyRvgqXM8U/4RG8wYEPfhe6GHvt9dchebw0OaFeW1mmSYpwEPkMhZs9Z808dkSPScwm8WZBKA==", - "license": "Apache-2.0", + "node_modules/@babel/core": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", + "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", + "dev": true, + "license": "MIT", + "peer": true, "dependencies": { - "@aws-sdk/core": "3.930.0", - "@aws-sdk/types": "3.930.0", - "@smithy/fetch-http-handler": "^5.3.6", - "@smithy/node-http-handler": "^4.4.5", - "@smithy/property-provider": "^4.2.5", - "@smithy/protocol-http": "^5.3.5", - "@smithy/smithy-client": "^4.9.5", - "@smithy/types": "^4.9.0", - "@smithy/util-stream": "^4.5.6", - "tslib": "^2.6.2" + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.5", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.28.3", + "@babel/helpers": "^7.28.4", + "@babel/parser": "^7.28.5", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" }, "engines": { - "node": ">=18.0.0" + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" } }, - "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.930.0.tgz", - "integrity": "sha512-Ua4T5MWjm7QdHi7ZSUvnPBFwBZmLFP/IEGCLacPKbUT1sQO30hlWuB/uQOj0ns4T6p7V4XsM8bz5+xsW2yRYbQ==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "3.930.0", - "@aws-sdk/credential-provider-env": "3.930.0", - "@aws-sdk/credential-provider-http": "3.930.0", - "@aws-sdk/credential-provider-process": "3.930.0", - "@aws-sdk/credential-provider-sso": "3.930.0", - "@aws-sdk/credential-provider-web-identity": "3.930.0", - "@aws-sdk/nested-clients": "3.930.0", - "@aws-sdk/types": "3.930.0", - "@smithy/credential-provider-imds": "^4.2.5", - "@smithy/property-provider": "^4.2.5", - "@smithy/shared-ini-file-loader": "^4.4.0", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.930.0.tgz", - "integrity": "sha512-LTx5G0PsL51hNCCzOIdacGPwqnTp3X2Ck8CjLL4Kz9FTR0mfY02qEJB5y5segU1hlge/WdQYxzBBMhtMUR2h8A==", - "license": "Apache-2.0", + "node_modules/@babel/generator": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz", + "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==", + "dev": true, + "license": "MIT", "dependencies": { - "@aws-sdk/credential-provider-env": "3.930.0", - "@aws-sdk/credential-provider-http": "3.930.0", - "@aws-sdk/credential-provider-ini": "3.930.0", - "@aws-sdk/credential-provider-process": "3.930.0", - "@aws-sdk/credential-provider-sso": "3.930.0", - "@aws-sdk/credential-provider-web-identity": "3.930.0", - "@aws-sdk/types": "3.930.0", - "@smithy/credential-provider-imds": "^4.2.5", - "@smithy/property-provider": "^4.2.5", - "@smithy/shared-ini-file-loader": "^4.4.0", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" + "@babel/parser": "^7.28.5", + "@babel/types": "^7.28.5", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=6.9.0" } }, - "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.930.0.tgz", - "integrity": "sha512-lqC4lepxgwR2uZp/JROTRjkHld4/FEpSgofmiIOAfUfDx0OWSg7nkWMMS/DzlMpODqATl9tO0DcvmIJ8tMbh6g==", - "license": "Apache-2.0", + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", + "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", + "dev": true, + "license": "MIT", "dependencies": { - "@aws-sdk/core": "3.930.0", - "@aws-sdk/types": "3.930.0", - "@smithy/property-provider": "^4.2.5", - "@smithy/shared-ini-file-loader": "^4.4.0", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" + "@babel/types": "^7.27.3" }, "engines": { - "node": ">=18.0.0" + "node": ">=6.9.0" } }, - "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.930.0.tgz", - "integrity": "sha512-LIs2aaVoFfioRokR1R9SpLS9u8CmbHhrV/gpHO1ED41qNCujn23vAxRNQmWzJ2XoCxSTwvToiHD2i6CjPA6rHQ==", - "license": "Apache-2.0", + "node_modules/@babel/helper-compilation-targets": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", + "dev": true, + "license": "MIT", "dependencies": { - "@aws-sdk/client-sso": "3.930.0", - "@aws-sdk/core": "3.930.0", - "@aws-sdk/token-providers": "3.930.0", - "@aws-sdk/types": "3.930.0", - "@smithy/property-provider": "^4.2.5", - "@smithy/shared-ini-file-loader": "^4.4.0", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" }, "engines": { - "node": ">=18.0.0" + "node": ">=6.9.0" } }, - "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.930.0.tgz", - "integrity": "sha512-iIYF8GReLOp16yn2bnRWrc4UOW/vVLifqyRWZ3iAGe8NFzUiHBq+Nok7Edh+2D8zt30QOCOsWCZ31uRrPuXH8w==", - "license": "Apache-2.0", + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.5.tgz", + "integrity": "sha512-q3WC4JfdODypvxArsJQROfupPBq9+lMwjKq7C33GhbFYJsufD0yd/ziwD+hJucLeWsnFPWZjsU2DNFqBPE7jwQ==", + "dev": true, + "license": "MIT", "dependencies": { - "@aws-sdk/core": "3.930.0", - "@aws-sdk/nested-clients": "3.930.0", - "@aws-sdk/types": "3.930.0", - "@smithy/property-provider": "^4.2.5", - "@smithy/shared-ini-file-loader": "^4.4.0", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-member-expression-to-functions": "^7.28.5", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/traverse": "^7.28.5", + "semver": "^6.3.1" }, "engines": { - "node": ">=18.0.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@aws-sdk/middleware-bucket-endpoint": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.930.0.tgz", - "integrity": "sha512-cnCLWeKPYgvV4yRYPFH6pWMdUByvu2cy2BAlfsPpvnm4RaVioztyvxmQj5PmVN5fvWs5w/2d6U7le8X9iye2sA==", - "license": "Apache-2.0", + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.28.5.tgz", + "integrity": "sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==", + "dev": true, + "license": "MIT", "dependencies": { - "@aws-sdk/types": "3.930.0", - "@aws-sdk/util-arn-parser": "3.893.0", - "@smithy/node-config-provider": "^4.3.5", - "@smithy/protocol-http": "^5.3.5", - "@smithy/types": "^4.9.0", - "@smithy/util-config-provider": "^4.2.0", - "tslib": "^2.6.2" + "@babel/helper-annotate-as-pure": "^7.27.3", + "regexpu-core": "^6.3.1", + "semver": "^6.3.1" }, "engines": { - "node": ">=18.0.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@aws-sdk/middleware-expect-continue": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.930.0.tgz", - "integrity": "sha512-5HEQ+JU4DrLNWeY27wKg/jeVa8Suy62ivJHOSUf6e6hZdVIMx0h/kXS1fHEQNNiLu2IzSEP/bFXsKBaW7x7s0g==", - "license": "Apache-2.0", + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.5.tgz", + "integrity": "sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==", + "dev": true, + "license": "MIT", "dependencies": { - "@aws-sdk/types": "3.930.0", - "@smithy/protocol-http": "^5.3.5", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^7.27.1", + "debug": "^4.4.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.22.10" }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=18.0.0" + "node": ">=6.9.0" } }, - "node_modules/@aws-sdk/middleware-flexible-checksums": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.930.0.tgz", - "integrity": "sha512-ZbAwwe7sqIO7tmNH3Q8rH91tZCQwBGliyXUbANoVMp1CWLPDAeaECurkmuBe/UJmoszi2U3gyhIQlbfzD2SBLw==", - "license": "Apache-2.0", + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz", + "integrity": "sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==", + "dev": true, + "license": "MIT", "dependencies": { - "@aws-crypto/crc32": "5.2.0", - "@aws-crypto/crc32c": "5.2.0", - "@aws-crypto/util": "5.2.0", - "@aws-sdk/core": "3.930.0", - "@aws-sdk/types": "3.930.0", - "@smithy/is-array-buffer": "^4.2.0", - "@smithy/node-config-provider": "^4.3.5", - "@smithy/protocol-http": "^5.3.5", - "@smithy/types": "^4.9.0", - "@smithy/util-middleware": "^4.2.5", - "@smithy/util-stream": "^4.5.6", - "@smithy/util-utf8": "^4.2.0", - "tslib": "^2.6.2" + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5" }, "engines": { - "node": ">=18.0.0" + "node": ">=6.9.0" } }, - "node_modules/@aws-sdk/middleware-host-header": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.930.0.tgz", - "integrity": "sha512-x30jmm3TLu7b/b+67nMyoV0NlbnCVT5DI57yDrhXAPCtdgM1KtdLWt45UcHpKOm1JsaIkmYRh2WYu7Anx4MG0g==", - "license": "Apache-2.0", + "node_modules/@babel/helper-module-imports": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", + "dev": true, + "license": "MIT", "dependencies": { - "@aws-sdk/types": "3.930.0", - "@smithy/protocol-http": "^5.3.5", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" }, "engines": { - "node": ">=18.0.0" + "node": ">=6.9.0" } }, - "node_modules/@aws-sdk/middleware-location-constraint": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.930.0.tgz", - "integrity": "sha512-QIGNsNUdRICog+LYqmtJ03PLze6h2KCORXUs5td/hAEjVP5DMmubhtrGg1KhWyctACluUH/E/yrD14p4pRXxwA==", - "license": "Apache-2.0", + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", + "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", + "dev": true, + "license": "MIT", "dependencies": { - "@aws-sdk/types": "3.930.0", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.28.3" }, "engines": { - "node": ">=18.0.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@aws-sdk/middleware-logger": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.930.0.tgz", - "integrity": "sha512-vh4JBWzMCBW8wREvAwoSqB2geKsZwSHTa0nSt0OMOLp2PdTYIZDi0ZiVMmpfnjcx9XbS6aSluLv9sKx4RrG46A==", - "license": "Apache-2.0", + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", + "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", + "dev": true, + "license": "MIT", "dependencies": { - "@aws-sdk/types": "3.930.0", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" + "@babel/types": "^7.27.1" }, "engines": { - "node": ">=18.0.0" + "node": ">=6.9.0" } }, - "node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.930.0.tgz", - "integrity": "sha512-gv0sekNpa2MBsIhm2cjP3nmYSfI4nscx/+K9u9ybrWZBWUIC4kL2sV++bFjjUz4QxUIlvKByow3/a9ARQyCu7Q==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.930.0", - "@aws/lambda-invoke-store": "^0.1.1", - "@smithy/protocol-http": "^5.3.5", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", + "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=18.0.0" + "node": ">=6.9.0" } }, - "node_modules/@aws-sdk/middleware-sdk-s3": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.930.0.tgz", - "integrity": "sha512-bnVK0xVVmrPyKTbV5MgG6KP7MPe87GngBPD5MrYj9kWmGrJIvnt0qer0UIgWAnsyCi7XrTfw7SMgYRpSxOYEMw==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "3.930.0", - "@aws-sdk/types": "3.930.0", - "@aws-sdk/util-arn-parser": "3.893.0", - "@smithy/core": "^3.18.2", - "@smithy/node-config-provider": "^4.3.5", - "@smithy/protocol-http": "^5.3.5", - "@smithy/signature-v4": "^5.3.5", - "@smithy/smithy-client": "^4.9.5", - "@smithy/types": "^4.9.0", - "@smithy/util-config-provider": "^4.2.0", - "@smithy/util-middleware": "^4.2.5", - "@smithy/util-stream": "^4.5.6", - "@smithy/util-utf8": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@aws-sdk/middleware-ssec": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.930.0.tgz", - "integrity": "sha512-N2/SvodmaDS6h7CWfuapt3oJyn1T2CBz0CsDIiTDv9cSagXAVFjPdm2g4PFJqrNBeqdDIoYBnnta336HmamWHg==", - "license": "Apache-2.0", + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz", + "integrity": "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==", + "dev": true, + "license": "MIT", "dependencies": { - "@aws-sdk/types": "3.930.0", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-wrap-function": "^7.27.1", + "@babel/traverse": "^7.27.1" }, "engines": { - "node": ">=18.0.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.930.0.tgz", - "integrity": "sha512-UUItqy02biaHoZDd1Z2CskFon3Lej15ZCIZzW4n2lsJmgLWNvz21jtFA8DQny7ZgCLAOOXI8YK3VLZptZWtIcg==", - "license": "Apache-2.0", + "node_modules/@babel/helper-replace-supers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz", + "integrity": "sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==", + "dev": true, + "license": "MIT", "dependencies": { - "@aws-sdk/core": "3.930.0", - "@aws-sdk/types": "3.930.0", - "@aws-sdk/util-endpoints": "3.930.0", - "@smithy/core": "^3.18.2", - "@smithy/protocol-http": "^5.3.5", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" + "@babel/helper-member-expression-to-functions": "^7.27.1", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/traverse": "^7.27.1" }, "engines": { - "node": ">=18.0.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@aws-sdk/nested-clients": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.930.0.tgz", - "integrity": "sha512-eEDjTVXNiDkoV0ZV+X+WV40GTpF70xZmDW13CQzQF7rzOC2iFjtTRU+F7MUhy/Vs+e9KvDgiuCDecITtaOXUNw==", - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.930.0", - "@aws-sdk/middleware-host-header": "3.930.0", - "@aws-sdk/middleware-logger": "3.930.0", - "@aws-sdk/middleware-recursion-detection": "3.930.0", - "@aws-sdk/middleware-user-agent": "3.930.0", - "@aws-sdk/region-config-resolver": "3.930.0", - "@aws-sdk/types": "3.930.0", - "@aws-sdk/util-endpoints": "3.930.0", - "@aws-sdk/util-user-agent-browser": "3.930.0", - "@aws-sdk/util-user-agent-node": "3.930.0", - "@smithy/config-resolver": "^4.4.3", - "@smithy/core": "^3.18.2", - "@smithy/fetch-http-handler": "^5.3.6", - "@smithy/hash-node": "^4.2.5", - "@smithy/invalid-dependency": "^4.2.5", - "@smithy/middleware-content-length": "^4.2.5", - "@smithy/middleware-endpoint": "^4.3.9", - "@smithy/middleware-retry": "^4.4.9", - "@smithy/middleware-serde": "^4.2.5", - "@smithy/middleware-stack": "^4.2.5", - "@smithy/node-config-provider": "^4.3.5", - "@smithy/node-http-handler": "^4.4.5", - "@smithy/protocol-http": "^5.3.5", - "@smithy/smithy-client": "^4.9.5", - "@smithy/types": "^4.9.0", - "@smithy/url-parser": "^4.2.5", - "@smithy/util-base64": "^4.3.0", - "@smithy/util-body-length-browser": "^4.2.0", - "@smithy/util-body-length-node": "^4.2.1", - "@smithy/util-defaults-mode-browser": "^4.3.8", - "@smithy/util-defaults-mode-node": "^4.2.11", - "@smithy/util-endpoints": "^3.2.5", - "@smithy/util-middleware": "^4.2.5", - "@smithy/util-retry": "^4.2.5", - "@smithy/util-utf8": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@aws-sdk/region-config-resolver": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.930.0.tgz", - "integrity": "sha512-KL2JZqH6aYeQssu1g1KuWsReupdfOoxD6f1as2VC+rdwYFUu4LfzMsFfXnBvvQWWqQ7rZHWOw1T+o5gJmg7Dzw==", - "license": "Apache-2.0", + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", + "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", + "dev": true, + "license": "MIT", "dependencies": { - "@aws-sdk/types": "3.930.0", - "@smithy/config-resolver": "^4.4.3", - "@smithy/node-config-provider": "^4.3.5", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" }, "engines": { - "node": ">=18.0.0" + "node": ">=6.9.0" } }, - "node_modules/@aws-sdk/s3-request-presigner": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/s3-request-presigner/-/s3-request-presigner-3.930.0.tgz", - "integrity": "sha512-kIjYM2a3xkg5Ll8TUBVjE5mM/uTswE6JycUsND7y3nbEHUd7OXBShAspFZxgTjga33bsdaIRbggligC8tu25pg==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/signature-v4-multi-region": "3.930.0", - "@aws-sdk/types": "3.930.0", - "@aws-sdk/util-format-url": "3.930.0", - "@smithy/middleware-endpoint": "^4.3.9", - "@smithy/protocol-http": "^5.3.5", - "@smithy/smithy-client": "^4.9.5", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=18.0.0" + "node": ">=6.9.0" } }, - "node_modules/@aws-sdk/signature-v4-multi-region": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.930.0.tgz", - "integrity": "sha512-UOAq1ftbrZc9HRP/nG970OONNykIDWunjth9GvGDODkW0FR7DHJWBmTwj61ZnrSiuSParp1eQfa+JsZ8eXNPcw==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/middleware-sdk-s3": "3.930.0", - "@aws-sdk/types": "3.930.0", - "@smithy/protocol-http": "^5.3.5", - "@smithy/signature-v4": "^5.3.5", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=18.0.0" + "node": ">=6.9.0" } }, - "node_modules/@aws-sdk/token-providers": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.930.0.tgz", - "integrity": "sha512-K+fJFJXA2Tdx10WhhTm+xQmf1WDHu14rUutByyqx6W0iW2rhtl3YeRr188LWSU3/hpz7BPyvigaAb0QyRti6FQ==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "3.930.0", - "@aws-sdk/nested-clients": "3.930.0", - "@aws-sdk/types": "3.930.0", - "@smithy/property-provider": "^4.2.5", - "@smithy/shared-ini-file-loader": "^4.4.0", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=18.0.0" + "node": ">=6.9.0" } }, - "node_modules/@aws-sdk/types": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.930.0.tgz", - "integrity": "sha512-we/vaAgwlEFW7IeftmCLlLMw+6hFs3DzZPJw7lVHbj/5HJ0bz9gndxEsS2lQoeJ1zhiiLqAqvXxmM43s0MBg0A==", - "license": "Apache-2.0", + "node_modules/@babel/helper-wrap-function": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.28.3.tgz", + "integrity": "sha512-zdf983tNfLZFletc0RRXYrHrucBEg95NIFMkn6K9dbeMYnsgHaSBGcQqdsCSStG2PYwRre0Qc2NNSCXbG+xc6g==", + "dev": true, + "license": "MIT", "dependencies": { - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.3", + "@babel/types": "^7.28.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=6.9.0" } }, - "node_modules/@aws-sdk/util-arn-parser": { - "version": "3.893.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.893.0.tgz", - "integrity": "sha512-u8H4f2Zsi19DGnwj5FSZzDMhytYF/bCh37vAtBsn3cNDL3YG578X5oc+wSX54pM3tOxS+NY7tvOAo52SW7koUA==", - "license": "Apache-2.0", + "node_modules/@babel/helpers": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", + "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", + "dev": true, + "license": "MIT", "dependencies": { - "tslib": "^2.6.2" + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.4" }, "engines": { - "node": ">=18.0.0" + "node": ">=6.9.0" } }, - "node_modules/@aws-sdk/util-endpoints": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.930.0.tgz", - "integrity": "sha512-M2oEKBzzNAYr136RRc6uqw3aWlwCxqTP1Lawps9E1d2abRPvl1p1ztQmmXp1Ak4rv8eByIZ+yQyKQ3zPdRG5dw==", - "license": "Apache-2.0", + "node_modules/@babel/parser": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz", + "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==", + "dev": true, + "license": "MIT", "dependencies": { - "@aws-sdk/types": "3.930.0", - "@smithy/types": "^4.9.0", - "@smithy/url-parser": "^4.2.5", - "@smithy/util-endpoints": "^3.2.5", - "tslib": "^2.6.2" + "@babel/types": "^7.28.5" + }, + "bin": { + "parser": "bin/babel-parser.js" }, "engines": { - "node": ">=18.0.0" + "node": ">=6.0.0" } }, - "node_modules/@aws-sdk/util-format-url": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-format-url/-/util-format-url-3.930.0.tgz", - "integrity": "sha512-FW6Im17Zc7F5WT39XUgDOjtJO95Yu8rsmeRHf7z+Y3FamtTSzH4f713BD/qMyJBrZIlFACWlok/Uuvdl5/qtMg==", - "license": "Apache-2.0", + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.28.5.tgz", + "integrity": "sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q==", + "dev": true, + "license": "MIT", "dependencies": { - "@aws-sdk/types": "3.930.0", - "@smithy/querystring-builder": "^4.2.5", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.5" }, "engines": { - "node": ">=18.0.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@aws-sdk/util-locate-window": { - "version": "3.893.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.893.0.tgz", - "integrity": "sha512-T89pFfgat6c8nMmpI8eKjBcDcgJq36+m9oiXbcUzeU55MP9ZuGgBomGjGnHaEyF36jenW9gmg3NfZDm0AO2XPg==", - "license": "Apache-2.0", + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz", + "integrity": "sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==", + "dev": true, + "license": "MIT", "dependencies": { - "tslib": "^2.6.2" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { - "node": ">=18.0.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.930.0.tgz", - "integrity": "sha512-q6lCRm6UAe+e1LguM5E4EqM9brQlDem4XDcQ87NzEvlTW6GzmNCO0w1jS0XgCFXQHjDxjdlNFX+5sRbHijwklg==", - "license": "Apache-2.0", + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz", + "integrity": "sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==", + "dev": true, + "license": "MIT", "dependencies": { - "@aws-sdk/types": "3.930.0", - "@smithy/types": "^4.9.0", - "bowser": "^2.11.0", - "tslib": "^2.6.2" + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.930.0.tgz", - "integrity": "sha512-tYc5uFKogn0vLukeZ6Zz2dR1/WiTjxZH7+Jjoce6aEYgRVfyrDje1POFb7YxhNZ7Pp1WzHCuwW2KgkmMoYVbxQ==", - "license": "Apache-2.0", + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz", + "integrity": "sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==", + "dev": true, + "license": "MIT", "dependencies": { - "@aws-sdk/middleware-user-agent": "3.930.0", - "@aws-sdk/types": "3.930.0", - "@smithy/node-config-provider": "^4.3.5", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-transform-optional-chaining": "^7.27.1" }, "engines": { - "node": ">=18.0.0" + "node": ">=6.9.0" }, "peerDependencies": { - "aws-crt": ">=1.0.0" - }, - "peerDependenciesMeta": { - "aws-crt": { - "optional": true - } + "@babel/core": "^7.13.0" } }, - "node_modules/@aws-sdk/xml-builder": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.930.0.tgz", - "integrity": "sha512-YIfkD17GocxdmlUVc3ia52QhcWuRIUJonbF8A2CYfcWNV3HzvAqpcPeC0bYUhkK+8e8YO1ARnLKZQE0TlwzorA==", - "license": "Apache-2.0", + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.3.tgz", + "integrity": "sha512-b6YTX108evsvE4YgWyQ921ZAFFQm3Bn+CA3+ZXlNVnPhx+UfsVURoPjfGAPCjBgrqo30yX/C2nZGX96DxvR9Iw==", + "dev": true, + "license": "MIT", "dependencies": { - "@smithy/types": "^4.9.0", - "fast-xml-parser": "5.2.5", - "tslib": "^2.6.2" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.3" }, "engines": { - "node": ">=18.0.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@aws/lambda-invoke-store": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@aws/lambda-invoke-store/-/lambda-invoke-store-0.1.1.tgz", - "integrity": "sha512-RcLam17LdlbSOSp9VxmUu1eI6Mwxp+OwhD2QhiSNmNCzoDb0EeUXTD2n/WbcnrAYMGlmf05th6QYq23VqvJqpA==", + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz", + "integrity": "sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz", + "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz", + "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz", + "integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz", + "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.0.tgz", + "integrity": "sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-remap-async-to-generator": "^7.27.1", + "@babel/traverse": "^7.28.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.27.1.tgz", + "integrity": "sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-remap-async-to-generator": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz", + "integrity": "sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.5.tgz", + "integrity": "sha512-45DmULpySVvmq9Pj3X9B+62Xe+DJGov27QravQJU1LLcapR6/10i+gYVAucGGJpHBp5mYxIMK4nDAT/QDLr47g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz", + "integrity": "sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.3.tgz", + "integrity": "sha512-LtPXlBbRoc4Njl/oh1CeD/3jC+atytbnf/UqLoqTDcEYGUPj022+rvfkbDYieUrSj3CaV4yHDByPE+T2HwfsJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.28.3", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.4.tgz", + "integrity": "sha512-cFOlhIYPBv/iBoc+KS3M6et2XPtbT2HiCRfBXWtfpc9OAyostldxIf9YAYB6ypURBBbx+Qv6nyrLzASfJe+hBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-globals": "^7.28.0", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1", + "@babel/traverse": "^7.28.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.27.1.tgz", + "integrity": "sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/template": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.5.tgz", + "integrity": "sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.27.1.tgz", + "integrity": "sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz", + "integrity": "sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.27.1.tgz", + "integrity": "sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz", + "integrity": "sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-explicit-resource-management": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.0.tgz", + "integrity": "sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-transform-destructuring": "^7.28.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.5.tgz", + "integrity": "sha512-D4WIMaFtwa2NizOp+dnoFjRez/ClKiC2BqqImwKd1X28nqBtZEyCYJ2ozQrrzlxAFrcrjxo39S6khe9RNDlGzw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz", + "integrity": "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz", + "integrity": "sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz", + "integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.27.1.tgz", + "integrity": "sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz", + "integrity": "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.5.tgz", + "integrity": "sha512-axUuqnUTBuXyHGcJEVVh9pORaN6wC5bYfE7FGzPiaWa3syib9m7g+/IT/4VgCOe2Upef43PHzeAvcrVek6QuuA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz", + "integrity": "sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz", + "integrity": "sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz", + "integrity": "sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.28.5.tgz", + "integrity": "sha512-vn5Jma98LCOeBy/KpeQhXcV2WZgaRUtjwQmjoBuLNlOmkg0fB5pdvYVeWRYI69wWKwK2cD1QbMiUQnoujWvrew==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.28.3", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz", + "integrity": "sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz", + "integrity": "sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz", + "integrity": "sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz", + "integrity": "sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.27.1.tgz", + "integrity": "sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.4.tgz", + "integrity": "sha512-373KA2HQzKhQCYiRVIRr+3MjpCObqzDlyrM6u4I201wL8Mp2wHf7uB8GhDwis03k2ti8Zr65Zyyqs1xOxUF/Ew==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-transform-destructuring": "^7.28.0", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/traverse": "^7.28.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz", + "integrity": "sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.27.1.tgz", + "integrity": "sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.5.tgz", + "integrity": "sha512-N6fut9IZlPnjPwgiQkXNhb+cT8wQKFlJNqcZkWlcTqkcqx6/kU4ynGmLFoa4LViBSirn05YAwk+sQBbPfxtYzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.27.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz", + "integrity": "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.27.1.tgz", + "integrity": "sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.27.1.tgz", + "integrity": "sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz", + "integrity": "sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.4.tgz", + "integrity": "sha512-+ZEdQlBoRg9m2NnzvEeLgtvBMO4tkFBw5SQIUgLICgTrumLoU7lr+Oghi6km2PFj+dbUt2u1oby2w3BDO9YQnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regexp-modifiers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.27.1.tgz", + "integrity": "sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz", + "integrity": "sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz", + "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.27.1.tgz", + "integrity": "sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz", + "integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz", + "integrity": "sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz", + "integrity": "sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz", + "integrity": "sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.27.1.tgz", + "integrity": "sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz", + "integrity": "sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.27.1.tgz", + "integrity": "sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.28.3.tgz", + "integrity": "sha512-ROiDcM+GbYVPYBOeCR6uBXKkQpBExLl8k9HO1ygXEyds39j+vCCsjmj7S8GOniZQlEs81QlkdJZe76IpLSiqpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.0", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.27.1", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.3", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-import-assertions": "^7.27.1", + "@babel/plugin-syntax-import-attributes": "^7.27.1", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.27.1", + "@babel/plugin-transform-async-generator-functions": "^7.28.0", + "@babel/plugin-transform-async-to-generator": "^7.27.1", + "@babel/plugin-transform-block-scoped-functions": "^7.27.1", + "@babel/plugin-transform-block-scoping": "^7.28.0", + "@babel/plugin-transform-class-properties": "^7.27.1", + "@babel/plugin-transform-class-static-block": "^7.28.3", + "@babel/plugin-transform-classes": "^7.28.3", + "@babel/plugin-transform-computed-properties": "^7.27.1", + "@babel/plugin-transform-destructuring": "^7.28.0", + "@babel/plugin-transform-dotall-regex": "^7.27.1", + "@babel/plugin-transform-duplicate-keys": "^7.27.1", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.27.1", + "@babel/plugin-transform-dynamic-import": "^7.27.1", + "@babel/plugin-transform-explicit-resource-management": "^7.28.0", + "@babel/plugin-transform-exponentiation-operator": "^7.27.1", + "@babel/plugin-transform-export-namespace-from": "^7.27.1", + "@babel/plugin-transform-for-of": "^7.27.1", + "@babel/plugin-transform-function-name": "^7.27.1", + "@babel/plugin-transform-json-strings": "^7.27.1", + "@babel/plugin-transform-literals": "^7.27.1", + "@babel/plugin-transform-logical-assignment-operators": "^7.27.1", + "@babel/plugin-transform-member-expression-literals": "^7.27.1", + "@babel/plugin-transform-modules-amd": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.27.1", + "@babel/plugin-transform-modules-systemjs": "^7.27.1", + "@babel/plugin-transform-modules-umd": "^7.27.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.27.1", + "@babel/plugin-transform-new-target": "^7.27.1", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.27.1", + "@babel/plugin-transform-numeric-separator": "^7.27.1", + "@babel/plugin-transform-object-rest-spread": "^7.28.0", + "@babel/plugin-transform-object-super": "^7.27.1", + "@babel/plugin-transform-optional-catch-binding": "^7.27.1", + "@babel/plugin-transform-optional-chaining": "^7.27.1", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/plugin-transform-private-methods": "^7.27.1", + "@babel/plugin-transform-private-property-in-object": "^7.27.1", + "@babel/plugin-transform-property-literals": "^7.27.1", + "@babel/plugin-transform-regenerator": "^7.28.3", + "@babel/plugin-transform-regexp-modifiers": "^7.27.1", + "@babel/plugin-transform-reserved-words": "^7.27.1", + "@babel/plugin-transform-shorthand-properties": "^7.27.1", + "@babel/plugin-transform-spread": "^7.27.1", + "@babel/plugin-transform-sticky-regex": "^7.27.1", + "@babel/plugin-transform-template-literals": "^7.27.1", + "@babel/plugin-transform-typeof-symbol": "^7.27.1", + "@babel/plugin-transform-unicode-escapes": "^7.27.1", + "@babel/plugin-transform-unicode-property-regex": "^7.27.1", + "@babel/plugin-transform-unicode-regex": "^7.27.1", + "@babel/plugin-transform-unicode-sets-regex": "^7.27.1", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.14", + "babel-plugin-polyfill-corejs3": "^0.13.0", + "babel-plugin-polyfill-regenerator": "^0.6.5", + "core-js-compat": "^3.43.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", + "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.5.tgz", + "integrity": "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.5", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.5", + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.5", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz", + "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@borewit/text-codec": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@borewit/text-codec/-/text-codec-0.1.1.tgz", + "integrity": "sha512-5L/uBxmjaCIX5h8Z+uu+kA9BQLkc/Wl06UGR5ajNRxu+/XjonB5i8JpgFMrPj3LXTCPA0pv8yxUvbUi+QthGGA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@compodoc/compodoc": { + "version": "1.1.32", + "resolved": "https://registry.npmjs.org/@compodoc/compodoc/-/compodoc-1.1.32.tgz", + "integrity": "sha512-kaYk5+o4k7GB585iphwV5NE49BKKk8d+gJLNBE8eu2fIRdhnHOWblasRbOBRULfwJ+qxfmgrIqi32K34wCag6A==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/schematics": "20.3.4", + "@babel/core": "7.28.4", + "@babel/plugin-transform-private-methods": "7.27.1", + "@babel/preset-env": "7.28.3", + "@compodoc/live-server": "^1.2.3", + "@compodoc/ngd-transformer": "^2.1.3", + "@polka/send-type": "^0.5.2", + "body-parser": "^2.2.0", + "bootstrap.native": "^5.1.6", + "cheerio": "1.1.2", + "chokidar": "^4.0.3", + "colors": "1.4.0", + "commander": "^14.0.1", + "cosmiconfig": "^9.0.0", + "decache": "^4.6.2", + "es6-shim": "^0.35.8", + "fancy-log": "^2.0.0", + "fast-glob": "^3.3.3", + "fs-extra": "^11.3.2", + "glob": "^11.0.3", + "handlebars": "^4.7.8", + "html-entities": "^2.6.0", + "i18next": "25.5.3", + "json5": "^2.2.3", + "lodash": "^4.17.21", + "loglevel": "^1.9.2", + "loglevel-plugin-prefix": "^0.8.4", + "lunr": "^2.3.9", + "marked": "7.0.3", + "minimist": "^1.2.8", + "neotraverse": "^0.6.18", + "opencollective-postinstall": "^2.0.3", + "os-name": "4.0.1", + "picocolors": "^1.1.1", + "polka": "^0.5.2", + "prismjs": "^1.30.0", + "semver": "^7.7.2", + "sirv": "^3.0.2", + "svg-pan-zoom": "^3.6.2", + "tablesort": "^5.6.0", + "ts-morph": "^27.0.0", + "uuid": "11.1.0", + "vis-network": "^10.0.2" + }, + "bin": { + "compodoc": "bin/index-cli.js" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + } + }, + "node_modules/@compodoc/compodoc/node_modules/@angular-devkit/core": { + "version": "20.3.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-20.3.4.tgz", + "integrity": "sha512-r83jn9yVdPh618oGgoKPggMsQGOkQqJbxEutd4CE9mnotPCE2uRTIyaFMh8sohNUeoQNRmj9rbr2pWGVlgERpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "8.17.1", + "ajv-formats": "3.0.1", + "jsonc-parser": "3.3.1", + "picomatch": "4.0.3", + "rxjs": "7.8.2", + "source-map": "0.7.6" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^4.0.0" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@compodoc/compodoc/node_modules/@angular-devkit/schematics": { + "version": "20.3.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-20.3.4.tgz", + "integrity": "sha512-JYlcmVBKNT9+cQ6T2tmu+yVQ2bJk8tG0mXvPHWXrl/M4c6NObhSSThK50tJHy0Xo3gl8WgogOxUeJNnBq67cIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/core": "20.3.4", + "jsonc-parser": "3.3.1", + "magic-string": "0.30.17", + "ora": "8.2.0", + "rxjs": "7.8.2" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@compodoc/compodoc/node_modules/@babel/core": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.4.tgz", + "integrity": "sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.3", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.28.3", + "@babel/helpers": "^7.28.4", + "@babel/parser": "^7.28.4", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.4", + "@babel/types": "^7.28.4", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@compodoc/compodoc/node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@compodoc/compodoc/node_modules/@ts-morph/common": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.28.1.tgz", + "integrity": "sha512-W74iWf7ILp1ZKNYXY5qbddNaml7e9Sedv5lvU1V8lftlitkc9Pq1A+jlH23ltDgWYeZFFEqGCD1Ies9hqu3O+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimatch": "^10.0.1", + "path-browserify": "^1.0.1", + "tinyglobby": "^0.2.14" + } + }, + "node_modules/@compodoc/compodoc/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@compodoc/compodoc/node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@compodoc/compodoc/node_modules/cli-cursor": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", + "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@compodoc/compodoc/node_modules/commander": { + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.2.tgz", + "integrity": "sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20" + } + }, + "node_modules/@compodoc/compodoc/node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@compodoc/compodoc/node_modules/emoji-regex": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "dev": true, + "license": "MIT" + }, + "node_modules/@compodoc/compodoc/node_modules/fs-extra": { + "version": "11.3.2", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz", + "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@compodoc/compodoc/node_modules/glob": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.1.0.tgz", + "integrity": "sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "foreground-child": "^3.3.1", + "jackspeak": "^4.1.1", + "minimatch": "^10.1.1", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@compodoc/compodoc/node_modules/is-interactive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", + "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@compodoc/compodoc/node_modules/is-unicode-supported": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", + "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@compodoc/compodoc/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/@compodoc/compodoc/node_modules/log-symbols": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-6.0.0.tgz", + "integrity": "sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^5.3.0", + "is-unicode-supported": "^1.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@compodoc/compodoc/node_modules/log-symbols/node_modules/is-unicode-supported": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", + "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@compodoc/compodoc/node_modules/minimatch": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@compodoc/compodoc/node_modules/onetime": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", + "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-function": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@compodoc/compodoc/node_modules/ora": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-8.2.0.tgz", + "integrity": "sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^5.3.0", + "cli-cursor": "^5.0.0", + "cli-spinners": "^2.9.2", + "is-interactive": "^2.0.0", + "is-unicode-supported": "^2.0.0", + "log-symbols": "^6.0.0", + "stdin-discarder": "^0.2.2", + "string-width": "^7.2.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@compodoc/compodoc/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@compodoc/compodoc/node_modules/restore-cursor": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", + "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^7.0.0", + "signal-exit": "^4.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@compodoc/compodoc/node_modules/source-map": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", + "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">= 12" + } + }, + "node_modules/@compodoc/compodoc/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@compodoc/compodoc/node_modules/ts-morph": { + "version": "27.0.2", + "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-27.0.2.tgz", + "integrity": "sha512-fhUhgeljcrdZ+9DZND1De1029PrE+cMkIP7ooqkLRTrRLTqcki2AstsyJm0vRNbTbVCNJ0idGlbBrfqc7/nA8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ts-morph/common": "~0.28.1", + "code-block-writer": "^13.0.3" + } + }, + "node_modules/@compodoc/live-server": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@compodoc/live-server/-/live-server-1.2.3.tgz", + "integrity": "sha512-hDmntVCyjjaxuJzPzBx68orNZ7TW4BtHWMnXlIVn5dqhK7vuFF/11hspO1cMmc+2QTYgqde1TBcb3127S7Zrow==", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": "^3.5.2", + "colors": "1.4.0", + "connect": "^3.7.0", + "cors": "latest", + "event-stream": "4.0.1", + "faye-websocket": "0.11.x", + "http-auth": "4.1.9", + "http-auth-connect": "^1.0.5", + "morgan": "^1.10.0", + "object-assign": "latest", + "open": "8.4.0", + "proxy-middleware": "latest", + "send": "latest", + "serve-index": "^1.9.1" + }, + "bin": { + "live-server": "live-server.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@compodoc/live-server/node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/@compodoc/live-server/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@compodoc/live-server/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@compodoc/live-server/node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/@compodoc/ngd-core": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@compodoc/ngd-core/-/ngd-core-2.1.1.tgz", + "integrity": "sha512-Z+wE6wWZYVnudRYg6qunDlyh3Orw39Ib66Gvrz5kX5u7So+iu3tr6sQJdqH6yGS3hAjig5avlfhWLlgsb6/x1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-colors": "^4.1.3", + "fancy-log": "^2.0.0", + "typescript": "^5.0.4" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@compodoc/ngd-transformer": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@compodoc/ngd-transformer/-/ngd-transformer-2.1.3.tgz", + "integrity": "sha512-oWxJza7CpWR8/FeWYfE6j+jgncnGBsTWnZLt5rD2GUpsGSQTuGrsFPnmbbaVLgRS5QIVWBJYke7QFBr/7qVMWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@aduh95/viz.js": "3.4.0", + "@compodoc/ngd-core": "~2.1.1", + "dot": "^2.0.0-beta.1", + "fs-extra": "^11.1.1" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@compodoc/ngd-transformer/node_modules/fs-extra": { + "version": "11.3.2", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz", + "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@egjs/hammerjs": { + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/@egjs/hammerjs/-/hammerjs-2.0.17.tgz", + "integrity": "sha512-XQsZgjm2EcVUiZQf11UBJQfmZeEmOW8DpI1gsFeln6w0ae0ii4dMQEQ0kjl6DspdWX1aGY1/loyXnP0JS06e/A==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/hammerjs": "^2.0.36" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@emnapi/core": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.7.1.tgz", + "integrity": "sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.1.0", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.7.1.tgz", + "integrity": "sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", + "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", + "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz", + "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.7", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", + "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "9.39.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.1.tgz", + "integrity": "sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", + "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", + "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@fastify/accept-negotiator": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@fastify/accept-negotiator/-/accept-negotiator-2.0.1.tgz", + "integrity": "sha512-/c/TW2bO/v9JeEgoD/g1G5GxGeCF1Hafdf79WPmUlgYiBXummY0oX3VVq4yFkKKVBKDNlaDUYoab7g38RpPqCQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" + }, + "node_modules/@fastify/ajv-compiler": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@fastify/ajv-compiler/-/ajv-compiler-4.0.5.tgz", + "integrity": "sha512-KoWKW+MhvfTRWL4qrhUwAAZoaChluo0m0vbiJlGMt2GXvL4LVPQEjt8kSpHI3IBq5Rez8fg+XeH3cneztq+C7A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "ajv": "^8.12.0", + "ajv-formats": "^3.0.1", + "fast-uri": "^3.0.0" + } + }, + "node_modules/@fastify/ajv-compiler/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@fastify/ajv-compiler/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "node_modules/@fastify/busboy": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", + "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/@fastify/cookie": { + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/@fastify/cookie/-/cookie-11.0.2.tgz", + "integrity": "sha512-GWdwdGlgJxyvNv+QcKiGNevSspMQXncjMZ1J8IvuDQk0jvkzgWWZFNC2En3s+nHndZBGV8IbLwOI/sxCZw/mzA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "cookie": "^1.0.0", + "fastify-plugin": "^5.0.0" + } + }, + "node_modules/@fastify/cors": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/@fastify/cors/-/cors-11.1.0.tgz", + "integrity": "sha512-sUw8ed8wP2SouWZTIbA7V2OQtMNpLj2W6qJOYhNdcmINTu6gsxVYXjQiM9mdi8UUDlcoDDJ/W2syPo1WB2QjYA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "fastify-plugin": "^5.0.0", + "toad-cache": "^3.7.0" + } + }, + "node_modules/@fastify/error": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@fastify/error/-/error-4.2.0.tgz", + "integrity": "sha512-RSo3sVDXfHskiBZKBPRgnQTtIqpi/7zhJOEmAxCiBcM7d0uwdGdxLlsCaLzGs8v8NnxIRlfG0N51p5yFaOentQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" + }, + "node_modules/@fastify/fast-json-stringify-compiler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@fastify/fast-json-stringify-compiler/-/fast-json-stringify-compiler-5.0.3.tgz", + "integrity": "sha512-uik7yYHkLr6fxd8hJSZ8c+xF4WafPK+XzneQDPU+D10r5X19GW8lJcom2YijX2+qtFF1ENJlHXKFM9ouXNJYgQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "fast-json-stringify": "^6.0.0" + } + }, + "node_modules/@fastify/formbody": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@fastify/formbody/-/formbody-8.0.2.tgz", + "integrity": "sha512-84v5J2KrkXzjgBpYnaNRPqwgMsmY7ZDjuj0YVuMR3NXCJRCgKEZy/taSP1wUYGn0onfxJpLyRGDLa+NMaDJtnA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "fast-querystring": "^1.1.2", + "fastify-plugin": "^5.0.0" + } + }, + "node_modules/@fastify/forwarded": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@fastify/forwarded/-/forwarded-3.0.1.tgz", + "integrity": "sha512-JqDochHFqXs3C3Ml3gOY58zM7OqO9ENqPo0UqAjAjH8L01fRZqwX9iLeX34//kiJubF7r2ZQHtBRU36vONbLlw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" + }, + "node_modules/@fastify/merge-json-schemas": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@fastify/merge-json-schemas/-/merge-json-schemas-0.2.1.tgz", + "integrity": "sha512-OA3KGBCy6KtIvLf8DINC5880o5iBlDX4SxzLQS8HorJAbqluzLRn80UXU0bxZn7UOFhFgpRJDasfwn9nG4FG4A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/@fastify/middie": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@fastify/middie/-/middie-9.0.3.tgz", + "integrity": "sha512-7OYovKXp9UKYeVMcjcFLMcSpoMkmcZmfnG+eAvtdiatN35W7c+r9y1dRfpA+pfFVNuHGGqI3W+vDTmjvcfLcMA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "@fastify/error": "^4.0.0", + "fastify-plugin": "^5.0.0", + "path-to-regexp": "^8.1.0", + "reusify": "^1.0.4" + } + }, + "node_modules/@fastify/proxy-addr": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@fastify/proxy-addr/-/proxy-addr-5.1.0.tgz", + "integrity": "sha512-INS+6gh91cLUjB+PVHfu1UqcB76Sqtpyp7bnL+FYojhjygvOPA9ctiD/JDKsyD9Xgu4hUhCSJBPig/w7duNajw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "@fastify/forwarded": "^3.0.0", + "ipaddr.js": "^2.1.0" + } + }, + "node_modules/@fastify/send": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@fastify/send/-/send-4.1.0.tgz", + "integrity": "sha512-TMYeQLCBSy2TOFmV95hQWkiTYgC/SEx7vMdV+wnZVX4tt8VBLKzmH8vV9OzJehV0+XBfg+WxPMt5wp+JBUKsVw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "@lukeed/ms": "^2.0.2", + "escape-html": "~1.0.3", + "fast-decode-uri-component": "^1.0.1", + "http-errors": "^2.0.0", + "mime": "^3" + } + }, + "node_modules/@fastify/static": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@fastify/static/-/static-8.3.0.tgz", + "integrity": "sha512-yKxviR5PH1OKNnisIzZKmgZSus0r2OZb8qCSbqmw34aolT4g3UlzYfeBRym+HJ1J471CR8e2ldNub4PubD1coA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "@fastify/accept-negotiator": "^2.0.0", + "@fastify/send": "^4.0.0", + "content-disposition": "^0.5.4", + "fastify-plugin": "^5.0.0", + "fastq": "^1.17.1", + "glob": "^11.0.0" + } + }, + "node_modules/@fastify/static/node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@fastify/static/node_modules/glob": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.1.0.tgz", + "integrity": "sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "foreground-child": "^3.3.1", + "jackspeak": "^4.1.1", + "minimatch": "^10.1.1", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@fastify/static/node_modules/minimatch": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@fastify/websocket": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/@fastify/websocket/-/websocket-11.2.0.tgz", + "integrity": "sha512-3HrDPbAG1CzUCqnslgJxppvzaAZffieOVbLp1DAy1huCSynUWPifSvfdEDUR8HlJLp3sp1A36uOM2tJogADS8w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "duplexify": "^4.1.3", + "fastify-plugin": "^5.0.0", + "ws": "^8.16.0" + } + }, + "node_modules/@graphql-tools/merge": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-9.1.1.tgz", + "integrity": "sha512-BJ5/7Y7GOhTuvzzO5tSBFL4NGr7PVqTJY3KeIDlVTT8YLcTXtBR+hlrC3uyEym7Ragn+zyWdHeJ9ev+nRX1X2w==", + "license": "MIT", + "dependencies": { + "@graphql-tools/utils": "^10.9.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/schema": { + "version": "10.0.25", + "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-10.0.25.tgz", + "integrity": "sha512-/PqE8US8kdQ7lB9M5+jlW8AyVjRGCKU7TSktuW3WNKSKmDO0MK1wakvb5gGdyT49MjAIb4a3LWxIpwo5VygZuw==", + "license": "MIT", + "dependencies": { + "@graphql-tools/merge": "^9.1.1", + "@graphql-tools/utils": "^10.9.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/utils": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-10.9.1.tgz", + "integrity": "sha512-B1wwkXk9UvU7LCBkPs8513WxOQ2H8Fo5p8HR1+Id9WmYE5+bd51vqN+MbrqvWczHCH2gwkREgHJN88tE0n1FCw==", + "license": "MIT", + "dependencies": { + "@graphql-typed-document-node/core": "^3.1.1", + "@whatwg-node/promise-helpers": "^1.0.0", + "cross-inspect": "1.0.1", + "dset": "^3.1.4", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-typed-document-node/core": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz", + "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", + "license": "MIT", + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.4.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@inquirer/ansi": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-1.0.2.tgz", + "integrity": "sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/checkbox": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.3.2.tgz", + "integrity": "sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^1.0.2", + "@inquirer/core": "^10.3.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/confirm": { + "version": "5.1.21", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.21.tgz", + "integrity": "sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/core": { + "version": "10.3.2", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.2.tgz", + "integrity": "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^1.0.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "cli-width": "^4.1.0", + "mute-stream": "^2.0.0", + "signal-exit": "^4.1.0", + "wrap-ansi": "^6.2.0", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/editor": { + "version": "4.2.23", + "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.23.tgz", + "integrity": "sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/external-editor": "^1.0.3", + "@inquirer/type": "^3.0.10" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/expand": { + "version": "4.0.23", + "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.23.tgz", + "integrity": "sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/external-editor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.3.tgz", + "integrity": "sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==", + "dev": true, + "license": "MIT", + "dependencies": { + "chardet": "^2.1.1", + "iconv-lite": "^0.7.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/figures": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.15.tgz", + "integrity": "sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/input": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.3.1.tgz", + "integrity": "sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/number": { + "version": "3.0.23", + "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.23.tgz", + "integrity": "sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/password": { + "version": "4.0.23", + "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.23.tgz", + "integrity": "sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^1.0.2", + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/prompts": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.10.1.tgz", + "integrity": "sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/checkbox": "^4.3.2", + "@inquirer/confirm": "^5.1.21", + "@inquirer/editor": "^4.2.23", + "@inquirer/expand": "^4.0.23", + "@inquirer/input": "^4.3.1", + "@inquirer/number": "^3.0.23", + "@inquirer/password": "^4.0.23", + "@inquirer/rawlist": "^4.1.11", + "@inquirer/search": "^3.2.2", + "@inquirer/select": "^4.4.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/rawlist": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.11.tgz", + "integrity": "sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/search": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.2.2.tgz", + "integrity": "sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/select": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.4.2.tgz", + "integrity": "sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^1.0.2", + "@inquirer/core": "^10.3.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/type": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.10.tgz", + "integrity": "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@isaacs/balanced-match": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", + "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", + "license": "MIT", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@isaacs/brace-expansion": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", + "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", + "license": "MIT", + "dependencies": { + "@isaacs/balanced-match": "^4.0.1" + }, + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "license": "MIT" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-30.2.0.tgz", + "integrity": "sha512-+O1ifRjkvYIkBqASKWgLxrpEhQAAE7hY77ALLUufSk5717KfOShg6IbqLmdsLMPdUiFvA2kTs0R7YZy+l0IzZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "jest-message-util": "30.2.0", + "jest-util": "30.2.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/core": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-30.2.0.tgz", + "integrity": "sha512-03W6IhuhjqTlpzh/ojut/pDB2LPRygyWX8ExpgHtQA8H/3K7+1vKmcINx5UzeOX1se6YEsBsOHQ1CRzf3fOwTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "30.2.0", + "@jest/pattern": "30.0.1", + "@jest/reporters": "30.2.0", + "@jest/test-result": "30.2.0", + "@jest/transform": "30.2.0", + "@jest/types": "30.2.0", + "@types/node": "*", + "ansi-escapes": "^4.3.2", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "exit-x": "^0.2.2", + "graceful-fs": "^4.2.11", + "jest-changed-files": "30.2.0", + "jest-config": "30.2.0", + "jest-haste-map": "30.2.0", + "jest-message-util": "30.2.0", + "jest-regex-util": "30.0.1", + "jest-resolve": "30.2.0", + "jest-resolve-dependencies": "30.2.0", + "jest-runner": "30.2.0", + "jest-runtime": "30.2.0", + "jest-snapshot": "30.2.0", + "jest-util": "30.2.0", + "jest-validate": "30.2.0", + "jest-watcher": "30.2.0", + "micromatch": "^4.0.8", + "pretty-format": "30.2.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/diff-sequences": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz", + "integrity": "sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/environment": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.2.0.tgz", + "integrity": "sha512-/QPTL7OBJQ5ac09UDRa3EQes4gt1FTEG/8jZ/4v5IVzx+Cv7dLxlVIvfvSVRiiX2drWyXeBjkMSR8hvOWSog5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/fake-timers": "30.2.0", + "@jest/types": "30.2.0", + "@types/node": "*", + "jest-mock": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/expect": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-30.2.0.tgz", + "integrity": "sha512-V9yxQK5erfzx99Sf+7LbhBwNWEZ9eZay8qQ9+JSC0TrMR1pMDHLMY+BnVPacWU6Jamrh252/IKo4F1Xn/zfiqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "expect": "30.2.0", + "jest-snapshot": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.2.0.tgz", + "integrity": "sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.1.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.2.0.tgz", + "integrity": "sha512-HI3tRLjRxAbBy0VO8dqqm7Hb2mIa8d5bg/NJkyQcOk7V118ObQML8RC5luTF/Zsg4474a+gDvhce7eTnP4GhYw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@sinonjs/fake-timers": "^13.0.0", + "@types/node": "*", + "jest-message-util": "30.2.0", + "jest-mock": "30.2.0", + "jest-util": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/get-type": { + "version": "30.1.0", + "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.1.0.tgz", + "integrity": "sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-30.2.0.tgz", + "integrity": "sha512-b63wmnKPaK+6ZZfpYhz9K61oybvbI1aMcIs80++JI1O1rR1vaxHUCNqo3ITu6NU0d4V34yZFoHMn/uoKr/Rwfw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "30.2.0", + "@jest/expect": "30.2.0", + "@jest/types": "30.2.0", + "jest-mock": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/pattern": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz", + "integrity": "sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "jest-regex-util": "30.0.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-30.2.0.tgz", + "integrity": "sha512-DRyW6baWPqKMa9CzeiBjHwjd8XeAyco2Vt8XbcLFjiwCOEKOvy82GJ8QQnJE9ofsxCMPjH4MfH8fCWIHHDKpAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "30.2.0", + "@jest/test-result": "30.2.0", + "@jest/transform": "30.2.0", + "@jest/types": "30.2.0", + "@jridgewell/trace-mapping": "^0.3.25", + "@types/node": "*", + "chalk": "^4.1.2", + "collect-v8-coverage": "^1.0.2", + "exit-x": "^0.2.2", + "glob": "^10.3.10", + "graceful-fs": "^4.2.11", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^5.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "30.2.0", + "jest-util": "30.2.0", + "jest-worker": "30.2.0", + "slash": "^3.0.0", + "string-length": "^4.0.2", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/reporters/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@jest/reporters/node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@jest/reporters/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/@jest/reporters/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/@jest/reporters/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@jest/reporters/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.34.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/snapshot-utils": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/snapshot-utils/-/snapshot-utils-30.2.0.tgz", + "integrity": "sha512-0aVxM3RH6DaiLcjj/b0KrIBZhSX1373Xci4l3cW5xiUWPctZ59zQ7jj4rqcJQ/Z8JuN/4wX3FpJSa3RssVvCug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "natural-compare": "^1.4.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-30.0.1.tgz", + "integrity": "sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "callsites": "^3.1.0", + "graceful-fs": "^4.2.11" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.2.0.tgz", + "integrity": "sha512-RF+Z+0CCHkARz5HT9mcQCBulb1wgCP3FBvl9VFokMX27acKphwyQsNuWH3c+ojd1LeWBLoTYoxF0zm6S/66mjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "30.2.0", + "@jest/types": "30.2.0", + "@types/istanbul-lib-coverage": "^2.0.6", + "collect-v8-coverage": "^1.0.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-30.2.0.tgz", + "integrity": "sha512-wXKgU/lk8fKXMu/l5Hog1R61bL4q5GCdT6OJvdAFz1P+QrpoFuLU68eoKuVc4RbrTtNnTL5FByhWdLgOPSph+Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/test-result": "30.2.0", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.2.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.2.0.tgz", + "integrity": "sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.27.4", + "@jest/types": "30.2.0", + "@jridgewell/trace-mapping": "^0.3.25", + "babel-plugin-istanbul": "^7.0.1", + "chalk": "^4.1.2", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.2.0", + "jest-regex-util": "30.0.1", + "jest-util": "30.2.0", + "micromatch": "^4.0.8", + "pirates": "^4.0.7", + "slash": "^3.0.0", + "write-file-atomic": "^5.0.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/types": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@lukeed/csprng": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@lukeed/csprng/-/csprng-1.1.0.tgz", + "integrity": "sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@lukeed/ms": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@lukeed/ms/-/ms-2.0.2.tgz", + "integrity": "sha512-9I2Zn6+NJLfaGoz9jN3lpwDgAYvfGeNYdbAIjJOqzs4Tpc+VU3Jqq4IofSUBKajiDS8k9fZIg18/z13mpk1bsA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", + "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@tybys/wasm-util": "^0.10.0" + } + }, + "node_modules/@nestjs/cli": { + "version": "11.0.12", + "resolved": "https://registry.npmjs.org/@nestjs/cli/-/cli-11.0.12.tgz", + "integrity": "sha512-V3fD1xESlFcJ1xpwOtUhn0edLvIa76Sx8mkvdR1s8cM4c/rZO+yGmXP30ZQwPfIJPTgBvsw93F/i+87eV96wcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/core": "19.2.19", + "@angular-devkit/schematics": "19.2.19", + "@angular-devkit/schematics-cli": "19.2.19", + "@inquirer/prompts": "7.10.1", + "@nestjs/schematics": "^11.0.1", + "ansis": "4.2.0", + "chokidar": "4.0.3", + "cli-table3": "0.6.5", + "commander": "4.1.1", + "fork-ts-checker-webpack-plugin": "9.1.0", + "glob": "12.0.0", + "node-emoji": "1.11.0", + "ora": "5.4.1", + "tsconfig-paths": "4.2.0", + "tsconfig-paths-webpack-plugin": "4.2.0", + "typescript": "5.9.3", + "webpack": "5.100.2", + "webpack-node-externals": "3.0.0" + }, + "bin": { + "nest": "bin/nest.js" + }, + "engines": { + "node": ">= 20.11" + }, + "peerDependencies": { + "@swc/cli": "^0.1.62 || ^0.3.0 || ^0.4.0 || ^0.5.0 || ^0.6.0 || ^0.7.0", + "@swc/core": "^1.3.62" + }, + "peerDependenciesMeta": { + "@swc/cli": { + "optional": true + }, + "@swc/core": { + "optional": true + } + } + }, + "node_modules/@nestjs/cli/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@nestjs/cli/node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/@nestjs/cli/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/@nestjs/cli/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@nestjs/cli/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/@nestjs/cli/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/@nestjs/cli/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@nestjs/cli/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@nestjs/cli/node_modules/schema-utils": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", + "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/@nestjs/cli/node_modules/webpack": { + "version": "5.100.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.100.2.tgz", + "integrity": "sha512-QaNKAvGCDRh3wW1dsDjeMdDXwZm2vqq3zn6Pvq4rHOEOGSaUMgOOjG2Y9ZbIGzpfkJk9ZYTHpDqgDfeBDcnLaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.8", + "@types/json-schema": "^7.0.15", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", + "acorn": "^8.15.0", + "acorn-import-phases": "^1.0.3", + "browserslist": "^4.24.0", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.17.2", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^4.3.2", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.11", + "watchpack": "^2.4.1", + "webpack-sources": "^3.3.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/@nestjs/common": { + "version": "11.1.9", + "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-11.1.9.tgz", + "integrity": "sha512-zDntUTReRbAThIfSp3dQZ9kKqI+LjgLp5YZN5c1bgNRDuoeLySAoZg46Bg1a+uV8TMgIRziHocglKGNzr6l+bQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "file-type": "21.1.0", + "iterare": "1.2.1", + "load-esm": "1.0.3", + "tslib": "2.8.1", + "uid": "2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "class-transformer": ">=0.4.1", + "class-validator": ">=0.13.2", + "reflect-metadata": "^0.1.12 || ^0.2.0", + "rxjs": "^7.1.0" + }, + "peerDependenciesMeta": { + "class-transformer": { + "optional": true + }, + "class-validator": { + "optional": true + } + } + }, + "node_modules/@nestjs/config": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@nestjs/config/-/config-4.0.2.tgz", + "integrity": "sha512-McMW6EXtpc8+CwTUwFdg6h7dYcBUpH5iUILCclAsa+MbCEvC9ZKu4dCHRlJqALuhjLw97pbQu62l4+wRwGeZqA==", + "license": "MIT", + "dependencies": { + "dotenv": "16.4.7", + "dotenv-expand": "12.0.1", + "lodash": "4.17.21" + }, + "peerDependencies": { + "@nestjs/common": "^10.0.0 || ^11.0.0", + "rxjs": "^7.1.0" + } + }, + "node_modules/@nestjs/core": { + "version": "11.1.9", + "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-11.1.9.tgz", + "integrity": "sha512-a00B0BM4X+9z+t3UxJqIZlemIwCQdYoPKrMcM+ky4z3pkqqG1eTWexjs+YXpGObnLnjtMPVKWlcZHp3adDYvUw==", + "hasInstallScript": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@nuxt/opencollective": "0.4.1", + "fast-safe-stringify": "2.1.1", + "iterare": "1.2.1", + "path-to-regexp": "8.3.0", + "tslib": "2.8.1", + "uid": "2.0.2" + }, + "engines": { + "node": ">= 20" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "@nestjs/common": "^11.0.0", + "@nestjs/microservices": "^11.0.0", + "@nestjs/platform-express": "^11.0.0", + "@nestjs/websockets": "^11.0.0", + "reflect-metadata": "^0.1.12 || ^0.2.0", + "rxjs": "^7.1.0" + }, + "peerDependenciesMeta": { + "@nestjs/microservices": { + "optional": true + }, + "@nestjs/platform-express": { + "optional": true + }, + "@nestjs/websockets": { + "optional": true + } + } + }, + "node_modules/@nestjs/graphql": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/@nestjs/graphql/-/graphql-13.2.0.tgz", + "integrity": "sha512-ehgd4pp9e6PQJWjkjV/jGF4934LLzH7C/efe9a9yKJeTZi+x7AL6p+00Q5fhgG75E2CgUZOrmKa90LhcCwqMfA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@graphql-tools/merge": "9.1.1", + "@graphql-tools/schema": "10.0.25", + "@graphql-tools/utils": "10.9.1", + "@nestjs/mapped-types": "2.1.0", + "chokidar": "4.0.3", + "fast-glob": "3.3.3", + "graphql-tag": "2.12.6", + "graphql-ws": "6.0.6", + "lodash": "4.17.21", + "normalize-path": "3.0.0", + "subscriptions-transport-ws": "0.11.0", + "tslib": "2.8.1", + "ws": "8.18.3" + }, + "peerDependencies": { + "@apollo/subgraph": "^2.9.3", + "@nestjs/common": "^11.0.1", + "@nestjs/core": "^11.0.1", + "class-transformer": "*", + "class-validator": "*", + "graphql": "^16.11.0", + "reflect-metadata": "^0.1.13 || ^0.2.0", + "ts-morph": "^20.0.0 || ^21.0.0 || ^24.0.0 || ^25.0.0" + }, + "peerDependenciesMeta": { + "@apollo/subgraph": { + "optional": true + }, + "class-transformer": { + "optional": true + }, + "class-validator": { + "optional": true + }, + "ts-morph": { + "optional": true + } + } + }, + "node_modules/@nestjs/jwt": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/@nestjs/jwt/-/jwt-11.0.1.tgz", + "integrity": "sha512-HXSsc7SAnCnjA98TsZqrE7trGtHDnYXWp4Ffy6LwSmck1QvbGYdMzBquXofX5l6tIRpeY4Qidl2Ti2CVG77Pdw==", + "license": "MIT", + "dependencies": { + "@types/jsonwebtoken": "9.0.10", + "jsonwebtoken": "9.0.2" + }, + "peerDependencies": { + "@nestjs/common": "^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0" + } + }, + "node_modules/@nestjs/mapped-types": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@nestjs/mapped-types/-/mapped-types-2.1.0.tgz", + "integrity": "sha512-W+n+rM69XsFdwORF11UqJahn4J3xi4g/ZEOlJNL6KoW5ygWSmBB2p0S2BZ4FQeS/NDH72e6xIcu35SfJnE8bXw==", + "license": "MIT", + "peerDependencies": { + "@nestjs/common": "^10.0.0 || ^11.0.0", + "class-transformer": "^0.4.0 || ^0.5.0", + "class-validator": "^0.13.0 || ^0.14.0", + "reflect-metadata": "^0.1.12 || ^0.2.0" + }, + "peerDependenciesMeta": { + "class-transformer": { + "optional": true + }, + "class-validator": { + "optional": true + } + } + }, + "node_modules/@nestjs/mercurius": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/@nestjs/mercurius/-/mercurius-13.2.0.tgz", + "integrity": "sha512-52tgKx+oL4Njw0CSx46MFtMckUFKQSZYzBQWqEQHE0qh5EK4i41s81qolFVkrbQWD5myA8UFB6169VQcIk8U1w==", + "license": "MIT", + "dependencies": { + "tslib": "2.8.1" + }, + "peerDependencies": { + "@apollo/subgraph": "^2.0.0", + "@mercuriusjs/federation": "^5.0.0", + "@mercuriusjs/gateway": "^5.0.0", + "@nestjs/common": "^11.0.1", + "@nestjs/graphql": "^13.0.0", + "fastify": "^5.2.1", + "graphql": "^16.10.0", + "mercurius": "^16.0.1" + }, + "peerDependenciesMeta": { + "@apollo/subgraph": { + "optional": true + }, + "@mercuriusjs/federation": { + "optional": true + }, + "@mercuriusjs/gateway": { + "optional": true + } + } + }, + "node_modules/@nestjs/platform-fastify": { + "version": "11.1.9", + "resolved": "https://registry.npmjs.org/@nestjs/platform-fastify/-/platform-fastify-11.1.9.tgz", + "integrity": "sha512-OOCyg36CP+WrJn7KIk1E/XdCPegcIdH5zi2txwqUtQNshl6c0VWv+8qotyOncPwEFuiOgnn3fuGveQj7DPNKgA==", + "license": "MIT", + "dependencies": { + "@fastify/cors": "11.1.0", + "@fastify/formbody": "8.0.2", + "@fastify/middie": "9.0.3", + "fast-querystring": "1.1.2", + "fastify": "5.6.2", + "light-my-request": "6.6.0", + "path-to-regexp": "8.3.0", + "tslib": "2.8.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "@fastify/static": "^8.0.0", + "@fastify/view": "^10.0.0 || ^11.0.0", + "@nestjs/common": "^11.0.0", + "@nestjs/core": "^11.0.0" + }, + "peerDependenciesMeta": { + "@fastify/static": { + "optional": true + }, + "@fastify/view": { + "optional": true + } + } + }, + "node_modules/@nestjs/schematics": { + "version": "11.0.9", + "resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-11.0.9.tgz", + "integrity": "sha512-0NfPbPlEaGwIT8/TCThxLzrlz3yzDNkfRNpbL7FiplKq3w4qXpJg0JYwqgMEJnLQZm3L/L/5XjoyfJHUO3qX9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/core": "19.2.17", + "@angular-devkit/schematics": "19.2.17", + "comment-json": "4.4.1", + "jsonc-parser": "3.3.1", + "pluralize": "8.0.0" + }, + "peerDependencies": { + "typescript": ">=4.8.2" + } + }, + "node_modules/@nestjs/schematics/node_modules/@angular-devkit/core": { + "version": "19.2.17", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-19.2.17.tgz", + "integrity": "sha512-Ah008x2RJkd0F+NLKqIpA34/vUGwjlprRCkvddjDopAWRzYn6xCkz1Tqwuhn0nR1Dy47wTLKYD999TYl5ONOAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "8.17.1", + "ajv-formats": "3.0.1", + "jsonc-parser": "3.3.1", + "picomatch": "4.0.2", + "rxjs": "7.8.1", + "source-map": "0.7.4" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^4.0.0" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@nestjs/schematics/node_modules/@angular-devkit/schematics": { + "version": "19.2.17", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-19.2.17.tgz", + "integrity": "sha512-ADfbaBsrG8mBF6Mfs+crKA/2ykB8AJI50Cv9tKmZfwcUcyAdmTr+vVvhsBCfvUAEokigSsgqgpYxfkJVxhJYeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/core": "19.2.17", + "jsonc-parser": "3.3.1", + "magic-string": "0.30.17", + "ora": "5.4.1", + "rxjs": "7.8.1" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@nestjs/schematics/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@nestjs/schematics/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/@nestjs/schematics/node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@nestjs/testing": { + "version": "11.1.9", + "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-11.1.9.tgz", + "integrity": "sha512-UFxerBDdb0RUNxQNj25pvkvNE7/vxKhXYWBt3QuwBFnYISzRIzhVlyIqLfoV5YI3zV0m0Nn4QAn1KM0zzwfEng==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "2.8.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "@nestjs/common": "^11.0.0", + "@nestjs/core": "^11.0.0", + "@nestjs/microservices": "^11.0.0", + "@nestjs/platform-express": "^11.0.0" + }, + "peerDependenciesMeta": { + "@nestjs/microservices": { + "optional": true + }, + "@nestjs/platform-express": { + "optional": true + } + } + }, + "node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nuxt/opencollective": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@nuxt/opencollective/-/opencollective-0.4.1.tgz", + "integrity": "sha512-GXD3wy50qYbxCJ652bDrDzgMr3NFEkIS374+IgFQKkCvk9yiYcLvX2XDYr7UyQxf4wK0e+yqDYRubZ0DtOxnmQ==", + "license": "MIT", + "dependencies": { + "consola": "^3.2.3" + }, + "bin": { + "opencollective": "bin/opencollective.js" + }, + "engines": { + "node": "^14.18.0 || >=16.10.0", + "npm": ">=5.10.0" + } + }, + "node_modules/@paralleldrive/cuid2": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@paralleldrive/cuid2/-/cuid2-2.3.1.tgz", + "integrity": "sha512-XO7cAxhnTZl0Yggq6jOgjiOHhbgcO4NqFqwSmQpjK3b6TEE6Uj/jfSk6wzYyemh3+I0sHirKSetjQwn5cZktFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@noble/hashes": "^1.1.5" + } + }, + "node_modules/@pinojs/redact": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@pinojs/redact/-/redact-0.4.0.tgz", + "integrity": "sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg==", + "license": "MIT" + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@pkgr/core": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", + "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/pkgr" + } + }, + "node_modules/@polka/send-type": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@polka/send-type/-/send-type-0.5.2.tgz", + "integrity": "sha512-jGXalKihnhGQmMQ+xxfxrRfI2cWs38TIZuwgYpnbQDD4r9TkOiU3ocjAS+6CqqMNQNAu9Ul2iHU5YFRDODak2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@polka/url": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-0.5.0.tgz", + "integrity": "sha512-oZLYFEAzUKyi3SKnXvj32ZCEGH6RDnao7COuCVhDydMS9NrCSVXhM79VaKyP5+Zc33m0QXEd2DN3UkU7OsHcfw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@prisma/client": { + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@prisma/client/-/client-5.22.0.tgz", + "integrity": "sha512-M0SVXfyHnQREBKxCgyo7sffrKttwE6R8PMq330MIUF0pTwjUhLbW84pFDlf06B27XyCR++VtjugEnIHdr07SVA==", + "hasInstallScript": true, + "license": "Apache-2.0", + "engines": { + "node": ">=16.13" + }, + "peerDependencies": { + "prisma": "*" + }, + "peerDependenciesMeta": { + "prisma": { + "optional": true + } + } + }, + "node_modules/@prisma/config": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@prisma/config/-/config-7.0.0.tgz", + "integrity": "sha512-TDASB57hyGUwHB0IPCSkoJcXFrJOKA1+R/1o4np4PbS+E0F5MiY5aAyUttO0mSuNQaX7t8VH/GkDemffF1mQzg==", + "license": "Apache-2.0", + "dependencies": { + "c12": "3.1.0", + "deepmerge-ts": "7.1.5", + "effect": "3.18.4", + "empathic": "2.0.0" + } + }, + "node_modules/@prisma/debug": { + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-5.22.0.tgz", + "integrity": "sha512-AUt44v3YJeggO2ZU5BkXI7M4hu9BF2zzH2iF2V5pyXT/lRTyWiElZ7It+bRH1EshoMRxHgpYg4VB6rCM+mG5jQ==", + "license": "Apache-2.0" + }, + "node_modules/@prisma/engines": { + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-5.22.0.tgz", + "integrity": "sha512-UNjfslWhAt06kVL3CjkuYpHAWSO6L4kDCVPegV6itt7nD1kSJavd3vhgAEhjglLJJKEdJ7oIqDJ+yHk6qO8gPA==", + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@prisma/debug": "5.22.0", + "@prisma/engines-version": "5.22.0-44.605197351a3c8bdd595af2d2a9bc3025bca48ea2", + "@prisma/fetch-engine": "5.22.0", + "@prisma/get-platform": "5.22.0" + } + }, + "node_modules/@prisma/engines-version": { + "version": "5.22.0-44.605197351a3c8bdd595af2d2a9bc3025bca48ea2", + "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-5.22.0-44.605197351a3c8bdd595af2d2a9bc3025bca48ea2.tgz", + "integrity": "sha512-2PTmxFR2yHW/eB3uqWtcgRcgAbG1rwG9ZriSvQw+nnb7c4uCr3RAcGMb6/zfE88SKlC1Nj2ziUvc96Z379mHgQ==", + "license": "Apache-2.0" + }, + "node_modules/@prisma/fetch-engine": { + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-5.22.0.tgz", + "integrity": "sha512-bkrD/Mc2fSvkQBV5EpoFcZ87AvOgDxbG99488a5cexp5Ccny+UM6MAe/UFkUC0wLYD9+9befNOqGiIJhhq+HbA==", + "license": "Apache-2.0", + "dependencies": { + "@prisma/debug": "5.22.0", + "@prisma/engines-version": "5.22.0-44.605197351a3c8bdd595af2d2a9bc3025bca48ea2", + "@prisma/get-platform": "5.22.0" + } + }, + "node_modules/@prisma/get-platform": { + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-5.22.0.tgz", + "integrity": "sha512-pHhpQdr1UPFpt+zFfnPazhulaZYCUqeIcPpJViYoq9R+D/yw4fjE+CtnsnKzPYm0ddUbeXUzjGVGIRVgPDCk4Q==", + "license": "Apache-2.0", + "dependencies": { + "@prisma/debug": "5.22.0" + } + }, + "node_modules/@reporters/github": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@reporters/github/-/github-1.11.0.tgz", + "integrity": "sha512-sP/fSOgIoMYXZFWVy2Hw6vWUG3akUBiykqnFjx2jWI/kdqj55VZNXAQ27MYuiNffWlITW6mMBcv8+i47O7C77w==", + "license": "MIT", + "dependencies": { + "@actions/core": "^1.10.0", + "stack-utils": "^2.0.6" + } + }, + "node_modules/@sec-ant/readable-stream": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", + "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==", + "license": "MIT" + }, + "node_modules/@sinclair/typebox": { + "version": "0.34.41", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", + "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@sindresorhus/merge-streams": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", + "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "13.0.5", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", + "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.1" + } + }, + "node_modules/@standard-schema/spec": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz", + "integrity": "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==", + "license": "MIT", + "peer": true + }, + "node_modules/@thednp/event-listener": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@thednp/event-listener/-/event-listener-2.0.10.tgz", + "integrity": "sha512-TH7YVKmoKg6GBLqZB+ETXObofcqJ/Tp5ycheolvYZMjLbMpzYf6MmOWTcBtx8+zrhWy8deV0hYkPvDFioDXdVQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16", + "pnpm": ">=8.6.0" + } + }, + "node_modules/@thednp/position-observer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@thednp/position-observer/-/position-observer-1.1.0.tgz", + "integrity": "sha512-WgldP6Dltp2hJkSwp3+IVu05ClK/2IF33iftiQLb7UHcuO6eydjXiIUeOCClgCy3FDCGau2l/LRVg3oOO3Ytcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@thednp/shorty": "^2.0.11" + }, + "engines": { + "node": ">=16", + "pnpm": ">=8.6.0" + } + }, + "node_modules/@thednp/shorty": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@thednp/shorty/-/shorty-2.0.11.tgz", + "integrity": "sha512-D+rLHt1l7c608yCuzXYJ75aDNWeMVbor+m1HO/XibhiWRbCpD8r6TUv3ayJI+feVfCnBNfrH+p6LSDn9l99uBA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16", + "pnpm": ">=8.6.0" + } + }, + "node_modules/@tokenizer/inflate": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@tokenizer/inflate/-/inflate-0.3.1.tgz", + "integrity": "sha512-4oeoZEBQdLdt5WmP/hx1KZ6D3/Oid/0cUb2nk4F0pTDAWy+KCH3/EnAkZF/bvckWo8I33EqBm01lIPgmgc8rCA==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.1", + "fflate": "^0.8.2", + "token-types": "^6.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/@tokenizer/token": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", + "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==", + "license": "MIT" + }, + "node_modules/@ts-morph/common": { + "version": "0.26.1", + "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.26.1.tgz", + "integrity": "sha512-Sn28TGl/4cFpcM+jwsH1wLncYq3FtN/BIpem+HOygfBWPT5pAeS5dB4VFVzV8FbnOKHpDLZmvAl4AjPEev5idA==", + "license": "MIT", + "dependencies": { + "fast-glob": "^3.3.2", + "minimatch": "^9.0.4", + "path-browserify": "^1.0.1" + } + }, + "node_modules/@ts-morph/common/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@ts-morph/common/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz", + "integrity": "sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", + "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.6", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", + "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/cookiejar": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.5.tgz", + "integrity": "sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/eslint": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/express": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.5.tgz", + "integrity": "sha512-LuIQOcb6UmnF7C1PCFmEU1u2hmiHL43fgFQX67sN3H4Z+0Yk0Neo++mFsBjhOAuLzvlQeqAAkeDOZrJs9rzumQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^5.0.0", + "@types/serve-static": "^1" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.1.0.tgz", + "integrity": "sha512-jnHMsrd0Mwa9Cf4IdOzbz543y4XJepXrbia2T4b6+spXC2We3t1y6K44D3mR8XMFSXMCf3/l7rCgddfx7UNVBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/hammerjs": { + "version": "2.0.46", + "resolved": "https://registry.npmjs.org/@types/hammerjs/-/hammerjs-2.0.46.tgz", + "integrity": "sha512-ynRvcq6wvqexJ9brDMS4BnBLzmr0e14d6ZJTEShTBWKymQiHwlAyGu0ZPEFI2Fh1U53F7tN9ufClWM5KvqkKOw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/http-errors": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", + "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-30.0.0.tgz", + "integrity": "sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA==", + "dev": true, + "license": "MIT", + "dependencies": { + "expect": "^30.0.0", + "pretty-format": "^30.0.0" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/jsonwebtoken": { + "version": "9.0.10", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.10.tgz", + "integrity": "sha512-asx5hIG9Qmf/1oStypjanR7iKTv0gXQ1Ov/jfrX6kS/EO0OFni8orbmGCn0672NHR3kXHwpAwR+B368ZGN/2rA==", + "license": "MIT", + "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", + "integrity": "sha512-ymXWVrDiCxTBE3+RIrrP533E70eA+9qu7zdWoHuOmGujkYtzf4HQF96b8nwHLqhuf4ykX61IGRIB38CC6/sImQ==", + "dev": true, + "license": "MIT" + }, + "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==", + "dev": true, + "license": "MIT" + }, + "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==", + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "22.19.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.1.tgz", + "integrity": "sha512-LCCV0HdSZZZb34qifBsyWlUmok6W7ouER+oQIGBScS8EsZsQbrtFTUrDX4hOl+CS6p7cnNC4td+qrSVGSCTUfQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@types/qs": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==", + "dev": true, + "license": "MIT" + }, + "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==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/send": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz", + "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.10.tgz", + "integrity": "sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "<1" + } + }, + "node_modules/@types/serve-static/node_modules/@types/send": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.6.tgz", + "integrity": "sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/superagent": { + "version": "8.1.9", + "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-8.1.9.tgz", + "integrity": "sha512-pTVjI73witn+9ILmoJdajHGW2jkSaOzhiFYF1Rd3EQ94kymLqB9PjD9ISg7WaALC7+dCHT0FGe9T2LktLq/3GQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/cookiejar": "^2.1.5", + "@types/methods": "^1.1.4", + "@types/node": "*", + "form-data": "^4.0.0" + } + }, + "node_modules/@types/supertest": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/supertest/-/supertest-6.0.3.tgz", + "integrity": "sha512-8WzXq62EXFhJ7QsH3Ocb/iKQ/Ty9ZVWnVzoTKc9tyyFRRF3a74Tk2+TLFgaFFw364Ere+npzHKEJ6ga2LzIL7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/methods": "^1.1.4", + "@types/superagent": "^8.1.0" + } + }, + "node_modules/@types/yargs": { + "version": "17.0.35", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", + "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.47.0.tgz", + "integrity": "sha512-fe0rz9WJQ5t2iaLfdbDc9T80GJy0AeO453q8C3YCilnGozvOyCG5t+EZtg7j7D88+c3FipfP/x+wzGnh1xp8ZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.47.0", + "@typescript-eslint/type-utils": "8.47.0", + "@typescript-eslint/utils": "8.47.0", + "@typescript-eslint/visitor-keys": "8.47.0", + "graphemer": "^1.4.0", + "ignore": "^7.0.0", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.47.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.47.0.tgz", + "integrity": "sha512-lJi3PfxVmo0AkEY93ecfN+r8SofEqZNGByvHAI3GBLrvt1Cw6H5k1IM02nSzu0RfUafr2EvFSw0wAsZgubNplQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@typescript-eslint/scope-manager": "8.47.0", + "@typescript-eslint/types": "8.47.0", + "@typescript-eslint/typescript-estree": "8.47.0", + "@typescript-eslint/visitor-keys": "8.47.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.47.0.tgz", + "integrity": "sha512-2X4BX8hUeB5JcA1TQJ7GjcgulXQ+5UkNb0DL8gHsHUHdFoiCTJoYLTpib3LtSDPZsRET5ygN4qqIWrHyYIKERA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.47.0", + "@typescript-eslint/types": "^8.47.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.47.0.tgz", + "integrity": "sha512-a0TTJk4HXMkfpFkL9/WaGTNuv7JWfFTQFJd6zS9dVAjKsojmv9HT55xzbEpnZoY+VUb+YXLMp+ihMLz/UlZfDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.47.0", + "@typescript-eslint/visitor-keys": "8.47.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.47.0.tgz", + "integrity": "sha512-ybUAvjy4ZCL11uryalkKxuT3w3sXJAuWhOoGS3T/Wu+iUu1tGJmk5ytSY8gbdACNARmcYEB0COksD2j6hfGK2g==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.47.0.tgz", + "integrity": "sha512-QC9RiCmZ2HmIdCEvhd1aJELBlD93ErziOXXlHEZyuBo3tBiAZieya0HLIxp+DoDWlsQqDawyKuNEhORyku+P8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.47.0", + "@typescript-eslint/typescript-estree": "8.47.0", + "@typescript-eslint/utils": "8.47.0", + "debug": "^4.3.4", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.47.0.tgz", + "integrity": "sha512-nHAE6bMKsizhA2uuYZbEbmp5z2UpffNrPEqiKIeN7VsV6UY/roxanWfoRrf6x/k9+Obf+GQdkm0nPU+vnMXo9A==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.47.0.tgz", + "integrity": "sha512-k6ti9UepJf5NpzCjH31hQNLHQWupTRPhZ+KFF8WtTuTpy7uHPfeg2NM7cP27aCGajoEplxJDFVCEm9TGPYyiVg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/project-service": "8.47.0", + "@typescript-eslint/tsconfig-utils": "8.47.0", + "@typescript-eslint/types": "8.47.0", + "@typescript-eslint/visitor-keys": "8.47.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.47.0.tgz", + "integrity": "sha512-g7XrNf25iL4TJOiPqatNuaChyqt49a/onq5YsJ9+hXeugK+41LVg7AxikMfM02PC6jbNtZLCJj6AUcQXJS/jGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.7.0", + "@typescript-eslint/scope-manager": "8.47.0", + "@typescript-eslint/types": "8.47.0", + "@typescript-eslint/typescript-estree": "8.47.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.47.0.tgz", + "integrity": "sha512-SIV3/6eftCy1bNzCQoPmbWsRLujS8t5iDIZ4spZOBHqrM+yfX2ogg8Tt3PDTAVKw3sSCiUgg30uOAvK2r9zGjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.47.0", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "dev": true, + "license": "ISC" + }, + "node_modules/@unrs/resolver-binding-android-arm-eabi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", + "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-android-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", + "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz", + "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", + "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-freebsd-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", + "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", + "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", + "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", + "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", + "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", + "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", + "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", + "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", + "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", + "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", + "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-wasm32-wasi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", + "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^0.2.11" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", + "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", + "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-x64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", + "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@whatwg-node/promise-helpers": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@whatwg-node/promise-helpers/-/promise-helpers-1.3.2.tgz", + "integrity": "sha512-Nst5JdK47VIl9UcGwtv2Rcgyn5lWtZ0/mhRQ4G8NN2isxpq2TO30iqHzmwoJycjWuyUfg3GFXqP/gFHXeV57IA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.6.3" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "license": "MIT", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/abstract-logging": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/abstract-logging/-/abstract-logging-2.0.1.tgz", + "integrity": "sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==", + "license": "MIT" + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/accepts/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/accepts/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true, + "license": "MIT", + "peer": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-phases": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", + "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "acorn": "^8.14.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "license": "MIT", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ansis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/ansis/-/ansis-4.2.0.tgz", + "integrity": "sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/apache-crypt": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/apache-crypt/-/apache-crypt-1.2.6.tgz", + "integrity": "sha512-072WetlM4blL8PREJVeY+WHiUh1R5VNt2HfceGS8aKqttPHcmqE5pkKuXPz/ULmJOFkc8Hw3kfKl6vy7Qka6DA==", + "dev": true, + "license": "MIT", + "dependencies": { + "unix-crypt-td-js": "^1.1.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/apache-md5": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/apache-md5/-/apache-md5-1.1.8.tgz", + "integrity": "sha512-FCAJojipPn0bXjuEpjOOOMN8FZDkxfWWp4JGN9mifU2IhxvKyXZYqpzPHdnTSUpmPDy+tsslB6Z1g+Vg6nVbYA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true, + "license": "MIT" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/array-timsort": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz", + "integrity": "sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true, + "license": "MIT" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/atomic-sleep": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", + "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==", + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/avvio": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/avvio/-/avvio-9.1.0.tgz", + "integrity": "sha512-fYASnYi600CsH/j9EQov7lECAniYiBFiiAtBNuZYLA2leLe9qOvZzqYHFjtIj6gD2VMoMLP14834LFWvr4IfDw==", + "license": "MIT", + "dependencies": { + "@fastify/error": "^4.0.0", + "fastq": "^1.17.1" + } + }, + "node_modules/babel-jest": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-30.2.0.tgz", + "integrity": "sha512-0YiBEOxWqKkSQWL9nNGGEgndoeL0ZpWrbLMNL5u/Kaxrli3Eaxlt3ZtIDktEvXt4L/R9r3ODr2zKwGM/2BjxVw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/transform": "30.2.0", + "@types/babel__core": "^7.20.5", + "babel-plugin-istanbul": "^7.0.1", + "babel-preset-jest": "30.2.0", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "slash": "^3.0.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.11.0 || ^8.0.0-0" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz", + "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", + "dev": true, + "license": "BSD-3-Clause", + "workspaces": [ + "test/babel-8" + ], + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-instrument": "^6.0.2", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.2.0.tgz", + "integrity": "sha512-ftzhzSGMUnOzcCXd6WHdBGMyuwy15Wnn0iyyWGKgBDLxf9/s5ABuraCSpBX2uG0jUg4rqJnxsLc5+oYBqoxVaA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/babel__core": "^7.20.5" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.14.tgz", + "integrity": "sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.27.7", + "@babel/helper-define-polyfill-provider": "^0.6.5", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz", + "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.5", + "core-js-compat": "^3.43.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.5.tgz", + "integrity": "sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.5" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", + "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5" + }, + "peerDependencies": { + "@babel/core": "^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/babel-preset-jest": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-30.2.0.tgz", + "integrity": "sha512-US4Z3NOieAQumwFnYdUWKvUKh8+YSnS/gB3t6YBiz0bskpu7Pine8pPCheNxlPEW4wnUkma2a94YuW2q3guvCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-plugin-jest-hoist": "30.2.0", + "babel-preset-current-node-syntax": "^1.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.11.0 || ^8.0.0-beta.1" + } + }, + "node_modules/backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha512-zj6Z6M7Eq+PBZ7PQxl5NT665MvJdAkzp0f60nAJ+sLaSCBPMwVak5ZegFbgVCzFcCJTKFoMizvM5Ld7+JrRJHA==", + "license": "MIT" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.8.30", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.30.tgz", + "integrity": "sha512-aTUKW4ptQhS64+v2d6IkPzymEzzhw+G0bA1g3uBRV3+ntkH+svttKseW5IOR4Ed6NUVKqnY7qT3dKvzQ7io4AA==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } + }, + "node_modules/basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/basic-auth/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true, + "license": "MIT" + }, + "node_modules/bcrypt": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-6.0.0.tgz", + "integrity": "sha512-cU8v/EGSrnH+HnxV2z0J7/blxH8gq7Xh2JFT6Aroax7UohdmiJJlxApMxtKfuI7z68NvvVcmR78k2LbT6efhRg==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "node-addon-api": "^8.3.0", + "node-gyp-build": "^4.8.4" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/bcryptjs": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz", + "integrity": "sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/body-parser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.1.tgz", + "integrity": "sha512-nfDwkulwiZYQIGwxdy0RUmowMhKcFVcYXUU7m4QlKYim1rUtg83xm2yjZ40QjDuc291AJjjeSc9b++AWHSgSHw==", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.3", + "http-errors": "^2.0.0", + "iconv-lite": "^0.7.0", + "on-finished": "^2.4.1", + "qs": "^6.14.0", + "raw-body": "^3.0.1", + "type-is": "^2.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true, + "license": "ISC" + }, + "node_modules/bootstrap.native": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/bootstrap.native/-/bootstrap.native-5.1.6.tgz", + "integrity": "sha512-bLveDBWhNLoFLsPctVo6yxSRQ1ysmKHBa+1FFMTQuruzTb3y7/InGSoe5lZdOiqZ4L0UOzpdbXMsI+bA5DoRew==", + "dev": true, + "license": "MIT", + "dependencies": { + "@thednp/event-listener": "^2.0.10", + "@thednp/position-observer": "^1.1.0", + "@thednp/shorty": "^2.0.11" + }, + "engines": { + "node": ">=16", + "pnpm": ">=8.6.0" + } + }, + "node_modules/borp": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/borp/-/borp-0.20.2.tgz", + "integrity": "sha512-WJl/vYU6KoD0SyppDWPCdgrrTt2e+hCqTk5443fOUD92cbHLDLIcVRVRh8FIP0uhJjcZQ82Ky0XhB7Kyh32d/w==", + "license": "MIT", + "dependencies": { + "@reporters/github": "^1.5.4", + "c8": "^10.0.0", + "execa": "^9.3.0", + "find-up": "^7.0.0", + "glob": "^10.3.10", + "yaml": "^2.5.1" + }, + "bin": { + "borp": "borp.js" + } + }, + "node_modules/borp/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/borp/node_modules/execa": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-9.6.0.tgz", + "integrity": "sha512-jpWzZ1ZhwUmeWRhS7Qv3mhpOhLfwI+uAX4e5fOcXqwMR7EcJ0pj2kV1CVzHVMX/LphnKWD3LObjZCoJ71lKpHw==", + "license": "MIT", + "dependencies": { + "@sindresorhus/merge-streams": "^4.0.0", + "cross-spawn": "^7.0.6", + "figures": "^6.1.0", + "get-stream": "^9.0.0", + "human-signals": "^8.0.1", + "is-plain-obj": "^4.1.0", + "is-stream": "^4.0.1", + "npm-run-path": "^6.0.0", + "pretty-ms": "^9.2.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^4.0.0", + "yoctocolors": "^2.1.1" + }, + "engines": { + "node": "^18.19.0 || >=20.5.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/borp/node_modules/find-up": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-7.0.0.tgz", + "integrity": "sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==", + "license": "MIT", + "dependencies": { + "locate-path": "^7.2.0", + "path-exists": "^5.0.0", + "unicorn-magic": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/borp/node_modules/get-stream": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", + "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", + "license": "MIT", + "dependencies": { + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/borp/node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/borp/node_modules/human-signals": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.1.tgz", + "integrity": "sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/borp/node_modules/is-stream": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", + "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/borp/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/borp/node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "license": "MIT", + "dependencies": { + "p-locate": "^6.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/borp/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, + "node_modules/borp/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/borp/node_modules/npm-run-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", + "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", + "license": "MIT", + "dependencies": { + "path-key": "^4.0.0", + "unicorn-magic": "^0.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/borp/node_modules/npm-run-path/node_modules/unicorn-magic": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", + "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/borp/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "license": "MIT", + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/borp/node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "license": "MIT", + "dependencies": { + "p-limit": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/borp/node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/borp/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/borp/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/borp/node_modules/strip-final-newline": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", + "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/borp/node_modules/yocto-queue": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", + "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==", + "license": "MIT", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.0.tgz", + "integrity": "sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "baseline-browser-mapping": "^2.8.25", + "caniuse-lite": "^1.0.30001754", + "electron-to-chromium": "^1.5.249", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.1.4" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-json-stable-stringify": "2.x" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "license": "BSD-3-Clause" + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/c12": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/c12/-/c12-3.1.0.tgz", + "integrity": "sha512-uWoS8OU1MEIsOv8p/5a82c3H31LsWVR5qiyXVfBNOzfffjUWtPnhAb4BYI2uG2HfGmZmFjCtui5XNWaps+iFuw==", + "license": "MIT", + "dependencies": { + "chokidar": "^4.0.3", + "confbox": "^0.2.2", + "defu": "^6.1.4", + "dotenv": "^16.6.1", + "exsolve": "^1.0.7", + "giget": "^2.0.0", + "jiti": "^2.4.2", + "ohash": "^2.0.11", + "pathe": "^2.0.3", + "perfect-debounce": "^1.0.0", + "pkg-types": "^2.2.0", + "rc9": "^2.1.2" + }, + "peerDependencies": { + "magicast": "^0.3.5" + }, + "peerDependenciesMeta": { + "magicast": { + "optional": true + } + } + }, + "node_modules/c12/node_modules/dotenv": { + "version": "16.6.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", + "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/c8": { + "version": "10.1.3", + "resolved": "https://registry.npmjs.org/c8/-/c8-10.1.3.tgz", + "integrity": "sha512-LvcyrOAaOnrrlMpW22n690PUvxiq4Uf9WMhQwNJ9vgagkL/ph1+D4uvjvDA5XCbykrc0sx+ay6pVi9YZ1GnhyA==", + "license": "ISC", + "dependencies": { + "@bcoe/v8-coverage": "^1.0.1", + "@istanbuljs/schema": "^0.1.3", + "find-up": "^5.0.0", + "foreground-child": "^3.1.1", + "istanbul-lib-coverage": "^3.2.0", + "istanbul-lib-report": "^3.0.1", + "istanbul-reports": "^3.1.6", + "test-exclude": "^7.0.1", + "v8-to-istanbul": "^9.0.0", + "yargs": "^17.7.2", + "yargs-parser": "^21.1.1" + }, + "bin": { + "c8": "bin/c8.js" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "monocart-coverage-reports": "^2" + }, + "peerDependenciesMeta": { + "monocart-coverage-reports": { + "optional": true + } + } + }, + "node_modules/c8/node_modules/@bcoe/v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-1.0.2.tgz", + "integrity": "sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/c8/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/c8/node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/c8/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/c8/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, + "node_modules/c8/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/c8/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/c8/node_modules/test-exclude": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-7.0.1.tgz", + "integrity": "sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==", + "license": "ISC", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^10.4.1", + "minimatch": "^9.0.4" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha512-0vdNRFXn5q+dtOqjfFtmtlI9N2eVZ7LMyEV2iKC5mEEFvSg/69Ml6b/WU2qF8W1nLRa0wiSrDT3Y5jOHZCwKPQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001756", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001756.tgz", + "integrity": "sha512-4HnCNKbMLkLdhJz3TToeVWHSnfJvPaq6vu/eRP0Ahub/07n484XHhBF5AJoSGHdVrS8tKFauUQz8Bp9P7LVx7A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/chardet": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.1.tgz", + "integrity": "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/cheerio": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.1.2.tgz", + "integrity": "sha512-IkxPpb5rS/d1IiLbHMgfPuS0FgiWTtFIm/Nj+2woXDLTZ7fOT2eqzgYbdMlLweqlHbsZjxEChoVK+7iph7jyQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.2.2", + "encoding-sniffer": "^0.2.1", + "htmlparser2": "^10.0.0", + "parse5": "^7.3.0", + "parse5-htmlparser2-tree-adapter": "^7.1.0", + "parse5-parser-stream": "^7.1.2", + "undici": "^7.12.0", + "whatwg-mimetype": "^4.0.0" + }, + "engines": { + "node": ">=20.18.1" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + } + }, + "node_modules/cheerio-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cheerio/node_modules/undici": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.16.0.tgz", + "integrity": "sha512-QEg3HPMll0o3t2ourKwOeUAZ159Kn9mx5pnzHRQO8+Wixmh88YdZRiIwat0iNzNNXn0yoEtXJqFpyW7eM8BV7g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20.18.1" + } + }, + "node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/ci-info": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", + "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/citty": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/citty/-/citty-0.1.6.tgz", + "integrity": "sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==", + "license": "MIT", + "dependencies": { + "consola": "^3.2.3" + } + }, + "node_modules/cjs-module-lexer": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.1.1.tgz", + "integrity": "sha512-+CmxIZ/L2vNcEfvNtLdU0ZQ6mbq3FZnwAP2PPTiKP+1QOoKwlKlPgb8UKV0Dds7QVaMnHm+FwSft2VB0s/SLjQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-table3": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", + "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/cli-width": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 12" + } + }, + "node_modules/cliui": { + "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==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/code-block-writer": { + "version": "13.0.3", + "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-13.0.3.tgz", + "integrity": "sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==", + "license": "MIT" + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz", + "integrity": "sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==", + "dev": true, + "license": "MIT" + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true, + "license": "ISC", + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/comment-json": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.4.1.tgz", + "integrity": "sha512-r1To31BQD5060QdkC+Iheai7gHwoSZobzunqkf2/kQ6xIAfJyrKNAFUwdKvkK7Qgu7pVTKQEa7ok7Ed3ycAJgg==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-timsort": "^1.0.3", + "core-util-is": "^1.0.3", + "esprima": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/component-emitter": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", + "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", + "dev": true, + "license": "MIT", + "peer": true, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/confbox": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.2.tgz", + "integrity": "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==", + "license": "MIT" + }, + "node_modules/connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/connect/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/connect/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/consola": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz", + "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==", + "license": "MIT", + "engines": { + "node": "^14.18.0 || >=16.10.0" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "license": "MIT" + }, + "node_modules/cookie": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz", + "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/cookiejar": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", + "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", + "dev": true, + "license": "MIT" + }, + "node_modules/core-js-compat": { + "version": "3.47.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.47.0.tgz", + "integrity": "sha512-IGfuznZ/n7Kp9+nypamBhvwdwLsW6KC8IOaURw2doAK5e98AG3acVLdh0woOnEqCfUtS+Vu882JE4k/DAm3ItQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/cross-inspect": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cross-inspect/-/cross-inspect-1.0.1.tgz", + "integrity": "sha512-Pcw1JTvZLSJH83iiGWt6fRcT+BjZlCDRVwYLbUcHzv/CRpB7r0MlSrGbIyQvVSNyGnbt7G4AXuyCiDR3POvZ1A==", + "license": "MIT", + "dependencies": { + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-select": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", + "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-what": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", + "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decache": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/decache/-/decache-4.6.2.tgz", + "integrity": "sha512-2LPqkLeu8XWHU8qNCS3kcF6sCcb5zIzvWaAHYSvPfwhdd7mHuah29NssMzrTYyHN4F5oFy2ko9OBYxegtU0FEw==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsite": "^1.0.0" + } + }, + "node_modules/dedent": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.0.tgz", + "integrity": "sha512-HGFtf8yhuhGhqO07SV79tRp+br4MnbdjeVxotpn1QBl30pcLLCQjX5b2295ll0fv8RKDKsmWYrl05usHM9CewQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/deepmerge-ts": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/deepmerge-ts/-/deepmerge-ts-7.1.5.tgz", + "integrity": "sha512-HOJkrhaYsweh+W+e74Yn7YStZOilkoPb6fycpwNLKzSPtruFs48nYis0zy5yJz1+ktUhHxoRDJ27RQAWLIJVJw==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/defu": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", + "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==", + "license": "MIT" + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/destr": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.5.tgz", + "integrity": "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==", + "license": "MIT" + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/dezalgo": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", + "dev": true, + "license": "ISC", + "dependencies": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dot": { + "version": "2.0.0-beta.1", + "resolved": "https://registry.npmjs.org/dot/-/dot-2.0.0-beta.1.tgz", + "integrity": "sha512-kxM7fSnNQTXOmaeGuBSXM8O3fEsBb7XSDBllkGbRwa0lJSJTxxDE/4eSNGLKZUmlFw0f1vJ5qSV2BljrgQtgIA==", + "dev": true, + "license": "MIT" + }, + "node_modules/dotenv": { + "version": "16.4.7", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", + "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dotenv-expand": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-12.0.1.tgz", + "integrity": "sha512-LaKRbou8gt0RNID/9RoI+J2rvXsBRPMV7p+ElHlPhcSARbCPDYcYG2s1TIzAfWv4YSgyY5taidWzzs31lNV3yQ==", + "license": "BSD-2-Clause", + "dependencies": { + "dotenv": "^16.4.5" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dset": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/dset/-/dset-3.1.4.tgz", + "integrity": "sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true, + "license": "MIT" + }, + "node_modules/duplexify": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.3.tgz", + "integrity": "sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==", + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.4.1", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1", + "stream-shift": "^1.0.2" + } + }, + "node_modules/duplexify/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "license": "MIT" + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true, + "license": "MIT" + }, + "node_modules/effect": { + "version": "3.18.4", + "resolved": "https://registry.npmjs.org/effect/-/effect-3.18.4.tgz", + "integrity": "sha512-b1LXQJLe9D11wfnOKAk3PKxuqYshQ0Heez+y5pnkd3jLj1yx9QhM72zZ9uUrOQyNvrs2GZZd/3maL0ZV18YuDA==", + "license": "MIT", + "dependencies": { + "@standard-schema/spec": "^1.0.0", + "fast-check": "^3.23.1" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.259", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.259.tgz", + "integrity": "sha512-I+oLXgpEJzD6Cwuwt1gYjxsDmu/S/Kd41mmLA3O+/uH2pFRO/DvOjUyGozL8j3KeLV6WyZ7ssPwELMsXCcsJAQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/empathic": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/empathic/-/empathic-2.0.0.tgz", + "integrity": "sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==", + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "license": "MIT", + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/encoding-sniffer": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.1.tgz", + "integrity": "sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==", + "dev": true, + "license": "MIT", + "dependencies": { + "iconv-lite": "^0.6.3", + "whatwg-encoding": "^3.1.1" + }, + "funding": { + "url": "https://github.com/fb55/encoding-sniffer?sponsor=1" + } + }, + "node_modules/encoding-sniffer/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, "engines": { - "node": ">=18.0.0" + "node": ">=0.10.0" } }, - "node_modules/@bcoe/v8-coverage": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-1.0.2.tgz", - "integrity": "sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==", + "node_modules/encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, "engines": { - "node": ">=18" + "node": ">=0.10.0" } }, - "node_modules/@fastify/accept-negotiator": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@fastify/accept-negotiator/-/accept-negotiator-2.0.1.tgz", - "integrity": "sha512-/c/TW2bO/v9JeEgoD/g1G5GxGeCF1Hafdf79WPmUlgYiBXummY0oX3VVq4yFkKKVBKDNlaDUYoab7g38RpPqCQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" + "node_modules/end-of-stream": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.18.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz", + "integrity": "sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/error-ex": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-module-lexer": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "dev": true, + "license": "MIT" + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es6-shim": { + "version": "0.35.8", + "resolved": "https://registry.npmjs.org/es6-shim/-/es6-shim-0.35.8.tgz", + "integrity": "sha512-Twf7I2v4/1tLoIXMT8HlqaBSS5H2wQTs2wx3MNYCI8K1R1/clXyCazrcVCPm/FuO9cyV8+leEaZOWD5C253NDg==", + "dev": true, + "license": "MIT" + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.39.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.1.tgz", + "integrity": "sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.1", + "@eslint/config-helpers": "^0.4.2", + "@eslint/core": "^0.17.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.39.1", + "@eslint/plugin-kit": "^0.4.1", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-config-prettier": { + "version": "10.1.8", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz", + "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", + "dev": true, + "license": "MIT", + "peer": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "funding": { + "url": "https://opencollective.com/eslint-config-prettier" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.4.tgz", + "integrity": "sha512-swNtI95SToIz05YINMA6Ox5R057IMAmWZ26GqPxusAp1TZzj+IdY9tXNWWD3vkF/wEqydCONcwjTFpxybBqZsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.11.7" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-plugin-prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" + "eslint-config-prettier": { + "optional": true } - ], + } + }, + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/event-stream": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-4.0.1.tgz", + "integrity": "sha512-qACXdu/9VHPBzcyhdOWR5/IahhGMf0roTeZJfzz077GwylcDd90yOHLouhmv7GJ5XzPi6ekaQWd8AvPP2nOvpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "duplexer": "^0.1.1", + "from": "^0.1.7", + "map-stream": "0.0.7", + "pause-stream": "^0.0.11", + "split": "^1.0.1", + "stream-combiner": "^0.2.2", + "through": "^2.3.8" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/eventemitter3": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", + "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==", "license": "MIT" }, - "node_modules/@fastify/ajv-compiler": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@fastify/ajv-compiler/-/ajv-compiler-4.0.5.tgz", - "integrity": "sha512-KoWKW+MhvfTRWL4qrhUwAAZoaChluo0m0vbiJlGMt2GXvL4LVPQEjt8kSpHI3IBq5Rez8fg+XeH3cneztq+C7A==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, "license": "MIT", "dependencies": { - "ajv": "^8.12.0", - "ajv-formats": "^3.0.1", - "fast-uri": "^3.0.0" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/@fastify/auth": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@fastify/auth/-/auth-5.0.3.tgz", - "integrity": "sha512-vuaSrwco+oyTC5UiIyW+zp9BEwkXardGQtAB//ZJBk2cxEHvCXD5dVZzf83UbQchQJQR+SQbt3MYQrIACFkEQg==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], + "node_modules/execa/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/exit-x": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/exit-x/-/exit-x-0.2.2.tgz", + "integrity": "sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ==", + "dev": true, "license": "MIT", - "dependencies": { - "fastify-plugin": "^5.0.0", - "reusify": "^1.0.4" + "engines": { + "node": ">= 0.8.0" } }, - "node_modules/@fastify/busboy": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", - "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", + "node_modules/expect": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-30.2.0.tgz", + "integrity": "sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw==", + "dev": true, "license": "MIT", + "dependencies": { + "@jest/expect-utils": "30.2.0", + "@jest/get-type": "30.1.0", + "jest-matcher-utils": "30.2.0", + "jest-message-util": "30.2.0", + "jest-mock": "30.2.0", + "jest-util": "30.2.0" + }, "engines": { - "node": ">=14" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@fastify/cookie": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/@fastify/cookie/-/cookie-11.0.2.tgz", - "integrity": "sha512-GWdwdGlgJxyvNv+QcKiGNevSspMQXncjMZ1J8IvuDQk0jvkzgWWZFNC2En3s+nHndZBGV8IbLwOI/sxCZw/mzA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], + "node_modules/exsolve": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.8.tgz", + "integrity": "sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==", + "license": "MIT" + }, + "node_modules/fancy-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-2.0.0.tgz", + "integrity": "sha512-9CzxZbACXMUXW13tS0tI8XsGGmxWzO2DmYrGuBJOJ8k8q2K7hwfJA5qHjuPPe8wtsco33YR9wc+Rlr5wYFvhSA==", + "dev": true, "license": "MIT", "dependencies": { - "cookie": "^1.0.0", - "fastify-plugin": "^5.0.0" + "color-support": "^1.1.3" + }, + "engines": { + "node": ">=10.13.0" } }, - "node_modules/@fastify/cors": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/@fastify/cors/-/cors-11.1.0.tgz", - "integrity": "sha512-sUw8ed8wP2SouWZTIbA7V2OQtMNpLj2W6qJOYhNdcmINTu6gsxVYXjQiM9mdi8UUDlcoDDJ/W2syPo1WB2QjYA==", + "node_modules/fast-check": { + "version": "3.23.2", + "resolved": "https://registry.npmjs.org/fast-check/-/fast-check-3.23.2.tgz", + "integrity": "sha512-h5+1OzzfCC3Ef7VbtKdcv7zsstUQwUDlYpUTvjeUsJAssPgLn7QzbboPtL5ro04Mq0rPOsMzl7q5hIbRs2wD1A==", "funding": [ { - "type": "github", - "url": "https://github.com/sponsors/fastify" + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" }, { "type": "opencollective", - "url": "https://opencollective.com/fastify" + "url": "https://opencollective.com/fast-check" } ], "license": "MIT", "dependencies": { - "fastify-plugin": "^5.0.0", - "toad-cache": "^3.7.0" + "pure-rand": "^6.1.0" + }, + "engines": { + "node": ">=8.0.0" } }, - "node_modules/@fastify/error": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@fastify/error/-/error-4.2.0.tgz", - "integrity": "sha512-RSo3sVDXfHskiBZKBPRgnQTtIqpi/7zhJOEmAxCiBcM7d0uwdGdxLlsCaLzGs8v8NnxIRlfG0N51p5yFaOentQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], + "node_modules/fast-decode-uri-component": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fast-decode-uri-component/-/fast-decode-uri-component-1.0.1.tgz", + "integrity": "sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==", "license": "MIT" }, - "node_modules/@fastify/fast-json-stringify-compiler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@fastify/fast-json-stringify-compiler/-/fast-json-stringify-compiler-5.0.3.tgz", - "integrity": "sha512-uik7yYHkLr6fxd8hJSZ8c+xF4WafPK+XzneQDPU+D10r5X19GW8lJcom2YijX2+qtFF1ENJlHXKFM9ouXNJYgQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", "license": "MIT", "dependencies": { - "fast-json-stringify": "^6.0.0" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" } }, - "node_modules/@fastify/forwarded": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@fastify/forwarded/-/forwarded-3.0.1.tgz", - "integrity": "sha512-JqDochHFqXs3C3Ml3gOY58zM7OqO9ENqPo0UqAjAjH8L01fRZqwX9iLeX34//kiJubF7r2ZQHtBRU36vONbLlw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, "license": "MIT" }, - "node_modules/@fastify/jwt": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/@fastify/jwt/-/jwt-10.0.0.tgz", - "integrity": "sha512-2Qka3NiyNNcsfejMUvyzot1T4UYIzzcbkFGDdVyrl344fRZ/WkD6VFXOoXhxe2Pzf3LpJNkoSxUM4Ru4DVgkYA==", + "node_modules/fast-json-stringify": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-6.1.1.tgz", + "integrity": "sha512-DbgptncYEXZqDUOEl4krff4mUiVrTZZVI7BBrQR/T3BqMj/eM1flTC1Uk2uUoLcWCxjT95xKulV/Lc6hhOZsBQ==", "funding": [ { "type": "github", @@ -1149,56 +9568,62 @@ ], "license": "MIT", "dependencies": { - "@fastify/error": "^4.2.0", - "@lukeed/ms": "^2.0.2", - "fast-jwt": "^6.0.2", - "fastify-plugin": "^5.0.1", - "steed": "^1.1.3" + "@fastify/merge-json-schemas": "^0.2.0", + "ajv": "^8.12.0", + "ajv-formats": "^3.0.1", + "fast-uri": "^3.0.0", + "json-schema-ref-resolver": "^3.0.0", + "rfdc": "^1.2.0" } }, - "node_modules/@fastify/merge-json-schemas": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@fastify/merge-json-schemas/-/merge-json-schemas-0.2.1.tgz", - "integrity": "sha512-OA3KGBCy6KtIvLf8DINC5880o5iBlDX4SxzLQS8HorJAbqluzLRn80UXU0bxZn7UOFhFgpRJDasfwn9nG4FG4A==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], + "node_modules/fast-json-stringify/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "license": "MIT", "dependencies": { - "dequal": "^2.0.3" + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@fastify/proxy-addr": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@fastify/proxy-addr/-/proxy-addr-5.1.0.tgz", - "integrity": "sha512-INS+6gh91cLUjB+PVHfu1UqcB76Sqtpyp7bnL+FYojhjygvOPA9ctiD/JDKsyD9Xgu4hUhCSJBPig/w7duNajw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], + "node_modules/fast-json-stringify/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-querystring": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fast-querystring/-/fast-querystring-1.1.2.tgz", + "integrity": "sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==", "license": "MIT", "dependencies": { - "@fastify/forwarded": "^3.0.0", - "ipaddr.js": "^2.1.0" + "fast-decode-uri-component": "^1.0.1" } }, - "node_modules/@fastify/send": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@fastify/send/-/send-4.1.0.tgz", - "integrity": "sha512-TMYeQLCBSy2TOFmV95hQWkiTYgC/SEx7vMdV+wnZVX4tt8VBLKzmH8vV9OzJehV0+XBfg+WxPMt5wp+JBUKsVw==", + "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==", + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", "funding": [ { "type": "github", @@ -1209,19 +9634,12 @@ "url": "https://opencollective.com/fastify" } ], - "license": "MIT", - "dependencies": { - "@lukeed/ms": "^2.0.2", - "escape-html": "~1.0.3", - "fast-decode-uri-component": "^1.0.1", - "http-errors": "^2.0.0", - "mime": "^3" - } + "license": "BSD-3-Clause" }, - "node_modules/@fastify/static": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/@fastify/static/-/static-8.3.0.tgz", - "integrity": "sha512-yKxviR5PH1OKNnisIzZKmgZSus0r2OZb8qCSbqmw34aolT4g3UlzYfeBRym+HJ1J471CR8e2ldNub4PubD1coA==", + "node_modules/fastify": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/fastify/-/fastify-5.6.2.tgz", + "integrity": "sha512-dPugdGnsvYkBlENLhCgX8yhyGCsCPrpA8lFWbTNU428l+YOnLgYHR69hzV8HWPC79n536EqzqQtvhtdaCE0dKg==", "funding": [ { "type": "github", @@ -1233,19 +9651,29 @@ } ], "license": "MIT", + "peer": true, "dependencies": { - "@fastify/accept-negotiator": "^2.0.0", - "@fastify/send": "^4.0.0", - "content-disposition": "^0.5.4", - "fastify-plugin": "^5.0.0", - "fastq": "^1.17.1", - "glob": "^11.0.0" + "@fastify/ajv-compiler": "^4.0.0", + "@fastify/error": "^4.0.0", + "@fastify/fast-json-stringify-compiler": "^5.0.0", + "@fastify/proxy-addr": "^5.0.0", + "abstract-logging": "^2.0.1", + "avvio": "^9.0.0", + "fast-json-stringify": "^6.0.0", + "find-my-way": "^9.0.0", + "light-my-request": "^6.0.0", + "pino": "^10.1.0", + "process-warning": "^5.0.0", + "rfdc": "^1.3.1", + "secure-json-parse": "^4.0.0", + "semver": "^7.6.0", + "toad-cache": "^3.7.0" } }, - "node_modules/@fastify/websocket": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/@fastify/websocket/-/websocket-11.2.0.tgz", - "integrity": "sha512-3HrDPbAG1CzUCqnslgJxppvzaAZffieOVbLp1DAy1huCSynUWPifSvfdEDUR8HlJLp3sp1A36uOM2tJogADS8w==", + "node_modules/fastify-plugin": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/fastify-plugin/-/fastify-plugin-5.1.0.tgz", + "integrity": "sha512-FAIDA8eovSt5qcDgcBvDuX/v0Cjz0ohGhENZ/wpc3y+oZCY2afZ9Baqql3g/lC+OHRnciQol4ww7tuthOb9idw==", "funding": [ { "type": "github", @@ -1256,1439 +9684,2022 @@ "url": "https://opencollective.com/fastify" } ], + "license": "MIT" + }, + "node_modules/fastparallel": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/fastparallel/-/fastparallel-2.4.1.tgz", + "integrity": "sha512-qUmhxPgNHmvRjZKBFUNI0oZuuH9OlSIOXmJ98lhKPxMZZ7zS/Fi0wRHOihDSz0R1YiIOjxzOY4bq65YTcdBi2Q==", + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4", + "xtend": "^4.0.2" + } + }, + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/fetch": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/fetch/-/fetch-0.3.6.tgz", + "integrity": "sha512-MFBYJw1kc89ctsJZIthwHYB3Vsoc0Zsi29VxV9Huz/NlrcSwVb6WQ4F6k11icOHnM/HLeCjy2MKNoA9xWe/cvw==", + "engines": [ + "node >=0.5.10" + ], "dependencies": { - "duplexify": "^4.1.3", - "fastify-plugin": "^5.0.0", - "ws": "^8.16.0" + "encoding": "*" } }, - "node_modules/@graphql-tools/graphql-file-loader": { - "version": "8.1.7", - "resolved": "https://registry.npmjs.org/@graphql-tools/graphql-file-loader/-/graphql-file-loader-8.1.7.tgz", - "integrity": "sha512-IE7tDdxVIt8OCPn3bdjz+NwQmUAZbLB33p6yNP26Az1RRBuxrfKb4vU+1yh9sF8lQUUyLC0+V/gz32xA3dsLWg==", + "node_modules/fflate": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz", + "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==", + "license": "MIT" + }, + "node_modules/figures": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", + "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", "license": "MIT", "dependencies": { - "@graphql-tools/import": "7.1.7", - "@graphql-tools/utils": "^10.10.3", - "globby": "^11.0.3", - "tslib": "^2.4.0", - "unixify": "^1.0.0" + "is-unicode-supported": "^2.0.0" }, "engines": { - "node": ">=16.0.0" + "node": ">=18" }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/figures/node_modules/is-unicode-supported": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", + "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@graphql-tools/import": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/@graphql-tools/import/-/import-7.1.7.tgz", - "integrity": "sha512-AKhJrNugn2TlPylmQ4pqbs2w82j0Bwi54Tlpc0TQoO1F942kjxoXqNGpxgXbFgdk+1Ds1pHmpWzQgbmYwlnAgw==", + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, "license": "MIT", "dependencies": { - "@graphql-tools/utils": "^10.10.3", - "@theguild/federation-composition": "^0.20.2", - "resolve-from": "5.0.0", - "tslib": "^2.4.0" + "flat-cache": "^4.0.0" }, "engines": { "node": ">=16.0.0" + } + }, + "node_modules/file-type": { + "version": "21.1.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-21.1.0.tgz", + "integrity": "sha512-boU4EHmP3JXkwDo4uhyBhTt5pPstxB6eEXKJBu2yu2l7aAMMm7QQYQEzssJmKReZYrFdFOJS8koVo6bXIBGDqA==", + "license": "MIT", + "dependencies": { + "@tokenizer/inflate": "^0.3.1", + "strtok3": "^10.3.1", + "token-types": "^6.0.0", + "uint8array-extras": "^1.4.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sindresorhus/file-type?sponsor=1" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/finalhandler/node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dev": true, + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/find-my-way": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-9.3.0.tgz", + "integrity": "sha512-eRoFWQw+Yv2tuYlK2pjFS2jGXSxSppAs3hSQjfxVKxM5amECzIgYYc1FEI8ZmhSh/Ig+FrKEz43NLRKJjYCZVg==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-querystring": "^1.0.0", + "safe-regex2": "^5.0.0" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fork-ts-checker-webpack-plugin": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-9.1.0.tgz", + "integrity": "sha512-mpafl89VFPJmhnJ1ssH+8wmM2b50n+Rew5x42NeI2U78aRWgtkEtGmctp7iT16UjquJTjorEmIfESj3DxdW84Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.16.7", + "chalk": "^4.1.2", + "chokidar": "^4.0.1", + "cosmiconfig": "^8.2.0", + "deepmerge": "^4.2.2", + "fs-extra": "^10.0.0", + "memfs": "^3.4.1", + "minimatch": "^3.0.4", + "node-abort-controller": "^3.0.1", + "schema-utils": "^3.1.1", + "semver": "^7.3.5", + "tapable": "^2.2.1" + }, + "engines": { + "node": ">=14.21.3" }, "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + "typescript": ">3.6.0", + "webpack": "^5.11.0" } }, - "node_modules/@graphql-tools/load": { - "version": "8.1.6", - "resolved": "https://registry.npmjs.org/@graphql-tools/load/-/load-8.1.6.tgz", - "integrity": "sha512-/bUYqGdB2Y6BflW42IjmauBDzxjec3LQmVAuImVGeiOqw1Rca/DDP7KRQe3vEv8yf/xMVj/PkIl+YRjoo12YxA==", + "node_modules/form-data": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", + "dev": true, "license": "MIT", "dependencies": { - "@graphql-tools/schema": "^10.0.29", - "@graphql-tools/utils": "^10.10.3", - "p-limit": "3.1.0", - "tslib": "^2.4.0" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/form-data/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/form-data/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" }, "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + "node": ">= 0.6" } }, - "node_modules/@graphql-tools/load/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "node_modules/formidable": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.4.tgz", + "integrity": "sha512-YikH+7CUTOtP44ZTnUhR7Ic2UASBPOqmaRkRKxRbywPTe5VxF7RRCck4af9wutiZ/QKM5nME9Bie2fFaPz5Gug==", + "dev": true, "license": "MIT", "dependencies": { - "yocto-queue": "^0.1.0" + "@paralleldrive/cuid2": "^2.2.2", + "dezalgo": "^1.0.4", + "once": "^1.4.0" }, "engines": { - "node": ">=10" + "node": ">=14.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://ko-fi.com/tunnckoCore/commissions" } }, - "node_modules/@graphql-tools/load/node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "node_modules/fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "dev": true, "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.8" } }, - "node_modules/@graphql-tools/merge": { - "version": "9.1.5", - "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-9.1.5.tgz", - "integrity": "sha512-eVcir6nCcOC/Wzv7ZAng3xec3dj6FehE8+h9TvgvUyrDEKVMdFfrO6etRFZ2hucWVcY8S6drx7zQx04N4lPM8Q==", + "node_modules/from": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", + "integrity": "sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==", + "dev": true, + "license": "MIT" + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, "license": "MIT", "dependencies": { - "@graphql-tools/utils": "^10.10.3", - "tslib": "^2.4.0" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + "node": ">=12" } }, - "node_modules/@graphql-tools/schema": { - "version": "10.0.29", - "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-10.0.29.tgz", - "integrity": "sha512-+Htiupnq6U/AWOEAJerIOGT1pAf4u43Q3n2JmFpqFfYJchz6sKWZ7L9Lpe/NusaaUQty/IOF+eQlNFypEaWxhg==", + "node_modules/fs-monkey": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.1.0.tgz", + "integrity": "sha512-QMUezzXWII9EV5aTFXW1UBVUO77wYPpjqIF8/AviUCThNeSYZykpoTixUeaNNBwmCev0AMDWMAni+f8Hxb1IFw==", + "dev": true, + "license": "Unlicense" + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, "license": "MIT", - "dependencies": { - "@graphql-tools/merge": "^9.1.5", - "@graphql-tools/utils": "^10.10.3", - "tslib": "^2.4.0" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/@graphql-tools/utils": { - "version": "10.10.3", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-10.10.3.tgz", - "integrity": "sha512-2EdYiefeLLxsoeZTukSNZJ0E/Z5NnWBUGK2VJa0DQj1scDhVd93HeT1eW9TszJOYmIh3eWAKLv58ri/1XUmdsQ==", + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, "license": "MIT", - "dependencies": { - "@graphql-typed-document-node/core": "^3.1.1", - "@whatwg-node/promise-helpers": "^1.0.0", - "cross-inspect": "1.0.1", - "tslib": "^2.4.0" - }, - "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@graphql-typed-document-node/core": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz", - "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", + "node_modules/generate-function": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", + "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", "license": "MIT", - "peerDependencies": { - "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + "dependencies": { + "is-property": "^1.0.2" } }, - "node_modules/@isaacs/balanced-match": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", - "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, "license": "MIT", "engines": { - "node": "20 || >=22" + "node": ">=6.9.0" } }, - "node_modules/@isaacs/brace-expansion": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", - "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-east-asian-width": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.4.0.tgz", + "integrity": "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==", + "dev": true, "license": "MIT", - "dependencies": { - "@isaacs/balanced-match": "^4.0.1" - }, "engines": { - "node": "20 || >=22" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "license": "ISC", + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dev": true, + "license": "MIT", "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" }, "engines": { - "node": ">=12" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=8.0.0" } }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, "engines": { - "node": ">=6.0.0" + "node": ">= 0.4" } }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "license": "MIT" + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.31", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", - "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "node_modules/giget": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/giget/-/giget-2.0.0.tgz", + "integrity": "sha512-L5bGsVkxJbJgdnwyuheIunkGatUF/zssUoxxjACCseZYAVbaqdh9Tsmmlkl8vYan09H7sbvKt4pS8GqKLBrEzA==", "license": "MIT", "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" + "citty": "^0.1.6", + "consola": "^3.4.0", + "defu": "^6.1.4", + "node-fetch-native": "^1.6.6", + "nypm": "^0.6.0", + "pathe": "^2.0.3" + }, + "bin": { + "giget": "dist/cli.mjs" } }, - "node_modules/@lukeed/ms": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@lukeed/ms/-/ms-2.0.2.tgz", - "integrity": "sha512-9I2Zn6+NJLfaGoz9jN3lpwDgAYvfGeNYdbAIjJOqzs4Tpc+VU3Jqq4IofSUBKajiDS8k9fZIg18/z13mpk1bsA==", - "license": "MIT", + "node_modules/glob": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-12.0.0.tgz", + "integrity": "sha512-5Qcll1z7IKgHr5g485ePDdHcNQY0k2dtv/bjYy0iuyGxQw2qSOiiXUXJ+AYQpg3HNoUMHqAruX478Jeev7UULw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "foreground-child": "^3.3.1", + "jackspeak": "^4.1.1", + "minimatch": "^10.1.1", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, "engines": { - "node": ">=8" + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "license": "MIT", + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" + "is-glob": "^4.0.3" }, "engines": { - "node": ">= 8" + "node": ">=10.13.0" } }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/glob/node_modules/minimatch": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/globals": { + "version": "16.5.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.5.0.tgz", + "integrity": "sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==", + "dev": true, "license": "MIT", "engines": { - "node": ">= 8" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true, "license": "MIT", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, "engines": { - "node": ">= 8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@pinojs/redact": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@pinojs/redact/-/redact-0.4.0.tgz", - "integrity": "sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg==", + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, "license": "MIT" }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "node_modules/graphql": { + "version": "16.12.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.12.0.tgz", + "integrity": "sha512-DKKrynuQRne0PNpEbzuEdHlYOMksHSUI8Zc9Unei5gTsMNA2/vMpoMz/yKba50pejK56qj98qM0SjYxAKi13gQ==", "license": "MIT", - "optional": true, + "peer": true, "engines": { - "node": ">=14" + "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" } }, - "node_modules/@prisma/client": { - "version": "6.19.0", - "resolved": "https://registry.npmjs.org/@prisma/client/-/client-6.19.0.tgz", - "integrity": "sha512-QXFT+N/bva/QI2qoXmjBzL7D6aliPffIwP+81AdTGq0FXDoLxLkWivGMawG8iM5B9BKfxLIXxfWWAF6wbuJU6g==", - "hasInstallScript": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18" + "node_modules/graphql-jit": { + "version": "0.8.7", + "resolved": "https://registry.npmjs.org/graphql-jit/-/graphql-jit-0.8.7.tgz", + "integrity": "sha512-KGzCrsxQPfEiXOUIJCexWKiWF6ycjO89kAO6SdO8OWRGwYXbG0hsLuTnbFfMq0gj7d7/ib/Gh7jtst7FHZEEjw==", + "license": "MIT", + "dependencies": { + "@graphql-typed-document-node/core": "^3.2.0", + "fast-json-stringify": "^5.16.1", + "generate-function": "^2.3.1", + "lodash.memoize": "^4.1.2", + "lodash.merge": "4.6.2", + "lodash.mergewith": "4.6.2" }, "peerDependencies": { - "prisma": "*", - "typescript": ">=5.1.0" - }, - "peerDependenciesMeta": { - "prisma": { - "optional": true - }, - "typescript": { - "optional": true - } + "graphql": ">=15" } }, - "node_modules/@prisma/config": { - "version": "6.19.0", - "resolved": "https://registry.npmjs.org/@prisma/config/-/config-6.19.0.tgz", - "integrity": "sha512-zwCayme+NzI/WfrvFEtkFhhOaZb/hI+X8TTjzjJ252VbPxAl2hWHK5NMczmnG9sXck2lsXrxIZuK524E25UNmg==", - "devOptional": true, - "license": "Apache-2.0", + "node_modules/graphql-jit/node_modules/@fastify/merge-json-schemas": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@fastify/merge-json-schemas/-/merge-json-schemas-0.1.1.tgz", + "integrity": "sha512-fERDVz7topgNjtXsJTTW1JKLy0rhuLRcquYqNR9rF7OcVpCa2OVW49ZPDIhaRRCaUuvVxI+N416xUoF76HNSXA==", + "license": "MIT", "dependencies": { - "c12": "3.1.0", - "deepmerge-ts": "7.1.5", - "effect": "3.18.4", - "empathic": "2.0.0" + "fast-deep-equal": "^3.1.3" } }, - "node_modules/@prisma/debug": { - "version": "6.19.0", - "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-6.19.0.tgz", - "integrity": "sha512-8hAdGG7JmxrzFcTzXZajlQCidX0XNkMJkpqtfbLV54wC6LSSX6Vni25W/G+nAANwLnZ2TmwkfIuWetA7jJxJFA==", - "devOptional": true, - "license": "Apache-2.0" - }, - "node_modules/@prisma/engines": { - "version": "6.19.0", - "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-6.19.0.tgz", - "integrity": "sha512-pMRJ+1S6NVdXoB8QJAPIGpKZevFjxhKt0paCkRDTZiczKb7F4yTgRP8M4JdVkpQwmaD4EoJf6qA+p61godDokw==", - "devOptional": true, - "hasInstallScript": true, - "license": "Apache-2.0", + "node_modules/graphql-jit/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "license": "MIT", "dependencies": { - "@prisma/debug": "6.19.0", - "@prisma/engines-version": "6.19.0-26.2ba551f319ab1df4bc874a89965d8b3641056773", - "@prisma/fetch-engine": "6.19.0", - "@prisma/get-platform": "6.19.0" + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@prisma/engines-version": { - "version": "6.19.0-26.2ba551f319ab1df4bc874a89965d8b3641056773", - "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-6.19.0-26.2ba551f319ab1df4bc874a89965d8b3641056773.tgz", - "integrity": "sha512-gV7uOBQfAFlWDvPJdQxMT1aSRur3a0EkU/6cfbAC5isV67tKDWUrPauyaHNpB+wN1ebM4A9jn/f4gH+3iHSYSQ==", - "devOptional": true, - "license": "Apache-2.0" - }, - "node_modules/@prisma/fetch-engine": { - "version": "6.19.0", - "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-6.19.0.tgz", - "integrity": "sha512-OOx2Lda0DGrZ1rodADT06ZGqHzr7HY7LNMaFE2Vp8dp146uJld58sRuasdX0OiwpHgl8SqDTUKHNUyzEq7pDdQ==", - "devOptional": true, - "license": "Apache-2.0", + "node_modules/graphql-jit/node_modules/fast-json-stringify": { + "version": "5.16.1", + "resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-5.16.1.tgz", + "integrity": "sha512-KAdnLvy1yu/XrRtP+LJnxbBGrhN+xXu+gt3EUvZhYGKCr3lFHq/7UFJHHFgmJKoqlh6B40bZLEv7w46B0mqn1g==", + "license": "MIT", "dependencies": { - "@prisma/debug": "6.19.0", - "@prisma/engines-version": "6.19.0-26.2ba551f319ab1df4bc874a89965d8b3641056773", - "@prisma/get-platform": "6.19.0" + "@fastify/merge-json-schemas": "^0.1.0", + "ajv": "^8.10.0", + "ajv-formats": "^3.0.1", + "fast-deep-equal": "^3.1.3", + "fast-uri": "^2.1.0", + "json-schema-ref-resolver": "^1.0.1", + "rfdc": "^1.2.0" } }, - "node_modules/@prisma/get-platform": { - "version": "6.19.0", - "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-6.19.0.tgz", - "integrity": "sha512-ym85WDO2yDhC3fIXHWYpG3kVMBA49cL1XD2GCsCF8xbwoy2OkDQY44gEbAt2X46IQ4Apq9H6g0Ex1iFfPqEkHA==", - "devOptional": true, - "license": "Apache-2.0", - "dependencies": { - "@prisma/debug": "6.19.0" - } + "node_modules/graphql-jit/node_modules/fast-json-stringify/node_modules/fast-uri": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-2.4.0.tgz", + "integrity": "sha512-ypuAmmMKInk5q7XcepxlnUWDLWv4GFtaJqAzWKqn62IpQ3pejtr5dTVbt3vwqVaMKmkNR55sTT+CqUKIaT21BA==", + "license": "MIT" }, - "node_modules/@reporters/github": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@reporters/github/-/github-1.11.0.tgz", - "integrity": "sha512-sP/fSOgIoMYXZFWVy2Hw6vWUG3akUBiykqnFjx2jWI/kdqj55VZNXAQ27MYuiNffWlITW6mMBcv8+i47O7C77w==", + "node_modules/graphql-jit/node_modules/json-schema-ref-resolver": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-schema-ref-resolver/-/json-schema-ref-resolver-1.0.1.tgz", + "integrity": "sha512-EJAj1pgHc1hxF6vo2Z3s69fMjO1INq6eGHXZ8Z6wCQeldCuwxGK9Sxf4/cScGn3FZubCVUehfWtcDM/PLteCQw==", "license": "MIT", "dependencies": { - "@actions/core": "^1.10.0", - "stack-utils": "^2.0.6" + "fast-deep-equal": "^3.1.3" } }, - "node_modules/@sec-ant/readable-stream": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", - "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==", + "node_modules/graphql-jit/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "license": "MIT" }, - "node_modules/@sindresorhus/merge-streams": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", - "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", + "node_modules/graphql-tag": { + "version": "2.12.6", + "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz", + "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@smithy/abort-controller": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.5.tgz", - "integrity": "sha512-j7HwVkBw68YW8UmFRcjZOmssE77Rvk0GWAIN1oFBhsaovQmZWYCIcGa9/pwRB0ExI8Sk9MWNALTjftjHZea7VA==", - "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" + "tslib": "^2.1.0" }, "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/chunked-blob-reader": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-5.2.0.tgz", - "integrity": "sha512-WmU0TnhEAJLWvfSeMxBNe5xtbselEO8+4wG0NtZeL8oR21WgH1xiO37El+/Y+H/Ie4SCwBy3MxYWmOYaGgZueA==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" + "node": ">=10" }, - "engines": { - "node": ">=18.0.0" + "peerDependencies": { + "graphql": "^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" } }, - "node_modules/@smithy/chunked-blob-reader-native": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-4.2.1.tgz", - "integrity": "sha512-lX9Ay+6LisTfpLid2zZtIhSEjHMZoAR5hHCR4H7tBz/Zkfr5ea8RcQ7Tk4mi0P76p4cN+Btz16Ffno7YHpKXnQ==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/util-base64": "^4.3.0", - "tslib": "^2.6.2" - }, + "node_modules/graphql-ws": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/graphql-ws/-/graphql-ws-6.0.6.tgz", + "integrity": "sha512-zgfER9s+ftkGKUZgc0xbx8T7/HMO4AV5/YuYiFc+AtgcO5T0v8AxYYNQ+ltzuzDZgNkYJaFspm5MMYLjQzrkmw==", + "license": "MIT", "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/config-resolver": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.4.3.tgz", - "integrity": "sha512-ezHLe1tKLUxDJo2LHtDuEDyWXolw8WGOR92qb4bQdWq/zKenO5BvctZGrVJBK08zjezSk7bmbKFOXIVyChvDLw==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/node-config-provider": "^4.3.5", - "@smithy/types": "^4.9.0", - "@smithy/util-config-provider": "^4.2.0", - "@smithy/util-endpoints": "^3.2.5", - "@smithy/util-middleware": "^4.2.5", - "tslib": "^2.6.2" + "node": ">=20" }, - "engines": { - "node": ">=18.0.0" + "peerDependencies": { + "@fastify/websocket": "^10 || ^11", + "crossws": "~0.3", + "graphql": "^15.10.1 || ^16", + "uWebSockets.js": "^20", + "ws": "^8" + }, + "peerDependenciesMeta": { + "@fastify/websocket": { + "optional": true + }, + "crossws": { + "optional": true + }, + "uWebSockets.js": { + "optional": true + }, + "ws": { + "optional": true + } } }, - "node_modules/@smithy/core": { - "version": "3.18.3", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.18.3.tgz", - "integrity": "sha512-qqpNskkbHOSfrbFbjhYj5o8VMXO26fvN1K/+HbCzUNlTuxgNcPRouUDNm+7D6CkN244WG7aK533Ne18UtJEgAA==", - "license": "Apache-2.0", + "node_modules/handlebars": { + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "dev": true, + "license": "MIT", "dependencies": { - "@smithy/middleware-serde": "^4.2.5", - "@smithy/protocol-http": "^5.3.5", - "@smithy/types": "^4.9.0", - "@smithy/util-base64": "^4.3.0", - "@smithy/util-body-length-browser": "^4.2.0", - "@smithy/util-middleware": "^4.2.5", - "@smithy/util-stream": "^4.5.6", - "@smithy/util-utf8": "^4.2.0", - "@smithy/uuid": "^1.1.0", - "tslib": "^2.6.2" + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" }, "engines": { - "node": ">=18.0.0" + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" } }, - "node_modules/@smithy/credential-provider-imds": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.5.tgz", - "integrity": "sha512-BZwotjoZWn9+36nimwm/OLIcVe+KYRwzMjfhd4QT7QxPm9WY0HiOV8t/Wlh+HVUif0SBVV7ksq8//hPaBC/okQ==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/node-config-provider": "^4.3.5", - "@smithy/property-provider": "^4.2.5", - "@smithy/types": "^4.9.0", - "@smithy/url-parser": "^4.2.5", - "tslib": "^2.6.2" - }, + "node_modules/handlebars/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", "engines": { - "node": ">=18.0.0" + "node": ">=0.10.0" } }, - "node_modules/@smithy/eventstream-codec": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.2.5.tgz", - "integrity": "sha512-Ogt4Zi9hEbIP17oQMd68qYOHUzmH47UkK7q7Gl55iIm9oKt27MUGrC5JfpMroeHjdkOliOA4Qt3NQ1xMq/nrlA==", - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/crc32": "5.2.0", - "@smithy/types": "^4.9.0", - "@smithy/util-hex-encoding": "^4.2.0", - "tslib": "^2.6.2" - }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", "engines": { - "node": ">=18.0.0" + "node": ">=8" } }, - "node_modules/@smithy/eventstream-serde-browser": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.2.5.tgz", - "integrity": "sha512-HohfmCQZjppVnKX2PnXlf47CW3j92Ki6T/vkAT2DhBR47e89pen3s4fIa7otGTtrVxmj7q+IhH0RnC5kpR8wtw==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/eventstream-serde-universal": "^4.2.5", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=18.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@smithy/eventstream-serde-config-resolver": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.3.5.tgz", - "integrity": "sha512-ibjQjM7wEXtECiT6my1xfiMH9IcEczMOS6xiCQXoUIYSj5b1CpBbJ3VYbdwDy8Vcg5JHN7eFpOCGk8nyZAltNQ==", - "license": "Apache-2.0", + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "license": "MIT", "dependencies": { - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" + "has-symbols": "^1.0.3" }, "engines": { - "node": ">=18.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@smithy/eventstream-serde-node": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.2.5.tgz", - "integrity": "sha512-+elOuaYx6F2H6x1/5BQP5ugv12nfJl66GhxON8+dWVUEDJ9jah/A0tayVdkLRP0AeSac0inYkDz5qBFKfVp2Gg==", - "license": "Apache-2.0", + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "license": "MIT", "dependencies": { - "@smithy/eventstream-serde-universal": "^4.2.5", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" + "function-bind": "^1.1.2" }, "engines": { - "node": ">=18.0.0" + "node": ">= 0.4" } }, - "node_modules/@smithy/eventstream-serde-universal": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.2.5.tgz", - "integrity": "sha512-G9WSqbST45bmIFaeNuP/EnC19Rhp54CcVdX9PDL1zyEB514WsDVXhlyihKlGXnRycmHNmVv88Bvvt4EYxWef/Q==", - "license": "Apache-2.0", + "node_modules/html-entities": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.6.0.tgz", + "integrity": "sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ], + "license": "MIT" + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "license": "MIT" + }, + "node_modules/htmlparser2": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.0.0.tgz", + "integrity": "sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", "dependencies": { - "@smithy/eventstream-codec": "^4.2.5", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.2.1", + "entities": "^6.0.0" } }, - "node_modules/@smithy/fetch-http-handler": { - "version": "5.3.6", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.6.tgz", - "integrity": "sha512-3+RG3EA6BBJ/ofZUeTFJA7mHfSYrZtQIrDP9dI8Lf7X6Jbos2jptuLrAAteDiFVrmbEmLSuRG/bUKzfAXk7dhg==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/protocol-http": "^5.3.5", - "@smithy/querystring-builder": "^4.2.5", - "@smithy/types": "^4.9.0", - "@smithy/util-base64": "^4.3.0", - "tslib": "^2.6.2" - }, + "node_modules/htmlparser2/node_modules/entities": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "dev": true, + "license": "BSD-2-Clause", "engines": { - "node": ">=18.0.0" + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/@smithy/hash-blob-browser": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-4.2.6.tgz", - "integrity": "sha512-8P//tA8DVPk+3XURk2rwcKgYwFvwGwmJH/wJqQiSKwXZtf/LiZK+hbUZmPj/9KzM+OVSwe4o85KTp5x9DUZTjw==", - "license": "Apache-2.0", + "node_modules/http-auth": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/http-auth/-/http-auth-4.1.9.tgz", + "integrity": "sha512-kvPYxNGc9EKGTXvOMnTBQw2RZfuiSihK/mLw/a4pbtRueTE45S55Lw/3k5CktIf7Ak0veMKEIteDj4YkNmCzmQ==", + "dev": true, + "license": "MIT", "dependencies": { - "@smithy/chunked-blob-reader": "^5.2.0", - "@smithy/chunked-blob-reader-native": "^4.2.1", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" + "apache-crypt": "^1.1.2", + "apache-md5": "^1.0.6", + "bcryptjs": "^2.4.3", + "uuid": "^8.3.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=8" } }, - "node_modules/@smithy/hash-node": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.5.tgz", - "integrity": "sha512-DpYX914YOfA3UDT9CN1BM787PcHfWRBB43fFGCYrZFUH0Jv+5t8yYl+Pd5PW4+QzoGEDvn5d5QIO4j2HyYZQSA==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.9.0", - "@smithy/util-buffer-from": "^4.2.0", - "@smithy/util-utf8": "^4.2.0", - "tslib": "^2.6.2" - }, + "node_modules/http-auth-connect": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/http-auth-connect/-/http-auth-connect-1.0.6.tgz", + "integrity": "sha512-yaO0QSCPqGCjPrl3qEEHjJP+lwZ6gMpXLuCBE06eWwcXomkI5TARtu0kxf9teFuBj6iaV3Ybr15jaWUvbzNzHw==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=18.0.0" + "node": ">=8" } }, - "node_modules/@smithy/hash-stream-node": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-4.2.5.tgz", - "integrity": "sha512-6+do24VnEyvWcGdHXomlpd0m8bfZePpUKBy7m311n+JuRwug8J4dCanJdTymx//8mi0nlkflZBvJe+dEO/O12Q==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.9.0", - "@smithy/util-utf8": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" + "node_modules/http-auth/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==", + "dev": true, + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" } }, - "node_modules/@smithy/invalid-dependency": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.5.tgz", - "integrity": "sha512-2L2erASEro1WC5nV+plwIMxrTXpvpfzl4e+Nre6vBVRR2HKeGGcvpJyyL3/PpiSg+cJG2KpTmZmq934Olb6e5A==", - "license": "Apache-2.0", + "node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "license": "MIT", "dependencies": { - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" }, "engines": { - "node": ">=18.0.0" + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/@smithy/is-array-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.2.0.tgz", - "integrity": "sha512-DZZZBvC7sjcYh4MazJSGiWMI2L7E0oCiRHREDzIxi/M2LY79/21iXt6aPLHge82wi5LsuRF5A06Ds3+0mlh6CQ==", + "node_modules/http-parser-js": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.10.tgz", + "integrity": "sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==", + "dev": true, + "license": "MIT" + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, "engines": { - "node": ">=18.0.0" + "node": ">=10.17.0" } }, - "node_modules/@smithy/md5-js": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-4.2.5.tgz", - "integrity": "sha512-Bt6jpSTMWfjCtC0s79gZ/WZ1w90grfmopVOWqkI2ovhjpD5Q2XRXuecIPB9689L2+cCySMbaXDhBPU56FKNDNg==", - "license": "Apache-2.0", + "node_modules/i18next": { + "version": "25.5.3", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-25.5.3.tgz", + "integrity": "sha512-joFqorDeQ6YpIXni944upwnuHBf5IoPMuqAchGVeQLdWC2JOjxgM9V8UGLhNIIH/Q8QleRxIi0BSRQehSrDLcg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://locize.com" + }, + { + "type": "individual", + "url": "https://locize.com/i18next.html" + }, + { + "type": "individual", + "url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project" + } + ], + "license": "MIT", "dependencies": { - "@smithy/types": "^4.9.0", - "@smithy/util-utf8": "^4.2.0", - "tslib": "^2.6.2" + "@babel/runtime": "^7.27.6" }, - "engines": { - "node": ">=18.0.0" + "peerDependencies": { + "typescript": "^5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@smithy/middleware-content-length": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.2.5.tgz", - "integrity": "sha512-Y/RabVa5vbl5FuHYV2vUCwvh/dqzrEY/K2yWPSqvhFUwIY0atLqO4TienjBXakoy4zrKAMCZwg+YEqmH7jaN7A==", - "license": "Apache-2.0", + "node_modules/iconv-lite": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.0.tgz", + "integrity": "sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==", + "dev": true, + "license": "MIT", "dependencies": { - "@smithy/protocol-http": "^5.3.5", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { - "node": ">=18.0.0" + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/@smithy/middleware-endpoint": { - "version": "4.3.10", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.3.10.tgz", - "integrity": "sha512-SoAag3QnWBFoXjwa1jenEThkzJYClidZUyqsLKwWZ8kOlZBwehrLBp4ygVDjNEM2a2AamCQ2FBA/HuzKJ/LiTA==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.18.3", - "@smithy/middleware-serde": "^4.2.5", - "@smithy/node-config-provider": "^4.3.5", - "@smithy/shared-ini-file-loader": "^4.4.0", - "@smithy/types": "^4.9.0", - "@smithy/url-parser": "^4.2.5", - "@smithy/util-middleware": "^4.2.5", - "tslib": "^2.6.2" - }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=18.0.0" + "node": ">= 4" } }, - "node_modules/@smithy/middleware-retry": { - "version": "4.4.10", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.4.10.tgz", - "integrity": "sha512-6fOwX34gXxcqKa3bsG0mR0arc2Cw4ddOS6tp3RgUD2yoTrDTbQ2aVADnDjhUuxaiDZN2iilxndgGDhnpL/XvJA==", - "license": "Apache-2.0", + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", "dependencies": { - "@smithy/node-config-provider": "^4.3.5", - "@smithy/protocol-http": "^5.3.5", - "@smithy/service-error-classification": "^4.2.5", - "@smithy/smithy-client": "^4.9.6", - "@smithy/types": "^4.9.0", - "@smithy/util-middleware": "^4.2.5", - "@smithy/util-retry": "^4.2.5", - "@smithy/uuid": "^1.1.0", - "tslib": "^2.6.2" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" }, "engines": { - "node": ">=18.0.0" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@smithy/middleware-serde": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.5.tgz", - "integrity": "sha512-La1ldWTJTZ5NqQyPqnCNeH9B+zjFhrNoQIL1jTh4zuqXRlmXhxYHhMtI1/92OlnoAtp6JoN7kzuwhWoXrBwPqg==", - "license": "Apache-2.0", + "node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "dev": true, + "license": "MIT", "dependencies": { - "@smithy/protocol-http": "^5.3.5", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" }, "engines": { - "node": ">=18.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@smithy/middleware-stack": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.5.tgz", - "integrity": "sha512-bYrutc+neOyWxtZdbB2USbQttZN0mXaOyYLIsaTbJhFsfpXyGWUxJpEuO1rJ8IIJm2qH4+xJT0mxUSsEDTYwdQ==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=18.0.0" + "node": ">=0.8.19" } }, - "node_modules/@smithy/node-config-provider": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.5.tgz", - "integrity": "sha512-UTurh1C4qkVCtqggI36DGbLB2Kv8UlcFdMXDcWMbqVY2uRg0XmT9Pb4Vj6oSQ34eizO1fvR0RnFV4Axw4IrrAg==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/property-provider": "^4.2.5", - "@smithy/shared-ini-file-loader": "^4.4.0", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "license": "MIT", "engines": { - "node": ">=18.0.0" + "node": ">=8" } }, - "node_modules/@smithy/node-http-handler": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.5.tgz", - "integrity": "sha512-CMnzM9R2WqlqXQGtIlsHMEZfXKJVTIrqCNoSd/QpAyp+Dw0a1Vps13l6ma1fH8g7zSPNsA59B/kWgeylFuA/lw==", - "license": "Apache-2.0", + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "license": "ISC", "dependencies": { - "@smithy/abort-controller": "^4.2.5", - "@smithy/protocol-http": "^5.3.5", - "@smithy/querystring-builder": "^4.2.5", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ipaddr.js": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", + "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", + "license": "MIT", "engines": { - "node": ">=18.0.0" + "node": ">= 10" } }, - "node_modules/@smithy/property-provider": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.5.tgz", - "integrity": "sha512-8iLN1XSE1rl4MuxvQ+5OSk/Zb5El7NJZ1td6Tn+8dQQHIjp59Lwl6bd0+nzw6SKm2wSSriH2v/I9LPzUic7EOg==", - "license": "Apache-2.0", + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "license": "MIT", "dependencies": { - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" + "binary-extensions": "^2.0.0" }, "engines": { - "node": ">=18.0.0" + "node": ">=8" } }, - "node_modules/@smithy/protocol-http": { - "version": "5.3.5", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.5.tgz", - "integrity": "sha512-RlaL+sA0LNMp03bf7XPbFmT5gN+w3besXSWMkA8rcmxLSVfiEXElQi4O2IWwPfxzcHkxqrwBFMbngB8yx/RvaQ==", - "license": "Apache-2.0", + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, + "license": "MIT", "dependencies": { - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" + "hasown": "^2.0.2" }, "engines": { - "node": ">=18.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@smithy/querystring-builder": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.5.tgz", - "integrity": "sha512-y98otMI1saoajeik2kLfGyRp11e5U/iJYH/wLCh3aTV/XutbGT9nziKGkgCaMD1ghK7p6htHMm6b6scl9JRUWg==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.9.0", - "@smithy/util-uri-escape": "^4.2.0", - "tslib": "^2.6.2" + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "license": "MIT", + "bin": { + "is-docker": "cli.js" }, "engines": { - "node": ">=18.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@smithy/querystring-parser": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.5.tgz", - "integrity": "sha512-031WCTdPYgiQRYNPXznHXof2YM0GwL6SeaSyTH/P72M1Vz73TvCNH2Nq8Iu2IEPq9QP2yx0/nrw5YmSeAi/AjQ==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", "engines": { - "node": ">=18.0.0" + "node": ">=0.10.0" } }, - "node_modules/@smithy/service-error-classification": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.2.5.tgz", - "integrity": "sha512-8fEvK+WPE3wUAcDvqDQG1Vk3ANLR8Px979te96m84CbKAjBVf25rPYSzb4xU4hlTyho7VhOGnh5i62D/JVF0JQ==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.9.0" - }, + "node_modules/is-fullwidth-code-point": { + "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==", + "license": "MIT", "engines": { - "node": ">=18.0.0" + "node": ">=8" } }, - "node_modules/@smithy/shared-ini-file-loader": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.0.tgz", - "integrity": "sha512-5WmZ5+kJgJDjwXXIzr1vDTG+RhF9wzSODQBfkrQ2VVkYALKGvZX1lgVSxEkgicSAFnFhPj5rudJV0zoinqS0bA==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=18.0.0" + "node": ">=6" } }, - "node_modules/@smithy/signature-v4": { - "version": "5.3.5", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.5.tgz", - "integrity": "sha512-xSUfMu1FT7ccfSXkoLl/QRQBi2rOvi3tiBZU2Tdy3I6cgvZ6SEi9QNey+lqps/sJRnogIS+lq+B1gxxbra2a/w==", - "license": "Apache-2.0", + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "license": "MIT", "dependencies": { - "@smithy/is-array-buffer": "^4.2.0", - "@smithy/protocol-http": "^5.3.5", - "@smithy/types": "^4.9.0", - "@smithy/util-hex-encoding": "^4.2.0", - "@smithy/util-middleware": "^4.2.5", - "@smithy/util-uri-escape": "^4.2.0", - "@smithy/util-utf8": "^4.2.0", - "tslib": "^2.6.2" + "is-extglob": "^2.1.1" }, "engines": { - "node": ">=18.0.0" + "node": ">=0.10.0" } }, - "node_modules/@smithy/smithy-client": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.9.6.tgz", - "integrity": "sha512-hGz42hggqReicRRZUvrKDQiAmoJnx1Q+XfAJnYAGu544gOfxQCAC3hGGD7+Px2gEUUxB/kKtQV7LOtBRNyxteQ==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.18.3", - "@smithy/middleware-endpoint": "^4.3.10", - "@smithy/middleware-stack": "^4.2.5", - "@smithy/protocol-http": "^5.3.5", - "@smithy/types": "^4.9.0", - "@smithy/util-stream": "^4.5.6", - "tslib": "^2.6.2" - }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=18.0.0" + "node": ">=8" } }, - "node_modules/@smithy/types": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", - "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", "engines": { - "node": ">=18.0.0" + "node": ">=0.12.0" } }, - "node_modules/@smithy/url-parser": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.5.tgz", - "integrity": "sha512-VaxMGsilqFnK1CeBX+LXnSuaMx4sTL/6znSZh2829txWieazdVxr54HmiyTsIbpOTLcf5nYpq9lpzmwRdxj6rQ==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/querystring-parser": "^4.2.5", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "license": "MIT", "engines": { - "node": ">=18.0.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@smithy/util-base64": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.3.0.tgz", - "integrity": "sha512-GkXZ59JfyxsIwNTWFnjmFEI8kZpRNIBfxKjv09+nkAWPt/4aGaEWMM04m4sxgNVWkbt2MdSvE3KF/PfX4nFedQ==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/util-buffer-from": "^4.2.0", - "@smithy/util-utf8": "^4.2.0", - "tslib": "^2.6.2" + "node_modules/is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==", + "license": "MIT" + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=18.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@smithy/util-body-length-browser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.2.0.tgz", - "integrity": "sha512-Fkoh/I76szMKJnBXWPdFkQJl2r9SjPt3cMzLdOB6eJ4Pnpas8hVoWPYemX/peO0yrrvldgCUVJqOAjUrOLjbxg==", - "license": "Apache-2.0", + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "license": "MIT", "dependencies": { - "tslib": "^2.6.2" + "is-docker": "^2.0.0" }, "engines": { - "node": ">=18.0.0" + "node": ">=8" } }, - "node_modules/@smithy/util-body-length-node": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.2.1.tgz", - "integrity": "sha512-h53dz/pISVrVrfxV1iqXlx5pRg3V2YWFcSQyPyXZRrZoZj4R4DeWRDo1a7dd3CPTcFi3kE+98tuNyD2axyZReA==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "license": "BSD-3-Clause", "engines": { - "node": ">=18.0.0" + "node": ">=8" } }, - "node_modules/@smithy/util-buffer-from": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.2.0.tgz", - "integrity": "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew==", - "license": "Apache-2.0", + "node_modules/istanbul-lib-instrument": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "@smithy/is-array-buffer": "^4.2.0", - "tslib": "^2.6.2" + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" }, "engines": { - "node": ">=18.0.0" + "node": ">=10" } }, - "node_modules/@smithy/util-config-provider": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.2.0.tgz", - "integrity": "sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q==", - "license": "Apache-2.0", + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "license": "BSD-3-Clause", "dependencies": { - "tslib": "^2.6.2" + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=18.0.0" + "node": ">=10" } }, - "node_modules/@smithy/util-defaults-mode-browser": { - "version": "4.3.9", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.9.tgz", - "integrity": "sha512-Bh5bU40BgdkXE2BcaNazhNtEXi1TC0S+1d84vUwv5srWfvbeRNUKFzwKQgC6p6MXPvEgw+9+HdX3pOwT6ut5aw==", - "license": "Apache-2.0", + "node_modules/istanbul-lib-source-maps": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz", + "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "@smithy/property-provider": "^4.2.5", - "@smithy/smithy-client": "^4.9.6", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" + "@jridgewell/trace-mapping": "^0.3.23", + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0" }, "engines": { - "node": ">=18.0.0" + "node": ">=10" } }, - "node_modules/@smithy/util-defaults-mode-node": { - "version": "4.2.12", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.12.tgz", - "integrity": "sha512-EHZwe1E9Q7umImIyCKQg/Cm+S+7rjXxCRvfGmKifqwYvn7M8M4ZcowwUOQzvuuxUUmdzCkqL0Eq0z1m74Pq6pw==", - "license": "Apache-2.0", + "node_modules/istanbul-reports": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", + "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", + "license": "BSD-3-Clause", "dependencies": { - "@smithy/config-resolver": "^4.4.3", - "@smithy/credential-provider-imds": "^4.2.5", - "@smithy/node-config-provider": "^4.3.5", - "@smithy/property-provider": "^4.2.5", - "@smithy/smithy-client": "^4.9.6", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" }, "engines": { - "node": ">=18.0.0" + "node": ">=8" } }, - "node_modules/@smithy/util-endpoints": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.2.5.tgz", - "integrity": "sha512-3O63AAWu2cSNQZp+ayl9I3NapW1p1rR5mlVHcF6hAB1dPZUQFfRPYtplWX/3xrzWthPGj5FqB12taJJCfH6s8A==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/node-config-provider": "^4.3.5", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, + "node_modules/iterall": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.3.0.tgz", + "integrity": "sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg==", + "license": "MIT" + }, + "node_modules/iterare": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz", + "integrity": "sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==", + "license": "ISC", "engines": { - "node": ">=18.0.0" + "node": ">=6" } }, - "node_modules/@smithy/util-hex-encoding": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.0.tgz", - "integrity": "sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw==", - "license": "Apache-2.0", + "node_modules/jackspeak": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.1.tgz", + "integrity": "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==", + "license": "BlueOak-1.0.0", "dependencies": { - "tslib": "^2.6.2" + "@isaacs/cliui": "^8.0.2" }, "engines": { - "node": ">=18.0.0" + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@smithy/util-middleware": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.5.tgz", - "integrity": "sha512-6Y3+rvBF7+PZOc40ybeZMcGln6xJGVeY60E7jy9Mv5iKpMJpHgRE6dKy9ScsVxvfAYuEX4Q9a65DQX90KaQ3bA==", - "license": "Apache-2.0", + "node_modules/jest": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-30.2.0.tgz", + "integrity": "sha512-F26gjC0yWN8uAA5m5Ss8ZQf5nDHWGlN/xWZIh8S5SRbsEKBovwZhxGd6LJlbZYxBgCYOtreSUyb8hpXyGC5O4A==", + "dev": true, + "license": "MIT", + "peer": true, "dependencies": { - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" + "@jest/core": "30.2.0", + "@jest/types": "30.2.0", + "import-local": "^3.2.0", + "jest-cli": "30.2.0" + }, + "bin": { + "jest": "bin/jest.js" }, "engines": { - "node": ">=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/@smithy/util-retry": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.2.5.tgz", - "integrity": "sha512-GBj3+EZBbN4NAqJ/7pAhsXdfzdlznOh8PydUijy6FpNIMnHPSMO2/rP4HKu+UFeikJxShERk528oy7GT79YiJg==", - "license": "Apache-2.0", + "node_modules/jest-changed-files": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-30.2.0.tgz", + "integrity": "sha512-L8lR1ChrRnSdfeOvTrwZMlnWV8G/LLjQ0nG9MBclwWZidA2N5FviRki0Bvh20WRMOX31/JYvzdqTJrk5oBdydQ==", + "dev": true, + "license": "MIT", "dependencies": { - "@smithy/service-error-classification": "^4.2.5", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" + "execa": "^5.1.1", + "jest-util": "30.2.0", + "p-limit": "^3.1.0" }, "engines": { - "node": ">=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@smithy/util-stream": { - "version": "4.5.6", - "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.5.6.tgz", - "integrity": "sha512-qWw/UM59TiaFrPevefOZ8CNBKbYEP6wBAIlLqxn3VAIo9rgnTNc4ASbVrqDmhuwI87usnjhdQrxodzAGFFzbRQ==", - "license": "Apache-2.0", + "node_modules/jest-circus": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-30.2.0.tgz", + "integrity": "sha512-Fh0096NC3ZkFx05EP2OXCxJAREVxj1BcW/i6EWqqymcgYKWjyyDpral3fMxVcHXg6oZM7iULer9wGRFvfpl+Tg==", + "dev": true, + "license": "MIT", "dependencies": { - "@smithy/fetch-http-handler": "^5.3.6", - "@smithy/node-http-handler": "^4.4.5", - "@smithy/types": "^4.9.0", - "@smithy/util-base64": "^4.3.0", - "@smithy/util-buffer-from": "^4.2.0", - "@smithy/util-hex-encoding": "^4.2.0", - "@smithy/util-utf8": "^4.2.0", - "tslib": "^2.6.2" + "@jest/environment": "30.2.0", + "@jest/expect": "30.2.0", + "@jest/test-result": "30.2.0", + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "co": "^4.6.0", + "dedent": "^1.6.0", + "is-generator-fn": "^2.1.0", + "jest-each": "30.2.0", + "jest-matcher-utils": "30.2.0", + "jest-message-util": "30.2.0", + "jest-runtime": "30.2.0", + "jest-snapshot": "30.2.0", + "jest-util": "30.2.0", + "p-limit": "^3.1.0", + "pretty-format": "30.2.0", + "pure-rand": "^7.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" }, "engines": { - "node": ">=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@smithy/util-uri-escape": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.2.0.tgz", - "integrity": "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA==", - "license": "Apache-2.0", + "node_modules/jest-circus/node_modules/pure-rand": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-7.0.1.tgz", + "integrity": "sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ], + "license": "MIT" + }, + "node_modules/jest-cli": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-30.2.0.tgz", + "integrity": "sha512-Os9ukIvADX/A9sLt6Zse3+nmHtHaE6hqOsjQtNiugFTbKRHYIYtZXNGNK9NChseXy7djFPjndX1tL0sCTlfpAA==", + "dev": true, + "license": "MIT", "dependencies": { - "tslib": "^2.6.2" + "@jest/core": "30.2.0", + "@jest/test-result": "30.2.0", + "@jest/types": "30.2.0", + "chalk": "^4.1.2", + "exit-x": "^0.2.2", + "import-local": "^3.2.0", + "jest-config": "30.2.0", + "jest-util": "30.2.0", + "jest-validate": "30.2.0", + "yargs": "^17.7.2" + }, + "bin": { + "jest": "bin/jest.js" }, "engines": { - "node": ">=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/@smithy/util-utf8": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.0.tgz", - "integrity": "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw==", - "license": "Apache-2.0", + "node_modules/jest-config": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-30.2.0.tgz", + "integrity": "sha512-g4WkyzFQVWHtu6uqGmQR4CQxz/CH3yDSlhzXMWzNjDx843gYjReZnMRanjRCq5XZFuQrGDxgUaiYWE8BRfVckA==", + "dev": true, + "license": "MIT", "dependencies": { - "@smithy/util-buffer-from": "^4.2.0", - "tslib": "^2.6.2" + "@babel/core": "^7.27.4", + "@jest/get-type": "30.1.0", + "@jest/pattern": "30.0.1", + "@jest/test-sequencer": "30.2.0", + "@jest/types": "30.2.0", + "babel-jest": "30.2.0", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "deepmerge": "^4.3.1", + "glob": "^10.3.10", + "graceful-fs": "^4.2.11", + "jest-circus": "30.2.0", + "jest-docblock": "30.2.0", + "jest-environment-node": "30.2.0", + "jest-regex-util": "30.0.1", + "jest-resolve": "30.2.0", + "jest-runner": "30.2.0", + "jest-util": "30.2.0", + "jest-validate": "30.2.0", + "micromatch": "^4.0.8", + "parse-json": "^5.2.0", + "pretty-format": "30.2.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" }, - "engines": { - "node": ">=18.0.0" + "peerDependencies": { + "@types/node": "*", + "esbuild-register": ">=3.4.0", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "esbuild-register": { + "optional": true + }, + "ts-node": { + "optional": true + } } }, - "node_modules/@smithy/util-waiter": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.2.5.tgz", - "integrity": "sha512-Dbun99A3InifQdIrsXZ+QLcC0PGBPAdrl4cj1mTgJvyc9N2zf7QSxg8TBkzsCmGJdE3TLbO9ycwpY0EkWahQ/g==", - "license": "Apache-2.0", + "node_modules/jest-config/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", "dependencies": { - "@smithy/abort-controller": "^4.2.5", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" + "balanced-match": "^1.0.0" } }, - "node_modules/@smithy/uuid": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@smithy/uuid/-/uuid-1.1.0.tgz", - "integrity": "sha512-4aUIteuyxtBUhVdiQqcDhKFitwfd9hqoSDYY2KRXiWtgoWJ9Bmise+KfEPDiVHWeJepvF8xJO9/9+WDIciMFFw==", - "license": "Apache-2.0", + "node_modules/jest-config/node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "dev": true, + "license": "ISC", "dependencies": { - "tslib": "^2.6.2" + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, - "engines": { - "node": ">=18.0.0" + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@standard-schema/spec": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz", - "integrity": "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/@theguild/federation-composition": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@theguild/federation-composition/-/federation-composition-0.20.2.tgz", - "integrity": "sha512-QI4iSdrc4JvCWnMb1QbiHnEpdD33KGdiU66qfWOcM8ENebRGHkGjXDnUrVJ8F9g1dmCRMTNfn2NFGqTcDpeYXw==", - "license": "MIT", + "node_modules/jest-config/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "constant-case": "^3.0.4", - "debug": "4.4.3", - "json5": "^2.2.3", - "lodash.sortby": "^4.7.0" + "@isaacs/cliui": "^8.0.2" }, - "engines": { - "node": ">=18" + "funding": { + "url": "https://github.com/sponsors/isaacs" }, - "peerDependencies": { - "graphql": "^16.0.0" + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", - "license": "MIT" + "node_modules/jest-config/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" }, - "node_modules/@types/minio": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@types/minio/-/minio-7.1.0.tgz", - "integrity": "sha512-yUaFE62KI7lhQLH7lQpT1bzDmTOS+8bD7wGN8ySk8teLv9afbL7RIT3tSbeijq6sqeyS9kGpj9Kmp4gHNQJWCw==", - "license": "MIT", + "node_modules/jest-config/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", "dependencies": { - "@types/node": "*" + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@types/node": { - "version": "24.10.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.1.tgz", - "integrity": "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==", - "license": "MIT", + "node_modules/jest-config/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "undici-types": "~7.16.0" + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@whatwg-node/promise-helpers": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@whatwg-node/promise-helpers/-/promise-helpers-1.3.2.tgz", - "integrity": "sha512-Nst5JdK47VIl9UcGwtv2Rcgyn5lWtZ0/mhRQ4G8NN2isxpq2TO30iqHzmwoJycjWuyUfg3GFXqP/gFHXeV57IA==", + "node_modules/jest-diff": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.2.0.tgz", + "integrity": "sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==", + "dev": true, "license": "MIT", "dependencies": { - "tslib": "^2.6.3" + "@jest/diff-sequences": "30.0.1", + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "pretty-format": "30.2.0" }, "engines": { - "node": ">=16.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@zxing/text-encoding": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@zxing/text-encoding/-/text-encoding-0.9.0.tgz", - "integrity": "sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==", - "license": "(Unlicense OR Apache-2.0)", - "optional": true - }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "node_modules/jest-docblock": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-30.2.0.tgz", + "integrity": "sha512-tR/FFgZKS1CXluOQzZvNH3+0z9jXr3ldGSD8bhyuxvlVUwbeLOGynkunvlTMxchC5urrKndYiwCFC0DLVjpOCA==", + "dev": true, "license": "MIT", "dependencies": { - "event-target-shim": "^5.0.0" + "detect-newline": "^3.1.0" }, "engines": { - "node": ">=6.5" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/abstract-logging": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/abstract-logging/-/abstract-logging-2.0.1.tgz", - "integrity": "sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==", - "license": "MIT" - }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "node_modules/jest-each": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-30.2.0.tgz", + "integrity": "sha512-lpWlJlM7bCUf1mfmuqTA8+j2lNURW9eNafOy99knBM01i5CQeY5UH1vZjgT9071nDJac1M4XsbyI44oNOdhlDQ==", + "dev": true, "license": "MIT", "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" + "@jest/get-type": "30.1.0", + "@jest/types": "30.2.0", + "chalk": "^4.1.2", + "jest-util": "30.2.0", + "pretty-format": "30.2.0" }, "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "node_modules/jest-environment-node": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.2.0.tgz", + "integrity": "sha512-ElU8v92QJ9UrYsKrxDIKCxu6PfNj4Hdcktcn0JX12zqNdqWHB0N+hwOnnBBXvjLd2vApZtuLUGs1QSY+MsXoNA==", + "dev": true, "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" + "@jest/environment": "30.2.0", + "@jest/fake-timers": "30.2.0", + "@jest/types": "30.2.0", + "@types/node": "*", + "jest-mock": "30.2.0", + "jest-util": "30.2.0", + "jest-validate": "30.2.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/ajv-formats": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", - "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", + "node_modules/jest-haste-map": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz", + "integrity": "sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==", + "dev": true, "license": "MIT", "dependencies": { - "ajv": "^8.0.0" + "@jest/types": "30.2.0", + "@types/node": "*", + "anymatch": "^3.1.3", + "fb-watchman": "^2.0.2", + "graceful-fs": "^4.2.11", + "jest-regex-util": "30.0.1", + "jest-util": "30.2.0", + "jest-worker": "30.2.0", + "micromatch": "^4.0.8", + "walker": "^1.0.8" }, - "peerDependencies": { - "ajv": "^8.0.0" + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } + "optionalDependencies": { + "fsevents": "^2.3.3" } }, - "node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "node_modules/jest-leak-detector": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.2.0.tgz", + "integrity": "sha512-M6jKAjyzjHG0SrQgwhgZGy9hFazcudwCNovY/9HPIicmNSBuockPSedAP9vlPK6ONFJ1zfyH/M2/YYJxOz5cdQ==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=12" + "dependencies": { + "@jest/get-type": "30.1.0", + "pretty-format": "30.2.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/ansi-styles": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", - "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "node_modules/jest-matcher-utils": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.2.0.tgz", + "integrity": "sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=12" + "dependencies": { + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "jest-diff": "30.2.0", + "pretty-format": "30.2.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "node_modules/jest-message-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz", + "integrity": "sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==", + "dev": true, "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@jest/types": "30.2.0", + "@types/stack-utils": "^2.0.3", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "micromatch": "^4.0.8", + "pretty-format": "30.2.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" + }, "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "node_modules/jest-mock": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", + "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==", + "dev": true, "license": "MIT", "dependencies": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" + "@jest/types": "30.2.0", + "@types/node": "*", + "jest-util": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/async": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", - "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", - "license": "MIT" + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } }, - "node_modules/atomic-sleep": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", - "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==", + "node_modules/jest-regex-util": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", + "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", + "dev": true, "license": "MIT", "engines": { - "node": ">=8.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "node_modules/jest-resolve": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.2.0.tgz", + "integrity": "sha512-TCrHSxPlx3tBY3hWNtRQKbtgLhsXa1WmbJEqBlTBrGafd5fiQFByy2GNCEoGR+Tns8d15GaL9cxEzKOO3GEb2A==", + "dev": true, "license": "MIT", "dependencies": { - "possible-typed-array-names": "^1.0.0" + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.2.0", + "jest-pnp-resolver": "^1.2.3", + "jest-util": "30.2.0", + "jest-validate": "30.2.0", + "slash": "^3.0.0", + "unrs-resolver": "^1.7.11" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/avvio": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/avvio/-/avvio-9.1.0.tgz", - "integrity": "sha512-fYASnYi600CsH/j9EQov7lECAniYiBFiiAtBNuZYLA2leLe9qOvZzqYHFjtIj6gD2VMoMLP14834LFWvr4IfDw==", + "node_modules/jest-resolve-dependencies": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-30.2.0.tgz", + "integrity": "sha512-xTOIGug/0RmIe3mmCqCT95yO0vj6JURrn1TKWlNbhiAefJRWINNPgwVkrVgt/YaerPzY3iItufd80v3lOrFJ2w==", + "dev": true, "license": "MIT", "dependencies": { - "@fastify/error": "^4.0.0", - "fastq": "^1.17.1" + "jest-regex-util": "30.0.1", + "jest-snapshot": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "license": "MIT" - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/bcrypt": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-6.0.0.tgz", - "integrity": "sha512-cU8v/EGSrnH+HnxV2z0J7/blxH8gq7Xh2JFT6Aroax7UohdmiJJlxApMxtKfuI7z68NvvVcmR78k2LbT6efhRg==", - "hasInstallScript": true, + "node_modules/jest-runner": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-30.2.0.tgz", + "integrity": "sha512-PqvZ2B2XEyPEbclp+gV6KO/F1FIFSbIwewRgmROCMBo/aZ6J1w8Qypoj2pEOcg3G2HzLlaP6VUtvwCI8dM3oqQ==", + "dev": true, "license": "MIT", "dependencies": { - "node-addon-api": "^8.3.0", - "node-gyp-build": "^4.8.4" + "@jest/console": "30.2.0", + "@jest/environment": "30.2.0", + "@jest/test-result": "30.2.0", + "@jest/transform": "30.2.0", + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "emittery": "^0.13.1", + "exit-x": "^0.2.2", + "graceful-fs": "^4.2.11", + "jest-docblock": "30.2.0", + "jest-environment-node": "30.2.0", + "jest-haste-map": "30.2.0", + "jest-leak-detector": "30.2.0", + "jest-message-util": "30.2.0", + "jest-resolve": "30.2.0", + "jest-runtime": "30.2.0", + "jest-util": "30.2.0", + "jest-watcher": "30.2.0", + "jest-worker": "30.2.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" }, "engines": { - "node": ">= 18" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/block-stream2": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/block-stream2/-/block-stream2-2.1.0.tgz", - "integrity": "sha512-suhjmLI57Ewpmq00qaygS8UgEq2ly2PCItenIyhMqVjo4t4pGzqMvfgJuX8iWTeSDdfSSqS6j38fL4ToNL7Pfg==", + "node_modules/jest-runner/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-runner/node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, "license": "MIT", "dependencies": { - "readable-stream": "^3.4.0" + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, - "node_modules/block-stream2/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "node_modules/jest-runtime": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-30.2.0.tgz", + "integrity": "sha512-p1+GVX/PJqTucvsmERPMgCPvQJpFt4hFbM+VN3n8TMo47decMUcJbt+rgzwrEme0MQUA/R+1de2axftTHkKckg==", + "dev": true, "license": "MIT", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "@jest/environment": "30.2.0", + "@jest/fake-timers": "30.2.0", + "@jest/globals": "30.2.0", + "@jest/source-map": "30.0.1", + "@jest/test-result": "30.2.0", + "@jest/transform": "30.2.0", + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "cjs-module-lexer": "^2.1.0", + "collect-v8-coverage": "^1.0.2", + "glob": "^10.3.10", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.2.0", + "jest-message-util": "30.2.0", + "jest-mock": "30.2.0", + "jest-regex-util": "30.0.1", + "jest-resolve": "30.2.0", + "jest-snapshot": "30.2.0", + "jest-util": "30.2.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" }, "engines": { - "node": ">= 6" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/bn.js": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz", - "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", - "license": "MIT" - }, - "node_modules/borp": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/borp/-/borp-0.20.2.tgz", - "integrity": "sha512-WJl/vYU6KoD0SyppDWPCdgrrTt2e+hCqTk5443fOUD92cbHLDLIcVRVRh8FIP0uhJjcZQ82Ky0XhB7Kyh32d/w==", + "node_modules/jest-runtime/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, "license": "MIT", "dependencies": { - "@reporters/github": "^1.5.4", - "c8": "^10.0.0", - "execa": "^9.3.0", - "find-up": "^7.0.0", - "glob": "^10.3.10", - "yaml": "^2.5.1" - }, - "bin": { - "borp": "borp.js" + "balanced-match": "^1.0.0" } }, - "node_modules/borp/node_modules/glob": { + "node_modules/jest-runtime/node_modules/glob": { "version": "10.5.0", "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "dev": true, "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", @@ -2705,10 +11716,11 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/borp/node_modules/jackspeak": { + "node_modules/jest-runtime/node_modules/jackspeak": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" @@ -2720,16 +11732,18 @@ "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/borp/node_modules/lru-cache": { + "node_modules/jest-runtime/node_modules/lru-cache": { "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, "license": "ISC" }, - "node_modules/borp/node_modules/minimatch": { + "node_modules/jest-runtime/node_modules/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" @@ -2741,171 +11755,615 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/borp/node_modules/path-scurry": { + "node_modules/jest-runtime/node_modules/path-scurry": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/jest-snapshot": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.2.0.tgz", + "integrity": "sha512-5WEtTy2jXPFypadKNpbNkZ72puZCa6UjSr/7djeecHWOu7iYhSXSnHScT8wBz3Rn8Ena5d5RYRcsyKIeqG1IyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.27.4", + "@babel/generator": "^7.27.5", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/plugin-syntax-typescript": "^7.27.1", + "@babel/types": "^7.27.3", + "@jest/expect-utils": "30.2.0", + "@jest/get-type": "30.1.0", + "@jest/snapshot-utils": "30.2.0", + "@jest/transform": "30.2.0", + "@jest/types": "30.2.0", + "babel-preset-current-node-syntax": "^1.2.0", + "chalk": "^4.1.2", + "expect": "30.2.0", + "graceful-fs": "^4.2.11", + "jest-diff": "30.2.0", + "jest-matcher-utils": "30.2.0", + "jest-message-util": "30.2.0", + "jest-util": "30.2.0", + "pretty-format": "30.2.0", + "semver": "^7.7.2", + "synckit": "^0.11.8" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", + "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-validate": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.2.0.tgz", + "integrity": "sha512-FBGWi7dP2hpdi8nBoWxSsLvBFewKAg0+uSQwBaof4Y4DPgBabXgpSYC5/lR7VmnIlSpASmCi/ntRWPbv7089Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.1.0", + "@jest/types": "30.2.0", + "camelcase": "^6.3.0", + "chalk": "^4.1.2", + "leven": "^3.1.0", + "pretty-format": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watcher": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.2.0.tgz", + "integrity": "sha512-PYxa28dxJ9g777pGm/7PrbnMeA0Jr7osHP9bS7eJy9DuAjMgdGtxgf0uKMyoIsTWAkIbUW5hSDdJ3urmgXBqxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/test-result": "30.2.0", + "@jest/types": "30.2.0", + "@types/node": "*", + "ansi-escapes": "^4.3.2", + "chalk": "^4.1.2", + "emittery": "^0.13.1", + "jest-util": "30.2.0", + "string-length": "^4.0.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-worker": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.2.0.tgz", + "integrity": "sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@ungap/structured-clone": "^1.3.0", + "jest-util": "30.2.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.1.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jiti": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", + "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-ref-resolver": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-schema-ref-resolver/-/json-schema-ref-resolver-3.0.0.tgz", + "integrity": "sha512-hOrZIVL5jyYFjzk7+y7n5JDzGlU8rfWDuYyHwGa2WA8/pcmMHezp2xsVwxrebD/Q9t8Nc5DboieySDpCp4WG4A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonc-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonwebtoken": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", + "license": "MIT", + "dependencies": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12", + "npm": ">=6" } }, - "node_modules/bowser": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.12.1.tgz", - "integrity": "sha512-z4rE2Gxh7tvshQ4hluIT7XcFrgLIQaw9X3A+kTTRdovCz5PMukm/0QC/BKSYPj3omF5Qfypn9O/c5kgpmvYUCw==", - "license": "MIT" + "node_modules/jwa": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.2.tgz", + "integrity": "sha512-eeH5JO+21J78qMvTIDdBXidBd6nG2kZjg5Ohz/1fpa28Z4CcsWUzJ1ZZyFq/3z3N17aZy+ZuBoHljASbL1WfOw==", + "license": "MIT", + "dependencies": { + "buffer-equal-constant-time": "^1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } }, - "node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "node_modules/jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" } }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "node_modules/keycharm": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/keycharm/-/keycharm-0.4.0.tgz", + "integrity": "sha512-TyQTtsabOVv3MeOpR92sIKk/br9wxS+zGj4BG7CR8YbK4jM3tyIBaF0zhzeBUMx36/Q/iQLOKKOT+3jOQtemRQ==", + "dev": true, + "license": "(Apache-2.0 OR MIT)", + "peer": true + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, "license": "MIT", "dependencies": { - "fill-range": "^7.1.1" + "json-buffer": "3.0.1" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" }, "engines": { - "node": ">=8" + "node": ">= 0.8.0" } }, - "node_modules/browser-or-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/browser-or-node/-/browser-or-node-2.1.1.tgz", - "integrity": "sha512-8CVjaLJGuSKMVTxJ2DpBl5XnlNDiT4cQFeuCJJrvJmts9YrTZDizTX7PjC2s6W4x+MBGZeEY6dGMrF04/6Hgqg==", - "license": "MIT" + "node_modules/light-my-request": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-6.6.0.tgz", + "integrity": "sha512-CHYbu8RtboSIoVsHZ6Ye4cj4Aw/yg2oAFimlF7mNvfDV192LR7nDiKtSIfCuLT7KokPSTn/9kfVLm5OGN0A28A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause", + "dependencies": { + "cookie": "^1.0.1", + "process-warning": "^4.0.0", + "set-cookie-parser": "^2.6.0" + } }, - "node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "node_modules/light-my-request/node_modules/process-warning": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-4.0.1.tgz", + "integrity": "sha512-3c2LzQ3rY9d0hc1emcsHhfT9Jwz0cChib/QN89oME2R451w5fy3f0afAhERFZAwrbDU43wk12d0ORBpDVME50Q==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/feross" + "url": "https://github.com/sponsors/fastify" }, { - "type": "patreon", - "url": "https://www.patreon.com/feross" + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, + "license": "MIT" + }, + "node_modules/load-esm": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/load-esm/-/load-esm-1.0.3.tgz", + "integrity": "sha512-v5xlu8eHD1+6r8EHTg6hfmO97LN8ugKtiXcy5e6oN72iD2r6u0RPfLl6fxM+7Wnh2ZRq15o0russMst44WauPA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/Borewit" }, { - "type": "consulting", - "url": "https://feross.org/support" + "type": "buymeacoffee", + "url": "https://buymeacoffee.com/borewit" } ], "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" + "engines": { + "node": ">=13.2.0" } }, - "node_modules/buffer-crc32": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-1.0.0.tgz", - "integrity": "sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==", + "node_modules/loader-runner": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz", + "integrity": "sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==", + "dev": true, "license": "MIT", "engines": { - "node": ">=8.0.0" + "node": ">=6.11.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "node_modules/c12": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/c12/-/c12-3.1.0.tgz", - "integrity": "sha512-uWoS8OU1MEIsOv8p/5a82c3H31LsWVR5qiyXVfBNOzfffjUWtPnhAb4BYI2uG2HfGmZmFjCtui5XNWaps+iFuw==", - "devOptional": true, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "license": "MIT", "dependencies": { - "chokidar": "^4.0.3", - "confbox": "^0.2.2", - "defu": "^6.1.4", - "dotenv": "^16.6.1", - "exsolve": "^1.0.7", - "giget": "^2.0.0", - "jiti": "^2.4.2", - "ohash": "^2.0.11", - "pathe": "^2.0.3", - "perfect-debounce": "^1.0.0", - "pkg-types": "^2.2.0", - "rc9": "^2.1.2" + "p-locate": "^5.0.0" }, - "peerDependencies": { - "magicast": "^0.3.5" + "engines": { + "node": ">=10" }, - "peerDependenciesMeta": { - "magicast": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/c12/node_modules/dotenv": { - "version": "16.6.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", - "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", - "devOptional": true, - "license": "BSD-2-Clause", + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", + "license": "MIT" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", + "license": "MIT" + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", + "license": "MIT" + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", + "license": "MIT" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "license": "MIT" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", + "license": "MIT" + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "license": "MIT" + }, + "node_modules/lodash.mergewith": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", + "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==", + "license": "MIT" + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "license": "MIT" + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, "engines": { - "node": ">=12" + "node": ">=10" }, "funding": { - "url": "https://dotenvx.com" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/c8": { - "version": "10.1.3", - "resolved": "https://registry.npmjs.org/c8/-/c8-10.1.3.tgz", - "integrity": "sha512-LvcyrOAaOnrrlMpW22n690PUvxiq4Uf9WMhQwNJ9vgagkL/ph1+D4uvjvDA5XCbykrc0sx+ay6pVi9YZ1GnhyA==", + "node_modules/loglevel": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.2.tgz", + "integrity": "sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + }, + "funding": { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/loglevel" + } + }, + "node_modules/loglevel-plugin-prefix": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/loglevel-plugin-prefix/-/loglevel-plugin-prefix-0.8.4.tgz", + "integrity": "sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g==", + "dev": true, + "license": "MIT" + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, "license": "ISC", "dependencies": { - "@bcoe/v8-coverage": "^1.0.1", - "@istanbuljs/schema": "^0.1.3", - "find-up": "^5.0.0", - "foreground-child": "^3.1.1", - "istanbul-lib-coverage": "^3.2.0", - "istanbul-lib-report": "^3.0.1", - "istanbul-reports": "^3.1.6", - "test-exclude": "^7.0.1", - "v8-to-istanbul": "^9.0.0", - "yargs": "^17.7.2", - "yargs-parser": "^21.1.1" - }, - "bin": { - "c8": "bin/c8.js" - }, + "yallist": "^3.0.2" + } + }, + "node_modules/lunr": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", + "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", + "dev": true, + "license": "MIT" + }, + "node_modules/macos-release": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.5.1.tgz", + "integrity": "sha512-DXqXhEM7gW59OjZO8NIjBCz9AQ1BEMrfiOAl4AYByHCtVHRF4KoGNO8mqQeM8lRCtQe/UnJ4imO/d2HdkKsd+A==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=18" - }, - "peerDependencies": { - "monocart-coverage-reports": "^2" + "node": ">=6" }, - "peerDependenciesMeta": { - "monocart-coverage-reports": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/c8/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "node_modules/magic-string": { + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "dev": true, "license": "MIT", "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" }, "engines": { "node": ">=10" @@ -2914,386 +12372,527 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/c8/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true, + "license": "ISC" + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/map-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.7.tgz", + "integrity": "sha512-C0X0KQmGm3N2ftbTGBhSyuydQ+vV1LC3f3zPvT3RXHXNZrvfPZcoXp/N5DOa8vedX/rTMm2CjTtivFg2STJMRQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/marked": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/marked/-/marked-7.0.3.tgz", + "integrity": "sha512-ev2uM40p0zQ/GbvqotfKcSWEa59fJwluGZj5dcaUOwDRrB1F3dncdXy8NWUApk4fi8atU3kTBOwjyjZ0ud0dxw==", + "dev": true, + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 16" + } + }, + "node_modules/matchit": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/matchit/-/matchit-1.1.0.tgz", + "integrity": "sha512-+nGYoOlfHmxe5BW5tE0EMJppXEwdSf8uBA1GTZC7Q77kbT35+VKLYJMzVNWCHSsga1ps1tPYFtFyvxvKzWVmMA==", + "dev": true, "license": "MIT", "dependencies": { - "p-locate": "^5.0.0" + "@arr/every": "^1.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, - "node_modules/c8/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/media-typer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", + "dev": true, "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/memfs": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "dev": true, + "license": "Unlicense", "dependencies": { - "yocto-queue": "^0.1.0" + "fs-monkey": "^1.0.4" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 4.0.0" } }, - "node_modules/c8/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "node_modules/mercurius": { + "version": "16.6.0", + "resolved": "https://registry.npmjs.org/mercurius/-/mercurius-16.6.0.tgz", + "integrity": "sha512-X4IJ4kL1ySKhen7/PHzrAiu+96xIVzxQoGDENdab/SbS36Z9qbngyES6mXbDGGvVhL+4ehxBo22Yg4GMFc6Umw==", "license": "MIT", + "peer": true, "dependencies": { - "p-limit": "^3.0.2" + "@fastify/error": "^4.0.0", + "@fastify/static": "^8.0.0", + "@fastify/websocket": "^11.0.0", + "borp": "^0.20.2", + "fastify-plugin": "^5.0.0", + "graphql-jit": "0.8.7", + "mqemitter": "^7.0.0", + "p-map": "^4.0.0", + "quick-lru": "^7.0.0", + "readable-stream": "^4.0.0", + "safe-stable-stringify": "^2.3.0", + "secure-json-parse": "^4.1.0", + "single-user-cache": "^2.0.0", + "tiny-lru": "^11.0.0", + "ws": "^8.2.2" }, "engines": { - "node": ">=10" + "node": "^20.9.0 || >=22.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "graphql": "^16.0.0" } }, - "node_modules/c8/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true, + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 8" } }, - "node_modules/c8/node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true, "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.6" } }, - "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.2" + "braces": "^3.0.3", + "picomatch": "^2.3.1" }, "engines": { - "node": ">= 0.4" + "node": ">=8.6" + } + }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "node_modules/mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" + "bin": { + "mime": "cli.js" }, "engines": { - "node": ">= 0.4" + "node": ">=10.0.0" } }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "dev": true, "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 0.6" } }, - "node_modules/chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", - "devOptional": true, + "node_modules/mime-types": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", + "dev": true, "license": "MIT", "dependencies": { - "readdirp": "^4.0.1" + "mime-db": "^1.54.0" }, "engines": { - "node": ">= 14.16.0" + "node": ">=18" }, "funding": { - "url": "https://paulmillr.com/funding/" + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/citty": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/citty/-/citty-0.1.6.tgz", - "integrity": "sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==", - "devOptional": true, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, "license": "MIT", - "dependencies": { - "consola": "^3.2.3" + "engines": { + "node": ">=6" } }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "node_modules/mimic-function": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", + "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", + "dev": true, "license": "MIT", "engines": { - "node": ">=6" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cliui": { - "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==", + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, "license": "ISC", "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=12" + "node": "*" } }, - "node_modules/cliui/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.17" } }, - "node_modules/cliui/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/morgan": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.1.tgz", + "integrity": "sha512-223dMRJtI/l25dJKWpgij2cMtywuG/WiUKXdvwfbhGKBhy1puASqXwFzmWZ7+K73vUPoR7SS2Qz2cI/g9MKw0A==", + "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "basic-auth": "~2.0.1", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-finished": "~2.3.0", + "on-headers": "~1.1.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">= 0.8.0" } }, - "node_modules/cliui/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==", + "node_modules/morgan/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/morgan/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, "license": "MIT" }, - "node_modules/cliui/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/morgan/node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dev": true, "license": "MIT", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "ee-first": "1.1.1" }, "engines": { - "node": ">=8" + "node": ">= 0.8" } }, - "node_modules/cliui/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", + "node_modules/mqemitter": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/mqemitter/-/mqemitter-7.1.0.tgz", + "integrity": "sha512-GnBDNz3lxmllW201ne0mrmdy5tPOTnc79jjVcsfUa2LG2pUGeyGWVeiae6ZysfC/64XrYOqCKRAQYrB7pGyBVQ==", + "license": "ISC", "dependencies": { - "ansi-regex": "^5.0.1" + "fastparallel": "^2.4.1", + "qlobber": "^8.0.1" }, "engines": { - "node": ">=8" + "node": ">=20" } }, - "node_modules/cliui/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "node_modules/mrmime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", + "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", + "dev": true, "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, "engines": { "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/mute-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", + "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/napi-postinstall": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.4.tgz", + "integrity": "sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==", + "dev": true, + "license": "MIT", + "bin": { + "napi-postinstall": "lib/cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "url": "https://opencollective.com/napi-postinstall" } }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, "engines": { - "node": ">=7.0.0" + "node": ">= 0.6" } }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true, "license": "MIT" }, - "node_modules/confbox": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.2.tgz", - "integrity": "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==", - "devOptional": true, + "node_modules/neotraverse": { + "version": "0.6.18", + "resolved": "https://registry.npmjs.org/neotraverse/-/neotraverse-0.6.18.tgz", + "integrity": "sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/node-abort-controller": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", + "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==", + "dev": true, "license": "MIT" }, - "node_modules/consola": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz", - "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==", - "devOptional": true, + "node_modules/node-addon-api": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-8.5.0.tgz", + "integrity": "sha512-/bRZty2mXUIFY/xU5HLvveNHlswNJej+RnxBjOMkidWfwZzgTbPG1E3K5TOxRLOR+5hX7bSofy8yf1hZevMS8A==", "license": "MIT", "engines": { - "node": "^14.18.0 || >=16.10.0" + "node": "^18 || ^20 || >= 21" } }, - "node_modules/constant-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz", - "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==", + "node_modules/node-emoji": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", + "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", + "dev": true, "license": "MIT", "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3", - "upper-case": "^2.0.2" + "lodash": "^4.17.21" } }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "node_modules/node-fetch-native": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.7.tgz", + "integrity": "sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==", + "license": "MIT" + }, + "node_modules/node-gyp-build": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", + "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==", "license": "MIT", - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" } }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true, "license": "MIT" }, - "node_modules/cookie": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz", - "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==", + "node_modules/node-releases": { + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "license": "MIT", "engines": { - "node": ">=18" + "node": ">=0.10.0" } }, - "node_modules/cross-inspect": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cross-inspect/-/cross-inspect-1.0.1.tgz", - "integrity": "sha512-Pcw1JTvZLSJH83iiGWt6fRcT+BjZlCDRVwYLbUcHzv/CRpB7r0MlSrGbIyQvVSNyGnbt7G4AXuyCiDR3POvZ1A==", + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, "license": "MIT", "dependencies": { - "tslib": "^2.4.0" + "path-key": "^3.0.0" }, "engines": { - "node": ">=16.0.0" + "node": ">=8" } }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "license": "MIT", + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "boolbase": "^1.0.0" }, - "engines": { - "node": ">= 8" + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" } }, - "node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "node_modules/nypm": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.6.2.tgz", + "integrity": "sha512-7eM+hpOtrKrBDCh7Ypu2lJ9Z7PNZBdi/8AT3AX8xoCj43BBVHD0hPSTEvMtkMpfs8FCqBGhxB+uToIQimA111g==", "license": "MIT", "dependencies": { - "ms": "^2.1.3" + "citty": "^0.1.6", + "consola": "^3.4.2", + "pathe": "^2.0.3", + "pkg-types": "^2.3.0", + "tinyexec": "^1.0.1" }, - "engines": { - "node": ">=6.0" + "bin": { + "nypm": "dist/cli.mjs" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decode-uri-component": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", - "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", - "license": "MIT", "engines": { - "node": ">=0.10" + "node": "^14.16.0 || >=16.10.0" } }, - "node_modules/deepmerge-ts": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/deepmerge-ts/-/deepmerge-ts-7.1.5.tgz", - "integrity": "sha512-HOJkrhaYsweh+W+e74Yn7YStZOilkoPb6fycpwNLKzSPtruFs48nYis0zy5yJz1+ktUhHxoRDJ27RQAWLIJVJw==", - "devOptional": true, - "license": "BSD-3-Clause", + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=16.0.0" + "node": ">=0.10.0" } }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, "engines": { "node": ">= 0.4" }, @@ -3301,935 +12900,948 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/defu": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", - "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==", - "devOptional": true, + "node_modules/ohash": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/ohash/-/ohash-2.0.11.tgz", + "integrity": "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==", "license": "MIT" }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "node_modules/on-exit-leak-free": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz", + "integrity": "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, "engines": { "node": ">= 0.8" } }, - "node_modules/dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "node_modules/on-headers": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz", + "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", + "dev": true, "license": "MIT", "engines": { - "node": ">=6" + "node": ">= 0.8" } }, - "node_modules/destr": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.5.tgz", - "integrity": "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==", - "devOptional": true, - "license": "MIT" + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, "license": "MIT", "dependencies": { - "path-type": "^4.0.0" + "mimic-fn": "^2.1.0" }, "engines": { - "node": ">=8" - } - }, - "node_modules/dotenv": { - "version": "17.2.3", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.3.tgz", - "integrity": "sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" + "node": ">=6" }, "funding": { - "url": "https://dotenvx.com" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "node_modules/open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dev": true, "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" }, "engines": { - "node": ">= 0.4" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/duplexify": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.3.tgz", - "integrity": "sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==", + "node_modules/opencollective-postinstall": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz", + "integrity": "sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==", + "dev": true, "license": "MIT", - "dependencies": { - "end-of-stream": "^1.4.1", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1", - "stream-shift": "^1.0.2" + "bin": { + "opencollective-postinstall": "index.js" } }, - "node_modules/duplexify/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, "license": "MIT", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" }, "engines": { - "node": ">= 6" - } - }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "license": "MIT" - }, - "node_modules/ecdsa-sig-formatter": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", - "license": "Apache-2.0", - "dependencies": { - "safe-buffer": "^5.0.1" + "node": ">= 0.8.0" } }, - "node_modules/effect": { - "version": "3.18.4", - "resolved": "https://registry.npmjs.org/effect/-/effect-3.18.4.tgz", - "integrity": "sha512-b1LXQJLe9D11wfnOKAk3PKxuqYshQ0Heez+y5pnkd3jLj1yx9QhM72zZ9uUrOQyNvrs2GZZd/3maL0ZV18YuDA==", - "devOptional": true, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, "license": "MIT", "dependencies": { - "@standard-schema/spec": "^1.0.0", - "fast-check": "^3.23.1" + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "license": "MIT" + "node_modules/ora/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "node_modules/empathic": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/empathic/-/empathic-2.0.0.tgz", - "integrity": "sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==", - "devOptional": true, + "node_modules/ora/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, "engines": { - "node": ">=14" + "node": ">=8" } }, - "node_modules/end-of-stream": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", - "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", + "node_modules/os-name": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/os-name/-/os-name-4.0.1.tgz", + "integrity": "sha512-xl9MAoU97MH1Xt5K9ERft2YfCAoaO6msy1OBA0ozxEC0x0TmIoE6K3QvgJMMZA9yKGLmHXNY/YZoDbiGDj4zYw==", + "dev": true, "license": "MIT", "dependencies": { - "once": "^1.4.0" + "macos-release": "^2.5.0", + "windows-release": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, "engines": { - "node": ">= 0.4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, "engines": { - "node": ">= 0.4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "license": "MIT", "dependencies": { - "es-errors": "^1.3.0" + "aggregate-error": "^3.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" } }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "license": "MIT" + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "license": "BlueOak-1.0.0" }, - "node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, "engines": { - "node": ">=6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eventemitter3": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", - "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", - "license": "MIT" - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "node_modules/parse-ms": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz", + "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==", "license": "MIT", "engines": { - "node": ">=0.8.x" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/execa": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-9.6.0.tgz", - "integrity": "sha512-jpWzZ1ZhwUmeWRhS7Qv3mhpOhLfwI+uAX4e5fOcXqwMR7EcJ0pj2kV1CVzHVMX/LphnKWD3LObjZCoJ71lKpHw==", + "node_modules/parse5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", + "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", + "dev": true, "license": "MIT", "dependencies": { - "@sindresorhus/merge-streams": "^4.0.0", - "cross-spawn": "^7.0.6", - "figures": "^6.1.0", - "get-stream": "^9.0.0", - "human-signals": "^8.0.1", - "is-plain-obj": "^4.1.0", - "is-stream": "^4.0.1", - "npm-run-path": "^6.0.0", - "pretty-ms": "^9.2.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^4.0.0", - "yoctocolors": "^2.1.1" - }, - "engines": { - "node": "^18.19.0 || >=20.5.0" + "entities": "^6.0.0" }, "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "node_modules/exsolve": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.8.tgz", - "integrity": "sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==", - "devOptional": true, - "license": "MIT" + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz", + "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "domhandler": "^5.0.3", + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } }, - "node_modules/fast-check": { - "version": "3.23.2", - "resolved": "https://registry.npmjs.org/fast-check/-/fast-check-3.23.2.tgz", - "integrity": "sha512-h5+1OzzfCC3Ef7VbtKdcv7zsstUQwUDlYpUTvjeUsJAssPgLn7QzbboPtL5ro04Mq0rPOsMzl7q5hIbRs2wD1A==", - "devOptional": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/dubzzz" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fast-check" - } - ], + "node_modules/parse5-parser-stream": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz", + "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==", + "dev": true, "license": "MIT", "dependencies": { - "pure-rand": "^6.1.0" + "parse5": "^7.0.0" }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5/node_modules/entities": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "dev": true, + "license": "BSD-2-Clause", "engines": { - "node": ">=8.0.0" + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/fast-decode-uri-component": { + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-browserify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/fast-decode-uri-component/-/fast-decode-uri-component-1.0.1.tgz", - "integrity": "sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", "license": "MIT" }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "license": "MIT" + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "node_modules/fast-glob": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", - "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.8" - }, "engines": { - "node": ">=8.6.0" + "node": ">=0.10.0" } }, - "node_modules/fast-json-stringify": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-6.1.1.tgz", - "integrity": "sha512-DbgptncYEXZqDUOEl4krff4mUiVrTZZVI7BBrQR/T3BqMj/eM1flTC1Uk2uUoLcWCxjT95xKulV/Lc6hhOZsBQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "license": "MIT", - "dependencies": { - "@fastify/merge-json-schemas": "^0.2.0", - "ajv": "^8.12.0", - "ajv-formats": "^3.0.1", - "fast-uri": "^3.0.0", - "json-schema-ref-resolver": "^3.0.0", - "rfdc": "^1.2.0" + "engines": { + "node": ">=8" } }, - "node_modules/fast-jwt": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/fast-jwt/-/fast-jwt-6.0.2.tgz", - "integrity": "sha512-dTF4bhYnuXhZYQUaxsHKqAyA5y/L/kQc4fUu0wQ0BSA0dMfcNrcv0aqR2YnVi4f7e1OnzDVU7sDsNdzl1O5EVA==", - "license": "Apache-2.0", + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-scurry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", + "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", + "license": "BlueOak-1.0.0", "dependencies": { - "@lukeed/ms": "^2.0.2", - "asn1.js": "^5.4.1", - "ecdsa-sig-formatter": "^1.0.11", - "mnemonist": "^0.40.0" + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" }, "engines": { - "node": ">=20" + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/fast-querystring": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fast-querystring/-/fast-querystring-1.1.2.tgz", - "integrity": "sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==", - "license": "MIT", - "dependencies": { - "fast-decode-uri-component": "^1.0.1" + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.2.tgz", + "integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==", + "license": "ISC", + "engines": { + "node": "20 || >=22" } }, - "node_modules/fast-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", - "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/fast-xml-parser": { - "version": "5.2.5", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.2.5.tgz", - "integrity": "sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - } - ], + "node_modules/path-to-regexp": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.3.0.tgz", + "integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==", "license": "MIT", - "dependencies": { - "strnum": "^2.1.0" - }, - "bin": { - "fxparser": "src/cli/cli.js" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/fastfall": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/fastfall/-/fastfall-1.5.1.tgz", - "integrity": "sha512-KH6p+Z8AKPXnmA7+Iz2Lh8ARCMr+8WNPVludm1LGkZoD2MjY6LVnRMtTKhkdzI+jr0RzQWXKzKyBJm1zoHEL4Q==", + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, "license": "MIT", - "dependencies": { - "reusify": "^1.0.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/fastify": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/fastify/-/fastify-5.6.2.tgz", - "integrity": "sha512-dPugdGnsvYkBlENLhCgX8yhyGCsCPrpA8lFWbTNU428l+YOnLgYHR69hzV8HWPC79n536EqzqQtvhtdaCE0dKg==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "license": "MIT" + }, + "node_modules/pause-stream": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", + "integrity": "sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==", + "dev": true, + "license": [ + "MIT", + "Apache2" ], - "license": "MIT", "dependencies": { - "@fastify/ajv-compiler": "^4.0.0", - "@fastify/error": "^4.0.0", - "@fastify/fast-json-stringify-compiler": "^5.0.0", - "@fastify/proxy-addr": "^5.0.0", - "abstract-logging": "^2.0.1", - "avvio": "^9.0.0", - "fast-json-stringify": "^6.0.0", - "find-my-way": "^9.0.0", - "light-my-request": "^6.0.0", - "pino": "^10.1.0", - "process-warning": "^5.0.0", - "rfdc": "^1.3.1", - "secure-json-parse": "^4.0.0", - "semver": "^7.6.0", - "toad-cache": "^3.7.0" + "through": "~2.3" } }, - "node_modules/fastify-plugin": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/fastify-plugin/-/fastify-plugin-5.1.0.tgz", - "integrity": "sha512-FAIDA8eovSt5qcDgcBvDuX/v0Cjz0ohGhENZ/wpc3y+oZCY2afZ9Baqql3g/lC+OHRnciQol4ww7tuthOb9idw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], + "node_modules/perfect-debounce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz", + "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==", "license": "MIT" }, - "node_modules/fastparallel": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/fastparallel/-/fastparallel-2.4.1.tgz", - "integrity": "sha512-qUmhxPgNHmvRjZKBFUNI0oZuuH9OlSIOXmJ98lhKPxMZZ7zS/Fi0wRHOihDSz0R1YiIOjxzOY4bq65YTcdBi2Q==", - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4", - "xtend": "^4.0.2" + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/fastq": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", - "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", - "license": "ISC", + "node_modules/pino": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-10.1.0.tgz", + "integrity": "sha512-0zZC2ygfdqvqK8zJIr1e+wT1T/L+LF6qvqvbzEQ6tiMAoTqEVK9a1K3YRu8HEUvGEvNqZyPJTtb2sNIoTkB83w==", + "license": "MIT", "dependencies": { - "reusify": "^1.0.4" + "@pinojs/redact": "^0.4.0", + "atomic-sleep": "^1.0.0", + "on-exit-leak-free": "^2.1.0", + "pino-abstract-transport": "^2.0.0", + "pino-std-serializers": "^7.0.0", + "process-warning": "^5.0.0", + "quick-format-unescaped": "^4.0.3", + "real-require": "^0.2.0", + "safe-stable-stringify": "^2.3.1", + "sonic-boom": "^4.0.1", + "thread-stream": "^3.0.0" + }, + "bin": { + "pino": "bin.js" } }, - "node_modules/fastseries": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/fastseries/-/fastseries-1.7.2.tgz", - "integrity": "sha512-dTPFrPGS8SNSzAt7u/CbMKCJ3s01N04s4JFbORHcmyvVfVKmbhMD1VtRbh5enGHxkaQDqWyLefiKOGGmohGDDQ==", - "license": "ISC", + "node_modules/pino-abstract-transport": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-2.0.0.tgz", + "integrity": "sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==", + "license": "MIT", "dependencies": { - "reusify": "^1.0.0", - "xtend": "^4.0.0" + "split2": "^4.0.0" } }, - "node_modules/figures": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", - "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", + "node_modules/pino-std-serializers": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-7.0.0.tgz", + "integrity": "sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==", + "license": "MIT" + }, + "node_modules/pirates": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", + "dev": true, "license": "MIT", - "dependencies": { - "is-unicode-supported": "^2.0.0" - }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 6" } }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, "license": "MIT", "dependencies": { - "to-regex-range": "^5.0.1" + "find-up": "^4.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/filter-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", - "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/find-my-way": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-9.3.0.tgz", - "integrity": "sha512-eRoFWQw+Yv2tuYlK2pjFS2jGXSxSppAs3hSQjfxVKxM5amECzIgYYc1FEI8ZmhSh/Ig+FrKEz43NLRKJjYCZVg==", + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-querystring": "^1.0.0", - "safe-regex2": "^5.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=20" + "node": ">=8" } }, - "node_modules/find-up": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-7.0.0.tgz", - "integrity": "sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==", + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, "license": "MIT", "dependencies": { - "locate-path": "^7.2.0", - "path-exists": "^5.0.0", - "unicorn-magic": "^0.1.0" + "p-locate": "^4.1.0" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/for-each": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", - "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, "license": "MIT", "dependencies": { - "is-callable": "^1.2.7" + "p-try": "^2.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=6" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/foreground-child": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", - "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", - "license": "ISC", + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "license": "MIT", "dependencies": { - "cross-spawn": "^7.0.6", - "signal-exit": "^4.0.1" + "p-limit": "^2.2.0" }, "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=8" } }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "node_modules/pkg-types": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.3.0.tgz", + "integrity": "sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==", "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "dependencies": { + "confbox": "^0.2.2", + "exsolve": "^1.0.7", + "pathe": "^2.0.3" } }, - "node_modules/generate-function": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", - "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", + "node_modules/pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "dev": true, "license": "MIT", - "dependencies": { - "is-property": "^1.0.2" + "engines": { + "node": ">=4" } }, - "node_modules/generator-function": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", - "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", + "node_modules/polka": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/polka/-/polka-0.5.2.tgz", + "integrity": "sha512-FVg3vDmCqP80tOrs+OeNlgXYmFppTXdjD5E7I4ET1NjvtNmQrb1/mJibybKkb/d4NA7YWAr1ojxuhpL3FHqdlw==", + "dev": true, "license": "MIT", - "engines": { - "node": ">= 0.4" + "dependencies": { + "@polka/url": "^0.5.0", + "trouter": "^2.0.1" } }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "license": "ISC", + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", "engines": { - "node": "6.* || 8.* || >= 10.*" + "node": ">= 0.8.0" } }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "node_modules/prettier": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz", + "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", + "dev": true, "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" + "peer": true, + "bin": { + "prettier": "bin/prettier.cjs" }, "engines": { - "node": ">= 0.4" + "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, "license": "MIT", "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" + "fast-diff": "^1.1.2" }, "engines": { - "node": ">= 0.4" + "node": ">=6.0.0" } }, - "node_modules/get-stream": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", - "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", + "node_modules/pretty-format": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "dev": true, "license": "MIT", "dependencies": { - "@sec-ant/readable-stream": "^0.4.1", - "is-stream": "^4.0.1" + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/giget": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/giget/-/giget-2.0.0.tgz", - "integrity": "sha512-L5bGsVkxJbJgdnwyuheIunkGatUF/zssUoxxjACCseZYAVbaqdh9Tsmmlkl8vYan09H7sbvKt4pS8GqKLBrEzA==", - "devOptional": true, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, "license": "MIT", - "dependencies": { - "citty": "^0.1.6", - "consola": "^3.4.0", - "defu": "^6.1.4", - "node-fetch-native": "^1.6.6", - "nypm": "^0.6.0", - "pathe": "^2.0.3" + "engines": { + "node": ">=10" }, - "bin": { - "giget": "dist/cli.mjs" + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/glob": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-11.1.0.tgz", - "integrity": "sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==", - "license": "BlueOak-1.0.0", + "node_modules/pretty-ms": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.3.0.tgz", + "integrity": "sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==", + "license": "MIT", "dependencies": { - "foreground-child": "^3.3.1", - "jackspeak": "^4.1.1", - "minimatch": "^10.1.1", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^2.0.0" - }, - "bin": { - "glob": "dist/esm/bin.mjs" + "parse-ms": "^4.0.0" }, "engines": { - "node": "20 || >=22" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "license": "ISC", + "node_modules/prisma": { + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/prisma/-/prisma-5.22.0.tgz", + "integrity": "sha512-vtpjW3XuYCSnMsNVBjLMNkTj6OZbudcPPTPYHqX0CJfpcdWciI1dM8uHETwmDxxiqEwCIE6WvXucWUetJgfu/A==", + "hasInstallScript": true, + "license": "Apache-2.0", + "peer": true, "dependencies": { - "is-glob": "^4.0.1" + "@prisma/engines": "5.22.0" }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "license": "MIT", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" + "bin": { + "prisma": "build/index.js" }, "engines": { - "node": ">=10" + "node": ">=16.13" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "optionalDependencies": { + "fsevents": "2.3.3" } }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "node_modules/prismjs": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz", + "integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==", + "dev": true, "license": "MIT", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=6" } }, - "node_modules/graphql": { - "version": "16.12.0", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.12.0.tgz", - "integrity": "sha512-DKKrynuQRne0PNpEbzuEdHlYOMksHSUI8Zc9Unei5gTsMNA2/vMpoMz/yKba50pejK56qj98qM0SjYxAKi13gQ==", + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", "license": "MIT", - "peer": true, "engines": { - "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" + "node": ">= 0.6.0" } }, - "node_modules/graphql-jit": { - "version": "0.8.7", - "resolved": "https://registry.npmjs.org/graphql-jit/-/graphql-jit-0.8.7.tgz", - "integrity": "sha512-KGzCrsxQPfEiXOUIJCexWKiWF6ycjO89kAO6SdO8OWRGwYXbG0hsLuTnbFfMq0gj7d7/ib/Gh7jtst7FHZEEjw==", + "node_modules/process-warning": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-5.0.0.tgz", + "integrity": "sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" + }, + "node_modules/proxy-middleware": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/proxy-middleware/-/proxy-middleware-0.15.0.tgz", + "integrity": "sha512-EGCG8SeoIRVMhsqHQUdDigB2i7qU7fCsWASwn54+nPutYO8n4q6EiwMzyfWlC+dzRFExP+kvcnDFdBDHoZBU7Q==", + "dev": true, "license": "MIT", - "dependencies": { - "@graphql-typed-document-node/core": "^3.2.0", - "fast-json-stringify": "^5.16.1", - "generate-function": "^2.3.1", - "lodash.memoize": "^4.1.2", - "lodash.merge": "4.6.2", - "lodash.mergewith": "4.6.2" - }, - "peerDependencies": { - "graphql": ">=15" + "engines": { + "node": ">=0.8.0" } }, - "node_modules/graphql-jit/node_modules/@fastify/merge-json-schemas": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@fastify/merge-json-schemas/-/merge-json-schemas-0.1.1.tgz", - "integrity": "sha512-fERDVz7topgNjtXsJTTW1JKLy0rhuLRcquYqNR9rF7OcVpCa2OVW49ZPDIhaRRCaUuvVxI+N416xUoF76HNSXA==", + "node_modules/pump": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz", + "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==", + "dev": true, "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.3" + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } }, - "node_modules/graphql-jit/node_modules/fast-json-stringify": { - "version": "5.16.1", - "resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-5.16.1.tgz", - "integrity": "sha512-KAdnLvy1yu/XrRtP+LJnxbBGrhN+xXu+gt3EUvZhYGKCr3lFHq/7UFJHHFgmJKoqlh6B40bZLEv7w46B0mqn1g==", + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, "license": "MIT", - "dependencies": { - "@fastify/merge-json-schemas": "^0.1.0", - "ajv": "^8.10.0", - "ajv-formats": "^3.0.1", - "fast-deep-equal": "^3.1.3", - "fast-uri": "^2.1.0", - "json-schema-ref-resolver": "^1.0.1", - "rfdc": "^1.2.0" + "engines": { + "node": ">=6" } }, - "node_modules/graphql-jit/node_modules/fast-uri": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-2.4.0.tgz", - "integrity": "sha512-ypuAmmMKInk5q7XcepxlnUWDLWv4GFtaJqAzWKqn62IpQ3pejtr5dTVbt3vwqVaMKmkNR55sTT+CqUKIaT21BA==", + "node_modules/pure-rand": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ], "license": "MIT" }, - "node_modules/graphql-jit/node_modules/json-schema-ref-resolver": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-schema-ref-resolver/-/json-schema-ref-resolver-1.0.1.tgz", - "integrity": "sha512-EJAj1pgHc1hxF6vo2Z3s69fMjO1INq6eGHXZ8Z6wCQeldCuwxGK9Sxf4/cScGn3FZubCVUehfWtcDM/PLteCQw==", + "node_modules/qlobber": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/qlobber/-/qlobber-8.0.1.tgz", + "integrity": "sha512-O+Wd1chXj5YE1DwmD+ae0bXiSLehmnS3czlC1R9FL/Nt/3q8uMS1bIHmg2lJfCoiimCxClWM8AAuJrF0EvNiog==", "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3" + "engines": { + "node": ">= 16" } }, - "node_modules/graphql-scalars": { - "version": "1.25.0", - "resolved": "https://registry.npmjs.org/graphql-scalars/-/graphql-scalars-1.25.0.tgz", - "integrity": "sha512-b0xyXZeRFkne4Eq7NAnL400gStGqG/Sx9VqX0A05nHyEbv57UJnWKsjNnrpVqv5e/8N1MUxkt0wwcRXbiyKcFg==", - "license": "MIT", + "node_modules/qs": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "tslib": "^2.5.0" + "side-channel": "^1.1.0" }, "engines": { - "node": ">=10" + "node": ">=0.6" }, - "peerDependencies": { - "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/quick-format-unescaped": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", + "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==", + "license": "MIT" + }, + "node_modules/quick-lru": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-7.3.0.tgz", + "integrity": "sha512-k9lSsjl36EJdK7I06v7APZCbyGT2vMTsYSRX1Q2nbYmnkBqgUhRkAuzH08Ciotteu/PLJmIF2+tti7o3C/ts2g==", "license": "MIT", "engines": { - "node": ">=8" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, "license": "MIT", "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "safe-buffer": "^5.1.0" } }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, "license": "MIT", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 0.6" } }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "node_modules/raw-body": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz", + "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==", + "dev": true, "license": "MIT", "dependencies": { - "has-symbols": "^1.0.3" + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.7.0", + "unpipe": "~1.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 0.10" } }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "node_modules/rc9": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/rc9/-/rc9-2.1.2.tgz", + "integrity": "sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==", "license": "MIT", "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" + "defu": "^6.1.4", + "destr": "^2.0.3" } }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, "license": "MIT" }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", "license": "MIT", "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" }, "engines": { - "node": ">= 0.8" - } - }, - "node_modules/human-signals": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.1.tgz", - "integrity": "sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==", - "license": "Apache-2.0", - "engines": { - "node": ">=18.18.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "node_modules/readable-stream/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", "funding": [ { "type": "github", @@ -4244,182 +13856,130 @@ "url": "https://feross.org/support" } ], - "license": "BSD-3-Clause" - }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "license": "ISC" - }, - "node_modules/ipaddr.js": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", - "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, - "node_modules/is-arguments": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", - "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", "license": "MIT", "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" } }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">= 14.18.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "individual", + "url": "https://paulmillr.com/funding/" } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "node_modules/real-require": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz", + "integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==", "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 12.13.0" } }, - "node_modules/is-fullwidth-code-point": { - "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==", - "license": "MIT", - "engines": { - "node": ">=8" - } + "node_modules/reflect-metadata": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", + "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", + "license": "Apache-2.0", + "peer": true }, - "node_modules/is-generator-function": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", - "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true, + "license": "MIT" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz", + "integrity": "sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==", + "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.4", - "generator-function": "^2.0.0", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" + "regenerate": "^1.4.2" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=4" } }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "node_modules/regexpu-core": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz", + "integrity": "sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==", + "dev": true, "license": "MIT", "dependencies": { - "is-extglob": "^2.1.1" + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.2.2", + "regjsgen": "^0.8.0", + "regjsparser": "^0.13.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.2.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } + "node_modules/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", + "dev": true, + "license": "MIT" }, - "node_modules/is-plain-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", - "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", - "license": "MIT", - "engines": { - "node": ">=12" + "node_modules/regjsparser": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.0.tgz", + "integrity": "sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~3.1.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "bin": { + "regjsparser": "bin/parser" } }, - "node_modules/is-property": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==", - "license": "MIT" - }, - "node_modules/is-regex": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", - "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "node_modules/require-directory": { + "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==", "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.10.0" } }, - "node_modules/is-stream": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", - "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "license": "MIT", "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/is-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", - "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "node_modules/resolve": { + "version": "1.22.11", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", + "dev": true, "license": "MIT", "dependencies": { - "which-typed-array": "^1.1.16" + "is-core-module": "^2.16.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" }, "engines": { "node": ">= 0.4" @@ -4428,126 +13988,157 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-unicode-supported": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", - "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=18" + "dependencies": { + "resolve-from": "^5.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=8" } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "license": "ISC" - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", - "license": "BSD-3-Clause", + }, + "node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", - "license": "BSD-3-Clause", - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" - }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=4" } }, - "node_modules/istanbul-reports": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", - "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", - "license": "BSD-3-Clause", + "node_modules/resolver": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/resolver/-/resolver-0.1.12.tgz", + "integrity": "sha512-cZ4vkMkZZvL2t7Tgs6omCfyQWN1G5SmTk2O84xBFXT5B2mlIz8whJAPBvINThd3adrM2V2iu1m9qXrHpxEoJ4w==", + "license": "BSD", "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" + "fetch": "~0.3.6", + "mime": "1.2.11" + } + }, + "node_modules/resolver/node_modules/mime": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz", + "integrity": "sha512-Ysa2F/nqTNGHhhm9MV8ure4+Hc+Y8AWiqUdHxsO7xu8zc92ND9f3kpALHjaP026Ft17UfxrMt95c50PLUeynBw==" + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" }, "engines": { "node": ">=8" } }, - "node_modules/jackspeak": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.1.tgz", - "integrity": "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==", - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, + "node_modules/restore-cursor/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/ret": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.5.0.tgz", + "integrity": "sha512-I1XxrZSQ+oErkRR4jYbAyEEu2I0avBvvMM5JN+6EBprOGRCs63ENqZ3vjavq8fBw2+62G5LF5XelKwuJpcvcxw==", + "license": "MIT", "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=10" } }, - "node_modules/jiti": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", - "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", - "devOptional": true, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", "license": "MIT", - "bin": { - "jiti": "lib/jiti-cli.mjs" + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" } }, - "node_modules/json-schema-ref-resolver": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-schema-ref-resolver/-/json-schema-ref-resolver-3.0.0.tgz", - "integrity": "sha512-hOrZIVL5jyYFjzk7+y7n5JDzGlU8rfWDuYyHwGa2WA8/pcmMHezp2xsVwxrebD/Q9t8Nc5DboieySDpCp4WG4A==", + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "license": "MIT" + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/fastify" + "url": "https://github.com/sponsors/feross" }, { - "type": "opencollective", - "url": "https://opencollective.com/fastify" + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" } ], "license": "MIT", "dependencies": { - "dequal": "^2.0.3" + "queue-microtask": "^1.2.2" } }, - "node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "license": "MIT" - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "license": "MIT", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" + "node_modules/rxjs": { + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "tslib": "^2.1.0" } }, - "node_modules/light-my-request": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-6.6.0.tgz", - "integrity": "sha512-CHYbu8RtboSIoVsHZ6Ye4cj4Aw/yg2oAFimlF7mNvfDV192LR7nDiKtSIfCuLT7KokPSTn/9kfVLm5OGN0A28A==", + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safe-regex2": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/safe-regex2/-/safe-regex2-5.0.0.tgz", + "integrity": "sha512-YwJwe5a51WlK7KbOJREPdjNrpViQBI3p4T50lfwPuDhZnE3XGVTlGvi+aolc5+RvxDD6bnUmjVsU9n1eboLUYw==", "funding": [ { "type": "github", @@ -4558,17 +14149,49 @@ "url": "https://opencollective.com/fastify" } ], - "license": "BSD-3-Clause", + "license": "MIT", "dependencies": { - "cookie": "^1.0.1", - "process-warning": "^4.0.0", - "set-cookie-parser": "^2.6.0" + "ret": "~0.5.0" } }, - "node_modules/light-my-request/node_modules/process-warning": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-4.0.1.tgz", - "integrity": "sha512-3c2LzQ3rY9d0hc1emcsHhfT9Jwz0cChib/QN89oME2R451w5fy3f0afAhERFZAwrbDU43wk12d0ORBpDVME50Q==", + "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==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/secure-json-parse": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-4.1.0.tgz", + "integrity": "sha512-l4KnYfEyqYJxDwlNVyRfO2E4NTHfMKAWdUuA8J0yve2Dz/E/PdBepY03RvyJpssIpRFwJoCD55wA+mEDs6ByWA==", "funding": [ { "type": "github", @@ -4579,1287 +14202,1597 @@ "url": "https://opencollective.com/fastify" } ], - "license": "MIT" + "license": "BSD-3-Clause" }, - "node_modules/locate-path": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", - "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz", + "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==", + "dev": true, "license": "MIT", "dependencies": { - "p-locate": "^6.0.0" + "debug": "^4.3.5", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "mime-types": "^3.0.1", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.1" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/send/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true, + "license": "ISC" + }, + "node_modules/serve-index/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.6" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, "license": "MIT" }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "license": "MIT" + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true, + "license": "ISC" }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "license": "MIT" + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } }, - "node_modules/lodash.mergewith": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", - "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==", + "node_modules/set-cookie-parser": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz", + "integrity": "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==", "license": "MIT" }, - "node_modules/lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", - "license": "MIT" + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" }, - "node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "license": "MIT", "dependencies": { - "tslib": "^2.0.3" + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/lru-cache": { - "version": "11.2.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.2.tgz", - "integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==", - "license": "ISC", + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", "engines": { - "node": "20 || >=22" + "node": ">=8" } }, - "node_modules/make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dev": true, "license": "MIT", "dependencies": { - "semver": "^7.5.3" + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dev": true, "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/mercurius": { - "version": "16.5.0", - "resolved": "https://registry.npmjs.org/mercurius/-/mercurius-16.5.0.tgz", - "integrity": "sha512-l5SOEXYATLhlH1M3tEIF1lJdwcgxXdNCf7HsCHoZ9IFO4Sgs//lo/ymeRuXOnapQ6zo1yruecY7OsRVaSCC2LA==", + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, "license": "MIT", "dependencies": { - "@fastify/error": "^4.0.0", - "@fastify/static": "^8.0.0", - "@fastify/websocket": "^11.0.0", - "borp": "^0.20.2", - "fastify-plugin": "^5.0.0", - "graphql-jit": "0.8.7", - "mqemitter": "^7.0.0", - "p-map": "^4.0.0", - "quick-lru": "^7.0.0", - "readable-stream": "^4.0.0", - "safe-stable-stringify": "^2.3.0", - "secure-json-parse": "^4.1.0", - "single-user-cache": "^2.0.0", - "tiny-lru": "^11.0.0", - "ws": "^8.2.2" + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" }, "engines": { - "node": "^20.9.0 || >=22.0.0" + "node": ">= 0.4" }, - "peerDependencies": { - "graphql": "^16.0.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, "engines": { - "node": ">= 8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/single-user-cache": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/single-user-cache/-/single-user-cache-2.1.0.tgz", + "integrity": "sha512-Wmu+uIEkabMoQPpJTOYhEsE6h/XjnjIhtuB1+tynxeO/hQxwQD0hIDq/ad65P1Tw9wt9f5SKnUe+63m6TMB4Uw==", "license": "MIT", "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" + "safe-stable-stringify": "^2.4.3" + } + }, + "node_modules/sirv": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.2.tgz", + "integrity": "sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" }, "engines": { - "node": ">=8.6" + "node": ">=18" } }, - "node_modules/mime": { + "node_modules/sirv/node_modules/@polka/url": { + "version": "1.0.0-next.29", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz", + "integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==", + "dev": true, + "license": "MIT" + }, + "node_modules/slash": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", - "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, "license": "MIT", - "bin": { - "mime": "cli.js" - }, "engines": { - "node": ">=10.0.0" + "node": ">=8" } }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "node_modules/sonic-boom": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-4.2.0.tgz", + "integrity": "sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==", "license": "MIT", + "dependencies": { + "atomic-sleep": "^1.0.0" + } + }, + "node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "license": "BSD-3-Clause", "engines": { - "node": ">= 0.6" + "node": ">= 8" } }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, "license": "MIT", "dependencies": { - "mime-db": "1.52.0" - }, + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", "engines": { - "node": ">= 0.6" + "node": ">=0.10.0" } }, - "node_modules/minimalistic-assert": { + "node_modules/split": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "license": "ISC" + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "through": "2" + }, + "engines": { + "node": "*" + } }, - "node_modules/minimatch": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", - "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", - "license": "BlueOak-1.0.0", + "node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "license": "ISC", + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "license": "MIT", "dependencies": { - "@isaacs/brace-expansion": "^5.0.0" + "escape-string-regexp": "^2.0.0" }, "engines": { - "node": "20 || >=22" + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/stdin-discarder": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.2.2.tgz", + "integrity": "sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stream-combiner": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz", + "integrity": "sha512-6yHMqgLYDzQDcAkL+tjJDC5nSNuNIx0vZtRZeiPh7Saef7VHX9H5Ijn9l2VIol2zaNYlYEX6KyuT/237A58qEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "duplexer": "~0.1.1", + "through": "~2.3.4" } }, - "node_modules/minio": { - "version": "8.0.6", - "resolved": "https://registry.npmjs.org/minio/-/minio-8.0.6.tgz", - "integrity": "sha512-sOeh2/b/XprRmEtYsnNRFtOqNRTPDvYtMWh+spWlfsuCV/+IdxNeKVUMKLqI7b5Dr07ZqCPuaRGU/rB9pZYVdQ==", - "license": "Apache-2.0", + "node_modules/stream-shift": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", + "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==", + "license": "MIT" + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", "dependencies": { - "async": "^3.2.4", - "block-stream2": "^2.1.0", - "browser-or-node": "^2.1.1", - "buffer-crc32": "^1.0.0", - "eventemitter3": "^5.0.1", - "fast-xml-parser": "^4.4.1", - "ipaddr.js": "^2.0.1", - "lodash": "^4.17.21", - "mime-types": "^2.1.35", - "query-string": "^7.1.3", - "stream-json": "^1.8.0", - "through2": "^4.0.2", - "web-encoding": "^1.1.5", - "xml2js": "^0.5.0 || ^0.6.2" - }, - "engines": { - "node": "^16 || ^18 || >=20" + "safe-buffer": "~5.2.0" } }, - "node_modules/minio/node_modules/fast-xml-parser": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.3.tgz", - "integrity": "sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - } - ], + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, "license": "MIT", "dependencies": { - "strnum": "^1.1.1" + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" }, - "bin": { - "fxparser": "src/cli/cli.js" + "engines": { + "node": ">=10" } }, - "node_modules/minio/node_modules/strnum": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.1.2.tgz", - "integrity": "sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - } - ], - "license": "MIT" - }, - "node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "license": "ISC", + "node_modules/string-length/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=8" } }, - "node_modules/mnemonist": { - "version": "0.40.3", - "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.40.3.tgz", - "integrity": "sha512-Vjyr90sJ23CKKH/qPAgUKicw/v6pRoamxIEDFOF8uSgFME7DqPRpHgRTejWVjkdGg5dXj0/NyxZHZ9bcjH+2uQ==", + "node_modules/string-length/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, "license": "MIT", "dependencies": { - "obliterator": "^2.0.4" + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "node_modules/mqemitter": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/mqemitter/-/mqemitter-7.1.0.tgz", - "integrity": "sha512-GnBDNz3lxmllW201ne0mrmdy5tPOTnc79jjVcsfUa2LG2pUGeyGWVeiae6ZysfC/64XrYOqCKRAQYrB7pGyBVQ==", - "license": "ISC", + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", "dependencies": { - "fastparallel": "^2.4.1", - "qlobber": "^8.0.1" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=20" + "node": ">=8" } }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" - }, - "node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "license": "MIT", "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" } }, - "node_modules/node-addon-api": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-8.5.0.tgz", - "integrity": "sha512-/bRZty2mXUIFY/xU5HLvveNHlswNJej+RnxBjOMkidWfwZzgTbPG1E3K5TOxRLOR+5hX7bSofy8yf1hZevMS8A==", + "node_modules/string-width-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "license": "MIT", "engines": { - "node": "^18 || ^20 || >= 21" + "node": ">=8" } }, - "node_modules/node-fetch-native": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.7.tgz", - "integrity": "sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/node-gyp-build": { - "version": "4.8.4", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", - "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==", + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "license": "MIT", - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "node_modules/string-width/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "license": "MIT", - "dependencies": { - "remove-trailing-separator": "^1.0.1" - }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/npm-run-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", - "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", + "node_modules/string-width/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "license": "MIT", "dependencies": { - "path-key": "^4.0.0", - "unicorn-magic": "^0.3.0" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/npm-run-path/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, "engines": { "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/npm-run-path/node_modules/unicorn-magic": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", - "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "license": "MIT", - "engines": { - "node": ">=18" + "dependencies": { + "ansi-regex": "^5.0.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=8" } }, - "node_modules/nypm": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.6.2.tgz", - "integrity": "sha512-7eM+hpOtrKrBDCh7Ypu2lJ9Z7PNZBdi/8AT3AX8xoCj43BBVHD0hPSTEvMtkMpfs8FCqBGhxB+uToIQimA111g==", - "devOptional": true, + "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "license": "MIT", - "dependencies": { - "citty": "^0.1.6", - "consola": "^3.4.2", - "pathe": "^2.0.3", - "pkg-types": "^2.3.0", - "tinyexec": "^1.0.1" - }, - "bin": { - "nypm": "dist/cli.mjs" - }, "engines": { - "node": "^14.16.0 || >=16.10.0" + "node": ">=8" } }, - "node_modules/obliterator": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-2.0.5.tgz", - "integrity": "sha512-42CPE9AhahZRsMNslczq0ctAEtqk8Eka26QofnqC346BZdHDySk3LWka23LI7ULIw11NmltpiLagIq8gBozxTw==", - "license": "MIT" - }, - "node_modules/ohash": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/ohash/-/ohash-2.0.11.tgz", - "integrity": "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/on-exit-leak-free": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz", - "integrity": "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==", + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, "license": "MIT", "engines": { - "node": ">=14.0.0" + "node": ">=8" } }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "license": "ISC", - "dependencies": { - "wrappy": "1" + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" } }, - "node_modules/p-limit": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", - "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, "license": "MIT", - "dependencies": { - "yocto-queue": "^1.0.0" - }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-locate": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", - "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "node_modules/strtok3": { + "version": "10.3.4", + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-10.3.4.tgz", + "integrity": "sha512-KIy5nylvC5le1OdaaoCJ07L+8iQzJHGH6pWDuzS+d07Cu7n1MZ2x26P8ZKIWfbK02+XIL8Mp4RkWeqdUCrDMfg==", "license": "MIT", "dependencies": { - "p-limit": "^4.0.0" + "@tokenizer/token": "^0.3.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "github", + "url": "https://github.com/sponsors/Borewit" } }, - "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "node_modules/subscriptions-transport-ws": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/subscriptions-transport-ws/-/subscriptions-transport-ws-0.11.0.tgz", + "integrity": "sha512-8D4C6DIH5tGiAIpp5I0wD/xRlNiZAPGHygzCe7VzyzUoxHtawzjNAY9SUTXU05/EY2NMY9/9GF0ycizkXr1CWQ==", + "deprecated": "The `subscriptions-transport-ws` package is no longer maintained. We recommend you use `graphql-ws` instead. For help migrating Apollo software to `graphql-ws`, see https://www.apollographql.com/docs/apollo-server/data/subscriptions/#switching-from-subscriptions-transport-ws For general help using `graphql-ws`, see https://github.com/enisdenjo/graphql-ws/blob/master/README.md", "license": "MIT", "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" + "backo2": "^1.0.2", + "eventemitter3": "^3.1.0", + "iterall": "^1.2.1", + "symbol-observable": "^1.0.4", + "ws": "^5.2.0 || ^6.0.0 || ^7.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "graphql": "^15.7.2 || ^16.0.0" } }, - "node_modules/package-json-from-dist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", - "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", - "license": "BlueOak-1.0.0" + "node_modules/subscriptions-transport-ws/node_modules/symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/parse-ms": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz", - "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==", + "node_modules/subscriptions-transport-ws/node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "license": "MIT", "engines": { - "node": ">=18" + "node": ">=8.3.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, - "node_modules/path-exists": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", - "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "node_modules/superagent": { + "version": "10.2.3", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-10.2.3.tgz", + "integrity": "sha512-y/hkYGeXAj7wUMjxRbB21g/l6aAEituGXM9Rwl4o20+SX3e8YOSV6BxFXl+dL3Uk0mjSL3kCbNkwURm8/gEDig==", + "dev": true, "license": "MIT", + "dependencies": { + "component-emitter": "^1.3.1", + "cookiejar": "^2.1.4", + "debug": "^4.3.7", + "fast-safe-stringify": "^2.1.1", + "form-data": "^4.0.4", + "formidable": "^3.5.4", + "methods": "^1.1.2", + "mime": "2.6.0", + "qs": "^6.11.2" + }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=14.18.0" } }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "node_modules/superagent/node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, "license": "MIT", + "bin": { + "mime": "cli.js" + }, "engines": { - "node": ">=8" + "node": ">=4.0.0" } }, - "node_modules/path-scurry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", - "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", - "license": "BlueOak-1.0.0", + "node_modules/supertest": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/supertest/-/supertest-7.1.4.tgz", + "integrity": "sha512-tjLPs7dVyqgItVFirHYqe2T+MfWc2VOBQ8QFKKbWTA3PU7liZR8zoSpAi/C1k1ilm9RsXIKYf197oap9wXGVYg==", + "dev": true, + "license": "MIT", "dependencies": { - "lru-cache": "^11.0.0", - "minipass": "^7.1.2" + "methods": "^1.1.2", + "superagent": "^10.2.3" }, "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=14.18.0" } }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { "node": ">=8" } }, - "node_modules/pathe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", - "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/perfect-debounce": { + "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz", - "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, "license": "MIT", "engines": { - "node": ">=8.6" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/pino": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/pino/-/pino-10.1.0.tgz", - "integrity": "sha512-0zZC2ygfdqvqK8zJIr1e+wT1T/L+LF6qvqvbzEQ6tiMAoTqEVK9a1K3YRu8HEUvGEvNqZyPJTtb2sNIoTkB83w==", - "license": "MIT", - "dependencies": { - "@pinojs/redact": "^0.4.0", - "atomic-sleep": "^1.0.0", - "on-exit-leak-free": "^2.1.0", - "pino-abstract-transport": "^2.0.0", - "pino-std-serializers": "^7.0.0", - "process-warning": "^5.0.0", - "quick-format-unescaped": "^4.0.3", - "real-require": "^0.2.0", - "safe-stable-stringify": "^2.3.1", - "sonic-boom": "^4.0.1", - "thread-stream": "^3.0.0" - }, - "bin": { - "pino": "bin.js" - } + "node_modules/svg-pan-zoom": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/svg-pan-zoom/-/svg-pan-zoom-3.6.2.tgz", + "integrity": "sha512-JwnvRWfVKw/Xzfe6jriFyfey/lWJLq4bUh2jwoR5ChWQuQoOH8FEh1l/bEp46iHHKHEJWIyFJETbazraxNWECg==", + "dev": true, + "license": "BSD-2-Clause" }, - "node_modules/pino-abstract-transport": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-2.0.0.tgz", - "integrity": "sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==", + "node_modules/symbol-observable": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", + "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", + "dev": true, "license": "MIT", - "dependencies": { - "split2": "^4.0.0" + "engines": { + "node": ">=0.10" } }, - "node_modules/pino-std-serializers": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-7.0.0.tgz", - "integrity": "sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==", - "license": "MIT" - }, - "node_modules/pkg-types": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.3.0.tgz", - "integrity": "sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==", - "devOptional": true, + "node_modules/synckit": { + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.11.tgz", + "integrity": "sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==", + "dev": true, "license": "MIT", "dependencies": { - "confbox": "^0.2.2", - "exsolve": "^1.0.7", - "pathe": "^2.0.3" + "@pkgr/core": "^0.2.9" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/synckit" } }, - "node_modules/possible-typed-array-names": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", - "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "node_modules/tablesort": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/tablesort/-/tablesort-5.6.0.tgz", + "integrity": "sha512-cZZXK3G089PbpxH8N7vN7Z21SEKqXAaCiSVOmZdR/v7z8TFCsF/OFr0rzjhQuFlQQHy9uQtW9P2oQFJzJFGVrg==", + "dev": true, "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">= 16", + "npm": ">= 8" } }, - "node_modules/pretty-ms": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.3.0.tgz", - "integrity": "sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==", + "node_modules/tapable": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", + "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", + "dev": true, "license": "MIT", - "dependencies": { - "parse-ms": "^4.0.0" - }, "engines": { - "node": ">=18" + "node": ">=6" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "node_modules/prisma": { - "version": "6.19.0", - "resolved": "https://registry.npmjs.org/prisma/-/prisma-6.19.0.tgz", - "integrity": "sha512-F3eX7K+tWpkbhl3l4+VkFtrwJlLXbAM+f9jolgoUZbFcm1DgHZ4cq9AgVEgUym2au5Ad/TDLN8lg83D+M10ycw==", - "devOptional": true, - "hasInstallScript": true, - "license": "Apache-2.0", - "peer": true, + "node_modules/terser": { + "version": "5.44.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.44.1.tgz", + "integrity": "sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==", + "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "@prisma/config": "6.19.0", - "@prisma/engines": "6.19.0" + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.15.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" }, "bin": { - "prisma": "build/index.js" + "terser": "bin/terser" }, "engines": { - "node": ">=18.18" + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.14", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz", + "integrity": "sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "jest-worker": "^27.4.5", + "schema-utils": "^4.3.0", + "serialize-javascript": "^6.0.2", + "terser": "^5.31.1" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "typescript": ">=5.1.0" + "webpack": "^5.1.0" }, "peerDependenciesMeta": { - "typescript": { + "@swc/core": { "optional": true - } - } - }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "license": "MIT", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/process-warning": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-5.0.0.tgz", - "integrity": "sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "MIT" - }, - "node_modules/pure-rand": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", - "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", - "devOptional": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/dubzzz" + "esbuild": { + "optional": true }, - { - "type": "opencollective", - "url": "https://opencollective.com/fast-check" + "uglify-js": { + "optional": true } - ], - "license": "MIT" - }, - "node_modules/qlobber": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/qlobber/-/qlobber-8.0.1.tgz", - "integrity": "sha512-O+Wd1chXj5YE1DwmD+ae0bXiSLehmnS3czlC1R9FL/Nt/3q8uMS1bIHmg2lJfCoiimCxClWM8AAuJrF0EvNiog==", - "license": "MIT", - "engines": { - "node": ">= 16" } }, - "node_modules/query-string": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.3.tgz", - "integrity": "sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==", + "node_modules/terser-webpack-plugin/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "decode-uri-component": "^0.2.2", - "filter-obj": "^1.1.0", - "split-on-first": "^1.0.0", - "strict-uri-encode": "^2.0.0" - }, - "engines": { - "node": ">=6" + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/quick-format-unescaped": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", - "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==", - "license": "MIT" - }, - "node_modules/quick-lru": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-7.3.0.tgz", - "integrity": "sha512-k9lSsjl36EJdK7I06v7APZCbyGT2vMTsYSRX1Q2nbYmnkBqgUhRkAuzH08Ciotteu/PLJmIF2+tti7o3C/ts2g==", + "node_modules/terser-webpack-plugin/node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=18" + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependenciesMeta": { + "ajv": { + "optional": true + } } }, - "node_modules/rc9": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/rc9/-/rc9-2.1.2.tgz", - "integrity": "sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==", - "devOptional": true, + "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, "license": "MIT", "dependencies": { - "defu": "^6.1.4", - "destr": "^2.0.3" + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" } }, - "node_modules/readable-stream": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", - "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "node_modules/terser-webpack-plugin/node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, "license": "MIT", "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">= 10.13.0" } }, - "node_modules/readdirp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", - "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", - "devOptional": true, + "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", + "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", + "dev": true, "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, "engines": { - "node": ">= 14.18.0" + "node": ">= 10.13.0" }, "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "node_modules/real-require": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz", - "integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==", + "node_modules/terser-webpack-plugin/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": ">= 12.13.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", - "license": "ISC" + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "license": "MIT" }, - "node_modules/require-directory": { - "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==", - "license": "MIT", + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "license": "ISC", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "license": "MIT", + "node_modules/test-exclude/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "node_modules/thread-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-3.1.0.tgz", + "integrity": "sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==", "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "real-require": "^0.2.0" } }, - "node_modules/ret": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.5.0.tgz", - "integrity": "sha512-I1XxrZSQ+oErkRR4jYbAyEEu2I0avBvvMM5JN+6EBprOGRCs63ENqZ3vjavq8fBw2+62G5LF5XelKwuJpcvcxw==", - "license": "MIT", + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true, + "license": "MIT" + }, + "node_modules/tiny-lru": { + "version": "11.4.5", + "resolved": "https://registry.npmjs.org/tiny-lru/-/tiny-lru-11.4.5.tgz", + "integrity": "sha512-hkcz3FjNJfKXjV4mjQ1OrXSLAehg8Hw+cEZclOVT+5c/cWQWImQ9wolzTjth+dmmDe++p3bme3fTxz6Q4Etsqw==", + "license": "BSD-3-Clause", "engines": { - "node": ">=10" + "node": ">=12" } }, - "node_modules/reusify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", - "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "node_modules/tinyexec": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.2.tgz", + "integrity": "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==", "license": "MIT", "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" + "node": ">=18" } }, - "node_modules/rfdc": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", - "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", - "license": "MIT" - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, "license": "MIT", "dependencies": { - "queue-microtask": "^1.2.2" + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" } }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/safe-regex-test": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", - "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-regex": "^1.2.1" - }, "engines": { - "node": ">= 0.4" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/safe-regex2": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/safe-regex2/-/safe-regex2-5.0.0.tgz", - "integrity": "sha512-YwJwe5a51WlK7KbOJREPdjNrpViQBI3p4T50lfwPuDhZnE3XGVTlGvi+aolc5+RvxDD6bnUmjVsU9n1eboLUYw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "license": "MIT", "dependencies": { - "ret": "~0.5.0" + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" } }, - "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==", + "node_modules/toad-cache": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/toad-cache/-/toad-cache-3.7.0.tgz", + "integrity": "sha512-/m8M+2BJUpoJdgAHoG+baCwBT+tf2VraSfkBgl0Y00qIWt41DJ8R5B8nsEw0I58YwF5IZH6z24/2TobDKnqSWw==", "license": "MIT", "engines": { - "node": ">=10" + "node": ">=12" } }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "license": "MIT" - }, - "node_modules/sax": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.3.tgz", - "integrity": "sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ==", - "license": "BlueOak-1.0.0" - }, - "node_modules/secure-json-parse": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-4.1.0.tgz", - "integrity": "sha512-l4KnYfEyqYJxDwlNVyRfO2E4NTHfMKAWdUuA8J0yve2Dz/E/PdBepY03RvyJpssIpRFwJoCD55wA+mEDs6ByWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", "engines": { - "node": ">=10" - } - }, - "node_modules/set-cookie-parser": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz", - "integrity": "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==", - "license": "MIT" + "node": ">=0.6" + } }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "node_modules/token-types": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/token-types/-/token-types-6.1.1.tgz", + "integrity": "sha512-kh9LVIWH5CnL63Ipf0jhlBIy0UsrMj/NJDfpsy1SqOXlLKEVyXXYrnFxFT1yOOYVGBSApeVnjPw/sBz5BfEjAQ==", "license": "MIT", "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" + "@borewit/text-codec": "^0.1.0", + "@tokenizer/token": "^0.3.0", + "ieee754": "^1.2.1" }, "engines": { - "node": ">= 0.4" + "node": ">=14.16" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" } }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "license": "ISC" + "node_modules/totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "node_modules/trouter": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/trouter/-/trouter-2.0.1.tgz", + "integrity": "sha512-kr8SKKw94OI+xTGOkfsvwZQ8mWoikZDd2n8XZHjJVZUARZT+4/VV6cacRS6CLsH9bNm+HFIPU1Zx4CnNnb4qlQ==", + "dev": true, "license": "MIT", "dependencies": { - "shebang-regex": "^3.0.0" + "matchit": "^1.0.0" }, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "node_modules/ts-api-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", + "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" } }, - "node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "license": "ISC", + "node_modules/ts-jest": { + "version": "29.4.5", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.4.5.tgz", + "integrity": "sha512-HO3GyiWn2qvTQA4kTgjDcXiMwYQt68a1Y8+JuLRVpdIzm+UOLSHgl/XqR4c6nzJkq5rOkjc02O2I7P7l/Yof0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "bs-logger": "^0.2.6", + "fast-json-stable-stringify": "^2.1.0", + "handlebars": "^4.7.8", + "json5": "^2.2.3", + "lodash.memoize": "^4.1.2", + "make-error": "^1.3.6", + "semver": "^7.7.3", + "type-fest": "^4.41.0", + "yargs-parser": "^21.1.1" + }, + "bin": { + "ts-jest": "cli.js" + }, "engines": { - "node": ">=14" + "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.0.0-beta.0 <8", + "@jest/transform": "^29.0.0 || ^30.0.0", + "@jest/types": "^29.0.0 || ^30.0.0", + "babel-jest": "^29.0.0 || ^30.0.0", + "jest": "^29.0.0 || ^30.0.0", + "jest-util": "^29.0.0 || ^30.0.0", + "typescript": ">=4.3 <6" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@jest/transform": { + "optional": true + }, + "@jest/types": { + "optional": true + }, + "babel-jest": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "jest-util": { + "optional": true + } + } + }, + "node_modules/ts-jest/node_modules/type-fest": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=16" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/single-user-cache": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/single-user-cache/-/single-user-cache-2.1.0.tgz", - "integrity": "sha512-Wmu+uIEkabMoQPpJTOYhEsE6h/XjnjIhtuB1+tynxeO/hQxwQD0hIDq/ad65P1Tw9wt9f5SKnUe+63m6TMB4Uw==", + "node_modules/ts-loader": { + "version": "9.5.4", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.4.tgz", + "integrity": "sha512-nCz0rEwunlTZiy6rXFByQU1kVVpCIgUpc/psFiKVrUwrizdnIbRFu8w7bxhUF0X613DYwT4XzrZHpVyMe758hQ==", + "dev": true, "license": "MIT", "dependencies": { - "safe-stable-stringify": "^2.4.3" + "chalk": "^4.1.0", + "enhanced-resolve": "^5.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4", + "source-map": "^0.7.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "typescript": "*", + "webpack": "^5.0.0" } }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "node_modules/ts-morph": { + "version": "25.0.1", + "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-25.0.1.tgz", + "integrity": "sha512-QJEiTdnz1YjrB3JFhd626gX4rKHDLSjSVMvGGG4v7ONc3RBwa0Eei98G9AT9uNFDMtV54JyuXsFeC+OH0n6bXQ==", "license": "MIT", - "engines": { - "node": ">=8" + "peer": true, + "dependencies": { + "@ts-morph/common": "~0.26.0", + "code-block-writer": "^13.0.3" } }, - "node_modules/sonic-boom": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-4.2.0.tgz", - "integrity": "sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==", + "node_modules/ts-node": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", + "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "atomic-sleep": "^1.0.0" + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } } }, - "node_modules/split-on-first": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", - "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==", + "node_modules/tsconfig-paths": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", + "dev": true, "license": "MIT", + "dependencies": { + "json5": "^2.2.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, "engines": { "node": ">=6" } }, - "node_modules/split2": { + "node_modules/tsconfig-paths-webpack-plugin": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", - "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", - "license": "ISC", - "engines": { - "node": ">= 10.x" - } - }, - "node_modules/stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.2.0.tgz", + "integrity": "sha512-zbem3rfRS8BgeNK50Zz5SIQgXzLafiHjOwUAvk/38/o1jHn/V5QAgVUcz884or7WYcPaH3N2CIfUc2u0ul7UcA==", + "dev": true, "license": "MIT", "dependencies": { - "escape-string-regexp": "^2.0.0" + "chalk": "^4.1.0", + "enhanced-resolve": "^5.7.0", + "tapable": "^2.2.1", + "tsconfig-paths": "^4.1.2" }, "engines": { - "node": ">=10" + "node": ">=10.13.0" } }, - "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "node_modules/tsconfig-paths/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, "license": "MIT", "engines": { - "node": ">= 0.8" + "node": ">=4" } }, - "node_modules/steed": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/steed/-/steed-1.1.3.tgz", - "integrity": "sha512-EUkci0FAUiE4IvGTSKcDJIQ/eRUP2JJb56+fvZ4sdnguLTqIdKjSxUe138poW8mkvKWXW2sFPrgTsxqoISnmoA==", + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/tunnel": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", "license": "MIT", - "dependencies": { - "fastfall": "^1.5.0", - "fastparallel": "^2.2.0", - "fastq": "^1.3.0", - "fastseries": "^1.7.0", - "reusify": "^1.0.0" + "engines": { + "node": ">=0.6.11 <=0.7.0 || >=0.7.3" } }, - "node_modules/stream-chain": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/stream-chain/-/stream-chain-2.2.5.tgz", - "integrity": "sha512-1TJmBx6aSWqZ4tx7aTpBDXK0/e2hhcNSTV8+CbFJtDjbb+I1mZ8lHit0Grw9GRT+6JbIrrDd8esncgBi8aBXGA==", - "license": "BSD-3-Clause" - }, - "node_modules/stream-json": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/stream-json/-/stream-json-1.9.1.tgz", - "integrity": "sha512-uWkjJ+2Nt/LO9Z/JyKZbMusL8Dkh97uUBTv3AJQ74y07lVahLY4eEFsPsE97pxYBwr8nnjMAIch5eqI0gPShyw==", - "license": "BSD-3-Clause", + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", "dependencies": { - "stream-chain": "^2.2.5" + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" } }, - "node_modules/stream-shift": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", - "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==", - "license": "MIT" - }, - "node_modules/strict-uri-encode": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", - "integrity": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==", + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, "license": "MIT", "engines": { "node": ">=4" } }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", + "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", + "dev": true, "license": "MIT", "dependencies": { - "safe-buffer": "~5.2.0" + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" + }, + "engines": { + "node": ">= 0.6" } }, - "node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-eslint": { + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.47.0.tgz", + "integrity": "sha512-Lwe8i2XQ3WoMjua/r1PHrCTpkubPYJCAfOurtn+mtTzqB6jNd+14n9UN1bJ4s3F49x9ixAm0FLflB/JzQ57M8Q==", + "dev": true, "license": "MIT", "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" + "@typescript-eslint/eslint-plugin": "8.47.0", + "@typescript-eslint/parser": "8.47.0", + "@typescript-eslint/typescript-estree": "8.47.0", + "@typescript-eslint/utils": "8.47.0" }, "engines": { - "node": ">=12" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/uglify-js": { + "version": "3.19.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", + "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", + "dev": true, + "license": "BSD-2-Clause", + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/uid": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/uid/-/uid-2.0.2.tgz", + "integrity": "sha512-u3xV3X7uzvi5b1MncmZo3i2Aw222Zk1keqLA1YkHldREkAhAqi65wuPfe7lHx8H/Wzy+8CE7S7uS3jekIM5s8g==", "license": "MIT", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "@lukeed/csprng": "^1.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/string-width-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/uint8array-extras": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/uint8array-extras/-/uint8array-extras-1.5.0.tgz", + "integrity": "sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A==", "license": "MIT", "engines": { - "node": ">=8" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/string-width-cjs/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==", - "license": "MIT" - }, - "node_modules/string-width-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/undici": { + "version": "5.29.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.29.0.tgz", + "integrity": "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==", "license": "MIT", "dependencies": { - "ansi-regex": "^5.0.1" + "@fastify/busboy": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=14.0" } }, - "node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "license": "MIT" + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", + "dev": true, "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "node": ">=4" } }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^5.0.1" + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz", + "integrity": "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==", + "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/strip-final-newline": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", - "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz", + "integrity": "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicorn-magic": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", + "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", "license": "MIT", "engines": { "node": ">=18" @@ -5868,306 +15801,511 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/strnum": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.1.1.tgz", - "integrity": "sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==", + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unix-crypt-td-js": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/unix-crypt-td-js/-/unix-crypt-td-js-1.1.4.tgz", + "integrity": "sha512-8rMeVYWSIyccIJscb9NdCfZKSRBKYTeVnwmiRYT2ulE3qd1RaDQ0xQDP+rI3ccIWbhu/zuo5cgN8z73belNZgw==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/unrs-resolver": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz", + "integrity": "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "napi-postinstall": "^0.3.0" + }, + "funding": { + "url": "https://opencollective.com/unrs-resolver" + }, + "optionalDependencies": { + "@unrs/resolver-binding-android-arm-eabi": "1.11.1", + "@unrs/resolver-binding-android-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-x64": "1.11.1", + "@unrs/resolver-binding-freebsd-x64": "1.11.1", + "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-arm64-musl": "1.11.1", + "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1", + "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-musl": "1.11.1", + "@unrs/resolver-binding-wasm32-wasi": "1.11.1", + "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1", + "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1", + "@unrs/resolver-binding-win32-x64-msvc": "1.11.1" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.4.tgz", + "integrity": "sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==", + "dev": true, "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, { "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" + "url": "https://github.com/sponsors/ai" } ], - "license": "MIT" - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "escalade": "^3.2.0", + "picocolors": "^1.1.1" }, - "engines": { - "node": ">=8" + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" } }, - "node_modules/test-exclude": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-7.0.1.tgz", - "integrity": "sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==", - "license": "ISC", + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^10.4.1", - "minimatch": "^9.0.4" - }, + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=18" + "node": ">= 0.4.0" } }, - "node_modules/test-exclude/node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, + "node_modules/uuid": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", + "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", + "dev": true, + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "peer": true, "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "uuid": "dist/esm/bin/uuid" } }, - "node_modules/test-exclude/node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "license": "BlueOak-1.0.0", + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true, + "license": "MIT" + }, + "node_modules/v8-to-istanbul": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", + "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", + "license": "ISC", "dependencies": { - "@isaacs/cliui": "^8.0.2" + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vis-data": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/vis-data/-/vis-data-8.0.3.tgz", + "integrity": "sha512-jhnb6rJNqkKR1Qmlay0VuDXY9ZlvAnYN1udsrP4U+krgZEq7C0yNSKdZqmnCe13mdnf9AdVcdDGFOzy2mpPoqw==", + "dev": true, + "license": "(Apache-2.0 OR MIT)", + "peer": true, "funding": { - "url": "https://github.com/sponsors/isaacs" + "type": "opencollective", + "url": "https://opencollective.com/visjs" }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" + "peerDependencies": { + "uuid": "^3.4.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 || ^13.0.0", + "vis-util": ">=6.0.0" } }, - "node_modules/test-exclude/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "license": "ISC" - }, - "node_modules/test-exclude/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" + "node_modules/vis-network": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/vis-network/-/vis-network-10.0.2.tgz", + "integrity": "sha512-qPl8GLYBeHEFqiTqp4VBbYQIJ2EA8KLr7TstA2E8nJxfEHaKCU81hQLz7hhq11NUpHbMaRzBjW5uZpVKJ45/wA==", + "dev": true, + "license": "(Apache-2.0 OR MIT)", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/visjs" }, + "peerDependencies": { + "@egjs/hammerjs": "^2.0.0", + "component-emitter": "^1.3.0 || ^2.0.0", + "keycharm": "^0.2.0 || ^0.3.0 || ^0.4.0", + "uuid": "^3.4.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 || ^13.0.0", + "vis-data": ">=8.0.0", + "vis-util": ">=6.0.0" + } + }, + "node_modules/vis-util": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/vis-util/-/vis-util-6.0.0.tgz", + "integrity": "sha512-qtpts3HRma0zPe4bO7t9A2uejkRNj8Z2Tb6do6lN85iPNWExFkUiVhdAq5uLGIUqBFduyYeqWJKv/jMkxX0R5g==", + "dev": true, + "license": "(Apache-2.0 OR MIT)", + "peer": true, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "type": "opencollective", + "url": "https://opencollective.com/visjs" + }, + "peerDependencies": { + "@egjs/hammerjs": "^2.0.0", + "component-emitter": "^1.3.0 || ^2.0.0" } }, - "node_modules/test-exclude/node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "license": "BlueOak-1.0.0", + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "makeerror": "1.0.12" } }, - "node_modules/thread-stream": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-3.1.0.tgz", - "integrity": "sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==", + "node_modules/watchpack": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.4.tgz", + "integrity": "sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==", + "dev": true, "license": "MIT", "dependencies": { - "real-require": "^0.2.0" + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" } }, - "node_modules/through2": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, "license": "MIT", "dependencies": { - "readable-stream": "3" + "defaults": "^1.0.3" } }, - "node_modules/through2/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "node_modules/webpack": { + "version": "5.103.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.103.0.tgz", + "integrity": "sha512-HU1JOuV1OavsZ+mfigY0j8d1TgQgbZ6M+J75zDkpEAwYeXjWSqrGJtgnPblJjd/mAyTNQ7ygw0MiKOn6etz8yw==", + "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.8", + "@types/json-schema": "^7.0.15", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", + "acorn": "^8.15.0", + "acorn-import-phases": "^1.0.3", + "browserslist": "^4.26.3", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.17.3", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.3.1", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^4.3.3", + "tapable": "^2.3.0", + "terser-webpack-plugin": "^5.3.11", + "watchpack": "^2.4.4", + "webpack-sources": "^3.3.3" + }, + "bin": { + "webpack": "bin/webpack.js" }, "engines": { - "node": ">= 6" + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } } }, - "node_modules/tiny-lru": { - "version": "11.4.5", - "resolved": "https://registry.npmjs.org/tiny-lru/-/tiny-lru-11.4.5.tgz", - "integrity": "sha512-hkcz3FjNJfKXjV4mjQ1OrXSLAehg8Hw+cEZclOVT+5c/cWQWImQ9wolzTjth+dmmDe++p3bme3fTxz6Q4Etsqw==", - "license": "BSD-3-Clause", + "node_modules/webpack-node-externals": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz", + "integrity": "sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=6" } }, - "node_modules/tinyexec": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.2.tgz", - "integrity": "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==", - "devOptional": true, + "node_modules/webpack-sources": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.3.tgz", + "integrity": "sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==", + "dev": true, "license": "MIT", "engines": { - "node": ">=18" + "node": ">=10.13.0" } }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "node_modules/webpack/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "is-number": "^7.0.0" + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" }, - "engines": { - "node": ">=8.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/toad-cache": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/toad-cache/-/toad-cache-3.7.0.tgz", - "integrity": "sha512-/m8M+2BJUpoJdgAHoG+baCwBT+tf2VraSfkBgl0Y00qIWt41DJ8R5B8nsEw0I58YwF5IZH6z24/2TobDKnqSWw==", + "node_modules/webpack/node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/webpack/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, "engines": { - "node": ">=12" + "node": ">=8.0.0" } }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "license": "MIT", + "node_modules/webpack/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "license": "BSD-2-Clause", "engines": { - "node": ">=0.6" + "node": ">=4.0" } }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD" + "node_modules/webpack/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" }, - "node_modules/tunnel": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", - "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + "node_modules/webpack/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, "license": "MIT", "engines": { - "node": ">=0.6.11 <=0.7.0 || >=0.7.3" + "node": ">= 0.6" } }, - "node_modules/undici": { - "version": "5.29.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.29.0.tgz", - "integrity": "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==", + "node_modules/webpack/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, "license": "MIT", "dependencies": { - "@fastify/busboy": "^2.0.0" + "mime-db": "1.52.0" }, "engines": { - "node": ">=14.0" + "node": ">= 0.6" } }, - "node_modules/undici-types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", - "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", - "license": "MIT" - }, - "node_modules/unicorn-magic": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", - "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", + "node_modules/webpack/node_modules/schema-utils": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", + "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", + "dev": true, "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, "engines": { - "node": ">=18" + "node": ">= 10.13.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "node_modules/unixify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unixify/-/unixify-1.0.0.tgz", - "integrity": "sha512-6bc58dPYhCMHHuwxldQxO3RRNZ4eCogZ/st++0+fcC1nr0jiGUtAdBJ2qzmLQWSxbtz42pWt4QQMiZ9HvZf5cg==", - "license": "MIT", + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "normalize-path": "^2.1.1" + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=0.8.0" } }, - "node_modules/upper-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz", - "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==", - "license": "MIT", - "dependencies": { - "tslib": "^2.0.3" + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=0.8.0" } }, - "node_modules/util": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", - "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "node_modules/whatwg-encoding": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", + "dev": true, "license": "MIT", "dependencies": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "which-typed-array": "^1.1.2" + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=18" } }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "license": "MIT" - }, - "node_modules/v8-to-istanbul": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", - "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", - "license": "ISC", + "node_modules/whatwg-encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "license": "MIT", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^2.0.0" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { - "node": ">=10.12.0" + "node": ">=0.10.0" } }, - "node_modules/web-encoding": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/web-encoding/-/web-encoding-1.1.5.tgz", - "integrity": "sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==", + "node_modules/whatwg-mimetype": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "dev": true, "license": "MIT", - "dependencies": { - "util": "^0.12.3" - }, - "optionalDependencies": { - "@zxing/text-encoding": "0.9.0" + "engines": { + "node": ">=18" } }, "node_modules/which": { @@ -6185,42 +16323,109 @@ "node": ">= 8" } }, - "node_modules/which-typed-array": { - "version": "1.1.19", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", - "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", + "node_modules/windows-release": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-4.0.0.tgz", + "integrity": "sha512-OxmV4wzDKB1x7AZaZgXMVsdJ1qER1ed83ZrTYd5Bwq2HfJVg3DJS8nqlAG4sMoJ7mu8cuRmLEYyU13BKwctRAg==", + "dev": true, "license": "MIT", "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "for-each": "^0.3.5", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2" + "execa": "^4.0.2" }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "node_modules/windows-release/node_modules/execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" }, "engines": { - "node": ">=12" + "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/windows-release/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/windows-release/node_modules/human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8.12.0" + } + }, + "node_modules/windows-release/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" } }, "node_modules/wrap-ansi-cjs": { @@ -6250,45 +16455,33 @@ "node": ">=8" } }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "ansi-regex": "^5.0.1" }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/wrap-ansi-cjs/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==", - "license": "MIT" - }, - "node_modules/wrap-ansi-cjs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, "engines": { "node": ">=8" } }, - "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "node_modules/wrap-ansi/node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" @@ -6303,11 +16496,26 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "license": "ISC" }, + "node_modules/write-file-atomic": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/ws": { "version": "8.18.3", "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", "license": "MIT", + "peer": true, "engines": { "node": ">=10.0.0" }, @@ -6324,28 +16532,6 @@ } } }, - "node_modules/xml2js": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz", - "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==", - "license": "MIT", - "dependencies": { - "sax": ">=0.6.0", - "xmlbuilder": "~11.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/xmlbuilder": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", - "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", - "license": "MIT", - "engines": { - "node": ">=4.0" - } - }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", @@ -6364,6 +16550,13 @@ "node": ">=10" } }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, "node_modules/yaml": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.1.tgz", @@ -6403,54 +16596,23 @@ "node": ">=12" } }, - "node_modules/yargs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/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==", - "license": "MIT" - }, - "node_modules/yargs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, "engines": { - "node": ">=8" + "node": ">=6" } }, "node_modules/yocto-queue": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", - "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==", + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "license": "MIT", "engines": { - "node": ">=12.20" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -6467,6 +16629,19 @@ "funding": { "url": "https://github.com/sponsors/sindresorhus" } + }, + "node_modules/yoctocolors-cjs": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.3.tgz", + "integrity": "sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } } } } diff --git a/backend/package.json b/backend/package.json index 07e8051..5cd14e3 100644 --- a/backend/package.json +++ b/backend/package.json @@ -1,47 +1,90 @@ { - "name": "taskflow-backend", - "version": "1.0.0", - "description": "A trello like self-hosted webapp", - "main": "src/index.mjs", - "type": "module", + "name": "new-backend", + "version": "0.0.1", + "description": "", + "author": "", + "private": true, + "license": "UNLICENSED", "scripts": { - "dev": "node --watch src/index.mjs", - "test": "echo \"Error: no test specified\" && exit 1" + "build": "nest build", + "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"", + "start": "nest start", + "start:dev": "nest start --watch", + "start:debug": "nest start --debug --watch", + "start:prod": "node dist/main", + "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix", + "test": "jest", + "test:watch": "jest --watch", + "test:cov": "jest --coverage", + "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand", + "test:e2e": "jest --config ./test/jest-e2e.json", + "doc": "npx compodoc -p tsconfig.json -s" }, - "repository": { - "type": "git", - "url": "git+https://github.com/EliasJHL/TaskFlow.git" - }, - "keywords": [ - "corp" - ], - "author": "Elias Josué Hajjar Llauquen", - "license": "ISC", - "bugs": { - "url": "https://github.com/EliasJHL/TaskFlow/issues" - }, - "homepage": "https://github.com/EliasJHL/TaskFlow#readme", "dependencies": { - "@aws-sdk/client-s3": "^3.916.0", - "@aws-sdk/s3-request-presigner": "^3.916.0", - "@fastify/auth": "^5.0.3", + "@angular/core": "^21.0.1", + "@angular/forms": "^21.0.1", + "@angular/platform-browser-dynamic": "^21.0.1", "@fastify/cookie": "^11.0.2", - "@fastify/cors": "^11.1.0", - "@fastify/jwt": "^10.0.0", - "@graphql-tools/graphql-file-loader": "^8.1.7", - "@graphql-tools/load": "^8.1.6", - "@graphql-tools/schema": "^10.0.29", - "@prisma/client": "^6.19.0", - "@types/minio": "^7.1.0", + "@nestjs/common": "^11.0.1", + "@nestjs/config": "^4.0.2", + "@nestjs/core": "^11.0.1", + "@nestjs/graphql": "^13.2.0", + "@nestjs/jwt": "^11.0.1", + "@nestjs/mercurius": "^13.2.0", + "@nestjs/platform-fastify": "^11.1.9", + "@prisma/client": "5.22.0", + "@prisma/config": "^7.0.0", "bcrypt": "^6.0.0", - "dotenv": "^17.2.3", - "fastify": "^5.6.1", - "graphql": "^16.11.0", - "graphql-scalars": "^1.24.2", - "mercurius": "^16.3.0", - "minio": "^8.0.6" + "mercurius": "^16.6.0", + "prisma": "5.22.0", + "reflect-metadata": "^0.2.2", + "rxjs": "^7.8.1", + "ts-morph": "^25.0.1" }, "devDependencies": { - "prisma": "^6.19.0" + "@compodoc/compodoc": "^1.1.32", + "@eslint/eslintrc": "^3.2.0", + "@eslint/js": "^9.18.0", + "@nestjs/cli": "^11.0.0", + "@nestjs/schematics": "^11.0.0", + "@nestjs/testing": "^11.0.1", + "@types/express": "^5.0.0", + "@types/jest": "^30.0.0", + "@types/node": "^22.10.7", + "@types/supertest": "^6.0.2", + "eslint": "^9.18.0", + "eslint-config-prettier": "^10.0.1", + "eslint-plugin-prettier": "^5.2.2", + "globals": "^16.0.0", + "jest": "^30.0.0", + "prettier": "^3.4.2", + "source-map-support": "^0.5.21", + "supertest": "^7.0.0", + "ts-jest": "^29.2.5", + "ts-loader": "^9.5.2", + "ts-node": "^10.9.2", + "tsconfig-paths": "^4.2.0", + "typescript": "^5.7.3", + "typescript-eslint": "^8.20.0" + }, + "jest": { + "moduleFileExtensions": [ + "js", + "json", + "ts" + ], + "rootDir": "src", + "testRegex": ".*\\.spec\\.ts$", + "transform": { + "^.+\\.(t|j)s$": "ts-jest" + }, + "collectCoverageFrom": [ + "**/*.(t|j)s" + ], + "coverageDirectory": "../coverage", + "testEnvironment": "node" + }, + "overrides": { + "hono": "^4.10.3" } } diff --git a/backend/prisma/migrations/20250928003449_init/migration.sql b/backend/prisma/migrations/20250928003449_init/migration.sql deleted file mode 100644 index af5102c..0000000 --- a/backend/prisma/migrations/20250928003449_init/migration.sql +++ /dev/null @@ -1 +0,0 @@ --- This is an empty migration. \ No newline at end of file diff --git a/backend/prisma/migrations/20250928003716_init/migration.sql b/backend/prisma/migrations/20250928003716_init/migration.sql deleted file mode 100644 index fe5efe7..0000000 --- a/backend/prisma/migrations/20250928003716_init/migration.sql +++ /dev/null @@ -1,156 +0,0 @@ --- CreateEnum -CREATE TYPE "public"."Role" AS ENUM ('Admin', 'Member', 'Viewer'); - --- CreateTable -CREATE TABLE "public"."User" ( - "user_id" TEXT NOT NULL, - "username" TEXT NOT NULL, - "email" TEXT NOT NULL, - "hashed_password" TEXT NOT NULL, - - CONSTRAINT "User_pkey" PRIMARY KEY ("user_id") -); - --- CreateTable -CREATE TABLE "public"."Workspace" ( - "workspace_id" TEXT NOT NULL, - "name" TEXT NOT NULL, - "description" TEXT, - "owner_id" TEXT NOT NULL, - - CONSTRAINT "Workspace_pkey" PRIMARY KEY ("workspace_id") -); - --- CreateTable -CREATE TABLE "public"."WorkspaceMembers" ( - "workspace_id" TEXT NOT NULL, - "user_id" TEXT NOT NULL, - "role" "public"."Role" NOT NULL, - - CONSTRAINT "WorkspaceMembers_pkey" PRIMARY KEY ("workspace_id","user_id") -); - --- CreateTable -CREATE TABLE "public"."Board" ( - "board_id" TEXT NOT NULL, - "title" TEXT NOT NULL, - "description" TEXT, - "workspace_id" TEXT NOT NULL, - - CONSTRAINT "Board_pkey" PRIMARY KEY ("board_id") -); - --- CreateTable -CREATE TABLE "public"."List" ( - "list_id" TEXT NOT NULL, - "title" TEXT NOT NULL, - "position" INTEGER NOT NULL, - "board_id" TEXT NOT NULL, - - CONSTRAINT "List_pkey" PRIMARY KEY ("list_id") -); - --- CreateTable -CREATE TABLE "public"."Card" ( - "card_id" TEXT NOT NULL, - "title" TEXT NOT NULL, - "description" TEXT, - "position" INTEGER NOT NULL, - "list_id" TEXT NOT NULL, - "label_id" TEXT, - "due_date" TIMESTAMP(3), - - CONSTRAINT "Card_pkey" PRIMARY KEY ("card_id") -); - --- CreateTable -CREATE TABLE "public"."Comment" ( - "comment_id" TEXT NOT NULL, - "content" TEXT NOT NULL, - "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "card_id" TEXT NOT NULL, - "user_id" TEXT NOT NULL, - - CONSTRAINT "Comment_pkey" PRIMARY KEY ("comment_id") -); - --- CreateTable -CREATE TABLE "public"."Label" ( - "label_id" TEXT NOT NULL, - "name" TEXT NOT NULL, - "color" TEXT NOT NULL, - "board_id" TEXT NOT NULL, - - CONSTRAINT "Label_pkey" PRIMARY KEY ("label_id") -); - --- CreateTable -CREATE TABLE "public"."Attachment" ( - "attachment_id" TEXT NOT NULL, - "card_id" TEXT NOT NULL, - "url" TEXT NOT NULL, - "filename" TEXT NOT NULL, - - CONSTRAINT "Attachment_pkey" PRIMARY KEY ("attachment_id") -); - --- CreateTable -CREATE TABLE "public"."CardLabel" ( - "card_id" TEXT NOT NULL, - "label_id" TEXT NOT NULL, - - CONSTRAINT "CardLabel_pkey" PRIMARY KEY ("card_id","label_id") -); - --- CreateTable -CREATE TABLE "public"."CardMember" ( - "card_id" TEXT NOT NULL, - "user_id" TEXT NOT NULL, - - CONSTRAINT "CardMember_pkey" PRIMARY KEY ("card_id","user_id") -); - --- CreateIndex -CREATE UNIQUE INDEX "User_username_key" ON "public"."User"("username"); - --- CreateIndex -CREATE UNIQUE INDEX "User_email_key" ON "public"."User"("email"); - --- AddForeignKey -ALTER TABLE "public"."WorkspaceMembers" ADD CONSTRAINT "WorkspaceMembers_workspace_id_fkey" FOREIGN KEY ("workspace_id") REFERENCES "public"."Workspace"("workspace_id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "public"."WorkspaceMembers" ADD CONSTRAINT "WorkspaceMembers_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "public"."User"("user_id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "public"."Board" ADD CONSTRAINT "Board_workspace_id_fkey" FOREIGN KEY ("workspace_id") REFERENCES "public"."Workspace"("workspace_id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "public"."List" ADD CONSTRAINT "List_board_id_fkey" FOREIGN KEY ("board_id") REFERENCES "public"."Board"("board_id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "public"."Card" ADD CONSTRAINT "Card_list_id_fkey" FOREIGN KEY ("list_id") REFERENCES "public"."List"("list_id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "public"."Comment" ADD CONSTRAINT "Comment_card_id_fkey" FOREIGN KEY ("card_id") REFERENCES "public"."Card"("card_id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "public"."Comment" ADD CONSTRAINT "Comment_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "public"."User"("user_id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "public"."Label" ADD CONSTRAINT "Label_board_id_fkey" FOREIGN KEY ("board_id") REFERENCES "public"."Board"("board_id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "public"."Attachment" ADD CONSTRAINT "Attachment_card_id_fkey" FOREIGN KEY ("card_id") REFERENCES "public"."Card"("card_id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "public"."CardLabel" ADD CONSTRAINT "CardLabel_card_id_fkey" FOREIGN KEY ("card_id") REFERENCES "public"."Card"("card_id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "public"."CardLabel" ADD CONSTRAINT "CardLabel_label_id_fkey" FOREIGN KEY ("label_id") REFERENCES "public"."Label"("label_id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "public"."CardMember" ADD CONSTRAINT "CardMember_card_id_fkey" FOREIGN KEY ("card_id") REFERENCES "public"."Card"("card_id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "public"."CardMember" ADD CONSTRAINT "CardMember_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "public"."User"("user_id") ON DELETE RESTRICT ON UPDATE CASCADE; diff --git a/backend/prisma/migrations/20251002204103_add_workspace_owner_relation/migration.sql b/backend/prisma/migrations/20251002204103_add_workspace_owner_relation/migration.sql deleted file mode 100644 index 08bfc15..0000000 --- a/backend/prisma/migrations/20251002204103_add_workspace_owner_relation/migration.sql +++ /dev/null @@ -1,2 +0,0 @@ --- AddForeignKey -ALTER TABLE "Workspace" ADD CONSTRAINT "Workspace_owner_id_fkey" FOREIGN KEY ("owner_id") REFERENCES "User"("user_id") ON DELETE RESTRICT ON UPDATE CASCADE; diff --git a/backend/prisma/migrations/migration_lock.toml b/backend/prisma/migrations/migration_lock.toml deleted file mode 100644 index 044d57c..0000000 --- a/backend/prisma/migrations/migration_lock.toml +++ /dev/null @@ -1,3 +0,0 @@ -# Please do not edit this file manually -# It should be added in your version-control system (e.g., Git) -provider = "postgresql" diff --git a/backend/prisma/schema.prisma b/backend/prisma/schema.prisma index 0b6255d..1bc9a2c 100644 --- a/backend/prisma/schema.prisma +++ b/backend/prisma/schema.prisma @@ -5,7 +5,7 @@ // Try Prisma Accelerate: https://pris.ly/cli/accelerate-init generator client { - provider = "prisma-client-js" + provider = "prisma-client-js" binaryTargets = ["native", "linux-musl-arm64-openssl-3.0.x"] } @@ -21,34 +21,36 @@ enum Role { } model User { - user_id String @id @default(uuid()) - username String @unique - email String @unique - picture String? - created_at DateTime @default(now()) + user_id String @id @default(uuid()) + username String @unique + email String @unique + picture String? + created_at DateTime @default(now()) hashed_password String - workspaces WorkspaceMembers[] - workspacesOwned Workspace[] - comments Comment[] - card_members CardMember[] + workspaces WorkspaceMembers[] + workspacesOwned Workspace[] + comments Comment[] + card_members CardMember[] pinned_workspaces PinnedWorkspace[] + + boards_created Board[] @relation("BoardCreator") } model Workspace { - workspace_id String @id @default(uuid()) - name String - description String? - owner_id String - color String - - owner User @relation(fields: [owner_id], references: [user_id]) - - members WorkspaceMembers[] - boards Board[] - pinned_by PinnedWorkspace[] - labels Label[] + workspace_id String @id @default(uuid()) + name String + description String? + owner_id String + color String + + owner User @relation(fields: [owner_id], references: [user_id], onDelete: Cascade) + + members WorkspaceMembers[] + boards Board[] + pinned_by PinnedWorkspace[] + labels Label[] } model WorkspaceMembers { @@ -56,43 +58,53 @@ model WorkspaceMembers { user_id String role Role - workspace Workspace @relation(fields: [workspace_id], references: [workspace_id]) - user User @relation(fields: [user_id], references: [user_id]) + workspace Workspace @relation(fields: [workspace_id], references: [workspace_id], onDelete: Cascade) + user User @relation(fields: [user_id], references: [user_id], onDelete: Cascade) @@id([workspace_id, user_id]) } model PinnedWorkspace { - id String @id @default(uuid()) + id String @id @default(uuid()) user_id String workspace_id String - - user User @relation(fields: [user_id], references: [user_id]) - workspace Workspace @relation(fields: [workspace_id], references: [workspace_id]) + + user User @relation(fields: [user_id], references: [user_id], onDelete: Cascade) + workspace Workspace @relation(fields: [workspace_id], references: [workspace_id], onDelete: Cascade) + + @@unique([user_id, workspace_id]) } model Board { - board_id String @id @default(uuid()) + board_id String @id @default(uuid()) title String description String? color String workspace_id String - workspace Workspace @relation(fields: [workspace_id], references: [workspace_id]) - lists List[] + + workspace Workspace @relation(fields: [workspace_id], references: [workspace_id], onDelete: Cascade) + lists List[] + + creator_id String + created_by User @relation("BoardCreator", fields: [creator_id], references: [user_id]) + + @@index([workspace_id]) } model List { - list_id String @id @default(uuid()) + list_id String @id @default(uuid()) title String position Int color String board_id String - board Board @relation(fields: [board_id], references: [board_id]) + board Board @relation(fields: [board_id], references: [board_id], onDelete: Cascade) cards Card[] + + @@index([board_id]) } model Card { - card_id String @id @default(uuid()) + card_id String @id @default(uuid()) title String description String? position Int @@ -102,7 +114,10 @@ model Card { card_labels CardLabel[] card_members CardMember[] attachments Attachment[] - list List @relation(fields: [list_id], references: [list_id]) + + list List @relation(fields: [list_id], references: [list_id], onDelete: Cascade) + + @@index([list_id]) } model Comment { @@ -112,17 +127,17 @@ model Comment { card_id String user_id String - card Card @relation(fields: [card_id], references: [card_id]) - user User @relation(fields: [user_id], references: [user_id]) + card Card @relation(fields: [card_id], references: [card_id], onDelete: Cascade) + user User @relation(fields: [user_id], references: [user_id], onDelete: Cascade) } model Label { - label_id String @id @default(uuid()) - name String - color String - workspace_id String - workspace Workspace @relation(fields: [workspace_id], references: [workspace_id]) - card_labels CardLabel[] + label_id String @id @default(uuid()) + name String + color String + workspace_id String + workspace Workspace @relation(fields: [workspace_id], references: [workspace_id], onDelete: Cascade) + card_labels CardLabel[] } model Attachment { @@ -130,15 +145,15 @@ model Attachment { card_id String url String filename String - card Card @relation(fields: [card_id], references: [card_id]) + card Card @relation(fields: [card_id], references: [card_id], onDelete: Cascade) } model CardLabel { card_id String label_id String - card Card @relation(fields: [card_id], references: [card_id]) - label Label @relation(fields: [label_id], references: [label_id]) + card Card @relation(fields: [card_id], references: [card_id], onDelete: Cascade) + label Label @relation(fields: [label_id], references: [label_id], onDelete: Cascade) @@id([card_id, label_id]) } @@ -147,8 +162,8 @@ model CardMember { card_id String user_id String - card Card @relation(fields: [card_id], references: [card_id]) - user User @relation(fields: [user_id], references: [user_id]) + card Card @relation(fields: [card_id], references: [card_id], onDelete: Cascade) + user User @relation(fields: [user_id], references: [user_id], onDelete: Cascade) @@id([card_id, user_id]) } diff --git a/backend/src/app.controller.spec.ts b/backend/src/app.controller.spec.ts new file mode 100644 index 0000000..2b4e328 --- /dev/null +++ b/backend/src/app.controller.spec.ts @@ -0,0 +1,29 @@ +/* +** EPITECH PROJECT, 2025 +** TaskFlow +** File description: +** app.controller.spec +*/ + +import { Test, TestingModule } from '@nestjs/testing'; +import { AppController } from './app.controller'; +import { AppService } from './app.service'; + +describe('AppController', () => { + let appController: AppController; + + beforeEach(async () => { + const app: TestingModule = await Test.createTestingModule({ + controllers: [AppController], + providers: [AppService], + }).compile(); + + appController = app.get(AppController); + }); + + describe('root', () => { + it('should return "Hello World!"', () => { + expect(appController.getHello()).toBe('Hello World!'); + }); + }); +}); diff --git a/backend/src/app.controller.ts b/backend/src/app.controller.ts new file mode 100644 index 0000000..affad8c --- /dev/null +++ b/backend/src/app.controller.ts @@ -0,0 +1,19 @@ +/* +** EPITECH PROJECT, 2025 +** TaskFlow +** File description: +** app.controller +*/ + +import { Controller, Get } from '@nestjs/common'; +import { AppService } from './app.service'; + +@Controller() +export class AppController { + constructor(private readonly appService: AppService) {} + + @Get() + getHello(): string { + return this.appService.getHello(); + } +} diff --git a/backend/src/app.module.ts b/backend/src/app.module.ts new file mode 100644 index 0000000..64864ef --- /dev/null +++ b/backend/src/app.module.ts @@ -0,0 +1,58 @@ +/* + ** EPITECH PROJECT, 2025 + ** TaskFlow + ** File description: + ** app.module + */ + +import { Module } from '@nestjs/common'; +import { AppController } from './app.controller'; +import { AppService } from './app.service'; +import { PrismaService } from './prisma/prisma.service'; +import { AuthModule } from './auth/auth.module'; +import { MercuriusDriver, MercuriusDriverConfig } from '@nestjs/mercurius'; +import { GraphQLModule } from '@nestjs/graphql'; +import { CommonModule } from './common/common.module'; +import { PrismaModule } from './prisma/prisma.module'; +import { WorkspaceResolver } from './workspace/workspace.resolver'; +import { WorkspaceService } from './workspace/workspace.service'; +import { join } from 'path'; +import { AuthGuard } from './common/guards/auth.guard'; +import { WorkspaceModule } from './workspace/workspace.module'; +import { JwtModule } from '@nestjs/jwt'; +import { WorkspaceGuard } from './common/guards/workspace.guard'; +import { ConfigService } from '@nestjs/config/dist/config.service'; +import { ConfigModule } from '@nestjs/config/dist/config.module'; +import { BoardModule } from './board/board.module'; +import { ListModule } from './list/list.module'; +import { CardModule } from './card/card.module'; +import { LabelModule } from './label/label.module'; + +@Module({ + imports: [ + ConfigModule.forRoot({ + isGlobal: true, + }), + GraphQLModule.forRoot({ + driver: MercuriusDriver, + typePaths: [join(process.cwd(), 'src/graphql/schemas/*.graphql')], + graphiql: true, + context: (request, reply) => ({ req: request, reply }), + definitions: { + path: join(process.cwd(), 'src/graphql/graphql.ts'), + outputAs: 'class', + }, + }), + AuthModule, + CommonModule, + PrismaModule, + WorkspaceModule, + BoardModule, + ListModule, + CardModule, + LabelModule, + ], + controllers: [AppController], + providers: [AppService], +}) +export class AppModule {} diff --git a/backend/src/app.service.ts b/backend/src/app.service.ts new file mode 100644 index 0000000..8d72cdc --- /dev/null +++ b/backend/src/app.service.ts @@ -0,0 +1,15 @@ +/* +** EPITECH PROJECT, 2025 +** TaskFlow +** File description: +** app.service +*/ + +import { Injectable } from '@nestjs/common'; + +@Injectable() +export class AppService { + getHello(): string { + return 'Hello World!'; + } +} diff --git a/backend/src/auth/auth.module.ts b/backend/src/auth/auth.module.ts new file mode 100644 index 0000000..9c1b005 --- /dev/null +++ b/backend/src/auth/auth.module.ts @@ -0,0 +1,35 @@ +/* +** EPITECH PROJECT, 2025 +** TaskFlow +** File description: +** auth.module +*/ + +import { Module } from '@nestjs/common'; +import { AuthService } from './auth.service'; +import { JwtModule } from '@nestjs/jwt'; +import { AuthResolver } from './auth.resolver'; +import { PrismaService } from '../prisma/prisma.service'; +import { AuthResultResolver } from './auth.resolver'; +import { ConfigModule } from '@nestjs/config/dist/config.module'; +import { ConfigService } from '@nestjs/config/dist/config.service'; + +@Module({ + imports: [ + ConfigModule.forRoot({ + isGlobal: true, + }), + JwtModule.registerAsync({ + global: true, + imports: [ConfigModule], + inject: [ConfigService], + useFactory: async (configService: ConfigService) => ({ + secret: configService.get('JWT_SECRET'), + signOptions: { expiresIn: '7d' }, + }), + }), + ], + providers: [AuthService, PrismaService, AuthResolver, AuthResultResolver], + exports: [AuthService], +}) +export class AuthModule {} diff --git a/backend/src/auth/auth.resolver.ts b/backend/src/auth/auth.resolver.ts new file mode 100644 index 0000000..0fa9cc8 --- /dev/null +++ b/backend/src/auth/auth.resolver.ts @@ -0,0 +1,157 @@ +/* + ** EPITECH PROJECT, 2025 + ** TaskFlow + ** File description: + ** auth.resolver + */ + +import { + Resolver, + Mutation, + Args, + Context, + ResolveField, +} from '@nestjs/graphql'; +import { AuthService } from './auth.service'; +import { FastifyReply } from 'fastify'; +import { RegisterInput, LoginInput } from '../graphql/graphql'; + +@Resolver('AuthResult') +export class AuthResultResolver { + @ResolveField() + __resolveType(value) { + return value.__typename; + } +} + +@Resolver() +export class AuthResolver { + constructor(private authService: AuthService) {} + + /** + * User authentication. + * * Returns an `AuthResult` containing the token on success. + * * @param input Email and Password + * ```graphql + * mutation Login($input: LoginInput!) { + * login(input: $input) { + * __typename + * # Success case + * ... on AuthSuccess { + * token + * user { + * username + * email + * } + * # Error case + * ... on AuthError { + * message + * code + * } + * } + * ``` + * ```json + * { + * "input": { + * "email": "john@example.com", + * "password": "secretPassword" + * } + * } + * ``` + */ + @Mutation() + async login( + @Args('input') + input: LoginInput, + @Context() context: { reply: FastifyReply }, + ) { + const result = await this.authService.loginUser(input); + + if (result.__typename === 'AuthSuccess' && result.token) { + context.reply.setCookie('session', result.token, { + httpOnly: true, + secure: process.env.NODE_ENV === 'production', + path: '/', + }); + } + return result; + } + + /** + * Mutation for user registration. + * * This mutation returns an Union (`AuthResult`): either a success with the token, or a detailed error. + * + * @param input The registration data (username, email, password) + * @returns An `AuthResult` which can be either `AuthSuccess` or `AuthError` + * + * ```graphql + * mutation Register($input: RegisterInput!) { + * register(input: $input) { + * __typename + * # Success case + * ... on AuthSuccess { + * token + * user { + * user_id + * username + * email + * } + * } + * # Error case + * ... on AuthError { + * message + * code + * field + * } + * } + * } + * ``` + * ```json + * { + * "input": { + * "username": "John", + * "email": "john@test.com", + * "password": "secretPassword" + * } + * } + * ``` + */ + @Mutation('register') + async register( + @Args('input') + input: RegisterInput, + @Context() context: { reply: FastifyReply }, + ) { + const result = await this.authService.registerUser(input); + + if (result.__typename === 'AuthSuccess' && result.token) { + context.reply.setCookie('session', result.token, { + httpOnly: true, + secure: process.env.NODE_ENV === 'production', + path: '/', + }); + } + return result; + } + + /** + * Logout mutation. + * This mutation clears the session cookie. + */ + @Mutation() + async logout(@Context() context: { reply: FastifyReply }) { + try { + context.reply.clearCookie('session', { path: '/' }); + return { + __typename: 'Success', + successMessage: 'Logout successful', + }; + } catch (error) { + return { + __typename: 'Error', + errorMessage: 'Logout failed', + code: 'LOGOUT_FAILED', + }; + } + } +} diff --git a/backend/src/auth/auth.service.spec.ts b/backend/src/auth/auth.service.spec.ts new file mode 100644 index 0000000..f1b7843 --- /dev/null +++ b/backend/src/auth/auth.service.spec.ts @@ -0,0 +1,171 @@ +/* + ** EPITECH PROJECT, 2025 + ** TaskFlow + ** File description: + ** auth.service.spec + */ + +import { Test, TestingModule } from '@nestjs/testing'; +import { AuthService } from './auth.service'; +import { PrismaService } from '../prisma/prisma.service'; +import { JwtService } from '@nestjs/jwt'; +import * as bcrypt from 'bcrypt'; +import { InternalServerErrorException } from '@nestjs/common'; + +jest.mock('bcrypt'); + +describe('AuthService', () => { + let service: AuthService; + let prisma: PrismaService; + let jwtService: JwtService; + + const mockPrismaService = { + user: { + findUnique: jest.fn(), + findUniqueOrThrow: jest.fn(), + create: jest.fn(), + }, + }; + + const mockJwtService = { + sign: jest.fn(), + }; + + beforeEach(async () => { + const module: TestingModule = await Test.createTestingModule({ + providers: [ + AuthService, + { provide: PrismaService, useValue: mockPrismaService }, + { provide: JwtService, useValue: mockJwtService }, + ], + }).compile(); + + service = module.get(AuthService); + prisma = module.get(PrismaService); + jwtService = module.get(JwtService); + + jest.clearAllMocks(); + }); + + describe('registerUser', () => { + const registerInput = { + username: 'testuser', + email: 'test@test.com', + password: 'password123', + }; + + it('should return AuthError if email is taken', async () => { + mockPrismaService.user.findUnique.mockResolvedValueOnce({ + user_id: '1', + }); + + const result = await service.registerUser(registerInput); + + expect(result).toEqual({ + __typename: 'AuthError', + message: 'Email already in use', + code: 'EMAIL_TAKEN', + field: 'email', + }); + }); + + it('should return AuthError if username is taken', async () => { + mockPrismaService.user.findUnique.mockResolvedValueOnce(null); + mockPrismaService.user.findUnique.mockResolvedValueOnce({ + user_id: '1', + }); + + const result = await service.registerUser(registerInput); + + expect(result).toEqual({ + __typename: 'AuthError', + message: 'Username already taken', + code: 'USERNAME_TAKEN', + field: 'username', + }); + }); + + it('should register successfully', async () => { + mockPrismaService.user.findUnique.mockResolvedValue(null); + (bcrypt.hash as jest.Mock).mockResolvedValue('hashed_pwd'); + const newUser = { user_id: '123', email: 'test@test.com' }; + mockPrismaService.user.create.mockResolvedValue(newUser); + mockJwtService.sign.mockReturnValue('fake_token'); + + const result = await service.registerUser(registerInput); + + expect(prisma.user.create).toHaveBeenCalled(); + expect(result).toEqual({ + __typename: 'AuthSuccess', + user: newUser, + token: 'fake_token', + }); + }); + + it('should return AuthError on unexpected crash', async () => { + mockPrismaService.user.findUnique.mockResolvedValue(null); + (bcrypt.hash as jest.Mock).mockResolvedValue('hash'); + + mockPrismaService.user.create.mockRejectedValue( + new Error('DB Dead'), + ); + + const result = await service.registerUser(registerInput); + + expect(result).toEqual({ + __typename: 'AuthError', + message: 'Registration failed', + code: 'REGISTRATION_FAILED', + }); + }); + }); + + describe('loginUser', () => { + const loginInput = { email: 'test@test.com', password: 'password123' }; + + it('should return AuthSuccess on valid credentials', async () => { + const mockUser = { + user_id: '1', + email: 'test@test.com', + hashed_password: 'hash', + }; + + mockPrismaService.user.findUniqueOrThrow.mockResolvedValue( + mockUser, + ); + (bcrypt.compare as jest.Mock).mockResolvedValue(true); // Password OK + mockJwtService.sign.mockReturnValue('token_xyz'); + + const result = await service.loginUser(loginInput); + + expect(result).toEqual({ + __typename: 'AuthSuccess', + user: mockUser, + token: 'token_xyz', + }); + }); + + it('should return AuthError on invalid password', async () => { + mockPrismaService.user.findUniqueOrThrow.mockResolvedValue({ + hashed_password: 'hash', + }); + (bcrypt.compare as jest.Mock).mockResolvedValue(false); // Password KO + + const result = await service.loginUser(loginInput); + + expect(result.__typename).toBe('AuthError'); + expect((result as any).code).toBe('INVALID_CREDENTIALS'); + }); + + it('should return AuthError if user not found (Prisma throws)', async () => { + mockPrismaService.user.findUniqueOrThrow.mockRejectedValue( + new Error('Not found'), + ); + + const result = await service.loginUser(loginInput); + + expect(result.__typename).toBe('AuthError'); + expect((result as any).code).toBe('INVALID_CREDENTIALS'); + }); + }); +}); diff --git a/backend/src/auth/auth.service.ts b/backend/src/auth/auth.service.ts new file mode 100644 index 0000000..75601b6 --- /dev/null +++ b/backend/src/auth/auth.service.ts @@ -0,0 +1,132 @@ +/* + ** EPITECH PROJECT, 2025 + ** TaskFlow + ** File description: + ** auth.service + */ + +import { Injectable } from '@nestjs/common'; +import { PrismaService } from '../prisma/prisma.service'; +import * as bcrypt from 'bcrypt'; +import { JwtService } from '@nestjs/jwt'; +import { RegisterInput, LoginInput } from '../graphql/graphql'; +import { Prisma } from '@prisma/client'; + +@Injectable() +export class AuthService { + constructor( + private prisma: PrismaService, + private jwtService: JwtService, + ) {} + + async loginUser(input: LoginInput) { + try { + const user = await this.prisma.user.findUniqueOrThrow({ + where: { email: input.email }, + }); + + const isPasswordValid = await bcrypt.compare( + input.password, + user.hashed_password, + ); + if (!isPasswordValid) { + throw new Error('Invalid credentials'); + } + + const token = this.jwtService.sign({ + sub: user.user_id, + email: user.email, + }); + return { + __typename: 'AuthSuccess', + user, + token + }; + } catch (error) { + return { + __typename: 'AuthError', + message: 'Invalid credentials', + code: 'INVALID_CREDENTIALS', + }; + } + } + + async registerUser(input: RegisterInput) { + const existingEmail = await this.prisma.user.findUnique({ + where: { email: input.email }, + }); + if (existingEmail) { + return { + __typename: 'AuthError', + message: 'Email already in use', + code: 'EMAIL_TAKEN', + field: 'email', + }; + } + + const existingUsername = await this.prisma.user.findUnique({ + where: { username: input.username }, + }); + if (existingUsername) { + return { + __typename: 'AuthError', + message: 'Username already taken', + code: 'USERNAME_TAKEN', + field: 'username', + }; + } + + try { + const hashedPassword = await bcrypt.hash(input.password, 10); + + const newUser = await this.prisma.user.create({ + data: { + username: input.username, + email: input.email, + hashed_password: hashedPassword, + }, + }); + + const token = this.jwtService.sign({ + sub: newUser.user_id, + email: newUser.email, + }); + + return { + __typename: 'AuthSuccess', + user: newUser, + token: token, + }; + } catch (error) { + if ( + error instanceof Prisma.PrismaClientKnownRequestError && + error.code === 'P2002' + ) { + const target = error.meta?.target as string[]; + + if (target.includes('email')) { + return { + __typename: 'AuthError', + message: 'Email already in use.', + code: 'EMAIL_TAKEN', + field: 'email', + }; + } + + if (target.includes('username')) { + return { + __typename: 'AuthError', + message: 'Username already taken', + code: 'USERNAME_TAKEN', + field: 'username', + }; + } + } + return { + __typename: 'AuthError', + message: 'Registration failed', + code: 'REGISTRATION_FAILED', + }; + } + } +} diff --git a/backend/src/board/board.module.ts b/backend/src/board/board.module.ts new file mode 100644 index 0000000..5d03382 --- /dev/null +++ b/backend/src/board/board.module.ts @@ -0,0 +1,9 @@ +import { Module } from '@nestjs/common'; +import { BoardService } from './board.service'; +import { BoardResolver } from './board.resolver'; + +@Module({ + providers: [BoardResolver, BoardService], + exports: [BoardService], +}) +export class BoardModule {} diff --git a/backend/src/board/board.resolver.spec.ts b/backend/src/board/board.resolver.spec.ts new file mode 100644 index 0000000..a9a9713 --- /dev/null +++ b/backend/src/board/board.resolver.spec.ts @@ -0,0 +1,70 @@ +/* +** EPITECH PROJECT, 2025 +** TaskFlow +** File description: +** board.resolver.spec +*/ + +import { Test, TestingModule } from '@nestjs/testing'; +import { BoardResolver } from './board.resolver'; +import { BoardService } from './board.service'; +import { PrismaService } from '../prisma/prisma.service'; +import { JwtService } from '@nestjs/jwt'; + +describe('BoardResolver', () => { + let resolver: BoardResolver; + let prisma: PrismaService; + + const mockBoardService = { + findOne: jest.fn(), + create: jest.fn(), + }; + + const mockPrismaService = { + list: { findMany: jest.fn() }, + user: { findUnique: jest.fn() }, + }; + + beforeEach(async () => { + const module: TestingModule = await Test.createTestingModule({ + providers: [ + BoardResolver, + { provide: BoardService, useValue: mockBoardService }, + { provide: PrismaService, useValue: mockPrismaService }, + { provide: JwtService, useValue: { verifyAsync: jest.fn() } }, + ], + }).compile(); + + resolver = module.get(BoardResolver); + prisma = module.get(PrismaService); + }); + + describe('getLists (Field Resolver)', () => { + it('should fetch lists belonging to the board ordered by position', async () => { + const parentBoard = { board_id: 'b-123' }; + const expectedLists = [{ id: 'l-1', title: 'To Do' }]; + + mockPrismaService.list.findMany.mockResolvedValue(expectedLists); + + const result = await resolver.getLists(parentBoard as any); + + expect(result).toEqual(expectedLists); + expect(prisma.list.findMany).toHaveBeenCalledWith({ + where: { board_id: 'b-123' }, + orderBy: { position: 'asc' }, + }); + }); + }); + + describe('getCreator (Field Resolver)', () => { + it('should fetch the user who created the board', async () => { + const parentBoard = { creator_id: 'u-999' }; + + await resolver.getCreator(parentBoard as any); + + expect(prisma.user.findUnique).toHaveBeenCalledWith({ + where: { user_id: 'u-999' }, + }); + }); + }); +}); diff --git a/backend/src/board/board.resolver.ts b/backend/src/board/board.resolver.ts new file mode 100644 index 0000000..fe74c77 --- /dev/null +++ b/backend/src/board/board.resolver.ts @@ -0,0 +1,91 @@ +/* + ** EPITECH PROJECT, 2025 + ** TaskFlow + ** File description: + ** board.resolver + */ + +import { + Args, + Mutation, + Query, + Resolver, + ResolveField, + Parent, + Context, +} from '@nestjs/graphql'; +import { BoardService } from './board.service'; +import { PrismaService } from '../prisma/prisma.service'; +import { CreateBoardInput, UpdateBoardInput, Board } from '../graphql/graphql'; +import { WorkspaceAuth } from '../common/decorators/workspace-auth.decorator'; +import { Role } from '@prisma/client'; +import { UseGuards } from '@nestjs/common'; +import { AuthGuard } from '../common/guards/auth.guard'; + +@Resolver('Board') +export class BoardResolver { + constructor( + private boardService: BoardService, + private prisma: PrismaService, + ) {} + + // ===== QUERIES & MUTATIONS ===== + @Query('board') + @UseGuards(AuthGuard) + async getBoard(@Args('board_id') id: string) { + return this.boardService.findOne(id); + } + + @Query('boards') + @WorkspaceAuth(Role.Viewer) + async getBoardsByWorkspace(@Args('workspace_id') workspaceId: string) { + return this.boardService.findAllByWorkspace(workspaceId); + } + + @Mutation('createBoard') + @WorkspaceAuth(Role.Member) + async createBoard( + @Args('input') input: CreateBoardInput, + @Context() context: any, + ) { + return this.boardService.create(context.user.user_id, input); + } + + @Mutation('updateBoard') + @UseGuards(AuthGuard) + async updateBoard( + @Args('board_id') id: string, + @Args('input') input: UpdateBoardInput, + ) { + return this.boardService.update(id, input); + } + + @Mutation('deleteBoard') + @UseGuards(AuthGuard) + async deleteBoard(@Args('board_id') id: string) { + return this.boardService.delete(id); + } + + // ===== RESOLVE FIELDS ===== + @ResolveField('lists') + async getLists(@Parent() board: Board) { + return this.prisma.list.findMany({ + where: { board_id: board.board_id }, + orderBy: { position: 'asc' }, + }); + } + + @ResolveField('created_by') + async getCreator(@Parent() board: Board) { + return this.prisma.user.findUnique({ + where: { user_id: (board as any).creator_id }, + }); + } + + @ResolveField('labels') + async getLabels(@Parent() board: Board) { + return this.prisma.label.findMany({ + where: { workspace_id: board.workspace_id }, + }); + } +} diff --git a/backend/src/board/board.service.spec.ts b/backend/src/board/board.service.spec.ts new file mode 100644 index 0000000..ad523a6 --- /dev/null +++ b/backend/src/board/board.service.spec.ts @@ -0,0 +1,72 @@ +import { Test, TestingModule } from '@nestjs/testing'; +import { BoardService } from './board.service'; +import { PrismaService } from '../prisma/prisma.service'; + +describe('BoardService', () => { + let service: BoardService; + let prisma: PrismaService; + + const mockPrismaService = { + board: { + create: jest.fn(), + findUniqueOrThrow: jest.fn(), + findMany: jest.fn(), + update: jest.fn(), + delete: jest.fn(), + }, + }; + + beforeEach(async () => { + const module: TestingModule = await Test.createTestingModule({ + providers: [ + BoardService, + { provide: PrismaService, useValue: mockPrismaService }, + ], + }).compile(); + + service = module.get(BoardService); + prisma = module.get(PrismaService); + jest.clearAllMocks(); + }); + + describe('create', () => { + it('should create a board linked to the user and workspace', async () => { + const userId = 'user-123'; + const input = { + title: 'Mon Tableau', + description: 'Desc', + color: '#fff', + workspace_id: 'ws-123', + }; + + mockPrismaService.board.create.mockResolvedValue({ + board_id: 'board-1', + ...input, + creator_id: userId, + }); + + const result = await service.create(userId, input); + + expect(result.board_id).toBe('board-1'); + expect(prisma.board.create).toHaveBeenCalledWith({ + data: { + ...input, + creator_id: userId, + }, + }); + }); + }); + + describe('findAllByWorkspace', () => { + it('should return boards ordered by title', async () => { + mockPrismaService.board.findMany.mockResolvedValue([]); + + await service.findAllByWorkspace('ws-123'); + + expect(prisma.board.findMany).toHaveBeenCalledWith({ + where: { workspace_id: 'ws-123' }, + orderBy: { title: 'asc' }, + }); + }); + }); +}); diff --git a/backend/src/board/board.service.ts b/backend/src/board/board.service.ts new file mode 100644 index 0000000..fd9312c --- /dev/null +++ b/backend/src/board/board.service.ts @@ -0,0 +1,81 @@ +/* + ** EPITECH PROJECT, 2025 + ** TaskFlow + ** File description: + ** board.service + */ + +import { Injectable } from '@nestjs/common'; +import { PrismaService } from '../prisma/prisma.service'; +import { CreateBoardInput, UpdateBoardInput } from '../graphql/graphql'; + +@Injectable() +export class BoardService { + constructor(private prisma: PrismaService) {} + + async create(userId: string, input: CreateBoardInput) { + return this.prisma.board.create({ + data: { + title: input.title, + description: input.description, + color: input.color, + workspace_id: input.workspace_id, + creator_id: userId, + }, + }); + } + + async findOne(boardId: string) { + return this.prisma.board.findUniqueOrThrow({ + where: { board_id: boardId }, + }); + } + + async findAllByWorkspace(workspaceId: string) { + return this.prisma.board.findMany({ + where: { workspace_id: workspaceId }, + orderBy: { title: 'asc' }, + }); + } + + async update(boardId: string, input: UpdateBoardInput) { + try { + await this.prisma.board.update({ + where: { board_id: boardId }, + data: { + title: input.title ?? undefined, + description: input.description ?? undefined, + color: input.color ?? undefined, + }, + }); + return { + __typename: 'Success', + successMessage: 'Board updated successfully', + }; + } catch (error) { + return { + __typename: 'Error', + errorMessage: 'Board update failed', + code: 'BOARD_UPDATE_FAILED', + }; + } + } + + async delete(boardId: string) { + try { + await this.prisma.board.delete({ + where: { board_id: boardId }, + }); + return { + __typename: 'Success', + successMessage: 'Board deleted successfully', + }; + } catch (error) { + return { + __typename: 'Error', + errorMessage: 'Board deletion failed', + code: 'BOARD_DELETION_FAILED', + }; + } + } +} diff --git a/backend/src/card/card.module.ts b/backend/src/card/card.module.ts new file mode 100644 index 0000000..535a954 --- /dev/null +++ b/backend/src/card/card.module.ts @@ -0,0 +1,8 @@ +import { Module } from '@nestjs/common'; +import { CardService } from './card.service'; +import { CardResolver } from './card.resolver'; + +@Module({ + providers: [CardService, CardResolver], +}) +export class CardModule {} diff --git a/backend/src/card/card.resolver.spec.ts b/backend/src/card/card.resolver.spec.ts new file mode 100644 index 0000000..deb462a --- /dev/null +++ b/backend/src/card/card.resolver.spec.ts @@ -0,0 +1,38 @@ +/* + ** EPITECH PROJECT, 2025 + ** TaskFlow + ** File description: + ** card.resolver.spec + */ + +import { Test, TestingModule } from '@nestjs/testing'; +import { CardResolver } from './card.resolver'; +import { CardService } from './card.service'; +import { PrismaService } from '../prisma/prisma.service'; +import { AuthGuard } from '../common/guards/auth.guard'; + +describe('CardResolver', () => { + let resolver: CardResolver; + + const mockCardService = {}; + const mockPrismaService = {}; + + beforeEach(async () => { + const module: TestingModule = await Test.createTestingModule({ + providers: [ + CardResolver, + { provide: CardService, useValue: mockCardService }, + { provide: PrismaService, useValue: mockPrismaService }, + ], + }) + .overrideGuard(AuthGuard) + .useValue({ canActivate: () => true }) + .compile(); + + resolver = module.get(CardResolver); + }); + + it('should be defined', () => { + expect(resolver).toBeDefined(); + }); +}); diff --git a/backend/src/card/card.resolver.ts b/backend/src/card/card.resolver.ts new file mode 100644 index 0000000..f507623 --- /dev/null +++ b/backend/src/card/card.resolver.ts @@ -0,0 +1,96 @@ +/* + ** EPITECH PROJECT, 2025 + ** TaskFlow + ** File description: + ** card.resolver + */ + +import { + Resolver, + Mutation, + Args, + ResolveField, + Parent, +} from '@nestjs/graphql'; +import { CardService } from './card.service'; +import { PrismaService } from '../prisma/prisma.service'; +import { CreateCardInput, UpdateCardInput, Card } from '../graphql/graphql'; +import { UseGuards } from '@nestjs/common'; +import { AuthGuard } from '../common/guards/auth.guard'; + +@Resolver('Card') +export class CardResolver { + constructor( + private cardService: CardService, + private prisma: PrismaService, + ) {} + + @Mutation('createCard') + @UseGuards(AuthGuard) + async createCard(@Args('input') input: CreateCardInput) { + return this.cardService.create(input); + } + + @Mutation('updateCardContent') + @UseGuards(AuthGuard) + async updateCard( + @Args('card_id') id: string, + @Args('input') input: UpdateCardInput, + ) { + return this.cardService.updateContent(id, input); + } + + @Mutation('moveCard') + @UseGuards(AuthGuard) + async moveCard( + @Args('card_id') id: string, + @Args('list_id') listId: string, + @Args('new_position') pos: number, + ) { + return this.cardService.move(id, listId, pos); + } + + @Mutation('deleteCard') + @UseGuards(AuthGuard) + async deleteCard(@Args('card_id') id: string) { + return this.cardService.delete(id); + } + + @Mutation('addLabelToCard') + @UseGuards(AuthGuard) + async addLabel( + @Args('card_id') cId: string, + @Args('label_id') lId: string, + ) { + return this.cardService.addLabel(cId, lId); + } + + @Mutation('removeLabelFromCard') + @UseGuards(AuthGuard) + async removeLabel( + @Args('card_id') cId: string, + @Args('label_id') lId: string, + ) { + return this.cardService.removeLabel(cId, lId); + } + + // --- FIELD RESOLVERS --- + + @ResolveField('labels') + async getLabels(@Parent() card: Card) { + const cardLabels = await this.prisma.cardLabel.findMany({ + where: { card_id: card.card_id }, + include: { label: true }, + }); + return cardLabels.map((cl) => cl.label); + } + + @ResolveField('assignees') + async getAssignees(@Parent() card: Card) { + const members = await this.prisma.cardMember.findMany({ + where: { card_id: card.card_id }, + include: { user: true }, + }); + return members.map((m) => m.user); + } +} diff --git a/backend/src/card/card.service.spec.ts b/backend/src/card/card.service.spec.ts new file mode 100644 index 0000000..60b54a2 --- /dev/null +++ b/backend/src/card/card.service.spec.ts @@ -0,0 +1,69 @@ +import { Test, TestingModule } from '@nestjs/testing'; +import { CardService } from './card.service'; +import { PrismaService } from '../prisma/prisma.service'; + +describe('CardService', () => { + let service: CardService; + let prisma: PrismaService; + + const mockPrismaService = { + card: { + findFirst: jest.fn(), + create: jest.fn(), + update: jest.fn(), + delete: jest.fn(), + findUniqueOrThrow: jest.fn(), + }, + cardLabel: { + delete: jest.fn(), + }, + }; + + beforeEach(async () => { + const module: TestingModule = await Test.createTestingModule({ + providers: [ + CardService, + { provide: PrismaService, useValue: mockPrismaService }, + ], + }).compile(); + + service = module.get(CardService); + prisma = module.get(PrismaService); + jest.clearAllMocks(); + }); + + describe('create', () => { + const input = { title: 'Task', list_id: 'list-1' }; + + it('should set position to 1 if list is empty', async () => { + mockPrismaService.card.findFirst.mockResolvedValue(null); + + await service.create(input); + + expect(prisma.card.create).toHaveBeenCalledWith({ + data: { ...input, position: 1 }, + }); + }); + + it('should increment position if list has cards', async () => { + mockPrismaService.card.findFirst.mockResolvedValue({ position: 4 }); + + await service.create(input); + + expect(prisma.card.create).toHaveBeenCalledWith({ + data: { ...input, position: 5 }, + }); + }); + }); + + describe('addLabel', () => { + it('should link label to card', async () => { + await service.addLabel('card-1', 'label-A'); + + expect(prisma.card.update).toHaveBeenCalledWith({ + where: { card_id: 'card-1' }, + data: { card_labels: { create: { label_id: 'label-A' } } }, + }); + }); + }); +}); diff --git a/backend/src/card/card.service.ts b/backend/src/card/card.service.ts new file mode 100644 index 0000000..b0c204b --- /dev/null +++ b/backend/src/card/card.service.ts @@ -0,0 +1,70 @@ +/* + ** EPITECH PROJECT, 2025 + ** TaskFlow + ** File description: + ** card.service + */ + +import { Injectable } from '@nestjs/common'; +import { PrismaService } from '../prisma/prisma.service'; +import { CreateCardInput, UpdateCardInput } from '../graphql/graphql'; + +@Injectable() +export class CardService { + constructor(private prisma: PrismaService) {} + + async create(input: CreateCardInput) { + const lastCard = await this.prisma.card.findFirst({ + where: { list_id: input.list_id }, + orderBy: { position: 'desc' }, + }); + const position = lastCard ? lastCard.position + 1 : 1; + + return this.prisma.card.create({ + data: { ...input, position }, + }); + } + + async updateContent(cardId: string, input: UpdateCardInput) { + return this.prisma.card.update({ + where: { card_id: cardId }, + data: { + title: input.title ?? undefined, + description: input.description ?? undefined, + due_date: input.due_date ?? undefined, + }, + }); + } + + async delete(cardId: string) { + await this.prisma.card.delete({ where: { card_id: cardId } }); + return { success: true, message: 'Card deleted' }; + } + + async move(cardId: string, listId: string, position: number) { + return this.prisma.card.update({ + where: { card_id: cardId }, + data: { list_id: listId, position }, + }); + } + + async addLabel(cardId: string, labelId: string) { + return this.prisma.card.update({ + where: { card_id: cardId }, + data: { + card_labels: { create: { label_id: labelId } }, + }, + }); + } + + async removeLabel(cardId: string, labelId: string) { + await this.prisma.cardLabel.delete({ + where: { + card_id_label_id: { card_id: cardId, label_id: labelId }, + }, + }); + return this.prisma.card.findUniqueOrThrow({ + where: { card_id: cardId }, + }); + } +} diff --git a/backend/src/common/common.module.ts b/backend/src/common/common.module.ts new file mode 100644 index 0000000..552bad1 --- /dev/null +++ b/backend/src/common/common.module.ts @@ -0,0 +1,20 @@ +/* +** EPITECH PROJECT, 2025 +** TaskFlow +** File description: +** common.module +*/ + +import { Global, Module } from '@nestjs/common'; +import { Prisma } from '@prisma/client'; +import { PrismaModule } from 'src/prisma/prisma.module'; +import { WorkspaceGuard } from './guards/workspace.guard'; +import { AuthGuard } from './guards/auth.guard'; + +@Global() +@Module({ + imports: [PrismaModule], + providers: [WorkspaceGuard, AuthGuard], + exports: [WorkspaceGuard, AuthGuard], +}) +export class CommonModule {} diff --git a/backend/src/common/decorators/workspace-auth.decorator.ts b/backend/src/common/decorators/workspace-auth.decorator.ts new file mode 100644 index 0000000..d5dcea6 --- /dev/null +++ b/backend/src/common/decorators/workspace-auth.decorator.ts @@ -0,0 +1,20 @@ +/* + ** EPITECH PROJECT, 2025 + ** TaskFlow + ** File description: + ** workspace-auth.decorator + */ + +import { SetMetadata, UseGuards, applyDecorators } from '@nestjs/common'; +import { Role } from '@prisma/client'; +import { WorkspaceGuard } from '../guards/workspace.guard'; +import { AuthGuard } from '../guards/auth.guard'; + +export const ROLES_KEY = 'roles'; + +export function WorkspaceAuth(role: Role = Role.Member) { + return applyDecorators( + SetMetadata(ROLES_KEY, role), + UseGuards(AuthGuard, WorkspaceGuard), + ); +} diff --git a/backend/src/common/guards/auth.guard.ts b/backend/src/common/guards/auth.guard.ts new file mode 100644 index 0000000..1a75de1 --- /dev/null +++ b/backend/src/common/guards/auth.guard.ts @@ -0,0 +1,53 @@ +/* + ** EPITECH PROJECT, 2025 + ** TaskFlow + ** File description: + ** auth.guard + */ + +import { + CanActivate, + ExecutionContext, + Injectable, + ForbiddenException, + UnauthorizedException +} from '@nestjs/common'; +import { PrismaService } from '../../prisma/prisma.service'; +import { GqlExecutionContext } from '@nestjs/graphql'; +import { JwtService } from '@nestjs/jwt'; + +@Injectable() +export class AuthGuard implements CanActivate { + constructor( + private prisma: PrismaService, + private jwtService: JwtService, + ) {} + + async canActivate(context: ExecutionContext): Promise { + const ctx = GqlExecutionContext.create(context); + const { req } = ctx.getContext(); + const token = req.cookies?.session; + + if (!token) { + throw new UnauthorizedException('Authentication required'); + } + + try { + const payload = await this.jwtService.verifyAsync(token); + const existingUser = await this.prisma.user.findUnique({ + where: { user_id: payload.sub }, + }); + + if (!existingUser) { + throw new ForbiddenException('User does not exist'); + } + + req.user = existingUser; + ctx.getContext().user = existingUser; + + return true; + } catch (error) { + throw new ForbiddenException('Invalid token'); + } + } +} diff --git a/backend/src/common/guards/workspace.guard.ts b/backend/src/common/guards/workspace.guard.ts new file mode 100644 index 0000000..ad85a4c --- /dev/null +++ b/backend/src/common/guards/workspace.guard.ts @@ -0,0 +1,77 @@ +/* + ** EPITECH PROJECT, 2025 + ** TaskFlow + ** File description: + ** workspace.guard + */ + +import { + CanActivate, + ExecutionContext, + Injectable, + ForbiddenException, +} from '@nestjs/common'; +import { Reflector } from '@nestjs/core'; +import { GqlExecutionContext } from '@nestjs/graphql'; +import { PrismaService } from '../../prisma/prisma.service'; +import { Role } from '@prisma/client'; +import { ROLES_KEY } from '../decorators/workspace-auth.decorator'; + +@Injectable() +export class WorkspaceGuard implements CanActivate { + constructor( + private reflector: Reflector, + private prisma: PrismaService, + ) {} + Ò; + private roleHierarchy = { + [Role.Viewer]: 1, + [Role.Member]: 2, + [Role.Admin]: 3, + }; + + async canActivate(context: ExecutionContext): Promise { + const requiredRole = this.reflector.getAllAndOverride(ROLES_KEY, [ + context.getHandler(), + context.getClass(), + ]); + + if (!requiredRole) return true; + + const ctx = GqlExecutionContext.create(context); + const { user } = ctx.getContext(); + const args = ctx.getArgs(); + + const workspaceId = args.workspace_id || args.input?.workspace_id; + if (!workspaceId) { + throw new ForbiddenException( + 'Cannot verify permissions: No workspace_id provided', + ); + } + + const membership = await this.prisma.workspaceMembers.findUnique({ + where: { + workspace_id_user_id: { + workspace_id: workspaceId, + user_id: user.user_id, + }, + }, + }); + + if (!membership) + throw new ForbiddenException( + 'You are not a member of this workspace', + ); + + const userLevel = this.roleHierarchy[membership.role]; + const requiredLevel = this.roleHierarchy[requiredRole]; + + if (userLevel < requiredLevel) { + throw new ForbiddenException( + `Insufficient permissions. Required: ${requiredRole}`, + ); + } + + return true; + } +} diff --git a/backend/src/graphql/graphql.ts b/backend/src/graphql/graphql.ts new file mode 100644 index 0000000..63af5dc --- /dev/null +++ b/backend/src/graphql/graphql.ts @@ -0,0 +1,313 @@ + +/* + * ------------------------------------------------------- + * THIS FILE WAS AUTOMATICALLY GENERATED (DO NOT MODIFY) + * ------------------------------------------------------- + */ + +/* tslint:disable */ +/* eslint-disable */ + +export enum Role { + Admin = "Admin", + Member = "Member", + Viewer = "Viewer" +} + +export class CreateBoardInput { + title: string; + description?: Nullable; + color: string; + workspace_id: string; +} + +export class UpdateBoardInput { + title?: Nullable; + description?: Nullable; + color?: Nullable; +} + +export class CreateListInput { + title: string; + board_id: string; + color?: Nullable; +} + +export class CreateLabelInput { + name: string; + color: string; + board_id: string; +} + +export class UpdateListInput { + title?: Nullable; + color?: Nullable; +} + +export class CreateCardInput { + title: string; + list_id: string; + description?: Nullable; + due_date?: Nullable; + color?: Nullable; +} + +export class UpdateCardInput { + title?: Nullable; + description?: Nullable; + due_date?: Nullable; +} + +export class LoginInput { + email: string; + password: string; +} + +export class RegisterInput { + username: string; + email: string; + password: string; +} + +export class CreateUserInput { + username: string; + email: string; + password: string; +} + +export class UpdateUserInput { + user_id: string; + username?: Nullable; + email?: Nullable; + password?: Nullable; +} + +export class CreateWorkspaceInput { + name: string; + description?: Nullable; + color?: Nullable; +} + +export class UpdateWorkspaceInput { + name?: Nullable; + description?: Nullable; + color?: Nullable; +} + +export class AddWorkspaceMemberInput { + workspace_id: string; + user_email: string; + role?: Nullable; +} + +export class UpdateMemberRoleInput { + workspace_id: string; + user_id: string; + role: Role; +} + +export class Board { + board_id: string; + title: string; + description?: Nullable; + color: string; + workspace_id: string; + created_by: User; + lists: List[]; + members: User[]; + labels: Label[]; +} + +export class List { + list_id: string; + title: string; + position: number; + color?: Nullable; + board_id: string; + cards: Card[]; +} + +export class Card { + card_id: string; + title: string; + description?: Nullable; + position: number; + list_id: string; + due_date?: Nullable; + labels: Label[]; + comments: Comment[]; + attachments: Attachment[]; + assignees: User[]; +} + +export class Comment { + comment_id: string; + content: string; + created_at: DateTime; + updated_at: DateTime; + card_id: string; + author: User; +} + +export class Label { + label_id: string; + name: string; + color: string; + board_id: string; +} + +export class Attachment { + attachment_id: string; + url: string; + filename: string; + mime_type?: Nullable; +} + +export abstract class IQuery { + abstract board(board_id: string): Nullable | Promise>; + + abstract boards(workspace_id: string): Board[] | Promise; + + abstract users(): Nullable[]> | Promise[]>>; + + abstract user(user_id: string): Nullable | Promise>; + + abstract me(): Nullable | Promise>; + + abstract workspaces(): Nullable[]> | Promise[]>>; + + abstract workspace(workspace_id: string): Nullable | Promise>; + + abstract workspaceMembers(workspace_id: string): WorkspaceMembers[] | Promise; +} + +export abstract class IMutation { + abstract createBoard(input: CreateBoardInput): Board | Promise; + + abstract updateBoard(board_id: string, input: UpdateBoardInput): Board | Promise; + + abstract deleteBoard(board_id: string): Status | Promise; + + abstract createList(input: CreateListInput): List | Promise; + + abstract updateList(list_id: string, input: UpdateListInput): List | Promise; + + abstract deleteList(list_id: string): Status | Promise; + + abstract moveList(list_id: string, new_position: number): List | Promise; + + abstract createCard(input: CreateCardInput): Card | Promise; + + abstract deleteCard(card_id: string): Status | Promise; + + abstract updateCardContent(card_id: string, input: UpdateCardInput): Card | Promise; + + abstract moveCard(card_id: string, list_id: string, new_position: number): Card | Promise; + + abstract addLabelToCard(card_id: string, label_id: string): Card | Promise; + + abstract removeLabelFromCard(card_id: string, label_id: string): Card | Promise; + + abstract addAssigneeToCard(card_id: string, user_id: string): Card | Promise; + + abstract removeAssigneeFromCard(card_id: string, user_id: string): Card | Promise; + + abstract createLabel(input: CreateLabelInput): Label | Promise