diff --git a/app/Console/Commands/CuidsGenerateCommand.php b/app/Console/Commands/CuidsGenerateCommand.php new file mode 100644 index 00000000..80bb2088 --- /dev/null +++ b/app/Console/Commands/CuidsGenerateCommand.php @@ -0,0 +1,207 @@ +files = $files; + } + + public function handle() + { + $this->entity = Str::lower($this->argument('entity')); + $this->entities = Str::plural($this->entity); + $this->generateIndexPage(); + $this->generateComponents(); + $this->generateDomain(); + $this->generateRoutes(); + if($this->option('with-backend')) { + $this->generateBackend(); + } + } + + private function generateIndexPage() { + // Caminho para a pasta de stubs + $stub_path = base_path("stubs/pages/EntitiesPage.vue"); + + // Verificar se o arquivo de stub existe + if (!$this->verifyIfFileExists($stub_path)) return; + + // Fazer as substituições dinâmicas + $file_content = $this->replaceStubs($stub_path); + + // Caminho onde o arquivo gerado será salvo + $output_path = base_path("resources/js-vue-3/features/{$this->entities}/pages/{$this->pascalEntities()}Page.vue"); + + // Criar a pasta se não existir + $this->createIfNotExists($output_path); + + // Salvar o conteúdo gerado no novo arquivo + $this->files->put($output_path, $file_content); + + $this->info("File created at {$output_path}"); + } + + private function generateComponents() { + // Caminho para a pasta de stubs + $components = [ + 'CreateEntityModal' => 'singular', + 'EntitiesTable' => 'plural', + 'EntityForm' => 'singular', + 'UpdateEntityModal' => 'singular', + ]; + + foreach($components as $key => $value) { + $stub_path = base_path("stubs/components/{$key}.vue"); + + // Verificar se o arquivo de stub existe + if (!$this->verifyIfFileExists($stub_path)) return; + + // Fazer as substituições dinâmicas + $file_content = $this->replaceStubs($stub_path); + + if($value == 'plural') { + $component_name = str_replace('Entities', $this->pascalEntities(), $key); + } else { + $component_name = str_replace('Entity', $this->pascalEntity(), $key); + } + + + $output_path = base_path("resources/js-vue-3/features/{$this->entities}/components/{$component_name}.vue"); + + // Criar a pasta se não existir + $this->createIfNotExists($output_path); + + // Salvar o conteúdo gerado no novo arquivo + $this->files->put($output_path, $file_content); + + $this->info("File created at {$output_path}"); + } + } + + private function generateDomain() { + + // Caminho para a pasta de stubs + $files = [ + 'model.ts', + 'index.ts', + 'pageSettings.ts', + 'service.ts', + ]; + + foreach($files as $file) { + $stub_path = base_path("stubs/domain/{$file}"); + + // Verificar se o arquivo de stub existe + if (!$this->verifyIfFileExists($stub_path)) return; + + // Fazer as substituições dinâmicas + $file_content = $this->replaceStubs($stub_path); + + $output_path = base_path("resources/js-vue-3/shared/domain/{$this->entity}/{$file}"); + + // Criar a pasta se não existir + $this->createIfNotExists($output_path); + + // Salvar o conteúdo gerado no novo arquivo + $this->files->put($output_path, $file_content); + + $this->info("File created at {$output_path}"); + } + } + + private function generateRoutes() { + $files = [ + 'index.js', + ]; + + foreach($files as $file) { + $stub_path = base_path("stubs/routes/{$file}"); + + // Verificar se o arquivo de stub existe + if (!$this->verifyIfFileExists($stub_path)) return; + + // Fazer as substituições dinâmicas + $file_content = $this->replaceStubs($stub_path); + + $output_path = base_path("resources/js-vue-3/features/{$this->entities}/routes/{$file}"); + + // Criar a pasta se não existir + $this->createIfNotExists($output_path); + + // Salvar o conteúdo gerado no novo arquivo + $this->files->put($output_path, $file_content); + + $this->info("File created at {$output_path}"); + } + } + + public function generateBackend() { + Artisan::call("make:model {$this->pascalEntity()} --api --factory --requests --test"); + } + + private function pascalEntity() { + return $this->pascalCase($this->entity); + } + + private function pascalEntities() { + return $this->pascalCase($this->entities); + } + + private function snakeEntities() { + return ucwords(strtolower($this->entities)); + } + + private function snakeEntity() { + return ucwords(strtolower($this->entities)); + } + + private function pascalCase($string) { + return ucwords(strtolower($string)); + } + + private function replaceStubs($stub_path) { + // Ler o conteúdo do arquivo de stub + $stub_content = $this->files->get($stub_path); + + // Fazer as substituições dinâmicas + $file_content = str_replace('entity', $this->entity, $stub_content); + $file_content = str_replace('Entity', $this->pascalEntity(), $file_content); + $file_content = str_replace('entities', $this->entities, $file_content); + $file_content = str_replace('Entities', $this->pascalEntities(), $file_content); + $file_content = str_replace('ENTITY', Str::upper($this->entity), $file_content); + $file_content = str_replace('ENTITIES', Str::upper($this->entities), $file_content); + + return $file_content; + } + + private function verifyIfFileExists($stub_path) { + if (!$this->files->exists($stub_path)) { + $this->error("Stub file does not exist at path {$stub_path}"); + return false; + } + return true; + } + + private function createIfNotExists($output_path) { + if (!$this->files->exists(dirname($output_path))) { + $this->files->makeDirectory(dirname($output_path), 0755, true); + } + } +} diff --git a/app/Http/Resources/MemberResource.php b/app/Http/Resources/MemberResource.php index 8ece2bf7..39f6ee65 100644 --- a/app/Http/Resources/MemberResource.php +++ b/app/Http/Resources/MemberResource.php @@ -22,7 +22,8 @@ public function toArray($request) 'has_login' => $this->has_login, 'user_id' => optional($this->user)->id, 'avatar_url' => $this->avatar_url, - 'teams' => implode(', ', $this->getTeams()->pluck('name')->toArray()), + 'teams' => $this->getTeams()->toArray(), + 'teamsNames' => implode(', ', $this->getTeams()->pluck('name')->toArray()), 'team_ids' => $this->team_ids, 'workspace_ids' => $this->workspace_ids, ]; diff --git a/app/Http/Resources/WorkspaceResource.php b/app/Http/Resources/WorkspaceResource.php index 41706102..045e02e3 100644 --- a/app/Http/Resources/WorkspaceResource.php +++ b/app/Http/Resources/WorkspaceResource.php @@ -18,12 +18,11 @@ public function toArray($request) 'id' => $this->id, 'name' => $this->name, 'team_ids' => $this->team_ids, + 'teams' => $this->teams, 'label_ids' => $this->label_ids, 'team_names' => $this->team_names, - 'lottie_file' => $this->lottie_file, 'settings' => (object) $this->settings, - 'inactive' => $this->inactive ?? false, - 'status' => $this->inactive ? 'Desativado' : '', + 'status' => $this->inactive ? 'Inativo' : 'Ativo', ]; } } diff --git a/app/Models/Member.php b/app/Models/Member.php index 09a79b90..bd82ba9d 100644 --- a/app/Models/Member.php +++ b/app/Models/Member.php @@ -54,6 +54,8 @@ public function getTeams() { return $this->teamMembers->map(function ($pivot) { return $pivot->team; + })->filter(function ($item) { + return !empty($item); }); } diff --git a/package-lock.json b/package-lock.json index 127c9fd0..adc417fc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,13 +1,12 @@ { - "name": "simpleshow-cockpit", - "version": "1.0.0", + "name": "trelassio", + "version": "4.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "simpleshow-cockpit", - "version": "1.0.0", - "license": "UNLICENSED", + "name": "trelassio", + "version": "4.0.0", "dependencies": { "json-concat": "^0.0.1" }, @@ -28,30 +27,34 @@ } }, "node_modules/array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", - "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", "dev": true, "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "is-array-buffer": "^3.0.2", + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", "is-shared-array-buffer": "^1.0.2" }, "engines": { @@ -62,10 +65,13 @@ } }, "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "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==", "dev": true, + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -90,14 +96,19 @@ } }, "node_modules/call-bind": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", - "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dev": true, "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.1", - "set-function-length": "^1.1.1" + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -126,7 +137,7 @@ "color-name": "1.1.3" } }, - "node_modules/color-convert/node_modules/color-name": { + "node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", @@ -154,18 +165,72 @@ "node": ">=4.8" } }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/define-data-property": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", - "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "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==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/define-properties": { @@ -195,50 +260,57 @@ } }, "node_modules/es-abstract": { - "version": "1.22.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", - "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "arraybuffer.prototype.slice": "^1.0.2", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.5", - "es-set-tostringtag": "^2.0.1", + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", "es-to-primitive": "^1.2.1", "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.2", - "get-symbol-description": "^1.0.0", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", "globalthis": "^1.0.3", "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", "has-symbols": "^1.0.3", - "hasown": "^2.0.0", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", + "is-shared-array-buffer": "^1.0.3", "is-string": "^1.0.7", - "is-typed-array": "^1.1.12", + "is-typed-array": "^1.1.13", "is-weakref": "^1.0.2", "object-inspect": "^1.13.1", "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.1", - "safe-array-concat": "^1.0.1", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.8", - "string.prototype.trimend": "^1.0.7", - "string.prototype.trimstart": "^1.0.7", - "typed-array-buffer": "^1.0.0", - "typed-array-byte-length": "^1.0.0", - "typed-array-byte-offset": "^1.0.0", - "typed-array-length": "^1.0.4", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.13" + "which-typed-array": "^1.1.15" }, "engines": { "node": ">= 0.4" @@ -247,15 +319,48 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "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, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-set-tostringtag": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", - "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.2", - "has-tostringtag": "^1.0.0", - "hasown": "^2.0.0" + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" }, "engines": { "node": ">= 0.4" @@ -333,28 +438,33 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", - "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dev": true, "dependencies": { + "es-errors": "^1.3.0", "function-bind": "^1.1.2", "has-proto": "^1.0.1", "has-symbols": "^1.0.3", "hasown": "^2.0.0" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" }, "engines": { "node": ">= 0.4" @@ -364,12 +474,13 @@ } }, "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "dev": true, "dependencies": { - "define-properties": "^1.1.3" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -415,21 +526,21 @@ } }, "node_modules/has-property-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", - "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.2" + "es-define-property": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", "dev": true, "engines": { "node": ">= 0.4" @@ -451,12 +562,12 @@ } }, "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, "dependencies": { - "has-symbols": "^1.0.2" + "has-symbols": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -466,9 +577,9 @@ } }, "node_modules/hasown": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", - "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dev": true, "dependencies": { "function-bind": "^1.1.2" @@ -484,12 +595,12 @@ "dev": true }, "node_modules/internal-slot": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", - "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.2", + "es-errors": "^1.3.0", "hasown": "^2.0.0", "side-channel": "^1.0.4" }, @@ -498,14 +609,16 @@ } }, "node_modules/is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -569,6 +682,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dev": true, + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-date-object": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", @@ -585,9 +713,9 @@ } }, "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", "dev": true, "engines": { "node": ">= 0.4" @@ -628,12 +756,15 @@ } }, "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2" + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -670,12 +801,12 @@ } }, "node_modules/is-typed-array": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", - "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", "dev": true, "dependencies": { - "which-typed-array": "^1.1.11" + "which-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" @@ -696,6 +827,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -731,19 +868,6 @@ "node": ">=4" } }, - "node_modules/load-json-file/node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", - "dev": true, - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/memorystream": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", @@ -827,13 +951,13 @@ } }, "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", "has-symbols": "^1.0.3", "object-keys": "^1.1.1" }, @@ -844,6 +968,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dev": true, + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", @@ -859,6 +996,18 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, + "node_modules/path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/pidtree": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", @@ -880,6 +1029,15 @@ "node": ">=4" } }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/read-pkg": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", @@ -894,27 +1052,16 @@ "node": ">=4" } }, - "node_modules/read-pkg/node_modules/path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "dependencies": { - "pify": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/regexp.prototype.flags": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", - "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "set-function-name": "^2.0.0" + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" }, "engines": { "node": ">= 0.4" @@ -941,13 +1088,13 @@ } }, "node_modules/safe-array-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", - "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", "has-symbols": "^1.0.3", "isarray": "^2.0.5" }, @@ -958,22 +1105,19 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/safe-array-concat/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - }, "node_modules/safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", "is-regex": "^1.1.4" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -988,29 +1132,32 @@ } }, "node_modules/set-function-length": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", - "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "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==", "dev": true, "dependencies": { - "define-data-property": "^1.1.1", - "get-intrinsic": "^1.2.1", + "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.0" + "has-property-descriptors": "^1.0.2" }, "engines": { "node": ">= 0.4" } }, "node_modules/set-function-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", - "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", "dev": true, "dependencies": { - "define-data-property": "^1.0.1", + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.0" + "has-property-descriptors": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -1047,14 +1194,18 @@ } }, "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dev": true, "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -1071,9 +1222,9 @@ } }, "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", "dev": true }, "node_modules/spdx-expression-parse": { @@ -1087,20 +1238,21 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.16", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", - "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz", + "integrity": "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==", "dev": true }, "node_modules/string.prototype.padend": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.5.tgz", - "integrity": "sha512-DOB27b/2UTTD+4myKUFh+/fXWcu/UDyASIXfg+7VzoCNNGOfWvoyU/x5pvVHr++ztyt/oSYI1BcWBBG/hmlNjA==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.6.tgz", + "integrity": "sha512-XZpspuSB7vJWhvJc9DLSlrXl1mcA2BdoY5jjnS135ydXqLoqhs96JjDtCkjJEQHvfqZIp9hBuBMgI589peyx9Q==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -1110,14 +1262,15 @@ } }, "node_modules/string.prototype.trim": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", - "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -1127,28 +1280,31 @@ } }, "node_modules/string.prototype.trimend": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", - "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimstart": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", - "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -1188,29 +1344,30 @@ } }, "node_modules/typed-array-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", - "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "is-typed-array": "^1.1.10" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" } }, "node_modules/typed-array-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", - "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -1220,16 +1377,17 @@ } }, "node_modules/typed-array-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", - "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", "dev": true, "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -1239,14 +1397,20 @@ } }, "node_modules/typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -1306,16 +1470,16 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", - "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", "dev": true, "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" diff --git a/package.json b/package.json index 4767cd93..a6aa432a 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "Trelássio", + "name": "trelassio", "version": "4.0.0", "private": true, "description": "", @@ -26,4 +26,4 @@ "directories": { "test": "tests" } -} \ No newline at end of file +} diff --git a/resources/js-vue-3/app.js b/resources/js-vue-3/app.js index 0bcded6f..42b9dfaa 100644 --- a/resources/js-vue-3/app.js +++ b/resources/js-vue-3/app.js @@ -3,6 +3,10 @@ import { createApp } from 'vue'; import { createRouter, createWebHistory } from 'vue-router'; import Cuida from '@sysvale/cuida'; import SHOW from '@sysvale/show'; +import * as VeeValidate from 'vee-validate'; +import validationConfig from './shared/validation'; + +import senswal from './shared/utils/senswal'; import App from './App.vue'; @@ -24,6 +28,16 @@ vueApp.use(Cuida); vueApp.use(SHOW); vueApp.use(router); +vueApp.use(VeeValidate, { + inject: true, + fieldsBagName: 'veeFields', +}); + +validationConfig(VeeValidate); + +vueApp.config.globalProperties.$senswal = senswal; + + router.isReady().then(() => { vueApp.mount("#app-vue-3"); }) \ No newline at end of file diff --git a/resources/js-vue-3/core/components/CuidsPage.vue b/resources/js-vue-3/core/components/CuidsPage.vue new file mode 100644 index 00000000..9ea209be --- /dev/null +++ b/resources/js-vue-3/core/components/CuidsPage.vue @@ -0,0 +1,175 @@ + + + \ No newline at end of file diff --git a/resources/js-vue-3/core/components/CuidsRequestModal.vue b/resources/js-vue-3/core/components/CuidsRequestModal.vue new file mode 100644 index 00000000..81425e2d --- /dev/null +++ b/resources/js-vue-3/core/components/CuidsRequestModal.vue @@ -0,0 +1,68 @@ + + \ No newline at end of file diff --git a/resources/js-vue-3/core/components/EntityMultiselect.vue b/resources/js-vue-3/core/components/EntityMultiselect.vue new file mode 100644 index 00000000..0ee6d628 --- /dev/null +++ b/resources/js-vue-3/core/components/EntityMultiselect.vue @@ -0,0 +1,49 @@ + + \ No newline at end of file diff --git a/resources/js-vue-3/core/components/PageWrapper.vue b/resources/js-vue-3/core/components/PageWrapper.vue index 7d040d8c..417b095f 100644 --- a/resources/js-vue-3/core/components/PageWrapper.vue +++ b/resources/js-vue-3/core/components/PageWrapper.vue @@ -4,25 +4,41 @@ + > + +
- - {{ title }} - -
- -
+ > + +
- - {{ subtitle }} -
@@ -62,17 +78,24 @@ export default { { label: "Membros", route: { - path: "/settings/members", + path: "/v2/index/members", name: "members" } }, { label: "Workspaces", route: { - path: "/settings/workspaces", + path: "/v2/index/workspaces", name: "workspaces" } }, + { + label: "Times", + route: { + path: "/v2/index/teams", + name: "teams" + } + }, ] }, ] @@ -104,14 +127,29 @@ body { } \ No newline at end of file diff --git a/resources/js-vue-3/core/routes/index.js b/resources/js-vue-3/core/routes/index.js index 16d62246..eece63ca 100644 --- a/resources/js-vue-3/core/routes/index.js +++ b/resources/js-vue-3/core/routes/index.js @@ -1,8 +1,12 @@ import NotFoundPage from '../pages/NotFoundPage.vue'; -import SettingsRoutes from '../../features/settings/routes'; +import MembersRoute from '../../features/members/routes'; +import WorkspacesRoute from '../../features/workspaces/routes'; +import TeamsRoute from '../../features/teams/routes'; const routes = { - ...SettingsRoutes, + ...MembersRoute, + ...WorkspacesRoute, + ...TeamsRoute, }; const buildRoutes = () => { diff --git a/resources/js-vue-3/features/members/components/CreateMemberModal.vue b/resources/js-vue-3/features/members/components/CreateMemberModal.vue new file mode 100644 index 00000000..37e033e4 --- /dev/null +++ b/resources/js-vue-3/features/members/components/CreateMemberModal.vue @@ -0,0 +1,69 @@ + + diff --git a/resources/js-vue-3/features/members/components/MemberForm.vue b/resources/js-vue-3/features/members/components/MemberForm.vue new file mode 100644 index 00000000..90a38bdc --- /dev/null +++ b/resources/js-vue-3/features/members/components/MemberForm.vue @@ -0,0 +1,149 @@ + + \ No newline at end of file diff --git a/resources/js-vue-3/features/members/components/MembersTable.vue b/resources/js-vue-3/features/members/components/MembersTable.vue new file mode 100644 index 00000000..35d02350 --- /dev/null +++ b/resources/js-vue-3/features/members/components/MembersTable.vue @@ -0,0 +1,81 @@ + + + \ No newline at end of file diff --git a/resources/js-vue-3/features/members/components/UpdateMemberModal.vue b/resources/js-vue-3/features/members/components/UpdateMemberModal.vue new file mode 100644 index 00000000..4e6979e8 --- /dev/null +++ b/resources/js-vue-3/features/members/components/UpdateMemberModal.vue @@ -0,0 +1,75 @@ + + \ No newline at end of file diff --git a/resources/js-vue-3/features/members/pages/MembersPage.vue b/resources/js-vue-3/features/members/pages/MembersPage.vue new file mode 100644 index 00000000..591e42e9 --- /dev/null +++ b/resources/js-vue-3/features/members/pages/MembersPage.vue @@ -0,0 +1,73 @@ + + + \ No newline at end of file diff --git a/resources/js-vue-3/features/members/routes/index.js b/resources/js-vue-3/features/members/routes/index.js new file mode 100644 index 00000000..fa7e4216 --- /dev/null +++ b/resources/js-vue-3/features/members/routes/index.js @@ -0,0 +1,15 @@ +export const routes = { + INDEX_Settings: { + label: 'Membros', + name: 'index-members', + path: 'index/members', + components: { + default: () => import('../pages/MembersPage.vue') + }, + meta: { + description: 'Membros', + }, + }, +}; + +export default routes; \ No newline at end of file diff --git a/resources/js-vue-3/features/settings/pages/IndexSettingsPage.vue b/resources/js-vue-3/features/settings/pages/IndexSettingsPage.vue deleted file mode 100644 index 1c024b6e..00000000 --- a/resources/js-vue-3/features/settings/pages/IndexSettingsPage.vue +++ /dev/null @@ -1,29 +0,0 @@ - \ No newline at end of file diff --git a/resources/js-vue-3/features/settings/routes/index.js b/resources/js-vue-3/features/settings/routes/index.js deleted file mode 100644 index 59dc4e2f..00000000 --- a/resources/js-vue-3/features/settings/routes/index.js +++ /dev/null @@ -1,15 +0,0 @@ -export const routes = { - INDEX_Settings: { - label: 'Configurações', - name: 'index-settings', - path: 'index/settings', - components: { - default: () => import('../pages/IndexSettingsPage.vue') - }, - meta: { - description: 'Configurações', - }, - }, -}; - -export default routes; \ No newline at end of file diff --git a/resources/js-vue-3/features/teams/components/CreateTeamModal.vue b/resources/js-vue-3/features/teams/components/CreateTeamModal.vue new file mode 100644 index 00000000..aee88f41 --- /dev/null +++ b/resources/js-vue-3/features/teams/components/CreateTeamModal.vue @@ -0,0 +1,81 @@ + + diff --git a/resources/js-vue-3/features/teams/components/TeamForm.vue b/resources/js-vue-3/features/teams/components/TeamForm.vue new file mode 100644 index 00000000..8c54991f --- /dev/null +++ b/resources/js-vue-3/features/teams/components/TeamForm.vue @@ -0,0 +1,213 @@ + + + \ No newline at end of file diff --git a/resources/js-vue-3/features/teams/components/TeamsTable.vue b/resources/js-vue-3/features/teams/components/TeamsTable.vue new file mode 100644 index 00000000..1224e64e --- /dev/null +++ b/resources/js-vue-3/features/teams/components/TeamsTable.vue @@ -0,0 +1,77 @@ + + + \ No newline at end of file diff --git a/resources/js-vue-3/features/teams/components/UpdateTeamModal.vue b/resources/js-vue-3/features/teams/components/UpdateTeamModal.vue new file mode 100644 index 00000000..dffeef79 --- /dev/null +++ b/resources/js-vue-3/features/teams/components/UpdateTeamModal.vue @@ -0,0 +1,75 @@ + + \ No newline at end of file diff --git a/resources/js-vue-3/features/teams/pages/TeamsPage.vue b/resources/js-vue-3/features/teams/pages/TeamsPage.vue new file mode 100644 index 00000000..ff79d56c --- /dev/null +++ b/resources/js-vue-3/features/teams/pages/TeamsPage.vue @@ -0,0 +1,75 @@ + + + \ No newline at end of file diff --git a/resources/js-vue-3/features/teams/routes/index.js b/resources/js-vue-3/features/teams/routes/index.js new file mode 100644 index 00000000..1dc1b995 --- /dev/null +++ b/resources/js-vue-3/features/teams/routes/index.js @@ -0,0 +1,15 @@ +export const routes = { + INDEX_TEAMS: { + label: 'Times', + name: 'index-teams', + path: 'index/teams', + components: { + default: () => import('../pages/TeamsPage.vue') + }, + meta: { + description: 'Times', + }, + }, +}; + +export default routes; \ No newline at end of file diff --git a/resources/js-vue-3/features/workspaces/components/CreateWorkspaceModal.vue b/resources/js-vue-3/features/workspaces/components/CreateWorkspaceModal.vue new file mode 100644 index 00000000..0f5a79d9 --- /dev/null +++ b/resources/js-vue-3/features/workspaces/components/CreateWorkspaceModal.vue @@ -0,0 +1,67 @@ + + diff --git a/resources/js-vue-3/features/workspaces/components/UpdateWorkspaceModal.vue b/resources/js-vue-3/features/workspaces/components/UpdateWorkspaceModal.vue new file mode 100644 index 00000000..0b71932d --- /dev/null +++ b/resources/js-vue-3/features/workspaces/components/UpdateWorkspaceModal.vue @@ -0,0 +1,73 @@ + + \ No newline at end of file diff --git a/resources/js-vue-3/features/workspaces/components/WorkspaceForm.vue b/resources/js-vue-3/features/workspaces/components/WorkspaceForm.vue new file mode 100644 index 00000000..7cc4d23a --- /dev/null +++ b/resources/js-vue-3/features/workspaces/components/WorkspaceForm.vue @@ -0,0 +1,103 @@ + + \ No newline at end of file diff --git a/resources/js-vue-3/features/workspaces/components/WorkspacesTable.vue b/resources/js-vue-3/features/workspaces/components/WorkspacesTable.vue new file mode 100644 index 00000000..d8028ba0 --- /dev/null +++ b/resources/js-vue-3/features/workspaces/components/WorkspacesTable.vue @@ -0,0 +1,85 @@ + + + \ No newline at end of file diff --git a/resources/js-vue-3/features/workspaces/pages/WorkspacesPage.vue b/resources/js-vue-3/features/workspaces/pages/WorkspacesPage.vue new file mode 100644 index 00000000..e6690aea --- /dev/null +++ b/resources/js-vue-3/features/workspaces/pages/WorkspacesPage.vue @@ -0,0 +1,73 @@ + + + \ No newline at end of file diff --git a/resources/js-vue-3/features/workspaces/routes/index.js b/resources/js-vue-3/features/workspaces/routes/index.js new file mode 100644 index 00000000..ab79c67b --- /dev/null +++ b/resources/js-vue-3/features/workspaces/routes/index.js @@ -0,0 +1,15 @@ +export const routes = { + INDEX_WORKSPACES: { + label: 'Entidade', + name: 'index-workspaces', + path: 'index/workspaces', + components: { + default: () => import('../pages/WorkspacesPage.vue') + }, + meta: { + description: 'Entidades', + }, + }, +}; + +export default routes; \ No newline at end of file diff --git a/resources/js-vue-3/package-lock.json b/resources/js-vue-3/package-lock.json index 88cae4b1..d39e762e 100644 --- a/resources/js-vue-3/package-lock.json +++ b/resources/js-vue-3/package-lock.json @@ -5,8 +5,10 @@ "packages": { "": { "dependencies": { - "@sysvale/cuida": "^3.0.0-alpha.109", - "@sysvale/show": "^0.2.0", + "@sysvale/cuida": "3.45.1", + "@sysvale/show": "1.2.0", + "@vee-validate/i18n": "^4.10.5", + "@vee-validate/rules": "^4.10.5", "@vitejs/plugin-vue": "^3.0.3", "chart.js": "^4.0.1", "fibers": "^5.0.3", @@ -19,9 +21,12 @@ "lodash.snakecase": "^4.1.1", "luxon": "^3.1.1", "pinia": "^2.0.22", - "sweetalert2": "^11.6.7", + "sweetalert2": "^11.10.1", "tippy.js": "^6.3.7", + "typescript": "^5.3.2", + "vee-validate": "^4.12.2", "vue": "^3.1.0", + "vue-draggable-plus": "^0.5.3", "vue-loader": "^17.0.0", "vue-multiselect": "^3.0.0-alpha.2", "vue-router": "^4.1.3" @@ -37,10 +42,87 @@ "resolve-url-loader": "^5.0.0", "sass": "^1.54.4", "sass-loader": "^12.6.0", + "ts-loader": "^9.5.1", "vite": "^3.0.0", "vitest": "^0.22.1" } }, + "../../../cuida": { + "name": "@sysvale/cuida", + "version": "3.0.0-beta.110", + "extraneous": true, + "dependencies": { + "@popperjs/core": "^2.11.6", + "@sysvale/cuida": "^3.0.0-beta.98", + "@sysvale/cuida-icons": "^1.14.1", + "@sysvale/vue3-long-click": "^0.2.0", + "chart.js": "^4.3.0", + "chromatic": "^6.14.0", + "click-outside-vue3": "^4.0.1", + "create-file": "^1.0.1", + "lodash.clonedeep": "^4.5.0", + "lodash.isempty": "^4.4.0", + "lodash.isequal": "^4.5.0", + "luxon": "^3.2.1", + "tippy.js": "^6.3.7", + "v-calendar": "^3.0.0-alpha.8", + "v-money3": "^3.22.3", + "vue": "^3.2.37", + "vue-chartjs": "^5.2.0", + "vue-input-facade": "^3.0.0-beta.1", + "vue-multiselect": "^3.0.0-alpha.2", + "vue-slider-component": "^4.1.0-beta.7" + }, + "devDependencies": { + "@babel/core": "^7.18.10", + "@rollup/plugin-typescript": "^8.4.0", + "@storybook/addon-essentials": "^6.5.10", + "@storybook/builder-vite": "^0.2.2", + "@storybook/preset-scss": "^1.0.3", + "@storybook/testing-library": "^0.0.13", + "@storybook/vue3": "^6.5.10", + "@vitejs/plugin-vue": "^3.0.3", + "@vue/test-utils": "^2.0.2", + "babel-loader": "^8.2.5", + "concat": "^1.0.3", + "esbuild-linux-64": "^0.15.18", + "eslint": "^8.31.0", + "eslint-plugin-vue": "^9.9.0", + "jsdom": "^20.0.0", + "sass": "^1.55.0", + "typescript": "^4.6.4", + "vite": "^3.0.0", + "vitest": "^0.22.0", + "vue-loader": "^16.8.3", + "vue-tsc": "^0.38.4" + } + }, + ".yalc/@sysvale/cuida": { + "version": "3.0.0-beta.110", + "extraneous": true, + "dependencies": { + "@popperjs/core": "^2.11.6", + "@sysvale/cuida": "^3.0.0-beta.98", + "@sysvale/cuida-icons": "^1.14.1", + "@sysvale/vue3-long-click": "^0.2.0", + "chart.js": "^4.3.0", + "chromatic": "^6.14.0", + "click-outside-vue3": "^4.0.1", + "create-file": "^1.0.1", + "lodash.clonedeep": "^4.5.0", + "lodash.isempty": "^4.4.0", + "lodash.isequal": "^4.5.0", + "luxon": "^3.2.1", + "tippy.js": "^6.3.7", + "v-calendar": "^3.0.0-alpha.8", + "v-money3": "^3.22.3", + "vue": "^3.2.37", + "vue-chartjs": "^5.2.0", + "vue-input-facade": "^3.0.0-beta.1", + "vue-multiselect": "^3.0.0-alpha.2", + "vue-slider-component": "^4.1.0-beta.7" + } + }, "node_modules/@ampproject/remapping": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", @@ -1950,7 +2032,6 @@ "cpu": [ "arm" ], - "dev": true, "optional": true, "os": [ "android" @@ -1966,7 +2047,6 @@ "cpu": [ "loong64" ], - "dev": true, "optional": true, "os": [ "linux" @@ -1996,7 +2076,6 @@ "version": "0.3.3", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dev": true, "dependencies": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -2010,7 +2089,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", - "dev": true, "engines": { "node": ">=6.0.0" } @@ -2019,7 +2097,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, "engines": { "node": ">=6.0.0" } @@ -2028,7 +2105,6 @@ "version": "0.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", - "dev": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" @@ -2043,7 +2119,6 @@ "version": "0.3.20", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", - "dev": true, "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -2121,22 +2196,22 @@ } }, "node_modules/@sysvale/cuida": { - "version": "3.0.0-beta.109", - "resolved": "https://registry.npmjs.org/@sysvale/cuida/-/cuida-3.0.0-beta.109.tgz", - "integrity": "sha512-HEtIC1/7aGSjwj1tDtBPUbYQ14ZlPt6DzeyHt8LcPFM3mpcEsoceVFyj07y/mXMDIszOYrS2Gd5y6RBNWI3opw==", + "version": "3.45.1", + "resolved": "https://registry.npmjs.org/@sysvale/cuida/-/cuida-3.45.1.tgz", + "integrity": "sha512-ILW7GwdAyAL7fXF7aOhodvsurx64qVufGBjmhE09yiktCapIAeKkgz+TlKNEZqxBaKACAgUuLJdiE2/1v3c6Xw==", "dependencies": { "@popperjs/core": "^2.11.6", - "@sysvale/cuida": "^3.0.0-beta.98", - "@sysvale/cuida-icons": "^1.14.1", + "@sysvale/cuida-icons": "^1.15.1", "@sysvale/vue3-long-click": "^0.2.0", "chart.js": "^4.3.0", + "chartjs-adapter-luxon": "^1.3.1", "chromatic": "^6.14.0", "click-outside-vue3": "^4.0.1", "create-file": "^1.0.1", "lodash.clonedeep": "^4.5.0", "lodash.isempty": "^4.4.0", "lodash.isequal": "^4.5.0", - "luxon": "^3.2.1", + "luxon": "^3.4.4", "tippy.js": "^6.3.7", "v-calendar": "^3.0.0-alpha.8", "v-money3": "^3.22.3", @@ -2148,40 +2223,25 @@ } }, "node_modules/@sysvale/cuida-icons": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@sysvale/cuida-icons/-/cuida-icons-1.14.1.tgz", - "integrity": "sha512-NfPw16r26YwrpdSrYJhPS+EGyWlzwSEoYC01M7+ZFRaaPpjeG5z7Ex0X7/FJ0O2q+IMZhcwxTiROcRyA4bcWeg==" + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/@sysvale/cuida-icons/-/cuida-icons-1.15.1.tgz", + "integrity": "sha512-Yej7ufpz0y6T08kJSn//ha0UMp3T4ifer3TpLSR1QFtLwjOUWHCN/dBio1MDHEvLSXj6VnQbYUzfKvVJo0eYiA==" }, "node_modules/@sysvale/show": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@sysvale/show/-/show-0.2.0.tgz", - "integrity": "sha512-ZpudWPIOaJDtEUsSZaEuxElkXV3KbxCU1WtPs2icscXGTDBgfZGZiObF2owJYzb6KL4Iw+USKMFrIZzlCL9WOw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@sysvale/show/-/show-1.2.0.tgz", + "integrity": "sha512-t94x9res8dajaRgq193yl19ibb2UWNtiDurZI8D52rIWDbqbC6eWli2KMNg/ccIFwAZvB/dJtT8JB1pctmVOCA==", "dependencies": { "lodash.camelcase": "^4.3.0", "lodash.get": "^4.4.2", + "lodash.isempty": "^4.4.0", + "lodash.isequal": "^4.5.0", "lodash.isobject": "^3.0.2", + "lodash.keyby": "^4.6.0", + "lodash.reduce": "^4.6.0", "lodash.snakecase": "^4.1.1", "sweetalert2": "^11.3.5", - "vue": "^2.6.12" - } - }, - "node_modules/@sysvale/show/node_modules/@vue/compiler-sfc": { - "version": "2.7.15", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.15.tgz", - "integrity": "sha512-FCvIEevPmgCgqFBH7wD+3B97y7u7oj/Wr69zADBf403Tui377bThTjBvekaZvlRr4IwUAu3M6hYZeULZFJbdYg==", - "dependencies": { - "@babel/parser": "^7.18.4", - "postcss": "^8.4.14", - "source-map": "^0.6.1" - } - }, - "node_modules/@sysvale/show/node_modules/vue": { - "version": "2.7.15", - "resolved": "https://registry.npmjs.org/vue/-/vue-2.7.15.tgz", - "integrity": "sha512-a29fsXd2G0KMRqIFTpRgpSbWaNBK3lpCTOLuGLEDnlHWdjB8fwl6zyYZ8xCrqkJdatwZb4mGHiEfJjnw0Q6AwQ==", - "dependencies": { - "@vue/compiler-sfc": "2.7.15", - "csstype": "^3.1.0" + "vue": "^3.2.37" } }, "node_modules/@sysvale/vue3-long-click": { @@ -2341,7 +2401,6 @@ "version": "8.44.7", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.7.tgz", "integrity": "sha512-f5ORu2hcBbKei97U73mf+l9t4zTGl74IqZ0GQk4oVea/VS8tQZYkUveSYojk+frraAVYId0V2WC9O4PTNru2FQ==", - "dev": true, "dependencies": { "@types/estree": "*", "@types/json-schema": "*" @@ -2351,7 +2410,6 @@ "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, "dependencies": { "@types/eslint": "*", "@types/estree": "*" @@ -2360,8 +2418,7 @@ "node_modules/@types/estree": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "dev": true + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" }, "node_modules/@types/express": { "version": "4.17.21", @@ -2461,8 +2518,7 @@ "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 + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" }, "node_modules/@types/lodash": { "version": "4.14.202", @@ -2485,7 +2541,6 @@ "version": "20.10.0", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.0.tgz", "integrity": "sha512-D0WfRmU9TQ8I9PFx9Yc+EBHw+vSpIub4IDvQivcp26PtPrdMGAq5SDcpXEo/epqa/DXotVpekHiLNTg3iaKXBQ==", - "dev": true, "dependencies": { "undici-types": "~5.26.4" } @@ -2567,6 +2622,11 @@ "@types/node": "*" } }, + "node_modules/@types/sortablejs": { + "version": "1.15.8", + "resolved": "https://registry.npmjs.org/@types/sortablejs/-/sortablejs-1.15.8.tgz", + "integrity": "sha512-b79830lW+RZfwaztgs1aVPgbasJ8e7AXtZYHTELNXZPsERt4ymJdjV4OccDbHQAvHrCcFpbF78jkm0R6h/pZVg==" + }, "node_modules/@types/svgo": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/@types/svgo/-/svgo-1.3.6.tgz", @@ -2582,6 +2642,19 @@ "@types/node": "*" } }, + "node_modules/@vee-validate/i18n": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@vee-validate/i18n/-/i18n-4.12.2.tgz", + "integrity": "sha512-wkepZ8GNYdPMUiTYYYli6bseV9XwOK9cKkQPm9Bdj/ZMUq0cfbTZhvI+/5n8bWwF46IDmlTy3ybxLIE5C46Msw==" + }, + "node_modules/@vee-validate/rules": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@vee-validate/rules/-/rules-4.12.2.tgz", + "integrity": "sha512-eWgXmwazMFXzwkdUzb5OI/qlzYj7NE9lbLS4WIcPSWmfStyGhePeEXpsuOcx0Yl8OKvCP4hB0eEP4JXYZm+C9w==", + "dependencies": { + "vee-validate": "4.12.2" + } + }, "node_modules/@vitejs/plugin-vue": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-3.2.0.tgz", @@ -2724,7 +2797,6 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", - "dev": true, "dependencies": { "@webassemblyjs/helper-numbers": "1.11.6", "@webassemblyjs/helper-wasm-bytecode": "1.11.6" @@ -2733,26 +2805,22 @@ "node_modules/@webassemblyjs/floating-point-hex-parser": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", - "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", - "dev": true + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==" }, "node_modules/@webassemblyjs/helper-api-error": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", - "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", - "dev": true + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==" }, "node_modules/@webassemblyjs/helper-buffer": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", - "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", - "dev": true + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==" }, "node_modules/@webassemblyjs/helper-numbers": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", - "dev": true, "dependencies": { "@webassemblyjs/floating-point-hex-parser": "1.11.6", "@webassemblyjs/helper-api-error": "1.11.6", @@ -2762,14 +2830,12 @@ "node_modules/@webassemblyjs/helper-wasm-bytecode": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", - "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", - "dev": true + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==" }, "node_modules/@webassemblyjs/helper-wasm-section": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", - "dev": true, "dependencies": { "@webassemblyjs/ast": "1.11.6", "@webassemblyjs/helper-buffer": "1.11.6", @@ -2781,7 +2847,6 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", - "dev": true, "dependencies": { "@xtuc/ieee754": "^1.2.0" } @@ -2790,7 +2855,6 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", - "dev": true, "dependencies": { "@xtuc/long": "4.2.2" } @@ -2798,14 +2862,12 @@ "node_modules/@webassemblyjs/utf8": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", - "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", - "dev": true + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==" }, "node_modules/@webassemblyjs/wasm-edit": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", - "dev": true, "dependencies": { "@webassemblyjs/ast": "1.11.6", "@webassemblyjs/helper-buffer": "1.11.6", @@ -2821,7 +2883,6 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", - "dev": true, "dependencies": { "@webassemblyjs/ast": "1.11.6", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", @@ -2834,7 +2895,6 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", - "dev": true, "dependencies": { "@webassemblyjs/ast": "1.11.6", "@webassemblyjs/helper-buffer": "1.11.6", @@ -2846,7 +2906,6 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", - "dev": true, "dependencies": { "@webassemblyjs/ast": "1.11.6", "@webassemblyjs/helper-api-error": "1.11.6", @@ -2860,7 +2919,6 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", - "dev": true, "dependencies": { "@webassemblyjs/ast": "1.11.6", "@xtuc/long": "4.2.2" @@ -2905,14 +2963,12 @@ "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 + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" }, "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 + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" }, "node_modules/abab": { "version": "2.0.6", @@ -2947,7 +3003,6 @@ "version": "8.11.2", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", - "dev": true, "bin": { "acorn": "bin/acorn" }, @@ -2969,7 +3024,6 @@ "version": "1.9.0", "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", - "dev": true, "peerDependencies": { "acorn": "^8" } @@ -3012,7 +3066,6 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -3067,7 +3120,6 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, "peerDependencies": { "ajv": "^6.9.1" } @@ -3114,7 +3166,7 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, + "devOptional": true, "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -3355,7 +3407,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, + "devOptional": true, "engines": { "node": ">=8" } @@ -3460,7 +3512,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, + "devOptional": true, "dependencies": { "fill-range": "^7.0.1" }, @@ -3568,7 +3620,6 @@ "version": "4.22.1", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", - "dev": true, "funding": [ { "type": "opencollective", @@ -3610,8 +3661,7 @@ "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 + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, "node_modules/buffer-xor": { "version": "1.0.3", @@ -3683,7 +3733,6 @@ "version": "1.0.30001565", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001565.tgz", "integrity": "sha512-xrE//a3O7TP0vaJ8ikzkD2c2NgcVUvsEe2IvFTntV4Yd1Z9FVzh+gW+enX96L0psrbaFMcVcH2l90xNuGDWc8w==", - "dev": true, "funding": [ { "type": "opencollective", @@ -3752,6 +3801,15 @@ "pnpm": ">=7" } }, + "node_modules/chartjs-adapter-luxon": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/chartjs-adapter-luxon/-/chartjs-adapter-luxon-1.3.1.tgz", + "integrity": "sha512-yxHov3X8y+reIibl1o+j18xzrcdddCLqsXhriV2+aQ4hCR66IYFchlRXUvrJVoxglJ380pgytU7YWtoqdIgqhg==", + "peerDependencies": { + "chart.js": ">=3.0.0", + "luxon": ">=1.0.0" + } + }, "node_modules/check-error": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", @@ -3768,7 +3826,7 @@ "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, + "devOptional": true, "funding": [ { "type": "individual", @@ -3805,7 +3863,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "dev": true, "engines": { "node": ">=6.0" } @@ -4967,8 +5024,7 @@ "node_modules/electron-to-chromium": { "version": "1.4.595", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.595.tgz", - "integrity": "sha512-+ozvXuamBhDOKvMNUQvecxfbyICmIAwS4GpLmR0bsiSBlGnLaOcs2Cj7J8XSbW+YEaN3Xl3ffgpm+srTUWFwFQ==", - "dev": true + "integrity": "sha512-+ozvXuamBhDOKvMNUQvecxfbyICmIAwS4GpLmR0bsiSBlGnLaOcs2Cj7J8XSbW+YEaN3Xl3ffgpm+srTUWFwFQ==" }, "node_modules/elliptic": { "version": "6.5.4", @@ -5019,7 +5075,6 @@ "version": "5.15.0", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", - "dev": true, "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -5061,14 +5116,12 @@ "node_modules/es-module-lexer": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz", - "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==", - "dev": true + "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==" }, "node_modules/esbuild": { "version": "0.15.18", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.18.tgz", "integrity": "sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==", - "dev": true, "hasInstallScript": true, "bin": { "esbuild": "bin/esbuild" @@ -5108,7 +5161,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "android" @@ -5124,7 +5176,6 @@ "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "android" @@ -5140,7 +5191,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "darwin" @@ -5156,7 +5206,6 @@ "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "darwin" @@ -5172,7 +5221,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "freebsd" @@ -5188,7 +5236,6 @@ "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "freebsd" @@ -5204,7 +5251,6 @@ "cpu": [ "ia32" ], - "dev": true, "optional": true, "os": [ "linux" @@ -5220,7 +5266,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "linux" @@ -5236,7 +5281,6 @@ "cpu": [ "arm" ], - "dev": true, "optional": true, "os": [ "linux" @@ -5252,7 +5296,6 @@ "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "linux" @@ -5268,7 +5311,6 @@ "cpu": [ "mips64el" ], - "dev": true, "optional": true, "os": [ "linux" @@ -5284,7 +5326,6 @@ "cpu": [ "ppc64" ], - "dev": true, "optional": true, "os": [ "linux" @@ -5300,7 +5341,6 @@ "cpu": [ "riscv64" ], - "dev": true, "optional": true, "os": [ "linux" @@ -5316,7 +5356,6 @@ "cpu": [ "s390x" ], - "dev": true, "optional": true, "os": [ "linux" @@ -5332,7 +5371,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "netbsd" @@ -5348,7 +5386,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "openbsd" @@ -5364,7 +5401,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "sunos" @@ -5380,7 +5416,6 @@ "cpu": [ "ia32" ], - "dev": true, "optional": true, "os": [ "win32" @@ -5396,7 +5431,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "win32" @@ -5412,7 +5446,6 @@ "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "win32" @@ -5425,7 +5458,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, "engines": { "node": ">=6" } @@ -5470,7 +5502,6 @@ "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, "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -5483,7 +5514,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, "engines": { "node": ">=4.0" } @@ -5505,7 +5535,6 @@ "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, "dependencies": { "estraverse": "^5.2.0" }, @@ -5517,7 +5546,6 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, "engines": { "node": ">=4.0" } @@ -5555,7 +5583,6 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, "engines": { "node": ">=0.8.x" } @@ -5680,8 +5707,7 @@ "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==", - "dev": true + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "node_modules/fast-glob": { "version": "3.3.2", @@ -5702,8 +5728,7 @@ "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 + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, "node_modules/fastest-levenshtein": { "version": "1.0.16", @@ -5798,7 +5823,7 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, + "devOptional": true, "dependencies": { "to-regex-range": "^5.0.1" }, @@ -5989,7 +6014,6 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, "hasInstallScript": true, "optional": true, "os": [ @@ -6003,7 +6027,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -6088,7 +6111,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, + "devOptional": true, "dependencies": { "is-glob": "^4.0.1" }, @@ -6291,7 +6314,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", - "dev": true, "dependencies": { "function-bind": "^1.1.2" }, @@ -6700,7 +6722,7 @@ "version": "4.3.4", "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz", "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==", - "dev": true + "devOptional": true }, "node_modules/import-fresh": { "version": "3.3.0", @@ -6787,7 +6809,7 @@ "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, + "devOptional": true, "dependencies": { "binary-extensions": "^2.0.0" }, @@ -6805,7 +6827,6 @@ "version": "2.13.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", - "dev": true, "dependencies": { "hasown": "^2.0.0" }, @@ -6837,7 +6858,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, + "devOptional": true, "engines": { "node": ">=0.10.0" } @@ -6855,7 +6876,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, + "devOptional": true, "dependencies": { "is-extglob": "^2.1.1" }, @@ -6867,7 +6888,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, + "devOptional": true, "engines": { "node": ">=0.12.0" } @@ -6969,7 +6990,6 @@ "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, "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -6983,7 +7003,6 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -7080,14 +7099,12 @@ "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 + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" }, "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 + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "node_modules/json5": { "version": "2.2.3", @@ -7331,7 +7348,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "dev": true, "engines": { "node": ">=6.11.5" } @@ -7430,12 +7446,22 @@ "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-3.0.2.tgz", "integrity": "sha512-3/Qptq2vr7WeJbB4KHUSKlq8Pl7ASXi3UG6CMbBm8WRtXi8+GHm7mKaU3urfpSEzWe2wCIChs6/sdocUsTKJiA==" }, + "node_modules/lodash.keyby": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.keyby/-/lodash.keyby-4.6.0.tgz", + "integrity": "sha512-PRe4Cn20oJM2Sn6ljcZMeKgyhTHpzvzFmdsp9rK+6K0eJs6Tws0MqgGFpfX/o2HjcoQcBny1Eik9W7BnVTzjIQ==" + }, "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==", "dev": true }, + "node_modules/lodash.reduce": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz", + "integrity": "sha512-6raRe2vxCYBhpBu+B+TtNGUzah+hQjVdu3E17wfusjyrXBka2nBS8OH/gjVZ5PvHOhWmIZTYri09Z6n/QfnNMw==" + }, "node_modules/lodash.snakecase": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", @@ -7575,8 +7601,7 @@ "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 + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" }, "node_modules/merge2": { "version": "1.4.1", @@ -7644,7 +7669,6 @@ "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, "engines": { "node": ">= 0.6" } @@ -7653,7 +7677,6 @@ "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, "dependencies": { "mime-db": "1.52.0" }, @@ -7812,8 +7835,7 @@ "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 + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" }, "node_modules/no-case": { "version": "3.0.4", @@ -7882,8 +7904,7 @@ "node_modules/node-releases": { "version": "2.0.13", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", - "dev": true + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==" }, "node_modules/nopt": { "version": "7.2.0", @@ -7904,7 +7925,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, + "devOptional": true, "engines": { "node": ">=0.10.0" } @@ -8269,8 +8290,7 @@ "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 + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "node_modules/path-scurry": { "version": "1.10.1", @@ -8346,7 +8366,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, + "devOptional": true, "engines": { "node": ">=8.6" }, @@ -9115,7 +9135,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, "dependencies": { "safe-buffer": "^5.1.0" } @@ -9197,7 +9216,7 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, + "devOptional": true, "dependencies": { "picomatch": "^2.2.1" }, @@ -9339,7 +9358,6 @@ "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -9494,7 +9512,6 @@ "version": "2.79.1", "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", - "dev": true, "bin": { "rollup": "dist/bin/rollup" }, @@ -9532,7 +9549,6 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, "funding": [ { "type": "github", @@ -9567,7 +9583,7 @@ "version": "1.69.5", "resolved": "https://registry.npmjs.org/sass/-/sass-1.69.5.tgz", "integrity": "sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ==", - "dev": true, + "devOptional": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0", "immutable": "^4.0.0", @@ -9749,7 +9765,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", - "dev": true, "dependencies": { "randombytes": "^2.1.0" } @@ -10007,7 +10022,6 @@ "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, "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -10285,7 +10299,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -10342,7 +10355,6 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true, "engines": { "node": ">=6" } @@ -10351,7 +10363,6 @@ "version": "5.24.0", "resolved": "https://registry.npmjs.org/terser/-/terser-5.24.0.tgz", "integrity": "sha512-ZpGR4Hy3+wBEzVEnHvstMvqpD/nABNelQn/z2r0fjVWGQsN3bpOLzQlqDxmb4CDZnXq5lpjnQ+mHQLAOpfM5iw==", - "dev": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.8.2", @@ -10369,7 +10380,6 @@ "version": "5.3.9", "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", - "dev": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.17", "jest-worker": "^27.4.5", @@ -10403,7 +10413,6 @@ "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, "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -10420,8 +10429,7 @@ "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 + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, "node_modules/thunky": { "version": "1.1.0", @@ -10486,7 +10494,7 @@ "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==", - "dev": true, + "devOptional": true, "dependencies": { "is-number": "^7.0.0" }, @@ -10557,6 +10565,35 @@ "node": ">=6" } }, + "node_modules/ts-loader": { + "version": "9.5.1", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.1.tgz", + "integrity": "sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==", + "dev": true, + "dependencies": { + "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/ts-loader/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, + "engines": { + "node": ">= 8" + } + }, "node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", @@ -10578,6 +10615,17 @@ "node": ">=4" } }, + "node_modules/type-fest": { + "version": "4.8.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.8.2.tgz", + "integrity": "sha512-mcvrCjixA5166hSrUoJgGb9gBQN4loMYyj9zxuMs/66ibHNEFd5JXMw37YVDx58L4/QID9jIzdTBB4mDwDJ6KQ==", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", @@ -10591,11 +10639,22 @@ "node": ">= 0.6" } }, + "node_modules/typescript": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.2.tgz", + "integrity": "sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, "node_modules/undici-types": { "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.0", @@ -10659,7 +10718,6 @@ "version": "1.0.13", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", - "dev": true, "funding": [ { "type": "opencollective", @@ -10689,7 +10747,6 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, "dependencies": { "punycode": "^2.1.0" } @@ -10698,7 +10755,6 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, "engines": { "node": ">=6" } @@ -10796,11 +10852,22 @@ "node": ">= 0.8" } }, + "node_modules/vee-validate": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/vee-validate/-/vee-validate-4.12.2.tgz", + "integrity": "sha512-SF5AOHbyW8vy09FgMRVHxCtK/3D5Jsk0VyvMf/HZhwPgpjGCCBW6ZWDW11/HC6pRbMOjTcg3YueBI6hb3oveYg==", + "dependencies": { + "@vue/devtools-api": "^6.5.1", + "type-fest": "^4.8.2" + }, + "peerDependencies": { + "vue": "^3.3.8" + } + }, "node_modules/vite": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.7.tgz", "integrity": "sha512-29pdXjk49xAP0QBr0xXqu2s5jiQIXNvE/xwd0vUizYT2Hzqe4BksNNoWllFVXJf4eLZ+UlVQmXfB4lWrc+t18g==", - "dev": true, "dependencies": { "esbuild": "^0.15.9", "postcss": "^8.4.18", @@ -10946,6 +11013,22 @@ "integrity": "sha512-LK3wJHs3vJxHG292C8cnsRusgyC5SEZDCzDCD01mdE/AoREFMl2tzLRuzwyuEsOIz13tqgBcnvysN3Lxsa14Fw==", "dev": true }, + "node_modules/vue-draggable-plus": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/vue-draggable-plus/-/vue-draggable-plus-0.5.3.tgz", + "integrity": "sha512-dwKDzZ8io3y7k2iuIwVwiGrdiq5C0S7Et7nt5Gz5KjpBS9MtZGFP+L4FJPWGSLYleOT8HmVuCXTZYjGet7wC0g==", + "dependencies": { + "@types/sortablejs": "^1.15.8" + }, + "peerDependencies": { + "@types/sortablejs": "^1.15.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, "node_modules/vue-input-facade": { "version": "3.0.0-beta.3", "resolved": "https://registry.npmjs.org/vue-input-facade/-/vue-input-facade-3.0.0-beta.3.tgz", @@ -11096,7 +11179,6 @@ "version": "5.89.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.89.0.tgz", "integrity": "sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==", - "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.3", "@types/estree": "^1.0.0", @@ -11450,7 +11532,6 @@ "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, "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -11468,7 +11549,6 @@ "version": "3.2.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true, "engines": { "node": ">=10.13.0" } diff --git a/resources/js-vue-3/package.json b/resources/js-vue-3/package.json index c9f07dbf..fafeb174 100644 --- a/resources/js-vue-3/package.json +++ b/resources/js-vue-3/package.json @@ -22,12 +22,15 @@ "resolve-url-loader": "^5.0.0", "sass": "^1.54.4", "sass-loader": "^12.6.0", + "ts-loader": "^9.5.1", "vite": "^3.0.0", "vitest": "^0.22.1" }, "dependencies": { - "@sysvale/cuida": "^3.0.0-alpha.109", - "@sysvale/show": "^0.2.0", + "@sysvale/cuida": "3.45.1", + "@sysvale/show": "1.2.0", + "@vee-validate/i18n": "^4.10.5", + "@vee-validate/rules": "^4.10.5", "@vitejs/plugin-vue": "^3.0.3", "chart.js": "^4.0.1", "fibers": "^5.0.3", @@ -40,9 +43,12 @@ "lodash.snakecase": "^4.1.1", "luxon": "^3.1.1", "pinia": "^2.0.22", - "sweetalert2": "^11.6.7", + "sweetalert2": "^11.10.1", "tippy.js": "^6.3.7", + "typescript": "^5.3.2", + "vee-validate": "^4.12.2", "vue": "^3.1.0", + "vue-draggable-plus": "^0.5.3", "vue-loader": "^17.0.0", "vue-multiselect": "^3.0.0-alpha.2", "vue-router": "^4.1.3" diff --git a/resources/js-vue-3/shared/domain/member/entity.ts b/resources/js-vue-3/shared/domain/member/entity.ts new file mode 100644 index 00000000..8fa3fcce --- /dev/null +++ b/resources/js-vue-3/shared/domain/member/entity.ts @@ -0,0 +1,32 @@ +import { IRequestable } from "../../utils/cuids/interfaces/RequestableInterface"; + +export class Member implements IRequestable { + private id: string; + private name: string; + private email: string; + private teams: Array; + private avatarUrl: string; + + constructor(args?: any) { + this.id = args?.id; + this.name = args?.name; + this.teams = args?.teams || []; + this.email = args?.email; + this.avatarUrl = args?.avatarUrl; + } + + get teamIds(): Array { + return this.teams.map(({ id }) => id); + } + + asRequestPayload = (): Object => { + return { + id: this.id, + name: this.name, + teamIds: this.teamIds, + teams: this.teams, + email: this.email, + avatar: this.avatarUrl, + }; + } +} \ No newline at end of file diff --git a/resources/js-vue-3/shared/domain/member/index.ts b/resources/js-vue-3/shared/domain/member/index.ts new file mode 100644 index 00000000..0d716d09 --- /dev/null +++ b/resources/js-vue-3/shared/domain/member/index.ts @@ -0,0 +1,9 @@ +import { Member } from './entity'; +import MemberService from './service'; +import { MembersPageSettings } from './pageSettings'; + +export { + Member, + MemberService, + MembersPageSettings, +}; diff --git a/resources/js-vue-3/shared/domain/member/pageSettings.ts b/resources/js-vue-3/shared/domain/member/pageSettings.ts new file mode 100644 index 00000000..7bdc0749 --- /dev/null +++ b/resources/js-vue-3/shared/domain/member/pageSettings.ts @@ -0,0 +1,23 @@ +import { ICuidsPageSettings } from "../../utils/cuids/interfaces/CuidsPageSettingsInterface"; + +export class MembersPageSettings implements ICuidsPageSettings { + addItemButtonText = 'Adicionar membro'; + createSuccessFeedbackTitle = 'Sucesso'; + createSuccessFeedbackText = 'Membro criado com sucesso'; + createSuccessFeedbackParams = {}; + deleteSuccessFeedbackText = 'Membro deletado com sucesso'; + deleteSuccessFeedbackTitle = 'Sucesso'; + deleteSuccessFeedbackParams = {}; + deleteConfirmationTitle = 'Tem certeza que deseja deletar?'; + deleteConfirmationText = 'Essa ação não poderá ser desfeita'; + emptyStateImage = ''; + emptyStateDescription = 'Empty state description'; + emptyStateTitle = 'Nenhum membro cadastrado'; + emptyStateText = 'Ainda não ha nenhum membro cadastrado'; + emptyStateActionButtonText = 'Adicionar membro'; + pageTitle = 'Membros'; + pageSubtitle = 'Gerencie membros'; + updateSuccessFeedbackText = 'Membro atualizado com sucesso'; + updateSuccessFeedbackTitle = 'Sucesso'; + updateSuccessFeedbackParams = {}; +} \ No newline at end of file diff --git a/resources/js-vue-3/shared/domain/member/service.ts b/resources/js-vue-3/shared/domain/member/service.ts new file mode 100644 index 00000000..758a0bfa --- /dev/null +++ b/resources/js-vue-3/shared/domain/member/service.ts @@ -0,0 +1,10 @@ +import { CUIDSService } from '../../utils/cuids/CUIDSService'; +import { Member } from './entity'; + +class MemberService extends CUIDSService { + constructor(resource: string) { + super(resource); + } +} + +export default new MemberService('members'); \ No newline at end of file diff --git a/resources/js-vue-3/shared/domain/team/entity.ts b/resources/js-vue-3/shared/domain/team/entity.ts new file mode 100644 index 00000000..2c4bdef4 --- /dev/null +++ b/resources/js-vue-3/shared/domain/team/entity.ts @@ -0,0 +1,24 @@ +import { IRequestable } from "../../utils/cuids/interfaces/RequestableInterface"; + +export class Team implements IRequestable { + private id: string; + private name: string; + private boardLists: Array; + + constructor(args?: any) { + this.id = args?.id; + this.name = args?.name; + this.boardLists = args?.boardLists; + } + + asRequestPayload = (): Object => { + return { + id: this.id, + name: this.name, + boardLists: this.boardLists.map((item, index) => ({ + ...item, + position: index, + })), + }; + } +} \ No newline at end of file diff --git a/resources/js-vue-3/shared/domain/team/index.ts b/resources/js-vue-3/shared/domain/team/index.ts new file mode 100644 index 00000000..cc0a113d --- /dev/null +++ b/resources/js-vue-3/shared/domain/team/index.ts @@ -0,0 +1,9 @@ +import { Team } from './model'; +import TeamService from './service'; +import { TeamsPageSettings } from './pageSettings'; + +export { + Team, + TeamService, + TeamsPageSettings, +}; diff --git a/resources/js-vue-3/shared/domain/team/model.ts b/resources/js-vue-3/shared/domain/team/model.ts new file mode 100644 index 00000000..e347ecd7 --- /dev/null +++ b/resources/js-vue-3/shared/domain/team/model.ts @@ -0,0 +1,21 @@ +import { IRequestable } from "../../utils/cuids/interfaces/RequestableInterface"; + +export class Team implements IRequestable { + private id: string; + private name: string; + private boardLists: Array; + + constructor(args?: any) { + this.id = args?.id; + this.name = args?.name; + this.boardLists = args?.boardLists; + } + + asRequestPayload = (): Object => { + return { + id: this.id, + name: this.name, + boardLists: this.boardLists, + }; + } +} \ No newline at end of file diff --git a/resources/js-vue-3/shared/domain/team/pageSettings.ts b/resources/js-vue-3/shared/domain/team/pageSettings.ts new file mode 100644 index 00000000..fd3c66f0 --- /dev/null +++ b/resources/js-vue-3/shared/domain/team/pageSettings.ts @@ -0,0 +1,23 @@ +import { ICuidsPageSettings } from "../../utils/cuids/interfaces/CuidsPageSettingsInterface"; + +export class TeamsPageSettings implements ICuidsPageSettings { + addItemButtonText = 'Adicionar time'; + createSuccessFeedbackTitle = 'Sucesso'; + createSuccessFeedbackText = 'Time criado com sucesso'; + createSuccessFeedbackParams = {}; + deleteSuccessFeedbackText = 'Time deletado com sucesso'; + deleteSuccessFeedbackTitle = 'Sucesso'; + deleteSuccessFeedbackParams = {}; + deleteConfirmationTitle = 'Tem certeza que deseja deletar?'; + deleteConfirmationText = 'Essa ação não poderá ser desfeita'; + emptyStateImage = ''; + emptyStateDescription = 'Empty state description'; + emptyStateTitle = 'Nenhum time cadastrado'; + emptyStateText = 'Ainda não há nenhum time cadastrado'; + emptyStateActionButtonText = 'Adicionar time'; + pageTitle = 'Times'; + pageSubtitle = 'Gerencie times'; + updateSuccessFeedbackText = 'Time atualizada com sucesso'; + updateSuccessFeedbackTitle = 'Sucesso'; + updateSuccessFeedbackParams = {}; +} \ No newline at end of file diff --git a/resources/js-vue-3/shared/domain/team/service.ts b/resources/js-vue-3/shared/domain/team/service.ts new file mode 100644 index 00000000..513cda3f --- /dev/null +++ b/resources/js-vue-3/shared/domain/team/service.ts @@ -0,0 +1,10 @@ +import { CUIDSService } from '../../utils/cuids/CUIDSService'; +import { Team } from './model'; + +class TeamService extends CUIDSService { + constructor(resource: string) { + super(resource); + } +} + +export default new TeamService('teams'); \ No newline at end of file diff --git a/resources/js-vue-3/shared/domain/workspace/index.ts b/resources/js-vue-3/shared/domain/workspace/index.ts new file mode 100644 index 00000000..b7d20db1 --- /dev/null +++ b/resources/js-vue-3/shared/domain/workspace/index.ts @@ -0,0 +1,9 @@ +import { Workspace } from './model'; +import WorkspaceService from './service'; +import { WorkspacesPageSettings } from './pageSettings'; + +export { + Workspace, + WorkspaceService, + WorkspacesPageSettings, +}; diff --git a/resources/js-vue-3/shared/domain/workspace/model.ts b/resources/js-vue-3/shared/domain/workspace/model.ts new file mode 100644 index 00000000..28fcea88 --- /dev/null +++ b/resources/js-vue-3/shared/domain/workspace/model.ts @@ -0,0 +1,24 @@ +import { IRequestable } from "../../utils/cuids/interfaces/RequestableInterface"; + +export class Workspace implements IRequestable { + private id: string; + private name: string; + private status: boolean; + private teams: Array; + + constructor(args?: any) { + this.id = args?.id; + this.name = args?.name; + this.status = args?.status; + this.teams = args?.teams; + } + + asRequestPayload = (): Object => { + return { + id: this.id, + name: this.name, + status: this.status, + teamIds: this.teams.map(({ id }) => id), + }; + } +} \ No newline at end of file diff --git a/resources/js-vue-3/shared/domain/workspace/pageSettings.ts b/resources/js-vue-3/shared/domain/workspace/pageSettings.ts new file mode 100644 index 00000000..311c8e97 --- /dev/null +++ b/resources/js-vue-3/shared/domain/workspace/pageSettings.ts @@ -0,0 +1,23 @@ +import { ICuidsPageSettings } from "../../utils/cuids/interfaces/CuidsPageSettingsInterface"; + +export class WorkspacesPageSettings implements ICuidsPageSettings { + addItemButtonText = 'Adicionar workspace'; + createSuccessFeedbackTitle = 'Sucesso'; + createSuccessFeedbackText = 'Workspace criado com sucesso'; + createSuccessFeedbackParams = {}; + deleteSuccessFeedbackText = 'Workspace deletado com sucesso'; + deleteSuccessFeedbackTitle = 'Sucesso'; + deleteSuccessFeedbackParams = {}; + deleteConfirmationTitle = 'Tem certeza que deseja deletar o workspace?'; + deleteConfirmationText = 'Essa ação não poderá ser desfeita'; + emptyStateImage = ''; + emptyStateDescription = 'Ainda não há nenhum Workspace'; + emptyStateTitle = 'Nenhum workspace cadastrada'; + emptyStateText = 'Ainda não ha nenhum workspace cadastrada'; + emptyStateActionButtonText = 'Adicionar workspace'; + pageTitle = 'Workspaces'; + pageSubtitle = 'Gerencie workspaces'; + updateSuccessFeedbackText = 'Workspace atualizada com sucesso'; + updateSuccessFeedbackTitle = 'Sucesso'; + updateSuccessFeedbackParams = {}; +} \ No newline at end of file diff --git a/resources/js-vue-3/shared/domain/workspace/service.ts b/resources/js-vue-3/shared/domain/workspace/service.ts new file mode 100644 index 00000000..0bb4092d --- /dev/null +++ b/resources/js-vue-3/shared/domain/workspace/service.ts @@ -0,0 +1,10 @@ +import { CUIDSService } from '../../utils/cuids/CUIDSService'; +import { Workspace } from './model'; + +class WorkspaceService extends CUIDSService { + constructor(resource: string) { + super(resource); + } +} + +export default new WorkspaceService('workspaces'); \ No newline at end of file diff --git a/resources/js-vue-3/shared/utils/cuids/CUIDSService.ts b/resources/js-vue-3/shared/utils/cuids/CUIDSService.ts index 6180f20a..31419f02 100644 --- a/resources/js-vue-3/shared/utils/cuids/CUIDSService.ts +++ b/resources/js-vue-3/shared/utils/cuids/CUIDSService.ts @@ -25,7 +25,8 @@ export abstract class CUIDSService implements IRead, IWrite { return this.httpClient.get(`/${this.resource}`, { params }); } - delete = async (id: string): Promise => { + delete = async (param: any): Promise => { + const id = typeof param === 'string' ? param : param.id; return this.httpClient.delete(`/${this.resource}/${id}`); } diff --git a/resources/js-vue-3/shared/utils/cuids/interfaces/CuidsPageSettingsInterface.ts b/resources/js-vue-3/shared/utils/cuids/interfaces/CuidsPageSettingsInterface.ts new file mode 100644 index 00000000..e741a989 --- /dev/null +++ b/resources/js-vue-3/shared/utils/cuids/interfaces/CuidsPageSettingsInterface.ts @@ -0,0 +1,21 @@ +export interface ICuidsPageSettings { + addItemButtonText: String; + createSuccessFeedbackTitle: String; + createSuccessFeedbackText: String; + createSuccessFeedbackParams: Object; + deleteSuccessFeedbackText: String; + deleteSuccessFeedbackTitle: String; + deleteSuccessFeedbackParams: Object; + deleteConfirmationTitle: String; + deleteConfirmationText: String; + emptyStateImage: String; + emptyStateDescription: String; + emptyStateTitle: String; + emptyStateText: String; + emptyStateActionButtonText: String; + pageTitle: String; + pageSubtitle: String; + updateSuccessFeedbackText: String; + updateSuccessFeedbackTitle: String; + updateSuccessFeedbackParams: Object; +} \ No newline at end of file diff --git a/resources/js-vue-3/shared/utils/cuids/interfaces/RequestableInterface.ts b/resources/js-vue-3/shared/utils/cuids/interfaces/RequestableInterface.ts new file mode 100644 index 00000000..a82fd7e7 --- /dev/null +++ b/resources/js-vue-3/shared/utils/cuids/interfaces/RequestableInterface.ts @@ -0,0 +1,3 @@ +export interface IRequestable { + asRequestPayload(): Object; +} \ No newline at end of file diff --git a/resources/js-vue-3/shared/utils/senswal.js b/resources/js-vue-3/shared/utils/senswal.js new file mode 100644 index 00000000..26014fb8 --- /dev/null +++ b/resources/js-vue-3/shared/utils/senswal.js @@ -0,0 +1,83 @@ +import Swal from 'sweetalert2'; + +const confirmationDefaultConfig = (customConfig = {}) => ({ + icon: 'warning', + confirmButtonText: 'Sim, excluir', + showCancelButton: true, + customClass: { + confirmButton: 'btn btn--indigo btn--md', + cancelButton: 'btn btn--secondary btn--md', + }, + reverseButtons: true, + ...customConfig, +}); + +const toastDefaultConfig = (customConfig = {}) => ({ + toast: true, + position: 'top-end', + timer: 5000, + timerProgressBar: true, + showConfirmButton: false, + ...customConfig, +}); + +const erouDefaultConfig = (message, response, customConfig = {}) => ({ + title: 'Ops...', + icon: 'error', + showCloseButton: true, + showConfirmButton: false, + html: (() => { + let detailsMessage = ''; + if (process.env.NODE_ENV === 'development' && response) { + detailsMessage = ` + ${response?.status}: ${response?.statusText}

+ `; + } + const isShowInfoMessage = response?.status !== 422 && response?.status !== 400; + const infoMessage = isShowInfoMessage ? 'Se o problema persistir, contate o suporte.' : ''; + return ` + ${message}
+ ${infoMessage}

+ ${detailsMessage}`; + })(), + customClass: { + htmlContainer: 'swal__container', + title: 'swal__title', + actions: 'swal__actions', + }, + buttonsStyling: false, + ...customConfig, +}) + +const confirmation = (title, html, config) => + Swal.fire({ + title, + html, + ...confirmationDefaultConfig(), + ...config, + }); + +const toast = (icon = 'success', title = 'Sucesso!', text = 'Ação concluída', config) => Swal.fire({ + icon, + title, + text, + ...toastDefaultConfig(), + ...config, + }); + +const erou = (message, response, config) => Swal.fire({ + ...erouDefaultConfig(message, response), + ...config, + }); + + +export default { + confirmation, + toast, + erou, + defaultConfig: { + confirmation: confirmationDefaultConfig, + toast: toastDefaultConfig, + erou: erouDefaultConfig, + } +} \ No newline at end of file diff --git a/resources/js-vue-3/shared/validation/index.js b/resources/js-vue-3/shared/validation/index.js new file mode 100644 index 00000000..1ed2049d --- /dev/null +++ b/resources/js-vue-3/shared/validation/index.js @@ -0,0 +1,34 @@ +import { localize } from '@vee-validate/i18n'; +import { + required, email, min, min_value, integer, regex, +} from '@vee-validate/rules'; +import isValidCNPJ from './rules/cnpj'; +import pt_BR_validation from './pt_BR_validation'; + +export default (VeeValidate) => { + VeeValidate.configure({ + // Generates an English message locale generator + generateMessage: localize('pt-BR', { + messages: pt_BR_validation, + }), + }); + + VeeValidate.defineRule('required', required); + VeeValidate.defineRule('not_empty', (value) => { + if (!value || value?.length == 0) { + return 'O campo não pode ser vazio'; + } + return true; + }); + VeeValidate.defineRule('cnpj', (value) => { + if (!isValidCNPJ(value)) { + return 'CNPJ inválido'; + } + return true; + }); + VeeValidate.defineRule('email', email); + VeeValidate.defineRule('min', min); + VeeValidate.defineRule('min_value', min_value); + VeeValidate.defineRule('integer', integer); + VeeValidate.defineRule('regex', regex); +}; diff --git a/resources/js-vue-3/shared/validation/pt_BR.js b/resources/js-vue-3/shared/validation/pt_BR.js new file mode 100644 index 00000000..a53ee8d5 --- /dev/null +++ b/resources/js-vue-3/shared/validation/pt_BR.js @@ -0,0 +1,32 @@ +export default { + after: (field, [target]) => `O ${field} deve estar depois do ${target}.`, + alpha_dash: (field) => `O ${field} deve conter letras, números e traços.`, + alpha_num: (field) => `O ${field} deve conter somente letras e números.`, + alpha_spaces: (field) => `O ${field} só pode conter caracteres alfabéticos e espaços.`, + alpha: (field) => `O ${field} deve conter somente letras.`, + before: (field, [target]) => `O ${field} deve estar antes do ${target}.`, + between: (field, [min, max]) => `O ${field} deve estar entre ${min} e ${max}.`, + confirmed: (field, [confirmedField]) => `O ${field} e ${confirmedField} devem ser iguais.`, + credit_card: (field) => `O ${field} é inválido.`, + date_between: (field, [min, max]) => `O ${field} deve estar entre ${min} e ${max}.`, + date_format: (field, [format]) => `O ${field} deve estar no formato ${format}.`, + decimal: (field) => `O ${field} é obrigatório.`, + digits: (field, [length]) => `O ${field} deve ser numérico e ter ${length} dígitos.`, + dimensions: (field, [width, height]) => `O ${field} deve ter ${width} pixels de largura por ${height} pixels de altura.`, + email: (field) => `O ${field} deve ser um email válido.`, + ext: (field) => `O ${field} deve ser um arquivo válido.`, + image: (field) => `O ${field} deve ser uma imagem.`, + in: (field) => `O ${field} deve ter um valor válido.`, + ip: (field) => `O ${field} deve ser um endereço IP válido.`, + max: (field, [length]) => `O ${field} não deve ter mais que ${length} caracteres.`, + max_value: (field, [max]) => `O ${field} precisa ser ${max} ou menor.`, + mimes: (field) => `O ${field} deve ser um tipo de arquivo válido.`, + min: (field, [length]) => `O ${field} deve conter pelo menos ${length} caracteres.`, + min_value: (field, [min]) => `O ${field} precisa ser ${min} ou maior.`, + not_in: (field) => `O ${field} deve ser um valor válido.`, + numeric: (field) => `O ${field} deve conter apenas números`, + regex: (field) => `O ${field} possui um formato inválido.`, + required: (field) => `O ${field} é obrigatório.`, + size: (field, [size]) => `O ${field} deve ser menor que ${size} KB.`, + url: (field) => `O ${field} não é uma URL válida.`, +}; diff --git a/resources/js-vue-3/shared/validation/pt_BR_validation.js b/resources/js-vue-3/shared/validation/pt_BR_validation.js new file mode 100644 index 00000000..116a39c8 --- /dev/null +++ b/resources/js-vue-3/shared/validation/pt_BR_validation.js @@ -0,0 +1,28 @@ +export default { + alpha: 'O campo {field} deve conter somente letras', + alpha_dash: 'O campo {field} deve conter letras, números e traços', + alpha_num: 'O campo {field} deve conter somente letras e números', + alpha_spaces: 'O campo {field} só pode conter caracteres alfabéticos e espaços', + between: 'O campo {field} deve estar entre 0:{min} e 1:{max}', + confirmed: 'A confirmação do campo {field} deve ser igual', + digits: 'O campo {field} deve ser numérico e ter exatamente 0:{length} dígitos', + dimensions: 'O campo {field} deve ter 0:{width} pixels de largura por 1:{height} pixels de altura', + email: 'O campo {field} deve ser um email válido', + excluded: 'O campo {field} deve ser um valor válido', + ext: 'O campo {field} deve ser um arquivo válido', + image: 'O campo {field} deve ser uma imagem', + integer: 'O campo {field} deve ser um número inteiro', + is: 'O valor inserido no campo {field} não é válido', + one_of: 'O campo {field} deve ter um valor válido', + length: 'O tamanho do campo {field} deve ser 0:{length}', + max: 'O campo {field} não deve ter mais que 0:{length} caracteres', + max_value: 'O campo {field} precisa ser 0:{max} ou menor', + mimes: 'O campo {field} deve ser um tipo de arquivo válido', + min: 'O campo {field} deve conter pelo menos 0:{length} caracteres', + min_value: 'O campo {field} precisa ser 0:{min} ou maior', + numeric: 'O campo {field} deve conter apenas números', + regex: 'O campo {field} possui um formato inválido', + required: 'O campo {field} é obrigatório', + required_if: 'O campo {field} é obrigatório', + size: 'O campo {field} deve ser menor que 0:{size}KB', +}; diff --git a/resources/js-vue-3/shared/validation/rules/cnpj.js b/resources/js-vue-3/shared/validation/rules/cnpj.js new file mode 100644 index 00000000..dc086210 --- /dev/null +++ b/resources/js-vue-3/shared/validation/rules/cnpj.js @@ -0,0 +1,9 @@ +import { defineRule } from 'vee-validate'; +import is_valid from '../utils/cnpj'; + +defineRule('cnpj', (value) => { + if (!is_valid(value)) { + return 'CNPJ inválido'; + } + return true; +}); diff --git a/resources/js-vue-3/shared/validation/utils/cnpj.js b/resources/js-vue-3/shared/validation/utils/cnpj.js new file mode 100644 index 00000000..23db8f1d --- /dev/null +++ b/resources/js-vue-3/shared/validation/utils/cnpj.js @@ -0,0 +1,57 @@ +function validarCNPJ(cnpj) { + + cnpj = cnpj.replace(/[^\d]+/g,''); + + if(cnpj == '') return false; + + if (cnpj.length != 14) + return false; + + // Elimina CNPJs invalidos conhecidos + if (cnpj == "00000000000000" || + cnpj == "11111111111111" || + cnpj == "22222222222222" || + cnpj == "33333333333333" || + cnpj == "44444444444444" || + cnpj == "55555555555555" || + cnpj == "66666666666666" || + cnpj == "77777777777777" || + cnpj == "88888888888888" || + cnpj == "99999999999999") + return false; + + // Valida DVs + let tamanho = cnpj.length - 2 + let numeros = cnpj.substring(0,tamanho); + let digitos = cnpj.substring(tamanho); + let soma = 0; + let pos = tamanho - 7; + for (let i = tamanho; i >= 1; i--) { + soma += numeros.charAt(tamanho - i) * pos--; + if (pos < 2) { + pos = 9; + } + } + let resultado = soma % 11 < 2 ? 0 : 11 - soma % 11; + if (resultado != digitos.charAt(0)) { + return false; + } + + tamanho = tamanho + 1; + numeros = cnpj.substring(0,tamanho); + soma = 0; + pos = tamanho - 7; + for (let i = tamanho; i >= 1; i--) { + soma += numeros.charAt(tamanho - i) * pos--; + if (pos < 2) { + pos = 9; + } + } + resultado = soma % 11 < 2 ? 0 : 11 - soma % 11; + if (resultado != digitos.charAt(1)) + return false; + + return true; +} + +export default validarCNPJ \ No newline at end of file diff --git a/resources/js-vue-3/webpack.mix.js b/resources/js-vue-3/webpack.mix.js index 3330a6b1..a87728e2 100644 --- a/resources/js-vue-3/webpack.mix.js +++ b/resources/js-vue-3/webpack.mix.js @@ -14,7 +14,7 @@ const mix = require('laravel-mix'); module.exports = { resolve: { - extensions: ['.tsx', '.ts', '.js', '.vue'], + extensions: ["*", ".js", ".jsx", ".vue", ".ts", ".tsx"], }, rules: [ { @@ -27,6 +27,21 @@ module.exports = { }; mix + .webpackConfig({ + module: { + rules: [ + { + test: /\.tsx?$/, + loader: "ts-loader", + exclude: /node_modules/ + } + ] + }, + resolve: { + extensions: ["*", ".js", ".jsx", ".vue", ".ts", ".tsx"], + }, + }) .setPublicPath('../../public') .js('./app.js', 'js/app-vue-3.min.js') - .sass('../sass/app.scss', 'css').vue(); \ No newline at end of file + .sass('../sass/app.scss', 'css') + .vue(); \ No newline at end of file diff --git a/stubs/components/CreateEntityModal.vue b/stubs/components/CreateEntityModal.vue new file mode 100644 index 00000000..3e38c1f8 --- /dev/null +++ b/stubs/components/CreateEntityModal.vue @@ -0,0 +1,67 @@ + + diff --git a/stubs/components/EntitiesTable.vue b/stubs/components/EntitiesTable.vue new file mode 100644 index 00000000..1224e64e --- /dev/null +++ b/stubs/components/EntitiesTable.vue @@ -0,0 +1,77 @@ + + + \ No newline at end of file diff --git a/stubs/components/EntityForm.vue b/stubs/components/EntityForm.vue new file mode 100644 index 00000000..d782860f --- /dev/null +++ b/stubs/components/EntityForm.vue @@ -0,0 +1,228 @@ + + \ No newline at end of file diff --git a/stubs/components/UpdateEntityModal.vue b/stubs/components/UpdateEntityModal.vue new file mode 100644 index 00000000..42f84030 --- /dev/null +++ b/stubs/components/UpdateEntityModal.vue @@ -0,0 +1,75 @@ + + \ No newline at end of file diff --git a/stubs/domain/index.ts b/stubs/domain/index.ts new file mode 100644 index 00000000..978d5811 --- /dev/null +++ b/stubs/domain/index.ts @@ -0,0 +1,9 @@ +import { Entity } from './model'; +import EntityService from './service'; +import { EntitiesPageSettings } from './pageSettings'; + +export { + Entity, + EntityService, + EntitiesPageSettings, +}; diff --git a/stubs/domain/model.ts b/stubs/domain/model.ts new file mode 100644 index 00000000..3b916228 --- /dev/null +++ b/stubs/domain/model.ts @@ -0,0 +1,18 @@ +import { IRequestable } from "../../utils/cuids/interfaces/RequestableInterface"; + +export class Entity implements IRequestable { + private id: string; + private name: string; + + constructor(args?: any) { + this.id = args?.id; + this.name = args?.name; + } + + asRequestPayload = (): Object => { + return { + id: this.id, + name: this.name, + }; + } +} \ No newline at end of file diff --git a/stubs/domain/pageSettings.ts b/stubs/domain/pageSettings.ts new file mode 100644 index 00000000..825fec6e --- /dev/null +++ b/stubs/domain/pageSettings.ts @@ -0,0 +1,23 @@ +import { ICuidsPageSettings } from "../../utils/cuids/interfaces/CuidsPageSettingsInterface"; + +export class EntitiesPageSettings implements ICuidsPageSettings { + addItemButtonText = 'Adicionar entidade'; + createSuccessFeedbackTitle = 'Sucesso'; + createSuccessFeedbackText = 'Entidade criada com sucesso'; + createSuccessFeedbackParams = {}; + deleteSuccessFeedbackText = 'Entidade deletada com sucesso'; + deleteSuccessFeedbackTitle = 'Sucesso'; + deleteSuccessFeedbackParams = {}; + deleteConfirmationTitle = 'Tem certeza que deseja deletar?'; + deleteConfirmationText = 'Essa ação não poderá ser desfeita'; + emptyStateImage = ''; + emptyStateDescription = 'Empty state description'; + emptyStateTitle = 'Nenhum entidade cadastrada'; + emptyStateText = 'Ainda não ha nenhum entidade cadastrada'; + emptyStateActionButtonText = 'Adicionar entidade'; + pageTitle = 'Entidades'; + pageSubtitle = 'Gerencie entidades'; + updateSuccessFeedbackText = 'Entidade atualizada com sucesso'; + updateSuccessFeedbackTitle = 'Sucesso'; + updateSuccessFeedbackParams = {}; +} \ No newline at end of file diff --git a/stubs/domain/service.ts b/stubs/domain/service.ts new file mode 100644 index 00000000..bd86c61c --- /dev/null +++ b/stubs/domain/service.ts @@ -0,0 +1,10 @@ +import { CUIDSService } from '../../utils/cuids/CUIDSService'; +import { Entity } from './model'; + +class EntityService extends CUIDSService { + constructor(resource: string) { + super(resource); + } +} + +export default new EntityService('entities'); \ No newline at end of file diff --git a/stubs/pages/EntitiesPage.vue b/stubs/pages/EntitiesPage.vue new file mode 100644 index 00000000..e124b63d --- /dev/null +++ b/stubs/pages/EntitiesPage.vue @@ -0,0 +1,73 @@ + + + \ No newline at end of file diff --git a/stubs/routes/index.js b/stubs/routes/index.js new file mode 100644 index 00000000..8ad2e403 --- /dev/null +++ b/stubs/routes/index.js @@ -0,0 +1,15 @@ +export const routes = { + INDEX_ENTITIES: { + label: 'Entidade', + name: 'index-entities', + path: 'index/entities', + components: { + default: () => import('../pages/EntitiesPage.vue') + }, + meta: { + description: 'Entidades', + }, + }, +}; + +export default routes; \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 00000000..d5ade8a2 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "target": "es2016", + "module": "commonjs", + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "strict": true, + "skipLibCheck": true, + }, + "include": ["resources/js-vue-3/**/*"], +} \ No newline at end of file