From 59a99ff3c8ac0e69cf5652d404b8f1223fae3107 Mon Sep 17 00:00:00 2001 From: Arno Kaimbacher Date: Fri, 17 Mar 2023 16:13:37 +0100 Subject: [PATCH] - second commit --- .dockerignore | 2 +- .prettierrc | 11 + Dockerfile | 2 +- app/Controllers/Http/Admin/UsersController.ts | 2 +- app/Controllers/Http/Api/AuthorsController.ts | 42 +- .../Http/Submitter/DatasetController.ts | 162 +++++ app/Models/License.ts | 37 ++ app/Models/Person.ts | 2 +- app/Validators/UpdateUserValidator.ts | 180 ++--- commands/ValidateChecksum.ts | 12 +- config/app.ts | 4 + database/migrations/acl_1_roles.ts | 38 +- env.ts | 32 +- package-lock.json | 625 ++++++++++-------- package.json | 17 +- public/assets/manifest.json | 13 +- resources/css/app.css | 48 +- resources/js/Components/AsideMenu.vue | 4 +- resources/js/Components/AsideMenuItem.vue | 2 +- resources/js/Components/AsideMenuLayer.vue | 4 +- resources/js/Components/AsideMenuList.vue | 36 +- resources/js/Components/CardBox.vue | 154 ++--- resources/js/Components/CardBoxModal.vue | 50 +- resources/js/Components/FormControl.vue | 239 +++---- resources/js/Components/FormField.vue | 61 +- resources/js/Components/Icons/Confirm.vue | 44 ++ resources/js/Components/Icons/Language.vue | 35 + resources/js/Components/Icons/Mandatory.vue | 35 + resources/js/Components/Icons/Recommendet.vue | 33 + resources/js/Components/Icons/Wizard.vue | 49 ++ resources/js/Components/NavBar.vue | 4 +- resources/js/Components/NavBarItem.vue | 2 +- resources/js/Components/NavBarMenu.vue | 2 +- resources/js/Components/OverlayLayer.vue | 2 +- .../js/Components/SearchAutocomplete.vue | 281 ++++++++ resources/js/Components/SectionMain.vue | 8 +- resources/js/Dataset.ts | 30 + resources/js/Layouts/LayoutAuthenticated.vue | 38 +- resources/js/Layouts/LayoutGuest.vue | 2 +- resources/js/Pages/Admin/Settings.vue | 2 +- resources/js/Pages/Admin/User/AccountInfo.vue | 23 +- resources/js/Pages/Admin/User/Create.vue | 8 +- resources/js/Pages/Admin/User/Edit.vue | 4 +- resources/js/Pages/Admin/User/Index.vue | 11 +- resources/js/Pages/Admin/User/Show.vue | 147 ++-- resources/js/Pages/Auth/Login.vue | 144 ++-- resources/js/Pages/Dashboard.vue | 14 +- .../js/Pages/Submitter/Dataset/Create.vue | 604 +++++++++++++++++ resources/js/Stores/{layout.js => layout.ts} | 0 resources/js/Stores/main.js | 62 -- resources/js/Stores/main.ts | 79 +++ resources/js/Stores/{style.js => style.ts} | 0 resources/js/app.js | 77 +-- resources/js/colors.js | 8 +- resources/js/menu.js | 43 -- resources/js/menu.ts | 46 ++ server.ts | 10 +- start/routes.ts | 20 + start/routes/api.ts | 1 + tailwind.config.js | 155 +++-- tsconfig.json | 5 +- 61 files changed, 2625 insertions(+), 1182 deletions(-) create mode 100644 .prettierrc create mode 100644 app/Controllers/Http/Submitter/DatasetController.ts create mode 100644 app/Models/License.ts create mode 100644 resources/js/Components/Icons/Confirm.vue create mode 100644 resources/js/Components/Icons/Language.vue create mode 100644 resources/js/Components/Icons/Mandatory.vue create mode 100644 resources/js/Components/Icons/Recommendet.vue create mode 100644 resources/js/Components/Icons/Wizard.vue create mode 100644 resources/js/Components/SearchAutocomplete.vue create mode 100644 resources/js/Dataset.ts create mode 100644 resources/js/Pages/Submitter/Dataset/Create.vue rename resources/js/Stores/{layout.js => layout.ts} (100%) delete mode 100644 resources/js/Stores/main.js create mode 100644 resources/js/Stores/main.ts rename resources/js/Stores/{style.js => style.ts} (100%) delete mode 100644 resources/js/menu.js create mode 100644 resources/js/menu.ts diff --git a/.dockerignore b/.dockerignore index faec7aa..1996ff9 100644 --- a/.dockerignore +++ b/.dockerignore @@ -8,7 +8,7 @@ README.md # Docker stuff .dockerignore Dockerfile* - +docker-compose.yml diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..9f4be4a --- /dev/null +++ b/.prettierrc @@ -0,0 +1,11 @@ +{ + "trailingComma": "all", + "tabWidth": 4, + "semi": true, + "singleQuote": true, + "useTabs": false, + "quoteProps": "consistent", + "bracketSpacing": true, + "arrowParens": "always", + "printWidth": 140 +} diff --git a/Dockerfile b/Dockerfile index 2b8b9fb..46f1c50 100644 --- a/Dockerfile +++ b/Dockerfile @@ -45,7 +45,7 @@ FROM base AS production # Copy package.* to the working directory with active user COPY --chown=node:node ./package*.json ./ -# We run NPM CI to install the exact versions of dependencies +# We run NPM CI to install the exact versions of production dependencies RUN npm ci --omit=dev # Copy files to the working directory from the build folder the user COPY --chown=node:node --from=build /home/node/app/build . diff --git a/app/Controllers/Http/Admin/UsersController.ts b/app/Controllers/Http/Admin/UsersController.ts index 05a3e93..2ad8f5b 100644 --- a/app/Controllers/Http/Admin/UsersController.ts +++ b/app/Controllers/Http/Admin/UsersController.ts @@ -117,7 +117,7 @@ export default class UsersController { const roles = await Role.query().pluck('name', 'id'); // const userHasRoles = user.roles; const userHasRoles = await user.related('roles').query().orderBy('name').pluck('id'); - + // let test = Object.keys(userHasRoles).map((key) => userHasRoles[key]); return inertia.render('Admin/User/Edit', { roles: roles, user: user, diff --git a/app/Controllers/Http/Api/AuthorsController.ts b/app/Controllers/Http/Api/AuthorsController.ts index a249089..4a30746 100644 --- a/app/Controllers/Http/Api/AuthorsController.ts +++ b/app/Controllers/Http/Api/AuthorsController.ts @@ -4,20 +4,34 @@ import Person from 'App/Models/Person'; // node ace make:controller Author export default class AuthorsController { + public async index({}: HttpContextContract) { + // select * from gba.persons + // where exists (select * from gba.documents inner join gba.link_documents_persons on "documents"."id" = "link_documents_persons"."document_id" + // where ("link_documents_persons"."role" = 'author') and ("persons"."id" = "link_documents_persons"."person_id")); + const authors = await Person.query() + .whereHas('datasets', (dQuery) => { + dQuery.wherePivot('role', 'author'); + }) + .withCount('datasets', (query) => { + query.as('datasets_count'); + }); - public async index({}: HttpContextContract) { - // select * from gba.persons - // where exists (select * from gba.documents inner join gba.link_documents_persons on "documents"."id" = "link_documents_persons"."document_id" - // where ("link_documents_persons"."role" = 'author') and ("persons"."id" = "link_documents_persons"."person_id")); - const authors = await Person.query() - .whereHas('datasets', (dQuery) => { - dQuery.wherePivot('role', 'author') - }) - .withCount('datasets', (query) => { - query.as('datasets_count') - }); - - return authors; - } + return authors; + } + public async persons({ request }: HttpContextContract) { + const authors = Person.query().where('status', true); + + if (request.input('filter')) { + // users = users.whereRaw('name like %?%', [request.input('search')]) + const searchTerm = request.input('filter'); + authors + .where('first_name', 'ilike', `%${searchTerm}%`) + .orWhere('last_name', 'like', `%${searchTerm}%`) + .orWhere('email', 'like', `%${searchTerm}%`); + } + + let persons = await authors; + return persons; + } } diff --git a/app/Controllers/Http/Submitter/DatasetController.ts b/app/Controllers/Http/Submitter/DatasetController.ts new file mode 100644 index 0000000..d582db0 --- /dev/null +++ b/app/Controllers/Http/Submitter/DatasetController.ts @@ -0,0 +1,162 @@ +import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'; +// import User from 'App/Models/User'; +// import Role from 'App/Models/Role'; +// import Database from '@ioc:Adonis/Lucid/Database'; +import License from 'App/Models/License'; +// import type { ModelQueryBuilderContract } from '@ioc:Adonis/Lucid/Orm'; +// import CreateUserValidator from 'App/Validators/CreateUserValidator'; +// import UpdateUserValidator from 'App/Validators/UpdateUserValidator'; +// import { RenderResponse } from '@ioc:EidelLev/Inertia'; +import { schema, CustomMessages, rules } from '@ioc:Adonis/Core/Validator'; + +enum TitleTypes { + Main = 'Main', + Sub = 'Sub', + Alternative = 'Alternative', + Translated = 'Translated', + Other = 'Other', +} + +enum DescriptionTypes { + Abstract = 'Abstract', + Methods = 'Methods', + Series_information = 'Series_information', + Technical_info = 'Technical_info', + Translated = 'Translated', + Other = 'Other', +} + +export default class DatasetController { + public async create({ inertia }: HttpContextContract) { + const licenses = await License.query().select('id', 'name_long').pluck('name_long', 'id'); + + const doctypes = { + analysisdata: { label: 'Analysis', value: 'analysisdata' }, + measurementdata: { label: 'Measurements', value: 'measurementdata' }, + monitoring: 'Monitoring', + remotesensing: 'Remote Sensing', + gis: 'GIS', + models: 'Models', + mixedtype: 'Mixed Type', + }; + + // const titletypes = { + // Sub: 'Sub', + // Alternative: 'Alternative', + // Translated: 'Translated', + // Other: 'Other', + // }; + + // const languages = await Database.from('languages').select('*').where('active', true); + return inertia.render('Submitter/Dataset/Create', { + licenses: licenses, + doctypes: doctypes, + titletypes: Object.values(TitleTypes).filter((x) => x.valueOf() !== 'Main'), + descriptiontypes: Object.values(DescriptionTypes).filter((x) => x.valueOf() !== 'Abstract'), + // descriptiontypes: DescriptionTypes + }); + } + + public async firstStep({ request, response }: HttpContextContract) { + const newDatasetSchema = schema.create({ + language: schema.string({ trim: true }, [ + rules.regex(/^[a-zA-Z0-9-_]+$/), //Must be alphanumeric with hyphens or underscores + ]), + licenses: schema.array([rules.minLength(1)]).members(schema.number()), // define at least one license for the new dataset + rights: schema.string([rules.equalTo('true')]), + }); + + try { + // Step 2 - Validate request body against the schema + + await request.validate({ schema: newDatasetSchema, messages: this.messages }); + // console.log({ payload }); + } catch (error) { + // Step 3 - Handle errors + // return response.badRequest(error.messages); + throw error; + } + return response.redirect().back(); + } + + public async secondStep({ request, response }: HttpContextContract) { + const newDatasetSchema = schema.create({ + language: schema.string({ trim: true }, [ + rules.regex(/^[a-zA-Z0-9-_]+$/), //Must be alphanumeric with hyphens or underscores + ]), + licenses: schema.array([rules.minLength(1)]).members(schema.number()), // define at least one license for the new dataset + type: schema.string({ trim: true }, [rules.minLength(3), rules.maxLength(255)]), + creating_corporation: schema.string({ trim: true }, [rules.minLength(3), rules.maxLength(255)]), + titles: schema.array([rules.minLength(1)]).members( + schema.object().members({ + value: schema.string({ trim: true }, [rules.minLength(3), rules.maxLength(255)]), + type: schema.enum(Object.values(TitleTypes)), + language: schema.string({ trim: true }, [rules.minLength(2), rules.maxLength(255)]), + }), + ), + descriptions: schema.array([rules.minLength(1)]).members( + schema.object().members({ + value: schema.string({ trim: true }, [rules.minLength(3), rules.maxLength(255)]), + type: schema.enum(Object.values(DescriptionTypes)), + language: schema.string({ trim: true }, [rules.minLength(2), rules.maxLength(255)]), + }), + ), + }); + + try { + // Step 2 - Validate request body against the schema + await request.validate({ schema: newDatasetSchema, messages: this.messages }); + // console.log({ payload }); + } catch (error) { + // Step 3 - Handle errors + // return response.badRequest(error.messages); + throw error; + } + return response.redirect().back(); + } + + // public async store({ request, response, session }: HttpContextContract) { + // // node ace make:validator CreateUser + // try { + // // Step 2 - Validate request body against the schema + // await request.validate(CreateUserValidator); + // // console.log({ payload }); + // } catch (error) { + // // Step 3 - Handle errors + // // return response.badRequest(error.messages); + // throw error; + // } + // const input = request.only(['login', 'email', 'password']); + // const user = await User.create(input); + // if (request.input('roles')) { + // const roles: Array = request.input('roles'); + // await user.related('roles').attach(roles); + // } + + // session.flash('message', 'User has been created successfully'); + // return response.redirect().toRoute('user.index'); + // } + + public messages: CustomMessages = { + 'minLength': '{{ field }} must be at least {{ options.minLength }} characters long', + 'maxLength': '{{ field }} must be less then {{ options.maxLength }} characters long', + 'required': '{{ field }} is required', + 'unique': '{{ field }} must be unique, and this value is already taken', + // 'confirmed': '{{ field }} is not correct', + 'licences.minLength': 'at least {{ options.minLength }} permission must be defined', + 'licences.*.number': 'Define roles as valid numbers', + 'rights.equalTo': 'you must agree to continue', + + 'titles.0.value.minLength': 'Main Title must be at least {{ options.minLength }} characters long', + 'titles.0.value.required': 'Main Title is required', + 'titles.*.value.required': 'Additional title is required, if defined', + 'titles.*.type.required': 'Additional title type is required', + 'titles.*.language.required': 'Additional title language is required', + + 'descriptions.0.value.minLength': 'Main Abstract must be at least {{ options.minLength }} characters long', + 'descriptions.0.value.required': 'Main Abstract is required', + 'descriptions.*.value.required': 'Additional description is required, if defined', + 'descriptions.*.type.required': 'Additional description type is required', + 'descriptions.*.language.required': 'Additional description language is required', + }; +} diff --git a/app/Models/License.ts b/app/Models/License.ts new file mode 100644 index 0000000..23dfa0c --- /dev/null +++ b/app/Models/License.ts @@ -0,0 +1,37 @@ +import { column, BaseModel, SnakeCaseNamingStrategy } from '@ioc:Adonis/Lucid/Orm'; + +export default class License extends BaseModel { + public static namingStrategy = new SnakeCaseNamingStrategy(); + public static primaryKey = 'id'; + public static table = 'document_licences'; + public static selfAssignPrimaryKey = false; + + @column({ + isPrimary: true, + }) + public id: number; + + @column({}) + public active: boolean; + + @column({}) + public langauge: string; + + @column({}) + public link_licence: string; + + @column({}) + public link_logo: string; + + @column({}) + public display_name: string; + + @column({}) + public name_long: string; + + @column({}) + public name: string; + + @column({}) + public sortOrder: number; +} diff --git a/app/Models/Person.ts b/app/Models/Person.ts index 7225715..e8735be 100644 --- a/app/Models/Person.ts +++ b/app/Models/Person.ts @@ -54,7 +54,7 @@ export default class Person extends BaseModel { serializeAs: 'name' }) public get fullName() { - return this.firstName + ' ' + this.lastName; + return `${this.firstName} ${this.lastName} (${this.email})`; } @computed() diff --git a/app/Validators/UpdateUserValidator.ts b/app/Validators/UpdateUserValidator.ts index 5051eb8..ab6222a 100644 --- a/app/Validators/UpdateUserValidator.ts +++ b/app/Validators/UpdateUserValidator.ts @@ -3,101 +3,101 @@ import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'; // import { Request } from '@adonisjs/core/build/standalone'; export default class UpdateUserValidator { - protected ctx: HttpContextContract; - public schema; + protected ctx: HttpContextContract; + public schema; - constructor(ctx: HttpContextContract) { - this.ctx = ctx; - this.schema = this.createSchema(); - } + constructor(ctx: HttpContextContract) { + this.ctx = ctx; + this.schema = this.createSchema(); + } - // public get schema() { - // return this._schema; - // } + // public get schema() { + // return this._schema; + // } - private createSchema() { - return schema.create({ - login: schema.string({ trim: true }, [ - rules.minLength(3), - rules.maxLength(50), - rules.unique({ - table: 'accounts', - column: 'login', - // whereNot: { id: this.refs.id } - whereNot: { id: this.ctx?.params.id }, - }), - // rules.regex(/^[a-zA-Z0-9-_]+$/), - //Must be alphanumeric with hyphens or underscores - ]), - email: schema.string({}, [ - rules.email(), - rules.unique({ table: 'accounts', column: 'email', whereNot: { id: this.ctx?.params.id } }), - ]), - password: schema.string.optional([rules.confirmed(), rules.minLength(6)]), - roles: schema.array.optional([rules.minLength(1)]).members(schema.number()), // define at least one role for the new user - }); - } + private createSchema() { + return schema.create({ + login: schema.string({ trim: true }, [ + rules.minLength(3), + rules.maxLength(50), + rules.unique({ + table: 'accounts', + column: 'login', + // whereNot: { id: this.refs.id } + whereNot: { id: this.ctx?.params.id }, + }), + // rules.regex(/^[a-zA-Z0-9-_]+$/), + //Must be alphanumeric with hyphens or underscores + ]), + email: schema.string({}, [ + rules.email(), + rules.unique({ table: 'accounts', column: 'email', whereNot: { id: this.ctx?.params.id } }), + ]), + password: schema.string.optional([rules.confirmed(), rules.minLength(6)]), + roles: schema.array.optional([rules.minLength(1)]).members(schema.number()), // define at least one role for the new user + }); + } - /* - * Define schema to validate the "shape", "type", "formatting" and "integrity" of data. - * - * For example: - * 1. The username must be of data type string. But then also, it should - * not contain special characters or numbers. - * ``` - * schema.string({}, [ rules.alpha() ]) - * ``` - * - * 2. The email must be of data type string, formatted as a valid - * email. But also, not used by any other user. - * ``` - * schema.string({}, [ - * rules.email(), - * rules.unique({ table: 'users', column: 'email' }), - * ]) - * ``` - */ + /* + * Define schema to validate the "shape", "type", "formatting" and "integrity" of data. + * + * For example: + * 1. The username must be of data type string. But then also, it should + * not contain special characters or numbers. + * ``` + * schema.string({}, [ rules.alpha() ]) + * ``` + * + * 2. The email must be of data type string, formatted as a valid + * email. But also, not used by any other user. + * ``` + * schema.string({}, [ + * rules.email(), + * rules.unique({ table: 'users', column: 'email' }), + * ]) + * ``` + */ - // public refs = schema.refs({ - // id: this.ctx.params.id - // }) + // public refs = schema.refs({ + // id: this.ctx.params.id + // }) - // public schema = schema.create({ - // login: schema.string({ trim: true }, [ - // rules.minLength(3), - // rules.maxLength(50), - // rules.unique({ - // table: 'accounts', - // column: 'login', - // // whereNot: { id: this.refs.id } - // whereNot: { id: this.ctx?.params.id }, - // }), - // // rules.regex(/^[a-zA-Z0-9-_]+$/), - // //Must be alphanumeric with hyphens or underscores - // ]), - // email: schema.string({}, [rules.email(), rules.unique({ table: 'accounts', column: 'email' })]), - // password: schema.string.optional([rules.confirmed(), rules.minLength(6)]), - // roles: schema.array([rules.minLength(1)]).members(schema.number()), // define at least one role for the new user - // }); + // public schema = schema.create({ + // login: schema.string({ trim: true }, [ + // rules.minLength(3), + // rules.maxLength(50), + // rules.unique({ + // table: 'accounts', + // column: 'login', + // // whereNot: { id: this.refs.id } + // whereNot: { id: this.ctx?.params.id }, + // }), + // // rules.regex(/^[a-zA-Z0-9-_]+$/), + // //Must be alphanumeric with hyphens or underscores + // ]), + // email: schema.string({}, [rules.email(), rules.unique({ table: 'accounts', column: 'email' })]), + // password: schema.string.optional([rules.confirmed(), rules.minLength(6)]), + // roles: schema.array([rules.minLength(1)]).members(schema.number()), // define at least one role for the new user + // }); - /** - * Custom messages for validation failures. You can make use of dot notation `(.)` - * for targeting nested fields and array expressions `(*)` for targeting all - * children of an array. For example: - * - * { - * 'profile.username.required': 'Username is required', - * 'scores.*.number': 'Define scores as valid numbers' - * } - * - */ - public messages: CustomMessages = { - 'minLength': '{{ field }} must be at least {{ options.minLength }} characters long', - 'maxLength': '{{ field }} must be less then {{ options.maxLength }} characters long', - 'required': '{{ field }} is required', - 'unique': '{{ field }} must be unique, and this value is already taken', - 'confirmed': '{{ field }} is not correct', - 'roles.minLength': 'at least {{ options.minLength }} role must be defined', - 'roles.*.number': 'Define roles as valid numbers', - }; + /** + * Custom messages for validation failures. You can make use of dot notation `(.)` + * for targeting nested fields and array expressions `(*)` for targeting all + * children of an array. For example: + * + * { + * 'profile.username.required': 'Username is required', + * 'scores.*.number': 'Define scores as valid numbers' + * } + * + */ + public messages: CustomMessages = { + 'minLength': '{{ field }} must be at least {{ options.minLength }} characters long', + 'maxLength': '{{ field }} must be less then {{ options.maxLength }} characters long', + 'required': '{{ field }} is required', + 'unique': '{{ field }} must be unique, and this value is already taken', + 'confirmed': '{{ field }} is not correct', + 'roles.minLength': 'at least {{ options.minLength }} role must be defined', + 'roles.*.number': 'Define roles as valid numbers', + }; } diff --git a/commands/ValidateChecksum.ts b/commands/ValidateChecksum.ts index 14515c7..a7f1b97 100644 --- a/commands/ValidateChecksum.ts +++ b/commands/ValidateChecksum.ts @@ -1,6 +1,8 @@ import { BaseCommand } from '@adonisjs/core/build/standalone'; import crypto from 'crypto'; import fs from 'fs'; +// import Config from '@ioc:Adonis/Core/Config'; +import Logger from '@ioc:Adonis/Core/Logger' export default class ValidateChecksum extends BaseCommand { /** @@ -37,6 +39,9 @@ export default class ValidateChecksum extends BaseCommand { // query all files from database: const files = await File.query().preload('hashvalues'); + // const logLevel = Config.get('app.logger.level', 'info'); + // console.log(this.logger.) + for (var file of files) { let hashValue = await file.related('hashvalues').query().pluck('value', 'type'); @@ -45,16 +50,17 @@ export default class ValidateChecksum extends BaseCommand { try { calculatedMd5FileHash = await this.checksumFile(filePath, 'md5'); } catch (exception) { - this.logger.error(exception.message); + // this.logger.error(exception.message); + Logger.error(exception.message); continue; } if (hashValue['md5'] == calculatedMd5FileHash) { - this.logger.info( + Logger.info( `File id ${file.id}: stored md5 checksum: ${calculatedMd5FileHash}, control md5 checksum: ${hashValue['md5']}`, ); } else { - this.logger.logError( + Logger.error( `File id ${file.id}: stored md5 checksum: ${calculatedMd5FileHash}, control md5 checksum: ${hashValue['md5']}`, ); } diff --git a/config/app.ts b/config/app.ts index 6de7abb..3e7dcc0 100644 --- a/config/app.ts +++ b/config/app.ts @@ -154,6 +154,10 @@ export const logger: LoggerConfig = { | */ level: Env.get('LOG_LEVEL', 'info'), + redact: { + paths: ['password', '*.password'], + }, + /* |-------------------------------------------------------------------------- diff --git a/database/migrations/acl_1_roles.ts b/database/migrations/acl_1_roles.ts index 7eb4d66..bdf592f 100644 --- a/database/migrations/acl_1_roles.ts +++ b/database/migrations/acl_1_roles.ts @@ -1,25 +1,25 @@ -import BaseSchema from '@ioc:Adonis/Lucid/Schema' -import Config from '@ioc:Adonis/Core/Config' +import BaseSchema from '@ioc:Adonis/Lucid/Schema'; +import Config from '@ioc:Adonis/Core/Config'; export default class Roles extends BaseSchema { - protected tableName = Config.get('rolePermission.role_table', 'roles') + protected tableName = Config.get('rolePermission.role_table', 'roles'); - public async up () { - this.schema.createTable(this.tableName, (table) => { - table.increments('id') - table.string('name', 191).unique() - table.string('slug', 191).nullable().unique() - table.string('description', 191).nullable() + public async up() { + this.schema.createTable(this.tableName, (table) => { + table.increments('id'); + table.string('name', 191).unique(); + table.string('slug', 191).nullable().unique(); + table.string('description', 191).nullable(); - /** - * Uses timestamptz for PostgreSQL and DATETIME2 for MSSQL - */ - table.timestamp('created_at', { useTz: true }).nullable() - table.timestamp('updated_at', { useTz: true }).nullable() - }) - } + /** + * Uses timestamptz for PostgreSQL and DATETIME2 for MSSQL + */ + table.timestamp('created_at', { useTz: true }).nullable(); + table.timestamp('updated_at', { useTz: true }).nullable(); + }); + } - public async down () { - this.schema.dropTable(this.tableName) - } + public async down() { + this.schema.dropTable(this.tableName); + } } diff --git a/env.ts b/env.ts index 8907a34..8fceaf9 100644 --- a/env.ts +++ b/env.ts @@ -12,21 +12,21 @@ | */ -import Env from '@ioc:Adonis/Core/Env' +import Env from '@ioc:Adonis/Core/Env'; export default Env.rules({ - HOST: Env.schema.string({ format: 'host' }), - PORT: Env.schema.number(), - APP_KEY: Env.schema.string(), - APP_NAME: Env.schema.string(), - CACHE_VIEWS: Env.schema.boolean(), - SESSION_DRIVER: Env.schema.string(), - DRIVE_DISK: Env.schema.enum(['local'] as const), - NODE_ENV: Env.schema.enum(['development', 'production', 'test'] as const), - DB_CONNECTION: Env.schema.string(), - PG_HOST: Env.schema.string({ format: 'host' }), - PG_PORT: Env.schema.number(), - PG_USER: Env.schema.string(), - PG_PASSWORD: Env.schema.string.optional(), - PG_DB_NAME: Env.schema.string(), -}) + HOST: Env.schema.string({ format: 'host' }), + PORT: Env.schema.number(), + APP_KEY: Env.schema.string(), + APP_NAME: Env.schema.string(), + CACHE_VIEWS: Env.schema.boolean(), + SESSION_DRIVER: Env.schema.string(), + DRIVE_DISK: Env.schema.enum(['local'] as const), + NODE_ENV: Env.schema.enum(['development', 'production', 'test'] as const), + DB_CONNECTION: Env.schema.string(), + PG_HOST: Env.schema.string({ format: 'host' }), + PG_PORT: Env.schema.number(), + PG_USER: Env.schema.string(), + PG_PASSWORD: Env.schema.string.optional(), + PG_DB_NAME: Env.schema.string(), +}); diff --git a/package-lock.json b/package-lock.json index e5ea49a..53f076e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,7 +16,9 @@ "@adonisjs/shield": "^7.1.0", "@adonisjs/view": "^6.1.5", "@eidellev/adonis-stardust": "^3.0.0", - "@eidellev/inertia-adonisjs": "^7.4.0", + "@eidellev/inertia-adonisjs": "^8.0.0", + "@fontsource/archivo-black": "^4.5.9", + "@fontsource/inter": "^4.5.15", "@inertiajs/inertia": "^0.11.1", "@inertiajs/vue3": "^1.0.0", "bcryptjs": "^2.4.3", @@ -58,7 +60,7 @@ "naive-ui": "^2.34.3", "numeral": "^2.0.6", "pinia": "^2.0.30", - "pino-pretty": "^9.1.1", + "pino-pretty": "^10.0.0", "postcss-loader": "^7.0.2", "prettier": "^2.8.3", "tailwindcss": "^3.2.4", @@ -611,21 +613,21 @@ } }, "node_modules/@adonisjs/sink": { - "version": "5.4.2", - "resolved": "https://registry.npmjs.org/@adonisjs/sink/-/sink-5.4.2.tgz", - "integrity": "sha512-rPrB+tb3OfKaGpdF0zejlZOJSjqH53DCG9z939ylECosTLZ+i0kFD6g0Z+1gQ9KSe5jMtygj9Rw525pqBg8HSA==", + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@adonisjs/sink/-/sink-5.4.3.tgz", + "integrity": "sha512-wmAft/tjHQLtjbDjntaVu3/cmeP+3tXKDaMeWjVf6Dz+tXaM9XNg2EVVSV41F3JDF4W1u9ich9mC+4wvWJDy5g==", "dev": true, "dependencies": { - "@poppinss/cliui": "^3.0.2", + "@poppinss/cliui": "^3.0.5", "@poppinss/prompts": "^2.0.2", "@poppinss/utils": "^5.0.0", "cp-file": "^9.1.0", "fs-extra": "^10.1.0", - "marked": "^4.1.0", + "marked": "^4.2.12", "marked-terminal": "^5.1.1", - "mrm-core": "^7.1.6", + "mrm-core": "7.1.13", "mustache": "^4.2.0", - "open": "^8.4.0" + "open": "^8.4.2" }, "peerDependencies": { "@adonisjs/application": "^5.0.0" @@ -751,21 +753,21 @@ } }, "node_modules/@babel/core": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.0.tgz", - "integrity": "sha512-PuxUbxcW6ZYe656yL3EAhpy7qXKq0DmYsrJLpbB8XrsCP9Nm+XCg9XFMb5vIDliPD7+U/+M+QJlH17XOcB7eXA==", + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.3.tgz", + "integrity": "sha512-qIJONzoa/qiHghnm0l1n4i/6IIziDpzqc36FBs4pzMhDUraHqponwJLiAKm1hGLP3OSB/TVNz6rMwVGpwxxySw==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.21.0", + "@babel/generator": "^7.21.3", "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-module-transforms": "^7.21.0", + "@babel/helper-module-transforms": "^7.21.2", "@babel/helpers": "^7.21.0", - "@babel/parser": "^7.21.0", + "@babel/parser": "^7.21.3", "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.0", - "@babel/types": "^7.21.0", + "@babel/traverse": "^7.21.3", + "@babel/types": "^7.21.3", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -790,12 +792,12 @@ } }, "node_modules/@babel/generator": { - "version": "7.21.1", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.1.tgz", - "integrity": "sha512-1lT45bAYlQhFn/BHivJs43AiW2rg3/UbLyShGfF3C0KmHvO5fSghWd5kBJy30kpRRucGzXStvnnCFniCR2kXAA==", + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.3.tgz", + "integrity": "sha512-QS3iR1GYC/YGUnW7IdggFeN5c1poPUurnGttOV/bZgPGV+izC/D8HnD6DLwod0fsatNyVn1G3EVWMYIF0nHbeA==", "dev": true, "dependencies": { - "@babel/types": "^7.21.0", + "@babel/types": "^7.21.3", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" @@ -1187,9 +1189,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.21.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.2.tgz", - "integrity": "sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ==", + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.3.tgz", + "integrity": "sha512-lobG0d7aOfQRXh8AyklEAgZGvA4FShxo6xQbUrrT/cNBPUdIDojlokwJsQyCC/eKia7ifqM0yP+2DRZ4WKw2RQ==", "bin": { "parser": "bin/babel-parser.js" }, @@ -1821,9 +1823,9 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.7.tgz", - "integrity": "sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA==", + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.21.3.tgz", + "integrity": "sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.20.2" @@ -2059,9 +2061,9 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.7.tgz", - "integrity": "sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA==", + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.21.3.tgz", + "integrity": "sha512-Wxc+TvppQG9xWFYatvCGPvZ6+SIUxQ2ZdiBP+PHYMIjnPXD+uThCshaz4NZOnODAtBjjcVQQ/3OKs9LW28purQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.20.2" @@ -2225,11 +2227,12 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.21.0.tgz", - "integrity": "sha512-xo///XTPp3mDzTtrqXoBlK9eiAYW3wv9JXglcn/u1bi60RW11dEUxIgA8cbnDhutS1zacjMRmAwxE0gMklLnZg==", + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.21.3.tgz", + "integrity": "sha512-RQxPz6Iqt8T0uw/WsJNReuBpWpBqs/n7mNo18sKLoTbMp+UrEekhH+pKSVC7gWz+DNjo9gryfV8YzCiT45RgMw==", "dev": true, "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-create-class-features-plugin": "^7.21.0", "@babel/helper-plugin-utils": "^7.20.2", "@babel/plugin-syntax-typescript": "^7.20.0" @@ -2436,19 +2439,19 @@ } }, "node_modules/@babel/traverse": { - "version": "7.21.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.2.tgz", - "integrity": "sha512-ts5FFU/dSUPS13tv8XiEObDu9K+iagEKME9kAbaP7r0Y9KtZJZ+NGndDvWoRAYNpeWafbpFeki3q9QoMD6gxyw==", + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.3.tgz", + "integrity": "sha512-XLyopNeaTancVitYZe2MlUEvgKb6YVVPXzofHgqHijCImG33b/uTurMS488ht/Hbsb2XK3U2BnSTxKVNGV3nGQ==", "dev": true, "dependencies": { "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.21.1", + "@babel/generator": "^7.21.3", "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-function-name": "^7.21.0", "@babel/helper-hoist-variables": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.21.2", - "@babel/types": "^7.21.2", + "@babel/parser": "^7.21.3", + "@babel/types": "^7.21.3", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -2457,9 +2460,9 @@ } }, "node_modules/@babel/types": { - "version": "7.21.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.2.tgz", - "integrity": "sha512-3wRZSs7jiFaB8AjxiiD+VqN5DTG2iRvJGQ+qYFrs/654lg6kGTQWIOFjlBo5RaXuAZjBmP3+OQH4dmhqiiyYxw==", + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", + "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", "dev": true, "dependencies": { "@babel/helper-string-parser": "^7.19.4", @@ -2519,9 +2522,9 @@ } }, "node_modules/@eidellev/inertia-adonisjs": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@eidellev/inertia-adonisjs/-/inertia-adonisjs-7.4.0.tgz", - "integrity": "sha512-vSQz9/PAMtHPLfa2+2NY8lfkgf3fnfN0S2lqyLRQNEe+6lKIwhGomnHkhQ/1IiIHIZ7kqbE4p6Wmj9Jitcixug==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@eidellev/inertia-adonisjs/-/inertia-adonisjs-8.0.0.tgz", + "integrity": "sha512-nnlgS4P6OAjdV8cGcA1HdgdGoo5g6bdifTfSwjSSi3ijl+0aQgGK+R1cnLp+HCdEgQwnbxacAptVNd2r67u0bA==", "dependencies": { "@types/md5": "^2.3.2", "html-entities": "^2.3.3", @@ -2537,15 +2540,39 @@ "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==", "dev": true }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.3.0.tgz", + "integrity": "sha512-v3oplH6FYCULtFuCeqyuTd9D2WKO937Dxdq+GmHOLL72TTRriLxz2VLlNfkZRsvj6PKnOPAtuT6dwrs/pA5DvA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.4.0.tgz", + "integrity": "sha512-A9983Q0LnDGdLPjxyXQ00sbV+K+O+ko2Dr+CZigbHWtX9pNfxlaBkMR8X1CztI73zuEyEBXTVjx7CE+/VSwDiQ==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, "node_modules/@eslint/eslintrc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.0.tgz", - "integrity": "sha512-fluIaaV+GyV24CCu/ggiHdV+j4RNh85yQnAYS/G2mZODZgGmmlrgCydjUcV3YvxCm9x8nMAfThsqTni4KiXT4A==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.1.tgz", + "integrity": "sha512-eFRmABvW2E5Ho6f5fHLqgena46rOj7r7OKHYfLElqcBfGFHHpjBhivyi5+jOEQuSpdc/1phIZJlbC2te+tZNIw==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.4.0", + "espree": "^9.5.0", "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", @@ -2606,9 +2633,9 @@ } }, "node_modules/@eslint/js": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.35.0.tgz", - "integrity": "sha512-JXdzbRiWclLVoD8sNUjR443VVlYqiYmDVT6rGUEIEHU5YJW0gaVZwV2xgM7D4arkvASqD0IlLUVjHiFuxaftRw==", + "version": "8.36.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.36.0.tgz", + "integrity": "sha512-lxJ9R5ygVm8ZWgYdUweoq5ownDlJ4upvoWmO4eLxBYHdMo+vZ/Rx0EN6MbKWDJOSUGrqJy2Gt+Dyv/VKml0fjg==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -2623,6 +2650,16 @@ "npm": ">=6.0.0" } }, + "node_modules/@fontsource/archivo-black": { + "version": "4.5.9", + "resolved": "https://registry.npmjs.org/@fontsource/archivo-black/-/archivo-black-4.5.9.tgz", + "integrity": "sha512-4RJFvUub8nW1GGXxznLqtdh0DuFUTti7/uTzZ/Gs9SRq9bdiMqwZ+0SsF/mA8uERO37kg/YJuQ5fydJCi/DD5Q==" + }, + "node_modules/@fontsource/inter": { + "version": "4.5.15", + "resolved": "https://registry.npmjs.org/@fontsource/inter/-/inter-4.5.15.tgz", + "integrity": "sha512-FzleM9AxZQK2nqsTDtBiY0PMEVWvnKnuu2i09+p6DHvrHsuucoV2j0tmw+kAT3L4hvsLdAIDv6MdGehsPIdT+Q==" + }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.8", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", @@ -2739,23 +2776,20 @@ } }, "node_modules/@japa/base-reporter": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@japa/base-reporter/-/base-reporter-1.1.1.tgz", - "integrity": "sha512-ahhlu5kni6rp5zlANDM1oeqqFADlNLMY/ZV6EAywKz5SBik3AgFVeTt5nw+aX8L5FIYEh9xPPvnfLSzgzxha2Q==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@japa/base-reporter/-/base-reporter-1.1.2.tgz", + "integrity": "sha512-6MYs/EsXjouFPNUQL3VGllryZ5enI5rqhvQbY2Dzh3Zmhu22DWw6v9d2pxucrFptDTtQ38MBPVL/BIeZAafmOw==", "dev": true, "dependencies": { "@japa/errors-printer": "^2.1.0", "@poppinss/cliui": "^3.0.5", "ms": "^2.1.3" - }, - "peerDependencies": { - "@japa/core": "^7.0.0" } }, "node_modules/@japa/core": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/@japa/core/-/core-7.3.2.tgz", - "integrity": "sha512-OtYs6j3nro5Ew57HRZ4AwFC6dB91PB0ZhTnltISMa0lgSXf6mPU3Ma8+7T/t5sYreMLObAAzuS6viVmBZB7AhQ==", + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@japa/core/-/core-7.3.3.tgz", + "integrity": "sha512-3mkWlzWVALZANFfMK6Q6xtYGM3mpzZeeGGUVQGDt2OOxvL8FDADVxHrRn9BFc1V4fVJO4jR/QH5utrb+RfCF5g==", "dev": true, "dependencies": { "@poppinss/hooks": "^6.0.2-0", @@ -3612,9 +3646,9 @@ "dev": true }, "node_modules/@types/eslint": { - "version": "8.21.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.21.1.tgz", - "integrity": "sha512-rc9K8ZpVjNcLs8Fp0dkozd5Pt2Apk1glO4Vgz8ix1u6yFByxfqo5Yavpy65o+93TAe24jr7v+eSBtFLvOQtCRQ==", + "version": "8.21.2", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.21.2.tgz", + "integrity": "sha512-EMpxUyystd3uZVByZap1DACsMXvb82ypQnGn89e1Y0a+LYu3JJscUd/gqhRsVFDkaD2MIiWo0MT8EfXr3DGRKw==", "dev": true, "peer": true, "dependencies": { @@ -3739,9 +3773,9 @@ "dev": true }, "node_modules/@types/lodash-es": { - "version": "4.17.6", - "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.6.tgz", - "integrity": "sha512-R+zTeVUKDdfoRxpAryaQNRKk3105Rrgx2CFRClIgRGaqDTdjsm8h6IYA8ir584W3ePzkZfst5xIgDwYrlh9HLg==", + "version": "4.17.7", + "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.7.tgz", + "integrity": "sha512-z0ptr6UI10VlU6l5MYhGwS4mC8DZyYer2mCoyysZtSF7p26zOX8UpbrV0YpNYLGS8K4PUFIyEr62IMFFjveSiQ==", "dev": true, "dependencies": { "@types/lodash": "*" @@ -3770,15 +3804,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "18.14.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.5.tgz", - "integrity": "sha512-CRT4tMK/DHYhw1fcCEBwME9CSaZNclxfzVMe7GsO6ULSwsttbj70wSiX6rZdIjGblu93sTJxLdhNIT85KKI7Qw==" - }, - "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true + "version": "18.15.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.3.tgz", + "integrity": "sha512-p6ua9zBxz5otCmbpb5D3U4B5Nanw6Pk3PPyX05xnxbB/fRv71N7CPmORg7uAD5P70T0xmx1pzAx/FUfa5X+3cw==" }, "node_modules/@types/pino": { "version": "6.3.12", @@ -3890,9 +3918,9 @@ } }, "node_modules/@types/validator": { - "version": "13.7.13", - "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.7.13.tgz", - "integrity": "sha512-EMfHccxNKXaSxTK6DN0En9WsXa7uR4w3LQtx31f6Z2JjG5hJQeVX5zUYMZoatjZgnoQmRcT94WnNWwi0BzQW6Q==" + "version": "13.7.14", + "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.7.14.tgz", + "integrity": "sha512-J6OAed6rhN6zyqL9Of6ZMamhlsOEU/poBVvbHr/dKOYKTeuYYMlDkMv+b6UUV0o2i0tw73cgyv/97WTWaUl0/g==" }, "node_modules/@types/ws": { "version": "8.5.4", @@ -3919,19 +3947,19 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.54.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.54.0.tgz", - "integrity": "sha512-+hSN9BdSr629RF02d7mMtXhAJvDTyCbprNYJKrXETlul/Aml6YZwd90XioVbjejQeHbb3R8Dg0CkRgoJDxo8aw==", + "version": "5.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.55.0.tgz", + "integrity": "sha512-IZGc50rtbjk+xp5YQoJvmMPmJEYoC53SiKPXyqWfv15XoD2Y5Kju6zN0DwlmaGJp1Iw33JsWJcQ7nw0lGCGjVg==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.54.0", - "@typescript-eslint/type-utils": "5.54.0", - "@typescript-eslint/utils": "5.54.0", + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.55.0", + "@typescript-eslint/type-utils": "5.55.0", + "@typescript-eslint/utils": "5.55.0", "debug": "^4.3.4", "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", "natural-compare-lite": "^1.4.0", - "regexpp": "^3.2.0", "semver": "^7.3.7", "tsutils": "^3.21.0" }, @@ -3953,14 +3981,14 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.54.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.54.0.tgz", - "integrity": "sha512-aAVL3Mu2qTi+h/r04WI/5PfNWvO6pdhpeMRWk9R7rEV4mwJNzoWf5CCU5vDKBsPIFQFjEq1xg7XBI2rjiMXQbQ==", + "version": "5.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.55.0.tgz", + "integrity": "sha512-ppvmeF7hvdhUUZWSd2EEWfzcFkjJzgNQzVST22nzg958CR+sphy8A6K7LXQZd6V75m1VKjp+J4g/PCEfSCmzhw==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.54.0", - "@typescript-eslint/types": "5.54.0", - "@typescript-eslint/typescript-estree": "5.54.0", + "@typescript-eslint/scope-manager": "5.55.0", + "@typescript-eslint/types": "5.55.0", + "@typescript-eslint/typescript-estree": "5.55.0", "debug": "^4.3.4" }, "engines": { @@ -3980,13 +4008,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.54.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.54.0.tgz", - "integrity": "sha512-VTPYNZ7vaWtYna9M4oD42zENOBrb+ZYyCNdFs949GcN8Miwn37b8b7eMj+EZaq7VK9fx0Jd+JhmkhjFhvnovhg==", + "version": "5.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.55.0.tgz", + "integrity": "sha512-OK+cIO1ZGhJYNCL//a3ROpsd83psf4dUJ4j7pdNVzd5DmIk+ffkuUIX2vcZQbEW/IR41DYsfJTB19tpCboxQuw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.54.0", - "@typescript-eslint/visitor-keys": "5.54.0" + "@typescript-eslint/types": "5.55.0", + "@typescript-eslint/visitor-keys": "5.55.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -3997,13 +4025,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.54.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.54.0.tgz", - "integrity": "sha512-WI+WMJ8+oS+LyflqsD4nlXMsVdzTMYTxl16myXPaCXnSgc7LWwMsjxQFZCK/rVmTZ3FN71Ct78ehO9bRC7erYQ==", + "version": "5.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.55.0.tgz", + "integrity": "sha512-ObqxBgHIXj8rBNm0yh8oORFrICcJuZPZTqtAFh0oZQyr5DnAHZWfyw54RwpEEH+fD8suZaI0YxvWu5tYE/WswA==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "5.54.0", - "@typescript-eslint/utils": "5.54.0", + "@typescript-eslint/typescript-estree": "5.55.0", + "@typescript-eslint/utils": "5.55.0", "debug": "^4.3.4", "tsutils": "^3.21.0" }, @@ -4024,9 +4052,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.54.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.54.0.tgz", - "integrity": "sha512-nExy+fDCBEgqblasfeE3aQ3NuafBUxZxgxXcYfzYRZFHdVvk5q60KhCSkG0noHgHRo/xQ/BOzURLZAafFpTkmQ==", + "version": "5.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.55.0.tgz", + "integrity": "sha512-M4iRh4AG1ChrOL6Y+mETEKGeDnT7Sparn6fhZ5LtVJF1909D5O4uqK+C5NPbLmpfZ0XIIxCdwzKiijpZUOvOug==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -4037,13 +4065,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.54.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.54.0.tgz", - "integrity": "sha512-X2rJG97Wj/VRo5YxJ8Qx26Zqf0RRKsVHd4sav8NElhbZzhpBI8jU54i6hfo9eheumj4oO4dcRN1B/zIVEqR/MQ==", + "version": "5.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.55.0.tgz", + "integrity": "sha512-I7X4A9ovA8gdpWMpr7b1BN9eEbvlEtWhQvpxp/yogt48fy9Lj3iE3ild/1H3jKBBIYj5YYJmS2+9ystVhC7eaQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.54.0", - "@typescript-eslint/visitor-keys": "5.54.0", + "@typescript-eslint/types": "5.55.0", + "@typescript-eslint/visitor-keys": "5.55.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -4114,18 +4142,18 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.54.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.54.0.tgz", - "integrity": "sha512-cuwm8D/Z/7AuyAeJ+T0r4WZmlnlxQ8wt7C7fLpFlKMR+dY6QO79Cq1WpJhvZbMA4ZeZGHiRWnht7ZJ8qkdAunw==", + "version": "5.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.55.0.tgz", + "integrity": "sha512-FkW+i2pQKcpDC3AY6DU54yl8Lfl14FVGYDgBTyGKB75cCwV3KpkpTMFi9d9j2WAJ4271LR2HeC5SEWF/CZmmfw==", "dev": true, "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.54.0", - "@typescript-eslint/types": "5.54.0", - "@typescript-eslint/typescript-estree": "5.54.0", + "@typescript-eslint/scope-manager": "5.55.0", + "@typescript-eslint/types": "5.55.0", + "@typescript-eslint/typescript-estree": "5.55.0", "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0", "semver": "^7.3.7" }, "engines": { @@ -4162,12 +4190,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.54.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.54.0.tgz", - "integrity": "sha512-xu4wT7aRCakGINTLGeyGqDn+78BwFlggwBjnHa1ar/KaGagnmwLYmlrXIrgAaQ3AE1Vd6nLfKASm7LrFHNbKGA==", + "version": "5.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.55.0.tgz", + "integrity": "sha512-q2dlHHwWgirKh1D3acnuApXG+VNXpEY5/AwRxDVuEQpxWaB0jCDe0jFMVMALJ3ebSfuOVE8/rMS+9ZOYGg1GWw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.54.0", + "@typescript-eslint/types": "5.55.0", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -5201,9 +5229,9 @@ } }, "node_modules/autoprefixer": { - "version": "10.4.13", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz", - "integrity": "sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==", + "version": "10.4.14", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz", + "integrity": "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==", "dev": true, "funding": [ { @@ -5216,8 +5244,8 @@ } ], "dependencies": { - "browserslist": "^4.21.4", - "caniuse-lite": "^1.0.30001426", + "browserslist": "^4.21.5", + "caniuse-lite": "^1.0.30001464", "fraction.js": "^4.2.0", "normalize-range": "^0.1.2", "picocolors": "^1.0.0", @@ -5529,6 +5557,21 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, + "node_modules/body-parser/node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/body-parser/node_modules/raw-body": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", @@ -5783,9 +5826,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001460", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001460.tgz", - "integrity": "sha512-Bud7abqjvEjipUkpLs4D7gR0l8hBYBHoa+tGtKJHvT2AYzLp1z7EmVkUT4ERpVUfca8S2HGIVs883D8pUH1ZzQ==", + "version": "1.0.30001467", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001467.tgz", + "integrity": "sha512-cEdN/5e+RPikvl9AHm4uuLXxeCNq8rFsQ+lPHTfe/OtypP3WwnVVbjn+6uBV7PaFL6xUFzTh+sSCOz1rKhcO+Q==", "dev": true, "funding": [ { @@ -6422,9 +6465,9 @@ } }, "node_modules/core-js-compat": { - "version": "3.29.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.29.0.tgz", - "integrity": "sha512-ScMn3uZNAFhK2DGoEfErguoiAHhV2Ju+oJo/jK08p7B3f3UhocUrCCkTvnZaiS+edl5nlIoiBXKcwMc6elv4KQ==", + "version": "3.29.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.29.1.tgz", + "integrity": "sha512-QmchCua884D8wWskMX8tW5ydINzd8oSJVx38lx/pVkFGqztxt73GYre3pm/hyYq8bPf+MW5In4I/uRShFDsbrA==", "dev": true, "dependencies": { "browserslist": "^4.21.5" @@ -6441,19 +6484,39 @@ "dev": true }, "node_modules/cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.1.0.tgz", + "integrity": "sha512-0tLZ9URlPGU7JsKq0DQOQ3FoRsYX8xDZ7xMiATQfaiGMz7EHowNkbU9u1coAOmnh9p/1ySpm0RB3JNWRXM5GCg==", "dev": true, "dependencies": { - "@types/parse-json": "^4.0.0", "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" + "path-type": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + } + }, + "node_modules/cosmiconfig/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 + }, + "node_modules/cosmiconfig/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, "node_modules/cosmiconfig/node_modules/path-type": { @@ -6682,13 +6745,13 @@ } }, "node_modules/css-minimizer-webpack-plugin/node_modules/jest-worker": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.4.3.tgz", - "integrity": "sha512-GLHN/GTAAMEy5BFdvpUfzr9Dr80zQqBrh0fz1mtRMe05hqP45+HfQltu7oTBfduD0UeZs09d+maFtFYAXFWvAA==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.5.0.tgz", + "integrity": "sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==", "dev": true, "dependencies": { "@types/node": "*", - "jest-util": "^29.4.3", + "jest-util": "^29.5.0", "merge-stream": "^2.0.0", "supports-color": "^8.0.0" }, @@ -7010,9 +7073,9 @@ "dev": true }, "node_modules/deepmerge": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.0.tgz", - "integrity": "sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og==", + "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==", "engines": { "node": ">=0.10.0" } @@ -7469,9 +7532,9 @@ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "node_modules/electron-to-chromium": { - "version": "1.4.317", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.317.tgz", - "integrity": "sha512-JhCRm9v30FMNzQSsjl4kXaygU+qHBD0Yh7mKxyjmF0V8VwYVB6qpBRX28GyAucrM9wDCpSUctT6FpMUQxbyKuA==", + "version": "1.4.332", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.332.tgz", + "integrity": "sha512-c1Vbv5tuUlBFp0mb3mCIjw+REEsgthRgNE8BlbEDKmvzb8rxjcVki6OkQP83vLN34s0XCxpSkq7AZNep1a6xhw==", "dev": true }, "node_modules/emittery": { @@ -7619,13 +7682,15 @@ } }, "node_modules/eslint": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.35.0.tgz", - "integrity": "sha512-BxAf1fVL7w+JLRQhWl2pzGeSiGqbWumV4WNvc9Rhp6tiCtm4oHnyPBSEtMGZwrQgudFQ+otqzWoPB7x+hxoWsw==", + "version": "8.36.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.36.0.tgz", + "integrity": "sha512-Y956lmS7vDqomxlaaQAHVmeb4tNMp2FWIvU/RnU5BD3IKMD/MJPr76xdyr68P8tV1iNMvN2mRK0yy3c+UjL+bw==", "dev": true, "dependencies": { - "@eslint/eslintrc": "^2.0.0", - "@eslint/js": "8.35.0", + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.4.0", + "@eslint/eslintrc": "^2.0.1", + "@eslint/js": "8.36.0", "@humanwhocodes/config-array": "^0.11.8", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -7636,9 +7701,8 @@ "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", + "espree": "^9.5.0", "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -7660,7 +7724,6 @@ "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.1", - "regexpp": "^3.2.0", "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", "text-table": "^0.2.0" @@ -7676,9 +7739,9 @@ } }, "node_modules/eslint-config-prettier": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.6.0.tgz", - "integrity": "sha512-bAF0eLpLVqP5oEVUFKpMA+NnRFICwn9X8B5jrR9FcqnYBuPbqWEjTEspPWMj5ye6czoSLDweCzSo3Ko7gGrZaA==", + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.7.0.tgz", + "integrity": "sha512-HHVXLSlVUhMSmyW4ZzEuvjpwqamgmlfkutD53cYXLikh4pt/modINRcCIApJ84czDxM4GZInwUrromsDdTImTA==", "dev": true, "bin": { "eslint-config-prettier": "bin/cli.js" @@ -7737,33 +7800,6 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, "node_modules/eslint-visitor-keys": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", @@ -7897,9 +7933,9 @@ } }, "node_modules/espree": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", - "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.0.tgz", + "integrity": "sha512-JPbJGhKc47++oo4JkEoTe2wjy4fmMwvFpgJT9cQzmfXKp22Dr6Hf1tdCteLz1h0P3t+mGvWZ+4Uankvh8+c6zw==", "dev": true, "dependencies": { "acorn": "^8.8.0", @@ -8232,6 +8268,21 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, + "node_modules/express/node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -9053,9 +9104,9 @@ } }, "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + "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==" }, "node_modules/grapheme-splitter": { "version": "1.0.4", @@ -9309,9 +9360,9 @@ } }, "node_modules/help-me/node_modules/readable-stream": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.1.tgz", - "integrity": "sha512-+rQmrWMYGA90yenhTYsLWAsLsqVC8osOw6PKE1HDYiO0gdPeKe/xDHNzIAIn4C91YQ6oenEhfYqqc1883qHbjQ==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -9969,15 +10020,15 @@ } }, "node_modules/jest-diff": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.4.3.tgz", - "integrity": "sha512-YB+ocenx7FZ3T5O9lMVMeLYV4265socJKtkwgk/6YUz/VsEzYDkiMuMhWzZmxm3wDRQvayJu/PjkjjSkjoHsCA==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.5.0.tgz", + "integrity": "sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==", "dev": true, "dependencies": { "chalk": "^4.0.0", "diff-sequences": "^29.4.3", "jest-get-type": "^29.4.3", - "pretty-format": "^29.4.3" + "pretty-format": "^29.5.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -10199,12 +10250,12 @@ } }, "node_modules/jest-util": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.4.3.tgz", - "integrity": "sha512-ToSGORAz4SSSoqxDSylWX8JzkOQR7zoBtNRsA7e+1WUX5F8jrOwaNpuh1YfJHJKDHXLHmObv5eOjejUd+/Ws+Q==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz", + "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==", "dev": true, "dependencies": { - "@jest/types": "^29.4.3", + "@jest/types": "^29.5.0", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -10216,9 +10267,9 @@ } }, "node_modules/jest-util/node_modules/@jest/types": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.4.3.tgz", - "integrity": "sha512-bPYfw8V65v17m2Od1cv44FH+SiKW7w2Xu7trhcdTLUmSv85rfKsP+qXSjO4KGJr4dtPSzl/gvslZBXctf1qGEA==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", + "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", "dev": true, "dependencies": { "@jest/schemas": "^29.4.3", @@ -10576,6 +10627,16 @@ "knex": "^2.0.0" } }, + "node_modules/launch-editor": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.0.tgz", + "integrity": "sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ==", + "dev": true, + "dependencies": { + "picocolors": "^1.0.0", + "shell-quote": "^1.7.3" + } + }, "node_modules/leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -10770,9 +10831,9 @@ } }, "node_modules/luxon": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.2.1.tgz", - "integrity": "sha512-QrwPArQCNLAKGO/C+ZIilgIuDnEnKx5QYODdDtbFaxzsbZcc/a7WFq7MhsVYgRlwawLtvOUESTlfJ+hc/USqPg==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.3.0.tgz", + "integrity": "sha512-An0UCfG/rSiqtAIiBPO0Y9/zAnHUZxAMiCpTd5h2smgsj7GGmcenvrvww2cqNA8/4A5ZrD1gJpHN2mIHZQF+Mg==", "engines": { "node": ">=12" } @@ -11057,9 +11118,9 @@ } }, "node_modules/mini-css-extract-plugin": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.2.tgz", - "integrity": "sha512-EdlUizq13o0Pd+uCp+WO/JpkLvHRVGt97RqfeGhXqAcorYo1ypJSpkV+WDT0vY/kmh/p7wRdJNJtuyK540PXDw==", + "version": "2.7.5", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.5.tgz", + "integrity": "sha512-9HaR++0mlgom81s95vvNjxkg52n2b5s//3ZTI1EtzFb98awsLSivs2LMsVqnQ3ay0PVhqWcGNyDaTE961FOcjQ==", "dev": true, "dependencies": { "schema-utils": "^4.0.0" @@ -12140,14 +12201,14 @@ } }, "node_modules/pg": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/pg/-/pg-8.9.0.tgz", - "integrity": "sha512-ZJM+qkEbtOHRuXjmvBtOgNOXOtLSbxiMiUVMgE4rV6Zwocy03RicCVvDXgx8l4Biwo8/qORUnEqn2fdQzV7KCg==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.10.0.tgz", + "integrity": "sha512-ke7o7qSTMb47iwzOSaZMfeR7xToFdkE71ifIipOAAaLIM0DYzfOAXlgFFmYUIE2BcJtvnVlGCID84ZzCegE8CQ==", "dependencies": { "buffer-writer": "2.0.0", "packet-reader": "1.0.0", "pg-connection-string": "^2.5.0", - "pg-pool": "^3.5.2", + "pg-pool": "^3.6.0", "pg-protocol": "^1.6.0", "pg-types": "^2.1.0", "pgpass": "1.x" @@ -12178,9 +12239,9 @@ } }, "node_modules/pg-pool": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.5.2.tgz", - "integrity": "sha512-His3Fh17Z4eg7oANLob6ZvH8xIVen3phEZh2QuyrIl4dQSDVEabNducv6ysROKpDNPSD+12tONZVWfSgMvDD9w==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.0.tgz", + "integrity": "sha512-clFRf2ksqd+F497kWFyM21tMjeikn60oGDmqMT8UBrynEwVEX/5R5xd2sdvdo1cZCFlguORNpVuqxIj+aK4cfQ==", "peerDependencies": { "pg": ">=8.0" } @@ -12240,9 +12301,9 @@ } }, "node_modules/pinia": { - "version": "2.0.32", - "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.0.32.tgz", - "integrity": "sha512-8Tw4OrpCSJ028UUyp0gYPP/wyjigLoEceuO/x1G+FlHVf73337e5vLm4uDmrRIoBG1hvaed/eSHnrCFjOc4nkA==", + "version": "2.0.33", + "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.0.33.tgz", + "integrity": "sha512-HOj1yVV2itw6rNIrR2f7+MirGNxhORjrULL8GWgRwXsGSvEqIQ+SE0MYt6cwtpegzCda3i+rVTZM+AM7CG+kRg==", "dev": true, "dependencies": { "@vue/devtools-api": "^6.5.0", @@ -12339,9 +12400,9 @@ } }, "node_modules/pino-pretty": { - "version": "9.4.0", - "resolved": "https://registry.npmjs.org/pino-pretty/-/pino-pretty-9.4.0.tgz", - "integrity": "sha512-NIudkNLxnl7MGj1XkvsqVyRgo6meFP82ECXF2PlOI+9ghmbGuBUUqKJ7IZPIxpJw4vhhSva0IuiDSAuGh6TV9g==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/pino-pretty/-/pino-pretty-10.0.0.tgz", + "integrity": "sha512-zKFjYXBzLaLTEAN1ayKpHXtL5UeRQC7R3lvhKe7fWs7hIVEjKGG/qIXwQt9HmeUp71ogUd/YcW+LmMwRp4KT6Q==", "dependencies": { "colorette": "^2.0.7", "dateformat": "^4.6.3", @@ -12736,13 +12797,13 @@ } }, "node_modules/postcss-loader": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.0.2.tgz", - "integrity": "sha512-fUJzV/QH7NXUAqV8dWJ9Lg4aTkDCezpTS5HgJ2DvqznexTbSTxgi/dTECvTZ15BwKTtk8G/bqI/QTu2HPd3ZCg==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.1.0.tgz", + "integrity": "sha512-vTD2DJ8vJD0Vr1WzMQkRZWRjcynGh3t7NeoLg+Sb1TeuK7etiZfL/ZwHbaVa3M+Qni7Lj/29voV9IggnIUjlIw==", "dev": true, "dependencies": { - "cosmiconfig": "^7.0.0", - "klona": "^2.0.5", + "cosmiconfig": "^8.0.0", + "klona": "^2.0.6", "semver": "^7.3.8" }, "engines": { @@ -13246,9 +13307,9 @@ } }, "node_modules/pretty-format": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.4.3.tgz", - "integrity": "sha512-cvpcHTc42lcsvOOAzd3XuNWTcvk1Jmnzqeu+WsOuiPmxUJTnkbAcFNsRKvEpBEUFVUgy/GTZLulZDcDEi+CIlA==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", + "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", "dev": true, "dependencies": { "@jest/schemas": "^29.4.3", @@ -13355,9 +13416,9 @@ } }, "node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "version": "6.11.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.1.tgz", + "integrity": "sha512-0wsrzgTz/kAVIeuxSjnpGC56rzYtr6JT/2BwEvMaPhFIoYa1aGO8LbzuU1R0uUYQkLpWBTOj0l/CLAJB64J6nQ==", "dependencies": { "side-channel": "^1.0.4" }, @@ -13522,9 +13583,9 @@ } }, "node_modules/readable-web-to-node-stream/node_modules/readable-stream": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.1.tgz", - "integrity": "sha512-+rQmrWMYGA90yenhTYsLWAsLsqVC8osOw6PKE1HDYiO0gdPeKe/xDHNzIAIn4C91YQ6oenEhfYqqc1883qHbjQ==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -13632,22 +13693,10 @@ "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", "dev": true }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, "node_modules/regexpu-core": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.1.tgz", - "integrity": "sha512-nCOzW2V/X15XpLsK2rlgdwrysrBq+AauCn+omItIz4R1pIcmeot5zvjdmOBRLzEH/CkC6IxMJVmxDe3QcMuNVQ==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", "dev": true, "dependencies": { "@babel/regjsgen": "^0.8.0", @@ -14222,6 +14271,15 @@ "node": ">=8" } }, + "node_modules/shell-quote": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.0.tgz", + "integrity": "sha512-QHsz8GgQIGKlRi24yFc6a6lN69Idnx634w49ay6+jA5yFh7a1UY+4Rp6HPx/L/1zcEDPEij8cIsiqR6bQsE5VQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", @@ -14633,9 +14691,9 @@ } }, "node_modules/spdy-transport/node_modules/readable-stream": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.1.tgz", - "integrity": "sha512-+rQmrWMYGA90yenhTYsLWAsLsqVC8osOw6PKE1HDYiO0gdPeKe/xDHNzIAIn4C91YQ6oenEhfYqqc1883qHbjQ==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, "dependencies": { "inherits": "^2.0.3", @@ -14900,9 +14958,9 @@ } }, "node_modules/style-loader": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz", - "integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.2.tgz", + "integrity": "sha512-RHs/vcrKdQK8wZliteNK4NKzxvLBzpuHMqYmUVWeKa6MkaIQ97ZTOS0b+zapZhy6GcrgWnvWYCMHRirC3FsUmw==", "dev": true, "engines": { "node": ">= 12.13.0" @@ -15187,9 +15245,9 @@ } }, "node_modules/terser": { - "version": "5.16.5", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.5.tgz", - "integrity": "sha512-qcwfg4+RZa3YvlFh0qjifnzBHjKGNbtDo9yivMqMFDy9Q6FSaQWSB/j1xKhsoUFJIqDOM3TsN6D5xbrMrFcHbg==", + "version": "5.16.6", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.6.tgz", + "integrity": "sha512-IBZ+ZQIA9sMaXmRZCUMDjNH0D5AQQfdn4WUjHL0+1lF4TP1IHRJbrhb6fNaXWikrYQTSkb7SLxkeXAiy1p7mbg==", "dev": true, "dependencies": { "@jridgewell/source-map": "^0.3.2", @@ -15205,16 +15263,16 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.6", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", - "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", + "version": "5.3.7", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.7.tgz", + "integrity": "sha512-AfKwIktyP7Cu50xNjXF/6Qb5lBNzYaWpU6YfoX3uZicTx0zTy0stDDCsvjDapKsSDvOeWo5MEq4TmdBy2cNoHw==", "dev": true, "dependencies": { - "@jridgewell/trace-mapping": "^0.3.14", + "@jridgewell/trace-mapping": "^0.3.17", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "terser": "^5.14.1" + "serialize-javascript": "^6.0.1", + "terser": "^5.16.5" }, "engines": { "node": ">= 10.13.0" @@ -15927,9 +15985,9 @@ } }, "node_modules/vue-facing-decorator": { - "version": "2.1.14", - "resolved": "https://registry.npmjs.org/vue-facing-decorator/-/vue-facing-decorator-2.1.14.tgz", - "integrity": "sha512-LRJKB5mNYvbXBfgIjgBEuJUjcVQzccoYef32CNKRtSKJAwF9HOL2inu9sLuDSmqwgGowj3I02SJZKtoC5bT2CQ==", + "version": "2.1.15", + "resolved": "https://registry.npmjs.org/vue-facing-decorator/-/vue-facing-decorator-2.1.15.tgz", + "integrity": "sha512-ufMk7mFNlUCJvey8fS1xhZdx3gn4AMCttACbPUsMzJjvElFePU5KCT2tt4alZuLrf9cNXAp0T/CNj0Z7ATxIjg==", "peerDependencies": { "vue": "^3.0.0" } @@ -16077,9 +16135,9 @@ } }, "node_modules/webpack": { - "version": "5.75.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.75.0.tgz", - "integrity": "sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ==", + "version": "5.76.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.2.tgz", + "integrity": "sha512-Th05ggRm23rVzEOlX8y67NkYCHa9nTNcwHPBhdg+lKG+mtiW7XgggjAeeLnADAe7mLjJ6LUNfgHAuRRh+Z6J7w==", "dev": true, "peer": true, "dependencies": { @@ -16271,9 +16329,9 @@ } }, "node_modules/webpack-dev-server": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.11.1.tgz", - "integrity": "sha512-lILVz9tAUy1zGFwieuaQtYiadImb5M3d+H+L1zDYalYoDl0cksAB1UNyuE5MMWJrG6zR1tXkCP2fitl7yoUJiw==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.12.0.tgz", + "integrity": "sha512-XRN9YRnvOj3TQQ5w/0pR1y1xDcVnbWtNkTri46kuEbaWUPTHsWUvOyAAI7PZHLY+hsFki2kRltJjKMw7e+IiqA==", "dev": true, "dependencies": { "@types/bonjour": "^3.5.9", @@ -16295,6 +16353,7 @@ "html-entities": "^2.3.2", "http-proxy-middleware": "^2.0.3", "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", "open": "^8.0.9", "p-retry": "^4.5.0", "rimraf": "^3.0.2", @@ -16304,7 +16363,7 @@ "sockjs": "^0.3.24", "spdy": "^4.0.2", "webpack-dev-middleware": "^5.3.1", - "ws": "^8.4.2" + "ws": "^8.13.0" }, "bin": { "webpack-dev-server": "bin/webpack-dev-server.js" @@ -16580,9 +16639,9 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/ws": { - "version": "8.12.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.12.1.tgz", - "integrity": "sha512-1qo+M9Ba+xNhPB+YTWUlK6M17brTut5EXbcBaMRN5pH5dFrXz7lzz1ChFSUq3bOUl8yEvSenhHmYUNJxFzdJew==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", "dev": true, "engines": { "node": ">=10.0.0" diff --git a/package.json b/package.json index 5f03c13..4a9925c 100644 --- a/package.json +++ b/package.json @@ -28,17 +28,6 @@ "eslintIgnore": [ "build" ], - "prettier": { - "trailingComma": "all", - "tabWidth": 4, - "semi": true, - "singleQuote": true, - "useTabs": false, - "quoteProps": "consistent", - "bracketSpacing": true, - "arrowParens": "always", - "printWidth": 120 - }, "alias": { "vue": "./node_modules/vue/dist/vue.esm-bundler.js" }, @@ -71,7 +60,7 @@ "naive-ui": "^2.34.3", "numeral": "^2.0.6", "pinia": "^2.0.30", - "pino-pretty": "^9.1.1", + "pino-pretty": "^10.0.0", "postcss-loader": "^7.0.2", "prettier": "^2.8.3", "tailwindcss": "^3.2.4", @@ -91,7 +80,9 @@ "@adonisjs/shield": "^7.1.0", "@adonisjs/view": "^6.1.5", "@eidellev/adonis-stardust": "^3.0.0", - "@eidellev/inertia-adonisjs": "^7.4.0", + "@eidellev/inertia-adonisjs": "^8.0.0", + "@fontsource/archivo-black": "^4.5.9", + "@fontsource/inter": "^4.5.15", "@inertiajs/inertia": "^0.11.1", "@inertiajs/vue3": "^1.0.0", "bcryptjs": "^2.4.3", diff --git a/public/assets/manifest.json b/public/assets/manifest.json index 6a66952..4c61191 100644 --- a/public/assets/manifest.json +++ b/public/assets/manifest.json @@ -1,4 +1,15 @@ { "assets/app.css": "http://localhost:8080/assets/app.css", - "assets/app.js": "http://localhost:8080/assets/app.js" + "assets/app.js": "http://localhost:8080/assets/app.js", + "assets/fonts/inter-all-400-normal.woff": "http://localhost:8080/assets/fonts/inter-all-400-normal.8c804432.woff", + "assets/fonts/archivo-black-all-400-normal.woff": "http://localhost:8080/assets/fonts/archivo-black-all-400-normal.da68e413.woff", + "assets/fonts/inter-latin-ext-400-normal.woff2": "http://localhost:8080/assets/fonts/inter-latin-ext-400-normal.3a7a7652.woff2", + "assets/fonts/archivo-black-latin-400-normal.woff2": "http://localhost:8080/assets/fonts/archivo-black-latin-400-normal.fc847a1f.woff2", + "assets/fonts/inter-latin-400-normal.woff2": "http://localhost:8080/assets/fonts/inter-latin-400-normal.be7cb18d.woff2", + "assets/fonts/archivo-black-latin-ext-400-normal.woff2": "http://localhost:8080/assets/fonts/archivo-black-latin-ext-400-normal.21761451.woff2", + "assets/fonts/inter-cyrillic-ext-400-normal.woff2": "http://localhost:8080/assets/fonts/inter-cyrillic-ext-400-normal.fcc125c4.woff2", + "assets/fonts/inter-greek-400-normal.woff2": "http://localhost:8080/assets/fonts/inter-greek-400-normal.0278a49f.woff2", + "assets/fonts/inter-cyrillic-400-normal.woff2": "http://localhost:8080/assets/fonts/inter-cyrillic-400-normal.8684fef6.woff2", + "assets/fonts/inter-greek-ext-400-normal.woff2": "http://localhost:8080/assets/fonts/inter-greek-ext-400-normal.3f642a92.woff2", + "assets/fonts/inter-vietnamese-400-normal.woff2": "http://localhost:8080/assets/fonts/inter-vietnamese-400-normal.789afb71.woff2" } \ No newline at end of file diff --git a/resources/css/app.css b/resources/css/app.css index cdeaf93..5af61a4 100644 --- a/resources/css/app.css +++ b/resources/css/app.css @@ -1,30 +1,44 @@ /* @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;500&display=swap'); */ -@import url('https://fonts.googleapis.com/css?family=Roboto:400,400i,600,700'); +/* @import url('https://fonts.googleapis.com/css?family=Roboto:400,400i,600,700'); */ @tailwind base; @tailwind components; @tailwind utilities; -@import "_checkbox-radio-switch.css"; -@import "_progress.css"; -@import "_scrollbars.css"; -@import "_table.css"; +@import '_checkbox-radio-switch.css'; +@import '_progress.css'; +@import '_scrollbars.css'; +@import '_table.css'; +@import '@fontsource/inter/index.css'; +@import '@fontsource/archivo-black/index.css'; -html, body { - background-color: #F7F8FA; - font-family: 'Roboto', sans-serif; - /* height: 100vh; */ - color: #46444c; - position: relative; -} +/* @layer base { + html, + body { + background-color: #f7f8fa; + font-family: Inter, system-ui, sans-serif; + height: 100vh; + color: #46444c; + position: relative; + } +} */ + +/* html, +body { + background-color: #f7f8fa; + font-family: 'Roboto', sans-serif; + height: 100vh; + color: #46444c; + position: relative; +} */ .px-6 { - padding-left: 0; - /* padding-right: 1.5rem; */ + padding-left: 0; + /* padding-right: 1.5rem; */ } .rounded-md { -color: gray; + color: gray; } /* body:before { @@ -90,6 +104,6 @@ main li:before { } */ main code { - font-size: 16px; - background: #e6e2ff; + font-size: 16px; + background: #e6e2ff; } diff --git a/resources/js/Components/AsideMenu.vue b/resources/js/Components/AsideMenu.vue index 0af9a9c..a4e8e85 100644 --- a/resources/js/Components/AsideMenu.vue +++ b/resources/js/Components/AsideMenu.vue @@ -2,8 +2,8 @@ // import { reactive, computed } from 'vue'; // import { usePage } from '@inertiajs/vue3' // import { usePage } from '@inertiajs/inertia-vue3'; -import { LayoutService } from '@/Stores/layout.js'; -import menu from '@/menu.js' +import { LayoutService } from '@/Stores/layout'; +import menu from '@/menu' import AsideMenuLayer from '@/Components/AsideMenuLayer.vue'; import OverlayLayer from '@/Components/OverlayLayer.vue'; diff --git a/resources/js/Components/AsideMenuItem.vue b/resources/js/Components/AsideMenuItem.vue index 4682164..c9ef856 100644 --- a/resources/js/Components/AsideMenuItem.vue +++ b/resources/js/Components/AsideMenuItem.vue @@ -3,7 +3,7 @@ import { ref, computed } from 'vue'; import { Link } from '@inertiajs/vue3'; // import { Link } from '@inertiajs/inertia-vue3'; -import { StyleService } from '@/Stores/style.js'; +import { StyleService } from '@/Stores/style'; import { mdiMinus, mdiPlus } from '@mdi/js'; import { getButtonColor } from '@/colors.js'; import BaseIcon from '@/Components/BaseIcon.vue'; diff --git a/resources/js/Components/AsideMenuLayer.vue b/resources/js/Components/AsideMenuLayer.vue index 406548d..a571f46 100644 --- a/resources/js/Components/AsideMenuLayer.vue +++ b/resources/js/Components/AsideMenuLayer.vue @@ -4,8 +4,8 @@ import { router } from '@inertiajs/vue3' import { stardust } from '@eidellev/adonis-stardust/client'; import { mdiLogout, mdiClose } from '@mdi/js'; import { computed } from 'vue'; -import { LayoutService } from '@/Stores/layout.js'; -import { StyleService } from '@/Stores/style.js'; +import { LayoutService } from '@/Stores/layout'; +import { StyleService } from '@/Stores/style'; import AsideMenuList from '@/Components/AsideMenuList.vue'; import AsideMenuItem from '@/Components/AsideMenuItem.vue'; import BaseIcon from '@/Components/BaseIcon.vue'; diff --git a/resources/js/Components/AsideMenuList.vue b/resources/js/Components/AsideMenuList.vue index 04328a6..b9e02ba 100644 --- a/resources/js/Components/AsideMenuList.vue +++ b/resources/js/Components/AsideMenuList.vue @@ -2,28 +2,28 @@ import AsideMenuItem from '@/Components/AsideMenuItem.vue'; defineProps({ - isDropdownList: Boolean, - menu: { - type: Object, - default: () => {} - } -}) + isDropdownList: Boolean, + menu: { + type: Object, + default: () => {}, + }, +}); -const emit = defineEmits(['menu-click']) +const emit = defineEmits(['menu-click']); const menuClick = (event, item) => { - emit('menu-click', event, item) -} + emit('menu-click', event, item); +}; diff --git a/resources/js/Components/CardBox.vue b/resources/js/Components/CardBox.vue index f2fedf3..e00ec72 100644 --- a/resources/js/Components/CardBox.vue +++ b/resources/js/Components/CardBox.vue @@ -1,111 +1,81 @@ diff --git a/resources/js/Components/CardBoxModal.vue b/resources/js/Components/CardBoxModal.vue index c5f472f..a743ca2 100644 --- a/resources/js/Components/CardBoxModal.vue +++ b/resources/js/Components/CardBoxModal.vue @@ -1,56 +1,62 @@ -