diff --git a/.eslintrc.mjs b/.eslintrc.mjs new file mode 100644 index 00000000..3dc37837 --- /dev/null +++ b/.eslintrc.mjs @@ -0,0 +1,15 @@ +import { FlatCompat } from "@eslint/eslintrc"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + +const compat = new FlatCompat({ + baseDirectory: __dirname, +}); + +const config = compat.extends("next/core-web-vitals", "next/typescript"); +console.log(config); // Cek output di terminal + +export default Array.isArray(config) ? config : [config]; diff --git a/.gitignore b/.gitignore index 61b4bc33..98970e2d 100644 --- a/.gitignore +++ b/.gitignore @@ -21,21 +21,48 @@ # debug npm-debug.log* - -rn-debug.log* +yarn-debug.log* yarn-error.log* # local env files .env*.local +# build env files +.env*.build + # env here .env # vercel .vercel +# logs - mengabaikan isi logs tetapi menyimpan struktur folder +logs/* +!logs/.gitkeep +!logs/backend/ +!logs/frontend/ +logs/backend/* +!logs/backend/.gitkeep +logs/frontend/* +!logs/frontend/.gitkeep + # typescript *.tsbuildinfo next-env.d.ts -certificates \ No newline at end of file +# certificates +certificates/ +**/certificates/ +*.cert +*.key +*.pem + +# IDE and editor files +.idea/ +.vscode/ +*.swp +*.swo +*.swn +.DS_Store +Thumbs.db +.qodo diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index 35412482..00000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "WillLuke.nextjs.addTypesOnSave": true, - "WillLuke.nextjs.hasPrompted": true -} \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index d0a26813..16d8e305 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,429 @@ All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines. +## [1.4.28](https://github.com/bipproduction/hipmi/compare/v1.4.27...v1.4.28) (2025-06-16) + +## [1.4.27](https://github.com/bipproduction/hipmi/compare/v1.4.26...v1.4.27) (2025-06-16) + + +### Bug Fixes + +* dynamic error ([86bfbcb](https://github.com/bipproduction/hipmi/commit/86bfbcb60e225adcba6504869cf8548370fc6750)) + +## [1.4.26](https://github.com/bipproduction/hipmi/compare/v1.4.25...v1.4.26) (2025-06-13) + + +### Bug Fixes + +* admin donasi ([6ccdbf9](https://github.com/bipproduction/hipmi/commit/6ccdbf9763c1ce8443a6a691b24817d6b80265c6)) +* super admin ([5bc70ba](https://github.com/bipproduction/hipmi/commit/5bc70baf96e792e1e1492027747f8352f2f80313)) + +## [1.4.25](https://github.com/bipproduction/hipmi/compare/v1.4.24...v1.4.25) (2025-06-12) + +## [1.4.24](https://github.com/bipproduction/hipmi/compare/v1.4.23...v1.4.24) (2025-06-12) + + +### Bug Fixes + +* admin collaboration ([039ffc5](https://github.com/bipproduction/hipmi/commit/039ffc57b18d24968d854d06cd62fff13b769a6f)) +* admin forum ([aba2585](https://github.com/bipproduction/hipmi/commit/aba258517db277fd85d043c3aa4df279a5ec232d)) +* forum admin ([4b8316c](https://github.com/bipproduction/hipmi/commit/4b8316cc1311eb88840c029f1dfdb6a43e3a7f4f)) + +## [1.4.23](https://github.com/bipproduction/hipmi/compare/v1.4.22...v1.4.23) (2025-06-11) + +## [1.4.22](https://github.com/bipproduction/hipmi/compare/v1.4.21...v1.4.22) (2025-06-11) + + +### Bug Fixes + +* donasi ([f2c6940](https://github.com/bipproduction/hipmi/commit/f2c694022e510ea99726cfffaf06b6cfffb808c1)) +* donasi ([1f1cca3](https://github.com/bipproduction/hipmi/commit/1f1cca3520ff22b878e945383a580b32a3054a3d)) +* donasi ([e94090e](https://github.com/bipproduction/hipmi/commit/e94090eb30c2f34af08816b3c4ad8ac4cbd360e8)) +* donasi ([bb65042](https://github.com/bipproduction/hipmi/commit/bb650429b323670c85adc582eda8ff522bd4dd60)) +* donasi ([886d9f3](https://github.com/bipproduction/hipmi/commit/886d9f37f4636576b8a89020537e13708f582431)) + +## [1.4.21](https://github.com/bipproduction/hipmi/compare/v1.4.20...v1.4.21) (2025-06-10) + + +### Bug Fixes + +* donasi ([709de95](https://github.com/bipproduction/hipmi/commit/709de95b10650ae1472b75d73bdd0bf20306633e)) +* donasi ([9c5f005](https://github.com/bipproduction/hipmi/commit/9c5f0053b6b834c67f170767e28dd9e04c5614a4)) +* donasi ([4fdfb6f](https://github.com/bipproduction/hipmi/commit/4fdfb6f4b0548d78a712443ac24e37e933665d41)) +* donasi ([1b23c50](https://github.com/bipproduction/hipmi/commit/1b23c50ff08f2bbb46ecfeec9d0c02c03f9230c1)) +* donasi ([0e4dda5](https://github.com/bipproduction/hipmi/commit/0e4dda5356df96f4dc749c5a7d5613e378eb6096)) + +## [1.4.20](https://github.com/bipproduction/hipmi/compare/v1.4.19...v1.4.20) (2025-06-05) + + +### Bug Fixes + +* investasi ([69c0abe](https://github.com/bipproduction/hipmi/commit/69c0abed75cb7b777c7072969e8826663dd32fdc)) + +## [1.4.19](https://github.com/bipproduction/hipmi/compare/v1.4.18...v1.4.19) (2025-06-04) + + +### Bug Fixes + +* forum ([0de70b0](https://github.com/bipproduction/hipmi/commit/0de70b038429a63be25b669ef6d8732e2312fd9d)) +* forum ([42cfe65](https://github.com/bipproduction/hipmi/commit/42cfe650b565c02eb7ebf639ecef41c188ad4449)) +* investasi ([7a95395](https://github.com/bipproduction/hipmi/commit/7a95395fe9861997527d76f08073db8de4ba48aa)) +* investasi: ([5c3fe55](https://github.com/bipproduction/hipmi/commit/5c3fe551aeb57bdd24ad616f9cbe37c2d417efca)) + +## [1.4.18](https://github.com/bipproduction/hipmi/compare/v1.4.17...v1.4.18) (2025-06-03) + + +### Bug Fixes + +* forum ([512d170](https://github.com/bipproduction/hipmi/commit/512d170c3e047848c9b26144533e50720e04950b)) + +## [1.4.17](https://github.com/bipproduction/hipmi/compare/v1.4.16...v1.4.17) (2025-06-02) + +## [1.4.16](https://github.com/bipproduction/hipmi/compare/v1.4.15...v1.4.16) (2025-06-02) + + +### Bug Fixes + +* event ([6f686b6](https://github.com/bipproduction/hipmi/commit/6f686b6abf4ba6201df632938e4024004fe749b3)) +* voting ([c057f20](https://github.com/bipproduction/hipmi/commit/c057f20963df70f4ce2ac071007541678c6ff854)) + +## [1.4.15](https://github.com/bipproduction/hipmi/compare/v1.4.14...v1.4.15) (2025-05-30) + + +### Bug Fixes + +* collaboration ([5030253](https://github.com/bipproduction/hipmi/commit/5030253b07c1264229d066d18732d81e2636c5a6)) +* collaboration ([740ae44](https://github.com/bipproduction/hipmi/commit/740ae447340ce48d168e0e8e7c14079b3cf61817)) + +## [1.4.14](https://github.com/bipproduction/hipmi/compare/v1.4.13...v1.4.14) (2025-05-27) + + +### Bug Fixes + +* collaboration ([bdff760](https://github.com/bipproduction/hipmi/commit/bdff760f7021c624f8338da3af2d46c911b1dcff)) + +## [1.4.13](https://github.com/bipproduction/hipmi/compare/v1.4.12...v1.4.13) (2025-05-26) + + +### Bug Fixes + +* collaboration ([5007827](https://github.com/bipproduction/hipmi/commit/5007827d51117105b879bf18f06da60db8c48ff4)) + +## [1.4.12](https://github.com/bipproduction/hipmi/compare/v1.4.11...v1.4.12) (2025-05-26) + + +### Bug Fixes + +* Map ([f23defd](https://github.com/bipproduction/hipmi/commit/f23defd972fbd276fee546677dc5e9565651b4f4)) + +## [1.4.11](https://github.com/bipproduction/hipmi/compare/v1.4.10...v1.4.11) (2025-05-26) + +## [1.4.10](https://github.com/bipproduction/hipmi/compare/v1.4.9...v1.4.10) (2025-05-23) + +## [1.4.9](https://github.com/bipproduction/hipmi/compare/v1.4.8...v1.4.9) (2025-05-23) + + +### Bug Fixes + +* nested layout ([c202cc8](https://github.com/bipproduction/hipmi/commit/c202cc8ea08ce8cdb351136a47c2afe10afb14c9)) + +## [1.4.8](https://github.com/bipproduction/hipmi/compare/v1.4.7...v1.4.8) (2025-05-22) + +## [1.4.7](https://github.com/bipproduction/hipmi/compare/v1.4.6...v1.4.7) (2025-05-22) + +## [1.4.6](https://github.com/bipproduction/hipmi/compare/v1.4.5...v1.4.6) (2025-05-21) + +## [1.4.5](https://github.com/bipproduction/hipmi/compare/v1.4.4...v1.4.5) (2025-05-21) + +## [1.4.4](https://github.com/bipproduction/hipmi/compare/v1.4.3...v1.4.4) (2025-05-20) + + +### Bug Fixes + +* button sticker ([3743008](https://github.com/bipproduction/hipmi/commit/37430081d8718b4b2b06f5c3c09f13935bf413c4)) +* event ([02bbdfd](https://github.com/bipproduction/hipmi/commit/02bbdfd5f6a2d299b8d527b9211f7b6ff598602f)) + +## [1.4.3](https://github.com/bipproduction/hipmi/compare/v1.4.2...v1.4.3) (2025-05-20) + +## [1.4.2](https://github.com/bipproduction/hipmi/compare/v1.4.1...v1.4.2) (2025-05-19) + + +### Bug Fixes + +* admin app info ([117dbe6](https://github.com/bipproduction/hipmi/commit/117dbe6157fbb74d359db1c8baffe3c4985fab4a)) +* admin app info ([0cbcee8](https://github.com/bipproduction/hipmi/commit/0cbcee87bd52f6a7b596e260841deef9d4615016)) + +## [1.4.1](https://github.com/bipproduction/hipmi/compare/v1.4.0...v1.4.1) (2025-05-19) + +## [1.4.0](https://github.com/bipproduction/hipmi/compare/v1.3.1...v1.4.0) (2025-05-16) + + +### Features + +* admin sticker ([2a8c79f](https://github.com/bipproduction/hipmi/commit/2a8c79fd09c3f7fd7ee58ac6896b17802dfe0147)) +* admin stiker ([e7858a2](https://github.com/bipproduction/hipmi/commit/e7858a281223a81037219afec58e5f6b9e04be15)) + +## [1.3.1](https://github.com/bipproduction/hipmi/compare/v1.3.0...v1.3.1) (2025-05-16) + +## [1.3.0](https://github.com/bipproduction/hipmi/compare/v1.2.126...v1.3.0) (2025-05-15) + + +### Features + +* admin app information ([bc10b80](https://github.com/bipproduction/hipmi/commit/bc10b80139833966d3e39b52cabf577930552052)) +* tampilan upload stiker di admin ([fbea35e](https://github.com/bipproduction/hipmi/commit/fbea35eef96a656e1b474959aa3fb8198c7d2b0e)) + +## [1.2.126](https://github.com/bipproduction/hipmi/compare/v1.2.125...v1.2.126) (2025-05-13) + +## [1.2.125](https://github.com/bipproduction/hipmi/compare/v1.2.124...v1.2.125) (2025-05-09) + +## [1.2.124](https://github.com/bipproduction/hipmi/compare/v1.2.123...v1.2.124) (2025-05-08) + +## [1.2.123](https://github.com/bipproduction/hipmi/compare/v1.2.122...v1.2.123) (2025-05-06) + +## [1.2.122](https://github.com/bipproduction/hipmi/compare/v1.2.121...v1.2.122) (2025-05-06) + +## [1.2.121](https://github.com/bipproduction/hipmi/compare/v1.2.120...v1.2.121) (2025-05-05) + +## [1.2.120](https://github.com/bipproduction/hipmi/compare/v1.2.119...v1.2.120) (2025-05-05) + +## [1.2.119](https://github.com/bipproduction/hipmi/compare/v1.2.118...v1.2.119) (2025-05-02) + +## [1.2.118](https://github.com/bipproduction/hipmi/compare/v1.2.117...v1.2.118) (2025-04-30) + +## [1.2.117](https://github.com/bipproduction/hipmi/compare/v1.2.116...v1.2.117) (2025-04-29) + +## [1.2.116](https://github.com/bipproduction/hipmi/compare/v1.2.115...v1.2.116) (2025-04-28) + +## [1.2.115](https://github.com/bipproduction/hipmi/compare/v1.2.114...v1.2.115) (2025-04-28) + +## [1.2.114](https://github.com/bipproduction/hipmi/compare/v1.2.113...v1.2.114) (2025-04-23) + +## [1.2.113](https://github.com/bipproduction/hipmi/compare/v1.2.112...v1.2.113) (2025-04-21) + +## [1.2.112](https://github.com/bipproduction/hipmi/compare/v1.2.111...v1.2.112) (2025-04-17) + +## [1.2.111](https://github.com/bipproduction/hipmi/compare/v1.2.110...v1.2.111) (2025-04-17) + +## [1.2.110](https://github.com/bipproduction/hipmi/compare/v1.2.109...v1.2.110) (2025-04-16) + +## [1.2.109](https://github.com/bipproduction/hipmi/compare/v1.2.108...v1.2.109) (2025-04-16) + +## [1.2.108](https://github.com/bipproduction/hipmi/compare/v1.2.107...v1.2.108) (2025-04-14) + +## [1.2.107](https://github.com/bipproduction/hipmi/compare/v1.2.106...v1.2.107) (2025-04-10) + +## [1.2.106](https://github.com/bipproduction/hipmi/compare/v1.2.105...v1.2.106) (2025-04-09) + +## [1.2.105](https://github.com/bipproduction/hipmi/compare/v1.2.104...v1.2.105) (2025-04-09) + +## [1.2.104](https://github.com/bipproduction/hipmi/compare/v1.2.103...v1.2.104) (2025-04-09) + +## [1.2.103](https://github.com/bipproduction/hipmi/compare/v1.2.102...v1.2.103) (2025-04-09) + +## [1.2.102](https://github.com/bipproduction/hipmi/compare/v1.2.101...v1.2.102) (2025-04-08) + +## [1.2.101](https://github.com/bipproduction/hipmi/compare/v1.2.100...v1.2.101) (2025-04-08) + +## [1.2.100](https://github.com/bipproduction/hipmi/compare/v1.2.99...v1.2.100) (2025-04-08) + +## [1.2.99](https://github.com/bipproduction/hipmi/compare/v1.2.98...v1.2.99) (2025-04-08) + +## [1.2.98](https://github.com/bipproduction/hipmi/compare/v1.2.97...v1.2.98) (2025-04-08) + +## [1.2.97](https://github.com/bipproduction/hipmi/compare/v1.2.96...v1.2.97) (2025-04-08) + +## [1.2.96](https://github.com/bipproduction/hipmi/compare/v1.2.95...v1.2.96) (2025-04-08) + +## [1.2.95](https://github.com/bipproduction/hipmi/compare/v1.2.94...v1.2.95) (2025-04-08) + +## [1.2.94](https://github.com/bipproduction/hipmi/compare/v1.2.93...v1.2.94) (2025-04-08) + +## [1.2.93](https://github.com/bipproduction/hipmi/compare/v1.2.92...v1.2.93) (2025-04-08) + +## [1.2.92](https://github.com/bipproduction/hipmi/compare/v1.2.91...v1.2.92) (2025-04-08) + +## [1.2.91](https://github.com/bipproduction/hipmi/compare/v1.2.90...v1.2.91) (2025-04-08) + +## [1.2.90](https://github.com/bipproduction/hipmi/compare/v1.2.89...v1.2.90) (2025-04-07) + +## [1.2.89](https://github.com/bipproduction/hipmi/compare/v1.2.88...v1.2.89) (2025-04-07) + +## [1.2.88](https://github.com/bipproduction/hipmi/compare/v1.2.87...v1.2.88) (2025-04-07) + +## [1.2.87](https://github.com/bipproduction/hipmi/compare/v1.2.86...v1.2.87) (2025-03-26) + +## [1.2.86](https://github.com/bipproduction/hipmi/compare/v1.2.85...v1.2.86) (2025-03-25) + +## [1.2.85](https://github.com/bipproduction/hipmi/compare/v1.2.84...v1.2.85) (2025-03-24) + +## [1.2.84](https://github.com/bipproduction/hipmi/compare/v1.2.83...v1.2.84) (2025-03-21) + +## [1.2.83](https://github.com/bipproduction/hipmi/compare/v1.2.82...v1.2.83) (2025-03-20) + +## [1.2.82](https://github.com/bipproduction/hipmi/compare/v1.2.81...v1.2.82) (2025-03-19) + +## [1.2.81](https://github.com/bipproduction/hipmi/compare/v1.2.80...v1.2.81) (2025-03-17) + +## [1.2.80](https://github.com/bipproduction/hipmi/compare/v1.2.79...v1.2.80) (2025-03-14) + +## [1.2.79](https://github.com/bipproduction/hipmi/compare/v1.2.78...v1.2.79) (2025-03-14) + +## [1.2.78](https://github.com/bipproduction/hipmi/compare/v1.2.77...v1.2.78) (2025-03-12) + +## [1.2.77](https://github.com/bipproduction/hipmi/compare/v1.2.76...v1.2.77) (2025-03-12) + +## [1.2.76](https://github.com/bipproduction/hipmi/compare/v1.2.75...v1.2.76) (2025-03-12) + +## [1.2.75](https://github.com/bipproduction/hipmi/compare/v1.2.74...v1.2.75) (2025-03-07) + +## [1.2.74](https://github.com/bipproduction/hipmi/compare/v1.2.73...v1.2.74) (2025-03-07) + +## [1.2.73](https://github.com/bipproduction/hipmi/compare/v1.2.72...v1.2.73) (2025-03-06) + +## [1.2.72](https://github.com/bipproduction/hipmi/compare/v1.2.71...v1.2.72) (2025-03-05) + +## [1.2.71](https://github.com/bipproduction/hipmi/compare/v1.2.70...v1.2.71) (2025-03-04) + +## [1.2.70](https://github.com/bipproduction/hipmi/compare/v1.2.69...v1.2.70) (2025-03-04) + +## [1.2.69](https://github.com/bipproduction/hipmi/compare/v1.2.68...v1.2.69) (2025-02-28) + +## [1.2.68](https://github.com/bipproduction/hipmi/compare/v1.2.67...v1.2.68) (2025-02-28) + +## [1.2.67](https://github.com/bipproduction/hipmi/compare/v1.2.66...v1.2.67) (2025-02-27) + +## [1.2.66](https://github.com/bipproduction/hipmi/compare/v1.2.65...v1.2.66) (2025-02-27) + +## [1.2.65](https://github.com/bipproduction/hipmi/compare/v1.2.64...v1.2.65) (2025-02-27) + +## [1.2.64](https://github.com/bipproduction/hipmi/compare/v1.2.63...v1.2.64) (2025-02-26) + +## [1.2.63](https://github.com/bipproduction/hipmi/compare/v1.2.62...v1.2.63) (2025-02-26) + +## [1.2.62](https://github.com/bipproduction/hipmi/compare/v1.2.61...v1.2.62) (2025-02-25) + +## [1.2.61](https://github.com/bipproduction/hipmi/compare/v1.2.60...v1.2.61) (2025-02-25) + +## [1.2.60](https://github.com/bipproduction/hipmi/compare/v1.2.59...v1.2.60) (2025-02-25) + +## [1.2.59](https://github.com/bipproduction/hipmi/compare/v1.2.58...v1.2.59) (2025-02-25) + +## [1.2.58](https://github.com/bipproduction/hipmi/compare/v1.2.57...v1.2.58) (2025-02-25) + +## [1.2.57](https://github.com/bipproduction/hipmi/compare/v1.2.56...v1.2.57) (2025-02-20) + +## [1.2.56](https://github.com/bipproduction/hipmi/compare/v1.2.55...v1.2.56) (2025-02-19) + +## [1.2.55](https://github.com/bipproduction/hipmi/compare/v1.2.54...v1.2.55) (2025-02-12) + +## [1.2.54](https://github.com/bipproduction/hipmi/compare/v1.2.53...v1.2.54) (2025-02-12) + +## [1.2.53](https://github.com/bipproduction/hipmi/compare/v1.2.52...v1.2.53) (2025-02-11) + +## [1.2.52](https://github.com/bipproduction/hipmi/compare/v1.2.51...v1.2.52) (2025-02-10) + +## [1.2.51](https://github.com/bipproduction/hipmi/compare/v1.2.50...v1.2.51) (2025-02-10) + +## [1.2.50](https://github.com/bipproduction/hipmi/compare/v1.2.49...v1.2.50) (2025-02-10) + +## [1.2.49](https://github.com/bipproduction/hipmi/compare/v1.2.48...v1.2.49) (2025-02-07) + +## [1.2.48](https://github.com/bipproduction/hipmi/compare/v1.2.47...v1.2.48) (2025-02-07) + +## [1.2.47](https://github.com/bipproduction/hipmi/compare/v1.2.46...v1.2.47) (2025-02-03) + +## [1.2.46](https://github.com/bipproduction/hipmi/compare/v1.2.45...v1.2.46) (2025-02-03) + +## [1.2.45](https://github.com/bipproduction/hipmi/compare/v1.2.44...v1.2.45) (2025-02-03) + +## [1.2.44](https://github.com/bipproduction/hipmi/compare/v1.2.43...v1.2.44) (2025-02-03) + +## [1.2.43](https://github.com/bipproduction/hipmi/compare/v1.2.42...v1.2.43) (2025-02-03) + +## [1.2.42](https://github.com/bipproduction/hipmi/compare/v1.2.41...v1.2.42) (2025-01-30) + +## [1.2.41](https://github.com/bipproduction/hipmi/compare/v1.2.40...v1.2.41) (2025-01-21) + +## [1.2.40](https://github.com/bipproduction/hipmi/compare/v1.2.39...v1.2.40) (2025-01-16) + +## [1.2.39](https://github.com/bipproduction/hipmi/compare/v1.2.38...v1.2.39) (2025-01-12) + +## [1.2.38](https://github.com/bipproduction/hipmi/compare/v1.2.37...v1.2.38) (2025-01-03) + + +### Bug Fixes + +* user ([215accb](https://github.com/bipproduction/hipmi/commit/215accbcaa989e43f43dfc5f400d5411013f4ef3)) + +## [1.2.37](https://github.com/bipproduction/hipmi/compare/v1.2.36...v1.2.37) (2025-01-02) + +## [1.2.36](https://github.com/bipproduction/hipmi/compare/v1.2.35...v1.2.36) (2024-12-30) + +## [1.2.35](https://github.com/bipproduction/hipmi/compare/v1.2.34...v1.2.35) (2024-12-27) + +## [1.2.34](https://github.com/bipproduction/hipmi/compare/v1.2.33...v1.2.34) (2024-12-24) + +## [1.2.33](https://github.com/bipproduction/hipmi/compare/v1.2.32...v1.2.33) (2024-12-22) + +## [1.2.32](https://github.com/bipproduction/hipmi/compare/v1.2.31...v1.2.32) (2024-12-19) + + +### Bug Fixes + +* donasi ([72b6d23](https://github.com/bipproduction/hipmi/commit/72b6d239fee3e90e812ab24192154e5e8910fccb)) + +## [1.2.31](https://github.com/bipproduction/hipmi/compare/v1.2.30...v1.2.31) (2024-12-17) + +## [1.2.30](https://github.com/bipproduction/hipmi/compare/v1.2.29...v1.2.30) (2024-12-16) + +## [1.2.29](https://github.com/bipproduction/hipmi/compare/v1.2.28...v1.2.29) (2024-12-13) + +## [1.2.28](https://github.com/bipproduction/hipmi/compare/v1.2.27...v1.2.28) (2024-12-12) + +## [1.2.27](https://github.com/bipproduction/hipmi/compare/v1.2.26...v1.2.27) (2024-12-12) + +## [1.2.26](https://github.com/bipproduction/hipmi/compare/v1.2.25...v1.2.26) (2024-12-12) + +## [1.2.25](https://github.com/bipproduction/hipmi/compare/v1.2.24...v1.2.25) (2024-12-12) + +## [1.2.24](https://github.com/bipproduction/hipmi/compare/v1.2.23...v1.2.24) (2024-12-11) + + +### Bug Fixes + +* drawer katalog ([eab293d](https://github.com/bipproduction/hipmi/commit/eab293dd35a6f061cfa4675679de1ce68f506c3c)) +* loading button tambah portofolio ([8823a01](https://github.com/bipproduction/hipmi/commit/8823a01b067928cbeea195402f2bb454df8e8bea)) +* pencegahan error ([afe8014](https://github.com/bipproduction/hipmi/commit/afe8014cc8b4ab7266f3c52918a6bc82bb62bc58)) + +## [1.2.23](https://github.com/bipproduction/hipmi/compare/v1.2.22...v1.2.23) (2024-12-11) + +## [1.2.22](https://github.com/bipproduction/hipmi/compare/v1.2.21...v1.2.22) (2024-12-10) + +## [1.2.21](https://github.com/bipproduction/hipmi/compare/v1.2.20...v1.2.21) (2024-12-09) + +## [1.2.20](https://github.com/bipproduction/hipmi/compare/v1.2.19...v1.2.20) (2024-12-09) + +## [1.2.19](https://github.com/bipproduction/hipmi/compare/v1.2.18...v1.2.19) (2024-12-06) + +## [1.2.18](https://github.com/bipproduction/hipmi/compare/v1.2.17...v1.2.18) (2024-12-04) + +## [1.2.17](https://github.com/bipproduction/hipmi/compare/v1.2.16...v1.2.17) (2024-12-04) + +## [1.2.16](https://github.com/bipproduction/hipmi/compare/v1.2.15...v1.2.16) (2024-12-03) + +## [1.2.15](https://github.com/bipproduction/hipmi/compare/v1.2.14...v1.2.15) (2024-12-03) + +## [1.2.14](https://github.com/bipproduction/hipmi/compare/v1.2.13...v1.2.14) (2024-12-03) + +## [1.2.13](https://github.com/bipproduction/hipmi/compare/v1.2.12...v1.2.13) (2024-12-03) + + +### Bug Fixes + +* event ([fc38813](https://github.com/bipproduction/hipmi/commit/fc388133a638d4288314dd3faeddfcce61fe7292)) +* version 1.2.12 ([932735f](https://github.com/bipproduction/hipmi/commit/932735f9238db07b331b1b26328624247371c3d6)) + ## [1.2.12](https://github.com/bipproduction/hipmi/compare/v1.2.11...v1.2.12) (2024-12-02) diff --git a/backup.sql b/backup.sql new file mode 100644 index 00000000..7fe569dd --- /dev/null +++ b/backup.sql @@ -0,0 +1,3399 @@ +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 14.15 (Homebrew) +-- Dumped by pg_dump version 14.15 (Homebrew) + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET idle_in_transaction_session_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SELECT pg_catalog.set_config('search_path', '', false); +SET check_function_bodies = false; +SET xmloption = content; +SET client_min_messages = warning; +SET row_security = off; + +SET default_tablespace = ''; + +SET default_table_access_method = heap; + +-- +-- Name: BeritaInvestasi; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."BeritaInvestasi" ( + id text NOT NULL, + title text NOT NULL, + deskripsi text NOT NULL, + active boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone NOT NULL, + "imagesId" text, + "investasiId" text NOT NULL, + "imageId" text +); + + +ALTER TABLE public."BeritaInvestasi" OWNER TO bip; + +-- +-- Name: BusinessMaps; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."BusinessMaps" ( + id text NOT NULL, + "isActive" boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone NOT NULL, + "namePin" text NOT NULL, + latitude double precision NOT NULL, + longitude double precision NOT NULL, + "authorId" text, + "portofolioId" text, + "imageId" text, + "pinId" text +); + + +ALTER TABLE public."BusinessMaps" OWNER TO bip; + +-- +-- Name: DokumenInvestasi; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."DokumenInvestasi" ( + id text NOT NULL, + title text NOT NULL, + url text, + active boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "investasiId" text, + "fileId" text +); + + +ALTER TABLE public."DokumenInvestasi" OWNER TO bip; + +-- +-- Name: Donasi; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."Donasi" ( + id text NOT NULL, + title text NOT NULL, + target text NOT NULL, + active boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone NOT NULL, + "publishTime" timestamp(3) without time zone, + catatan text, + progres text DEFAULT '0'::text, + terkumpul text DEFAULT '0'::text, + "namaBank" text, + rekening text, + "akumulasiPencairan" integer DEFAULT 0, + "totalPencairan" integer DEFAULT 0, + "authorId" text, + "imagesId" text, + "donasiMaster_KategoriId" text, + "donasiMaster_DurasiId" text, + "donasiMaster_StatusDonasiId" text DEFAULT '2'::text, + "imageId" text +); + + +ALTER TABLE public."Donasi" OWNER TO bip; + +-- +-- Name: DonasiMaster_Bank; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."DonasiMaster_Bank" ( + id text NOT NULL, + name text NOT NULL, + norek text NOT NULL, + active boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone NOT NULL +); + + +ALTER TABLE public."DonasiMaster_Bank" OWNER TO bip; + +-- +-- Name: DonasiMaster_Durasi; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."DonasiMaster_Durasi" ( + id text NOT NULL, + name text NOT NULL, + active boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone NOT NULL +); + + +ALTER TABLE public."DonasiMaster_Durasi" OWNER TO bip; + +-- +-- Name: DonasiMaster_Kategori; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."DonasiMaster_Kategori" ( + id text NOT NULL, + name text NOT NULL, + active boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone NOT NULL +); + + +ALTER TABLE public."DonasiMaster_Kategori" OWNER TO bip; + +-- +-- Name: DonasiMaster_StatusDonasi; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."DonasiMaster_StatusDonasi" ( + id text NOT NULL, + name text NOT NULL, + active boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone NOT NULL +); + + +ALTER TABLE public."DonasiMaster_StatusDonasi" OWNER TO bip; + +-- +-- Name: DonasiMaster_StatusInvoice; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."DonasiMaster_StatusInvoice" ( + id text NOT NULL, + name text NOT NULL, + active boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone NOT NULL +); + + +ALTER TABLE public."DonasiMaster_StatusInvoice" OWNER TO bip; + +-- +-- Name: Donasi_Cerita; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."Donasi_Cerita" ( + id text NOT NULL, + pembukaan text NOT NULL, + cerita text NOT NULL, + active boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone NOT NULL, + "imagesId" text, + "donasiId" text, + "imageId" text +); + + +ALTER TABLE public."Donasi_Cerita" OWNER TO bip; + +-- +-- Name: Donasi_Invoice; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."Donasi_Invoice" ( + id text NOT NULL, + nominal text NOT NULL, + active boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone NOT NULL, + "donasiId" text, + "donasiMaster_BankId" text, + "donasiMaster_StatusInvoiceId" text DEFAULT '3'::text, + "authorId" text, + "imagesId" text, + "imageId" text +); + + +ALTER TABLE public."Donasi_Invoice" OWNER TO bip; + +-- +-- Name: Donasi_Kabar; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."Donasi_Kabar" ( + id text NOT NULL, + title text NOT NULL, + deskripsi text NOT NULL, + active boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone NOT NULL, + "donasiId" text, + "imagesId" text, + "imageId" text +); + + +ALTER TABLE public."Donasi_Kabar" OWNER TO bip; + +-- +-- Name: Donasi_Notif; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."Donasi_Notif" ( + id text NOT NULL, + "isRead" boolean DEFAULT false NOT NULL, + active boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone NOT NULL, + "userId" text, + "donasi_KabarId" text +); + + +ALTER TABLE public."Donasi_Notif" OWNER TO bip; + +-- +-- Name: Donasi_PencairanDana; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."Donasi_PencairanDana" ( + id text NOT NULL, + "nominalCair" integer NOT NULL, + title text NOT NULL, + deskripsi text NOT NULL, + active boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone NOT NULL, + "donasiId" text, + "imagesId" text, + "imageId" text +); + + +ALTER TABLE public."Donasi_PencairanDana" OWNER TO bip; + +-- +-- Name: Donasi_TemporaryCreate; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."Donasi_TemporaryCreate" ( + id text NOT NULL, + title text NOT NULL, + target text NOT NULL, + active boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone NOT NULL, + "imagesId" text, + "donasiMaster_KategoriId" text, + "donasiMaster_DurasiId" text, + "imageId" text +); + + +ALTER TABLE public."Donasi_TemporaryCreate" OWNER TO bip; + +-- +-- Name: Event; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."Event" ( + id text NOT NULL, + title text NOT NULL, + lokasi text NOT NULL, + tanggal timestamp(3) without time zone, + deskripsi text NOT NULL, + active boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone NOT NULL, + catatan text, + "tanggalSelesai" timestamp(3) without time zone, + "isArsip" boolean DEFAULT false, + "authorId" text, + "eventMaster_StatusId" text DEFAULT '2'::text, + "eventMaster_TipeAcaraId" integer +); + + +ALTER TABLE public."Event" OWNER TO bip; + +-- +-- Name: EventMaster_Status; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."EventMaster_Status" ( + id text NOT NULL, + name text NOT NULL, + active boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone NOT NULL +); + + +ALTER TABLE public."EventMaster_Status" OWNER TO bip; + +-- +-- Name: EventMaster_TipeAcara; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."EventMaster_TipeAcara" ( + id integer NOT NULL, + name text NOT NULL, + active boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone NOT NULL +); + + +ALTER TABLE public."EventMaster_TipeAcara" OWNER TO bip; + +-- +-- Name: EventMaster_TipeAcara_id_seq; Type: SEQUENCE; Schema: public; Owner: bip +-- + +CREATE SEQUENCE public."EventMaster_TipeAcara_id_seq" + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public."EventMaster_TipeAcara_id_seq" OWNER TO bip; + +-- +-- Name: EventMaster_TipeAcara_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: bip +-- + +ALTER SEQUENCE public."EventMaster_TipeAcara_id_seq" OWNED BY public."EventMaster_TipeAcara".id; + + +-- +-- Name: EventSponsor; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."EventSponsor" ( + id text NOT NULL, + "isActive" boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone NOT NULL, + name text NOT NULL, + "fileName" text NOT NULL, + "fileExt" text, + "fileId" text NOT NULL, + "auhtorId" text, + "eventId" text +); + + +ALTER TABLE public."EventSponsor" OWNER TO bip; + +-- +-- Name: EventTransaksi; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."EventTransaksi" ( + id text NOT NULL, + "isActive" boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone NOT NULL, + nominal integer NOT NULL, + "masterBankId" text, + status text NOT NULL, + "transferImageId" text, + "authorId" text, + "eventId" text, + "eventSponsorId" text +); + + +ALTER TABLE public."EventTransaksi" OWNER TO bip; + +-- +-- Name: Event_Peserta; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."Event_Peserta" ( + id text NOT NULL, + active boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone NOT NULL, + "isPresent" boolean DEFAULT false NOT NULL, + "eventId" text, + "userId" text +); + + +ALTER TABLE public."Event_Peserta" OWNER TO bip; + +-- +-- Name: ForumMaster_KategoriReport; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."ForumMaster_KategoriReport" ( + id integer NOT NULL, + "isActive" boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone NOT NULL, + title text NOT NULL, + deskripsi text NOT NULL +); + + +ALTER TABLE public."ForumMaster_KategoriReport" OWNER TO bip; + +-- +-- Name: ForumMaster_KategoriReport_id_seq; Type: SEQUENCE; Schema: public; Owner: bip +-- + +CREATE SEQUENCE public."ForumMaster_KategoriReport_id_seq" + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public."ForumMaster_KategoriReport_id_seq" OWNER TO bip; + +-- +-- Name: ForumMaster_KategoriReport_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: bip +-- + +ALTER SEQUENCE public."ForumMaster_KategoriReport_id_seq" OWNED BY public."ForumMaster_KategoriReport".id; + + +-- +-- Name: ForumMaster_StatusPosting; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."ForumMaster_StatusPosting" ( + id integer NOT NULL, + "isActive" boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone NOT NULL, + status text NOT NULL +); + + +ALTER TABLE public."ForumMaster_StatusPosting" OWNER TO bip; + +-- +-- Name: ForumMaster_StatusPosting_id_seq; Type: SEQUENCE; Schema: public; Owner: bip +-- + +CREATE SEQUENCE public."ForumMaster_StatusPosting_id_seq" + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public."ForumMaster_StatusPosting_id_seq" OWNER TO bip; + +-- +-- Name: ForumMaster_StatusPosting_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: bip +-- + +ALTER SEQUENCE public."ForumMaster_StatusPosting_id_seq" OWNED BY public."ForumMaster_StatusPosting".id; + + +-- +-- Name: Forum_Komentar; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."Forum_Komentar" ( + id text NOT NULL, + "isActive" boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone NOT NULL, + komentar text NOT NULL, + "forum_PostingId" text, + "authorId" text +); + + +ALTER TABLE public."Forum_Komentar" OWNER TO bip; + +-- +-- Name: Forum_Posting; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."Forum_Posting" ( + id text NOT NULL, + "isActive" boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone NOT NULL, + "publishAt" timestamp(3) without time zone, + diskusi text NOT NULL, + "authorId" text, + "forumMaster_StatusPostingId" integer +); + + +ALTER TABLE public."Forum_Posting" OWNER TO bip; + +-- +-- Name: Forum_ReportKomentar; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."Forum_ReportKomentar" ( + id text NOT NULL, + "isActive" boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone NOT NULL, + deskripsi text, + "forumMaster_KategoriReportId" integer, + "forum_KomentarId" text, + "userId" text +); + + +ALTER TABLE public."Forum_ReportKomentar" OWNER TO bip; + +-- +-- Name: Forum_ReportPosting; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."Forum_ReportPosting" ( + id text NOT NULL, + "isActive" boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone NOT NULL, + deskripsi text, + "forumMaster_KategoriReportId" integer, + "forum_PostingId" text, + "userId" text +); + + +ALTER TABLE public."Forum_ReportPosting" OWNER TO bip; + +-- +-- Name: Images; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."Images" ( + id text NOT NULL, + url text NOT NULL, + label text DEFAULT 'null'::text NOT NULL, + active boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL +); + + +ALTER TABLE public."Images" OWNER TO bip; + +-- +-- Name: Investasi; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."Investasi" ( + id text NOT NULL, + title text NOT NULL, + "targetDana" text NOT NULL, + "hargaLembar" text NOT NULL, + "totalLembar" text NOT NULL, + roi text NOT NULL, + active boolean DEFAULT true NOT NULL, + "countDown" timestamp(3) without time zone, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone NOT NULL, + "authorId" text, + catatan text, + "sisaLembar" text NOT NULL, + "lembarTerbeli" text DEFAULT '0'::text, + progress text DEFAULT '0'::text, + "masterPeriodeDevidenId" text, + "masterPembagianDevidenId" text, + "masterPencarianInvestorId" text, + "imagesId" text, + "masterStatusInvestasiId" text DEFAULT '2'::text, + "masterProgresInvestasiId" text, + "imageId" text, + "prospektusFileId" text +); + + +ALTER TABLE public."Investasi" OWNER TO bip; + +-- +-- Name: InvestasiMaster_StatusInvoice; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."InvestasiMaster_StatusInvoice" ( + id text NOT NULL, + name text NOT NULL, + "isActive" boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone NOT NULL +); + + +ALTER TABLE public."InvestasiMaster_StatusInvoice" OWNER TO bip; + +-- +-- Name: Investasi_Invoice; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."Investasi_Invoice" ( + id text NOT NULL, + "isActive" boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone NOT NULL, + nominal text NOT NULL, + "lembarTerbeli" text NOT NULL, + "investasiId" text, + "masterBankId" text, + "statusInvoiceId" text, + "authorId" text, + "imagesId" text, + "imageId" text +); + + +ALTER TABLE public."Investasi_Invoice" OWNER TO bip; + +-- +-- Name: Job; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."Job" ( + id text NOT NULL, + "isActive" boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone NOT NULL, + "isArsip" boolean DEFAULT false NOT NULL, + catatan text, + title text NOT NULL, + content text NOT NULL, + deskripsi text NOT NULL, + "authorId" text, + "masterStatusId" text DEFAULT '2'::text, + "imageId" text +); + + +ALTER TABLE public."Job" OWNER TO bip; + +-- +-- Name: KodeOtp; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."KodeOtp" ( + id text NOT NULL, + "isActive" boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone NOT NULL, + nomor text NOT NULL, + otp integer NOT NULL +); + + +ALTER TABLE public."KodeOtp" OWNER TO bip; + +-- +-- Name: MasterBank; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."MasterBank" ( + id text NOT NULL, + "namaBank" text NOT NULL, + "namaAkun" text NOT NULL, + norek text NOT NULL, + "isActive" boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone NOT NULL +); + + +ALTER TABLE public."MasterBank" OWNER TO bip; + +-- +-- Name: MasterBidangBisnis; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."MasterBidangBisnis" ( + id text NOT NULL, + name text NOT NULL, + active boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL +); + + +ALTER TABLE public."MasterBidangBisnis" OWNER TO bip; + +-- +-- Name: MasterKategoriApp; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."MasterKategoriApp" ( + id text NOT NULL, + "isActive" boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone NOT NULL, + name text NOT NULL, + value text +); + + +ALTER TABLE public."MasterKategoriApp" OWNER TO bip; + +-- +-- Name: MasterPembagianDeviden; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."MasterPembagianDeviden" ( + id text NOT NULL, + name text NOT NULL, + active boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL +); + + +ALTER TABLE public."MasterPembagianDeviden" OWNER TO bip; + +-- +-- Name: MasterPencarianInvestor; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."MasterPencarianInvestor" ( + id text NOT NULL, + name text NOT NULL, + active boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL +); + + +ALTER TABLE public."MasterPencarianInvestor" OWNER TO bip; + +-- +-- Name: MasterPeriodeDeviden; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."MasterPeriodeDeviden" ( + id text NOT NULL, + name text NOT NULL, + active boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL +); + + +ALTER TABLE public."MasterPeriodeDeviden" OWNER TO bip; + +-- +-- Name: MasterProgresInvestasi; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."MasterProgresInvestasi" ( + id text NOT NULL, + name text NOT NULL, + active boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone NOT NULL +); + + +ALTER TABLE public."MasterProgresInvestasi" OWNER TO bip; + +-- +-- Name: MasterStatus; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."MasterStatus" ( + id text NOT NULL, + name text NOT NULL, + "isActive" boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone NOT NULL +); + + +ALTER TABLE public."MasterStatus" OWNER TO bip; + +-- +-- Name: MasterStatusInvestasi; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."MasterStatusInvestasi" ( + id text NOT NULL, + name text NOT NULL, + color text NOT NULL, + active boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL +); + + +ALTER TABLE public."MasterStatusInvestasi" OWNER TO bip; + +-- +-- Name: MasterStatusTransaksiInvestasi; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."MasterStatusTransaksiInvestasi" ( + id text NOT NULL, + name text NOT NULL, + color text, + active boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone NOT NULL +); + + +ALTER TABLE public."MasterStatusTransaksiInvestasi" OWNER TO bip; + +-- +-- Name: MasterUserRole; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."MasterUserRole" ( + id text NOT NULL, + name text NOT NULL, + active boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP, + "updatedAt" timestamp(3) without time zone +); + + +ALTER TABLE public."MasterUserRole" OWNER TO bip; + +-- +-- Name: NomorAdmin; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."NomorAdmin" ( + id text NOT NULL, + "isActive" boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone NOT NULL, + nomor text NOT NULL +); + + +ALTER TABLE public."NomorAdmin" OWNER TO bip; + +-- +-- Name: Notifikasi; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."Notifikasi" ( + id text NOT NULL, + "isActive" boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone NOT NULL, + "isRead" boolean DEFAULT false NOT NULL, + "appId" text NOT NULL, + "kategoriApp" text NOT NULL, + pesan text NOT NULL, + title text, + status text, + "userRoleId" text NOT NULL, + "userId" text, + "adminId" text +); + + +ALTER TABLE public."Notifikasi" OWNER TO bip; + +-- +-- Name: Portofolio; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."Portofolio" ( + id text NOT NULL, + "id_Portofolio" text NOT NULL, + "namaBisnis" text NOT NULL, + "alamatKantor" text NOT NULL, + tlpn text NOT NULL, + deskripsi text NOT NULL, + active boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "profileId" text, + "masterBidangBisnisId" text NOT NULL, + "logoId" text +); + + +ALTER TABLE public."Portofolio" OWNER TO bip; + +-- +-- Name: Portofolio_MediaSosial; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."Portofolio_MediaSosial" ( + id text NOT NULL, + facebook text, + twitter text, + instagram text, + tiktok text, + youtube text, + active boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone NOT NULL, + "portofolioId" text +); + + +ALTER TABLE public."Portofolio_MediaSosial" OWNER TO bip; + +-- +-- Name: Profile; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."Profile" ( + id text NOT NULL, + name text NOT NULL, + email text NOT NULL, + alamat text NOT NULL, + "jenisKelamin" text NOT NULL, + active boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "userId" text, + "imageId" text, + "imageBackgroundId" text +); + + +ALTER TABLE public."Profile" OWNER TO bip; + +-- +-- Name: ProjectCollaboration; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."ProjectCollaboration" ( + id text NOT NULL, + "isActive" boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone NOT NULL, + title text NOT NULL, + lokasi text NOT NULL, + purpose text NOT NULL, + benefit text, + "isReject" boolean DEFAULT false, + report text, + "projectCollaborationMaster_IndustriId" integer, + "userId" text, + "projectCollaborationMaster_StatusId" integer DEFAULT 1 +); + + +ALTER TABLE public."ProjectCollaboration" OWNER TO bip; + +-- +-- Name: ProjectCollaborationMaster_Industri; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."ProjectCollaborationMaster_Industri" ( + id integer NOT NULL, + "isActive" boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone NOT NULL, + name text NOT NULL +); + + +ALTER TABLE public."ProjectCollaborationMaster_Industri" OWNER TO bip; + +-- +-- Name: ProjectCollaborationMaster_Industri_id_seq; Type: SEQUENCE; Schema: public; Owner: bip +-- + +CREATE SEQUENCE public."ProjectCollaborationMaster_Industri_id_seq" + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public."ProjectCollaborationMaster_Industri_id_seq" OWNER TO bip; + +-- +-- Name: ProjectCollaborationMaster_Industri_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: bip +-- + +ALTER SEQUENCE public."ProjectCollaborationMaster_Industri_id_seq" OWNED BY public."ProjectCollaborationMaster_Industri".id; + + +-- +-- Name: ProjectCollaborationMaster_Status; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."ProjectCollaborationMaster_Status" ( + id integer NOT NULL, + name text NOT NULL, + "isActive" boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone NOT NULL +); + + +ALTER TABLE public."ProjectCollaborationMaster_Status" OWNER TO bip; + +-- +-- Name: ProjectCollaborationMaster_Status_id_seq; Type: SEQUENCE; Schema: public; Owner: bip +-- + +CREATE SEQUENCE public."ProjectCollaborationMaster_Status_id_seq" + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public."ProjectCollaborationMaster_Status_id_seq" OWNER TO bip; + +-- +-- Name: ProjectCollaborationMaster_Status_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: bip +-- + +ALTER SEQUENCE public."ProjectCollaborationMaster_Status_id_seq" OWNED BY public."ProjectCollaborationMaster_Status".id; + + +-- +-- Name: ProjectCollaboration_AnggotaRoomChat; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."ProjectCollaboration_AnggotaRoomChat" ( + id text NOT NULL, + "isActive" boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone NOT NULL, + "userId" text NOT NULL, + "projectCollaboration_RoomChatId" text +); + + +ALTER TABLE public."ProjectCollaboration_AnggotaRoomChat" OWNER TO bip; + +-- +-- Name: ProjectCollaboration_Message; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."ProjectCollaboration_Message" ( + id text NOT NULL, + "isActive" boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone NOT NULL, + message text NOT NULL, + "isFile" boolean DEFAULT false, + "userId" text, + "projectCollaboration_RoomChatId" text +); + + +ALTER TABLE public."ProjectCollaboration_Message" OWNER TO bip; + +-- +-- Name: ProjectCollaboration_Notifikasi; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."ProjectCollaboration_Notifikasi" ( + id text NOT NULL, + "isActive" boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone NOT NULL, + "isRead" boolean DEFAULT false NOT NULL, + note text, + "projectCollaborationId" text NOT NULL, + "adminId" text NOT NULL, + "userId" text NOT NULL +); + + +ALTER TABLE public."ProjectCollaboration_Notifikasi" OWNER TO bip; + +-- +-- Name: ProjectCollaboration_Partisipasi; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."ProjectCollaboration_Partisipasi" ( + id text NOT NULL, + "isActive" boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone NOT NULL, + "userId" text, + "projectCollaborationId" text, + deskripsi_diri text NOT NULL +); + + +ALTER TABLE public."ProjectCollaboration_Partisipasi" OWNER TO bip; + +-- +-- Name: ProjectCollaboration_RoomChat; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."ProjectCollaboration_RoomChat" ( + id text NOT NULL, + name text NOT NULL, + "isActive" boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone NOT NULL, + "userId" text, + "projectCollaborationId" text +); + + +ALTER TABLE public."ProjectCollaboration_RoomChat" OWNER TO bip; + +-- +-- Name: ProspektusInvestasi; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."ProspektusInvestasi" ( + id text NOT NULL, + url text NOT NULL, + active boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "investasiId" text, + "fileId" text, + title text +); + + +ALTER TABLE public."ProspektusInvestasi" OWNER TO bip; + +-- +-- Name: TransaksiInvestasi; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."TransaksiInvestasi" ( + id text NOT NULL, + "investasiId" text NOT NULL, + "authorId" text NOT NULL, + "namaBank" text, + "nomorRekening" text, + token text, + redirect_url text, + quantity text NOT NULL, + price text NOT NULL, + gross_amount text NOT NULL, + merchant_name text NOT NULL, + status_code text, + status_message text, + transaction_id text, + order_id text, + payment_type text, + transaction_time text, + transaction_status text, + fraud_status text, + pdf_url text, + finish_redirect_url text, + active boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone NOT NULL, + "masterStatusTransaksiInvestasiId" text DEFAULT '1'::text +); + + +ALTER TABLE public."TransaksiInvestasi" OWNER TO bip; + +-- +-- Name: User; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."User" ( + id text NOT NULL, + active boolean DEFAULT false NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP, + "masterUserRoleId" text DEFAULT '1'::text NOT NULL, + nomor text NOT NULL, + "updatedAt" timestamp(3) without time zone, + username text NOT NULL +); + + +ALTER TABLE public."User" OWNER TO bip; + +-- +-- Name: UserSession; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."UserSession" ( + id text NOT NULL, + token text NOT NULL, + expires timestamp(3) without time zone, + active boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "userId" text NOT NULL +); + + +ALTER TABLE public."UserSession" OWNER TO bip; + +-- +-- Name: Voting; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."Voting" ( + id text NOT NULL, + "isActive" boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone NOT NULL, + "isArsip" boolean DEFAULT false NOT NULL, + title text NOT NULL, + deskripsi text NOT NULL, + "awalVote" timestamp(3) without time zone NOT NULL, + "akhirVote" timestamp(3) without time zone NOT NULL, + catatan text, + "authorId" text NOT NULL, + "voting_StatusId" text DEFAULT '2'::text +); + + +ALTER TABLE public."Voting" OWNER TO bip; + +-- +-- Name: Voting_DaftarNamaVote; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."Voting_DaftarNamaVote" ( + id text NOT NULL, + value text NOT NULL, + jumlah integer DEFAULT 0 NOT NULL, + "isActive" boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone NOT NULL, + "votingId" text +); + + +ALTER TABLE public."Voting_DaftarNamaVote" OWNER TO bip; + +-- +-- Name: Voting_Kontributor; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."Voting_Kontributor" ( + id text NOT NULL, + "isActive" boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone NOT NULL, + "votingId" text, + "authorId" text, + "voting_DaftarNamaVoteId" text +); + + +ALTER TABLE public."Voting_Kontributor" OWNER TO bip; + +-- +-- Name: Voting_Status; Type: TABLE; Schema: public; Owner: bip +-- + +CREATE TABLE public."Voting_Status" ( + id text NOT NULL, + name text NOT NULL, + "isActive" boolean DEFAULT true NOT NULL, + "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "updatedAt" timestamp(3) without time zone NOT NULL +); + + +ALTER TABLE public."Voting_Status" OWNER TO bip; + +-- +-- Name: EventMaster_TipeAcara id; Type: DEFAULT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."EventMaster_TipeAcara" ALTER COLUMN id SET DEFAULT nextval('public."EventMaster_TipeAcara_id_seq"'::regclass); + + +-- +-- Name: ForumMaster_KategoriReport id; Type: DEFAULT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."ForumMaster_KategoriReport" ALTER COLUMN id SET DEFAULT nextval('public."ForumMaster_KategoriReport_id_seq"'::regclass); + + +-- +-- Name: ForumMaster_StatusPosting id; Type: DEFAULT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."ForumMaster_StatusPosting" ALTER COLUMN id SET DEFAULT nextval('public."ForumMaster_StatusPosting_id_seq"'::regclass); + + +-- +-- Name: ProjectCollaborationMaster_Industri id; Type: DEFAULT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."ProjectCollaborationMaster_Industri" ALTER COLUMN id SET DEFAULT nextval('public."ProjectCollaborationMaster_Industri_id_seq"'::regclass); + + +-- +-- Name: ProjectCollaborationMaster_Status id; Type: DEFAULT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."ProjectCollaborationMaster_Status" ALTER COLUMN id SET DEFAULT nextval('public."ProjectCollaborationMaster_Status_id_seq"'::regclass); + + +-- +-- Data for Name: BeritaInvestasi; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."BeritaInvestasi" (id, title, deskripsi, active, "createdAt", "updatedAt", "imagesId", "investasiId", "imageId") FROM stdin; +\. + + +-- +-- Data for Name: BusinessMaps; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."BusinessMaps" (id, "isActive", "createdAt", "updatedAt", "namePin", latitude, longitude, "authorId", "portofolioId", "imageId", "pinId") FROM stdin; +\. + + +-- +-- Data for Name: DokumenInvestasi; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."DokumenInvestasi" (id, title, url, active, "createdAt", "updatedAt", "investasiId", "fileId") FROM stdin; +\. + + +-- +-- Data for Name: Donasi; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."Donasi" (id, title, target, active, "createdAt", "updatedAt", "publishTime", catatan, progres, terkumpul, "namaBank", rekening, "akumulasiPencairan", "totalPencairan", "authorId", "imagesId", "donasiMaster_KategoriId", "donasiMaster_DurasiId", "donasiMaster_StatusDonasiId", "imageId") FROM stdin; +\. + + +-- +-- Data for Name: DonasiMaster_Bank; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."DonasiMaster_Bank" (id, name, norek, active, "createdAt", "updatedAt") FROM stdin; +1 BRI 9065456754325643 t 2025-01-23 02:59:24.313 2025-01-23 02:59:24.313 +2 BCA 2304235678854332 t 2025-01-23 02:59:24.315 2025-01-23 02:59:24.315 +3 BNI 1104786754324564 t 2025-01-23 02:59:24.316 2025-01-23 02:59:24.316 +4 BSI 7076543567898976 t 2025-01-23 02:59:24.317 2025-01-23 02:59:24.317 +\. + + +-- +-- Data for Name: DonasiMaster_Durasi; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."DonasiMaster_Durasi" (id, name, active, "createdAt", "updatedAt") FROM stdin; +1 30 t 2025-01-23 02:59:24.308 2025-01-23 02:59:24.308 +2 60 t 2025-01-23 02:59:24.311 2025-01-23 02:59:24.311 +3 90 t 2025-01-23 02:59:24.312 2025-01-23 02:59:24.312 +4 120 t 2025-01-23 02:59:24.313 2025-01-23 02:59:24.313 +\. + + +-- +-- Data for Name: DonasiMaster_Kategori; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."DonasiMaster_Kategori" (id, name, active, "createdAt", "updatedAt") FROM stdin; +1 Medis t 2025-01-23 02:59:24.304 2025-01-23 02:59:24.304 +2 Kegiatan Sosial t 2025-01-23 02:59:24.305 2025-01-23 02:59:24.305 +3 Pendidikan t 2025-01-23 02:59:24.306 2025-01-23 02:59:24.306 +4 Rumah Ibadah t 2025-01-23 02:59:24.307 2025-01-23 02:59:24.307 +5 Bencana Alam t 2025-01-23 02:59:24.307 2025-01-23 02:59:24.307 +\. + + +-- +-- Data for Name: DonasiMaster_StatusDonasi; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."DonasiMaster_StatusDonasi" (id, name, active, "createdAt", "updatedAt") FROM stdin; +1 Publish t 2025-01-23 02:59:24.3 2025-01-23 02:59:24.3 +2 Review t 2025-01-23 02:59:24.302 2025-01-23 02:59:24.302 +3 Draft t 2025-01-23 02:59:24.302 2025-01-23 02:59:24.302 +4 Reject t 2025-01-23 02:59:24.303 2025-01-23 02:59:24.303 +\. + + +-- +-- Data for Name: DonasiMaster_StatusInvoice; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."DonasiMaster_StatusInvoice" (id, name, active, "createdAt", "updatedAt") FROM stdin; +1 Berhasil t 2025-01-23 02:59:24.318 2025-01-23 02:59:24.318 +2 Proses t 2025-01-23 02:59:24.319 2025-01-23 02:59:24.319 +3 Menunggu t 2025-01-23 02:59:24.32 2025-01-23 02:59:24.32 +4 Gagal t 2025-01-23 02:59:24.32 2025-01-23 02:59:24.32 +\. + + +-- +-- Data for Name: Donasi_Cerita; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."Donasi_Cerita" (id, pembukaan, cerita, active, "createdAt", "updatedAt", "imagesId", "donasiId", "imageId") FROM stdin; +\. + + +-- +-- Data for Name: Donasi_Invoice; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."Donasi_Invoice" (id, nominal, active, "createdAt", "updatedAt", "donasiId", "donasiMaster_BankId", "donasiMaster_StatusInvoiceId", "authorId", "imagesId", "imageId") FROM stdin; +\. + + +-- +-- Data for Name: Donasi_Kabar; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."Donasi_Kabar" (id, title, deskripsi, active, "createdAt", "updatedAt", "donasiId", "imagesId", "imageId") FROM stdin; +\. + + +-- +-- Data for Name: Donasi_Notif; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."Donasi_Notif" (id, "isRead", active, "createdAt", "updatedAt", "userId", "donasi_KabarId") FROM stdin; +\. + + +-- +-- Data for Name: Donasi_PencairanDana; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."Donasi_PencairanDana" (id, "nominalCair", title, deskripsi, active, "createdAt", "updatedAt", "donasiId", "imagesId", "imageId") FROM stdin; +\. + + +-- +-- Data for Name: Donasi_TemporaryCreate; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."Donasi_TemporaryCreate" (id, title, target, active, "createdAt", "updatedAt", "imagesId", "donasiMaster_KategoriId", "donasiMaster_DurasiId", "imageId") FROM stdin; +\. + + +-- +-- Data for Name: Event; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."Event" (id, title, lokasi, tanggal, deskripsi, active, "createdAt", "updatedAt", catatan, "tanggalSelesai", "isArsip", "authorId", "eventMaster_StatusId", "eventMaster_TipeAcaraId") FROM stdin; +\. + + +-- +-- Data for Name: EventMaster_Status; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."EventMaster_Status" (id, name, active, "createdAt", "updatedAt") FROM stdin; +1 Publish t 2025-01-23 02:59:24.321 2025-01-23 02:59:24.321 +2 Review t 2025-01-23 02:59:24.323 2025-01-23 02:59:24.323 +3 Draft t 2025-01-23 02:59:24.325 2025-01-23 02:59:24.325 +4 Reject t 2025-01-23 02:59:24.326 2025-01-23 02:59:24.326 +\. + + +-- +-- Data for Name: EventMaster_TipeAcara; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."EventMaster_TipeAcara" (id, name, active, "createdAt", "updatedAt") FROM stdin; +1 Seminar t 2025-01-23 02:59:24.327 2025-01-23 02:59:24.327 +2 Workshop t 2025-01-23 02:59:24.332 2025-01-23 02:59:24.332 +3 Konferensi t 2025-01-23 02:59:24.333 2025-01-23 02:59:24.333 +4 Musyawarah Anggota t 2025-01-23 02:59:24.333 2025-01-23 02:59:24.333 +5 Kegiatan Sosial t 2025-01-23 02:59:24.334 2025-01-23 02:59:24.334 +\. + + +-- +-- Data for Name: EventSponsor; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."EventSponsor" (id, "isActive", "createdAt", "updatedAt", name, "fileName", "fileExt", "fileId", "auhtorId", "eventId") FROM stdin; +\. + + +-- +-- Data for Name: EventTransaksi; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."EventTransaksi" (id, "isActive", "createdAt", "updatedAt", nominal, "masterBankId", status, "transferImageId", "authorId", "eventId", "eventSponsorId") FROM stdin; +\. + + +-- +-- Data for Name: Event_Peserta; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."Event_Peserta" (id, active, "createdAt", "updatedAt", "isPresent", "eventId", "userId") FROM stdin; +\. + + +-- +-- Data for Name: ForumMaster_KategoriReport; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."ForumMaster_KategoriReport" (id, "isActive", "createdAt", "updatedAt", title, deskripsi) FROM stdin; +1 t 2025-01-23 02:59:24.343 2025-01-23 02:59:24.343 Kebencian Cercaan, Stereotip rasis atau seksis, Dehumanisasi, Menyulut ketakutan atau diskriminasi, Referensi kebencian, Simbol & logo kebencian +2 t 2025-01-23 02:59:24.352 2025-01-23 02:59:24.352 Penghinaan & Pelecehan secara Online Penghinaan, Konten Seksual yang Tidak Diinginkan, Penyangkalan Peristiwa Kekerasan, Pelecehan Bertarget dan Memprovokasi Pelecehan +3 t 2025-01-23 02:59:24.353 2025-01-23 02:59:24.353 Tutur Kekerasan Ancaman Kekerasan, Berharap Terjadinya Celaka, Mengagungkan Kekerasan, Penghasutan Kekerasan, Penghasutan Kekerasan dengan Kode +4 t 2025-01-23 02:59:24.355 2025-01-23 02:59:24.355 Keselamatan Anak Eksploitasi seks anak di bawah umur, grooming, kekerasan fisik terhadap anak, pengguna di bawah umur +5 t 2025-01-23 02:59:24.356 2025-01-23 02:59:24.356 Privasi Membagikan informasi pribadi, mengancam akan membagikan/menyebarkan informasi pribadi, membagikan gambar intim tanpa persetujuan, membagikan gambar saya yang tidak saya kehendaki di platform ini +6 t 2025-01-23 02:59:24.357 2025-01-23 02:59:24.357 Spam Akun palsu, penipuan keuangan, memposting tautan berbahaya, menyalahgunakan hashtag, keterlibatan palsu, balasan berulang, Posting Ulang, atau Direct Message +\. + + +-- +-- Data for Name: ForumMaster_StatusPosting; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."ForumMaster_StatusPosting" (id, "isActive", "createdAt", "updatedAt", status) FROM stdin; +1 t 2025-01-23 02:59:24.359 2025-01-23 02:59:24.359 Open +2 t 2025-01-23 02:59:24.362 2025-01-23 02:59:24.362 Closed +\. + + +-- +-- Data for Name: Forum_Komentar; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."Forum_Komentar" (id, "isActive", "createdAt", "updatedAt", komentar, "forum_PostingId", "authorId") FROM stdin; +\. + + +-- +-- Data for Name: Forum_Posting; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."Forum_Posting" (id, "isActive", "createdAt", "updatedAt", "publishAt", diskusi, "authorId", "forumMaster_StatusPostingId") FROM stdin; +\. + + +-- +-- Data for Name: Forum_ReportKomentar; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."Forum_ReportKomentar" (id, "isActive", "createdAt", "updatedAt", deskripsi, "forumMaster_KategoriReportId", "forum_KomentarId", "userId") FROM stdin; +\. + + +-- +-- Data for Name: Forum_ReportPosting; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."Forum_ReportPosting" (id, "isActive", "createdAt", "updatedAt", deskripsi, "forumMaster_KategoriReportId", "forum_PostingId", "userId") FROM stdin; +\. + + +-- +-- Data for Name: Images; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."Images" (id, url, label, active, "createdAt", "updatedAt") FROM stdin; +\. + + +-- +-- Data for Name: Investasi; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."Investasi" (id, title, "targetDana", "hargaLembar", "totalLembar", roi, active, "countDown", "createdAt", "updatedAt", "authorId", catatan, "sisaLembar", "lembarTerbeli", progress, "masterPeriodeDevidenId", "masterPembagianDevidenId", "masterPencarianInvestorId", "imagesId", "masterStatusInvestasiId", "masterProgresInvestasiId", "imageId", "prospektusFileId") FROM stdin; +\. + + +-- +-- Data for Name: InvestasiMaster_StatusInvoice; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."InvestasiMaster_StatusInvoice" (id, name, "isActive", "createdAt", "updatedAt") FROM stdin; +1 Berhasil t 2025-01-23 02:59:24.391 2025-01-23 02:59:24.391 +2 Proses t 2025-01-23 02:59:24.394 2025-01-23 02:59:24.394 +3 Menunggu t 2025-01-23 02:59:24.394 2025-01-23 02:59:24.394 +4 Gagal t 2025-01-23 02:59:24.395 2025-01-23 02:59:24.395 +\. + + +-- +-- Data for Name: Investasi_Invoice; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."Investasi_Invoice" (id, "isActive", "createdAt", "updatedAt", nominal, "lembarTerbeli", "investasiId", "masterBankId", "statusInvoiceId", "authorId", "imagesId", "imageId") FROM stdin; +\. + + +-- +-- Data for Name: Job; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."Job" (id, "isActive", "createdAt", "updatedAt", "isArsip", catatan, title, content, deskripsi, "authorId", "masterStatusId", "imageId") FROM stdin; +\. + + +-- +-- Data for Name: KodeOtp; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."KodeOtp" (id, "isActive", "createdAt", "updatedAt", nomor, otp) FROM stdin; +cm68pm6ko0000wphyvrmd8j3l t 2025-01-23 02:24:18.87 2025-01-23 02:24:18.87 6282340374412 8964 +cm68pzrr2000awphyi0sdyp5v t 2025-01-23 02:34:52.862 2025-01-23 02:34:52.862 628234037441 2520 +cm68qcugj000cwphy2bjuw22r t 2025-01-23 02:45:02.898 2025-01-23 02:45:02.898 628234037441 1673 +cm68qh2pj000ewphy4qs5ismv t 2025-01-23 02:48:20.216 2025-01-23 02:48:20.216 6289647037426 5112 +cm68qrjvk0000bmx164jj6y7q t 2025-01-23 02:56:29.024 2025-01-23 02:56:29.024 6289647037426 3106 +\. + + +-- +-- Data for Name: MasterBank; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."MasterBank" (id, "namaBank", "namaAkun", norek, "isActive", "createdAt", "updatedAt") FROM stdin; +1 BRI Himpunan Pengusaha Muda Indonesia 9065456754325643 t 2025-01-23 02:59:24.286 2025-01-23 02:59:24.286 +2 BCA Himpunan Pengusaha Muda Indonesia 2304235678854332 t 2025-01-23 02:59:24.288 2025-01-23 02:59:24.288 +3 BNI Himpunan Pengusaha Muda Indonesia 1104786754324564 t 2025-01-23 02:59:24.289 2025-01-23 02:59:24.289 +4 BSI Himpunan Pengusaha Muda Indonesia 7076543567898976 t 2025-01-23 02:59:24.29 2025-01-23 02:59:24.29 +\. + + +-- +-- Data for Name: MasterBidangBisnis; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."MasterBidangBisnis" (id, name, active, "createdAt", "updatedAt") FROM stdin; +1 Software Developer t 2025-01-23 02:59:24.26 2025-01-23 02:59:24.26 +2 Makanan & Minuman t 2025-01-23 02:59:24.264 2025-01-23 02:59:24.264 +3 Kosmetik t 2025-01-23 02:59:24.265 2025-01-23 02:59:24.265 +4 Mesin Mobil t 2025-01-23 02:59:24.266 2025-01-23 02:59:24.266 +5 Rental Kendaraan t 2025-01-23 02:59:24.267 2025-01-23 02:59:24.267 +6 Kedokteran t 2025-01-23 02:59:24.268 2025-01-23 02:59:24.268 +\. + + +-- +-- Data for Name: MasterKategoriApp; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."MasterKategoriApp" (id, "isActive", "createdAt", "updatedAt", name, value) FROM stdin; +1 t 2025-01-23 02:59:24.383 2025-01-23 02:59:24.383 Event \N +2 t 2025-01-23 02:59:24.387 2025-01-23 02:59:24.387 Job \N +3 t 2025-01-23 02:59:24.387 2025-01-23 02:59:24.387 Voting \N +4 t 2025-01-23 02:59:24.388 2025-01-23 02:59:24.388 Donasi \N +5 t 2025-01-23 02:59:24.389 2025-01-23 02:59:24.389 Investasi \N +6 t 2025-01-23 02:59:24.39 2025-01-23 02:59:24.39 Forum \N +7 t 2025-01-23 02:59:24.391 2025-01-23 02:59:24.391 Collaboration \N +\. + + +-- +-- Data for Name: MasterPembagianDeviden; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."MasterPembagianDeviden" (id, name, active, "createdAt", "updatedAt") FROM stdin; +1 3 t 2025-01-23 02:59:24.275 2025-01-23 02:59:24.275 +2 6 t 2025-01-23 02:59:24.277 2025-01-23 02:59:24.277 +3 9 t 2025-01-23 02:59:24.278 2025-01-23 02:59:24.278 +4 12 t 2025-01-23 02:59:24.279 2025-01-23 02:59:24.279 +\. + + +-- +-- Data for Name: MasterPencarianInvestor; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."MasterPencarianInvestor" (id, name, active, "createdAt", "updatedAt") FROM stdin; +1 30 t 2025-01-23 02:59:24.269 2025-01-23 02:59:24.269 +2 60 t 2025-01-23 02:59:24.273 2025-01-23 02:59:24.273 +3 90 t 2025-01-23 02:59:24.274 2025-01-23 02:59:24.274 +4 120 t 2025-01-23 02:59:24.274 2025-01-23 02:59:24.274 +\. + + +-- +-- Data for Name: MasterPeriodeDeviden; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."MasterPeriodeDeviden" (id, name, active, "createdAt", "updatedAt") FROM stdin; +1 Selamanya t 2025-01-23 02:59:24.279 2025-01-23 02:59:24.279 +2 Satu tahun t 2025-01-23 02:59:24.281 2025-01-23 02:59:24.281 +\. + + +-- +-- Data for Name: MasterProgresInvestasi; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."MasterProgresInvestasi" (id, name, active, "createdAt", "updatedAt") FROM stdin; +1 Dalam Proses t 2025-01-23 02:59:24.296 2025-01-23 02:59:24.296 +2 Selesai t 2025-01-23 02:59:24.298 2025-01-23 02:59:24.298 +3 Waktu Habis t 2025-01-23 02:59:24.299 2025-01-23 02:59:24.299 +\. + + +-- +-- Data for Name: MasterStatus; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."MasterStatus" (id, name, "isActive", "createdAt", "updatedAt") FROM stdin; +1 Publish t 2025-01-23 02:59:24.339 2025-01-23 02:59:24.339 +2 Review t 2025-01-23 02:59:24.341 2025-01-23 02:59:24.341 +3 Draft t 2025-01-23 02:59:24.342 2025-01-23 02:59:24.342 +4 Reject t 2025-01-23 02:59:24.343 2025-01-23 02:59:24.343 +\. + + +-- +-- Data for Name: MasterStatusInvestasi; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."MasterStatusInvestasi" (id, name, color, active, "createdAt", "updatedAt") FROM stdin; +1 Publish green t 2025-01-23 02:59:24.282 2025-01-23 02:59:24.282 +2 Review orange t 2025-01-23 02:59:24.283 2025-01-23 02:59:24.283 +3 Draft yellow t 2025-01-23 02:59:24.284 2025-01-23 02:59:24.284 +4 Reject red t 2025-01-23 02:59:24.285 2025-01-23 02:59:24.285 +\. + + +-- +-- Data for Name: MasterStatusTransaksiInvestasi; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."MasterStatusTransaksiInvestasi" (id, name, color, active, "createdAt", "updatedAt") FROM stdin; +1 Menunggu yellow t 2025-01-23 02:59:24.291 2025-01-23 02:59:24.291 +2 Proses orange t 2025-01-23 02:59:24.294 2025-01-23 02:59:24.294 +3 Berhasil green t 2025-01-23 02:59:24.295 2025-01-23 02:59:24.295 +4 Gagal red t 2025-01-23 02:59:24.295 2025-01-23 02:59:24.295 +\. + + +-- +-- Data for Name: MasterUserRole; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."MasterUserRole" (id, name, active, "createdAt", "updatedAt") FROM stdin; +1 User t 2025-01-23 02:59:24.231 2025-01-23 02:59:24.231 +2 Admin t 2025-01-23 02:59:24.251 2025-01-23 02:59:24.251 +3 Super Admin t 2025-01-23 02:59:24.254 2025-01-23 02:59:24.254 +\. + + +-- +-- Data for Name: NomorAdmin; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."NomorAdmin" (id, "isActive", "createdAt", "updatedAt", nomor) FROM stdin; +Nomor-Admin-1234 t 2025-01-23 02:59:24.382 2025-01-23 02:59:24.382 6289697338821 +\. + + +-- +-- Data for Name: Notifikasi; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."Notifikasi" (id, "isActive", "createdAt", "updatedAt", "isRead", "appId", "kategoriApp", pesan, title, status, "userRoleId", "userId", "adminId") FROM stdin; +\. + + +-- +-- Data for Name: Portofolio; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."Portofolio" (id, "id_Portofolio", "namaBisnis", "alamatKantor", tlpn, deskripsi, active, "createdAt", "updatedAt", "profileId", "masterBidangBisnisId", "logoId") FROM stdin; +\. + + +-- +-- Data for Name: Portofolio_MediaSosial; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."Portofolio_MediaSosial" (id, facebook, twitter, instagram, tiktok, youtube, active, "createdAt", "updatedAt", "portofolioId") FROM stdin; +\. + + +-- +-- Data for Name: Profile; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."Profile" (id, name, email, alamat, "jenisKelamin", active, "createdAt", "updatedAt", "userId", "imageId", "imageBackgroundId") FROM stdin; +\. + + +-- +-- Data for Name: ProjectCollaboration; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."ProjectCollaboration" (id, "isActive", "createdAt", "updatedAt", title, lokasi, purpose, benefit, "isReject", report, "projectCollaborationMaster_IndustriId", "userId", "projectCollaborationMaster_StatusId") FROM stdin; +\. + + +-- +-- Data for Name: ProjectCollaborationMaster_Industri; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."ProjectCollaborationMaster_Industri" (id, "isActive", "createdAt", "updatedAt", name) FROM stdin; +1 t 2025-01-23 02:59:24.363 2025-01-23 02:59:24.363 Software Developer +2 t 2025-01-23 02:59:24.368 2025-01-23 02:59:24.368 Makanan & Minuman +3 t 2025-01-23 02:59:24.37 2025-01-23 02:59:24.37 Kosmetik +4 t 2025-01-23 02:59:24.371 2025-01-23 02:59:24.371 Furniture +5 t 2025-01-23 02:59:24.373 2025-01-23 02:59:24.373 Kendaraan +6 t 2025-01-23 02:59:24.374 2025-01-23 02:59:24.374 Kesehatan +\. + + +-- +-- Data for Name: ProjectCollaborationMaster_Status; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."ProjectCollaborationMaster_Status" (id, name, "isActive", "createdAt", "updatedAt") FROM stdin; +1 Publish t 2025-01-23 02:59:24.376 2025-01-23 02:59:24.376 +2 Review t 2025-01-23 02:59:24.379 2025-01-23 02:59:24.379 +3 Reject t 2025-01-23 02:59:24.38 2025-01-23 02:59:24.38 +\. + + +-- +-- Data for Name: ProjectCollaboration_AnggotaRoomChat; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."ProjectCollaboration_AnggotaRoomChat" (id, "isActive", "createdAt", "updatedAt", "userId", "projectCollaboration_RoomChatId") FROM stdin; +\. + + +-- +-- Data for Name: ProjectCollaboration_Message; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."ProjectCollaboration_Message" (id, "isActive", "createdAt", "updatedAt", message, "isFile", "userId", "projectCollaboration_RoomChatId") FROM stdin; +\. + + +-- +-- Data for Name: ProjectCollaboration_Notifikasi; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."ProjectCollaboration_Notifikasi" (id, "isActive", "createdAt", "updatedAt", "isRead", note, "projectCollaborationId", "adminId", "userId") FROM stdin; +\. + + +-- +-- Data for Name: ProjectCollaboration_Partisipasi; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."ProjectCollaboration_Partisipasi" (id, "isActive", "createdAt", "updatedAt", "userId", "projectCollaborationId", deskripsi_diri) FROM stdin; +\. + + +-- +-- Data for Name: ProjectCollaboration_RoomChat; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."ProjectCollaboration_RoomChat" (id, name, "isActive", "createdAt", "updatedAt", "userId", "projectCollaborationId") FROM stdin; +\. + + +-- +-- Data for Name: ProspektusInvestasi; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."ProspektusInvestasi" (id, url, active, "createdAt", "updatedAt", "investasiId", "fileId", title) FROM stdin; +\. + + +-- +-- Data for Name: TransaksiInvestasi; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."TransaksiInvestasi" (id, "investasiId", "authorId", "namaBank", "nomorRekening", token, redirect_url, quantity, price, gross_amount, merchant_name, status_code, status_message, transaction_id, order_id, payment_type, transaction_time, transaction_status, fraud_status, pdf_url, finish_redirect_url, active, "createdAt", "updatedAt", "masterStatusTransaksiInvestasiId") FROM stdin; +\. + + +-- +-- Data for Name: User; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."User" (id, active, "createdAt", "masterUserRoleId", nomor, "updatedAt", username) FROM stdin; +cm68qvb3300018vfy1n5b0yxd t 2025-01-23 02:59:24.255 3 6282340374412 2025-01-23 02:59:24.255 bagas_admin +cm68qvb3700038vfy8nucraat t 2025-01-23 02:59:24.259 2 628123833845 2025-01-23 02:59:24.259 fahmi_admin +cm68qvb3700038vfy8nucraatc t 2025-01-23 02:59:24.259 2 6281238338454 2025-01-23 02:59:24.259 fahmi_adminx +\. + + +-- +-- Data for Name: UserSession; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."UserSession" (id, token, expires, active, "createdAt", "updatedAt", "userId") FROM stdin; +\. + + +-- +-- Data for Name: Voting; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."Voting" (id, "isActive", "createdAt", "updatedAt", "isArsip", title, deskripsi, "awalVote", "akhirVote", catatan, "authorId", "voting_StatusId") FROM stdin; +\. + + +-- +-- Data for Name: Voting_DaftarNamaVote; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."Voting_DaftarNamaVote" (id, value, jumlah, "isActive", "createdAt", "updatedAt", "votingId") FROM stdin; +\. + + +-- +-- Data for Name: Voting_Kontributor; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."Voting_Kontributor" (id, "isActive", "createdAt", "updatedAt", "votingId", "authorId", "voting_DaftarNamaVoteId") FROM stdin; +\. + + +-- +-- Data for Name: Voting_Status; Type: TABLE DATA; Schema: public; Owner: bip +-- + +COPY public."Voting_Status" (id, name, "isActive", "createdAt", "updatedAt") FROM stdin; +1 Publish t 2025-01-23 02:59:24.335 2025-01-23 02:59:24.335 +2 Review t 2025-01-23 02:59:24.338 2025-01-23 02:59:24.338 +3 Draft t 2025-01-23 02:59:24.338 2025-01-23 02:59:24.338 +4 Reject t 2025-01-23 02:59:24.339 2025-01-23 02:59:24.339 +\. + + +-- +-- Name: EventMaster_TipeAcara_id_seq; Type: SEQUENCE SET; Schema: public; Owner: bip +-- + +SELECT pg_catalog.setval('public."EventMaster_TipeAcara_id_seq"', 1, false); + + +-- +-- Name: ForumMaster_KategoriReport_id_seq; Type: SEQUENCE SET; Schema: public; Owner: bip +-- + +SELECT pg_catalog.setval('public."ForumMaster_KategoriReport_id_seq"', 6, true); + + +-- +-- Name: ForumMaster_StatusPosting_id_seq; Type: SEQUENCE SET; Schema: public; Owner: bip +-- + +SELECT pg_catalog.setval('public."ForumMaster_StatusPosting_id_seq"', 2, true); + + +-- +-- Name: ProjectCollaborationMaster_Industri_id_seq; Type: SEQUENCE SET; Schema: public; Owner: bip +-- + +SELECT pg_catalog.setval('public."ProjectCollaborationMaster_Industri_id_seq"', 6, true); + + +-- +-- Name: ProjectCollaborationMaster_Status_id_seq; Type: SEQUENCE SET; Schema: public; Owner: bip +-- + +SELECT pg_catalog.setval('public."ProjectCollaborationMaster_Status_id_seq"', 3, true); + + +-- +-- Name: BeritaInvestasi BeritaInvestasi_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."BeritaInvestasi" + ADD CONSTRAINT "BeritaInvestasi_pkey" PRIMARY KEY (id); + + +-- +-- Name: BusinessMaps BusinessMaps_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."BusinessMaps" + ADD CONSTRAINT "BusinessMaps_pkey" PRIMARY KEY (id); + + +-- +-- Name: DokumenInvestasi DokumenInvestasi_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."DokumenInvestasi" + ADD CONSTRAINT "DokumenInvestasi_pkey" PRIMARY KEY (id); + + +-- +-- Name: DonasiMaster_Bank DonasiMaster_Bank_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."DonasiMaster_Bank" + ADD CONSTRAINT "DonasiMaster_Bank_pkey" PRIMARY KEY (id); + + +-- +-- Name: DonasiMaster_Durasi DonasiMaster_Durasi_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."DonasiMaster_Durasi" + ADD CONSTRAINT "DonasiMaster_Durasi_pkey" PRIMARY KEY (id); + + +-- +-- Name: DonasiMaster_Kategori DonasiMaster_Kategori_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."DonasiMaster_Kategori" + ADD CONSTRAINT "DonasiMaster_Kategori_pkey" PRIMARY KEY (id); + + +-- +-- Name: DonasiMaster_StatusDonasi DonasiMaster_StatusDonasi_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."DonasiMaster_StatusDonasi" + ADD CONSTRAINT "DonasiMaster_StatusDonasi_pkey" PRIMARY KEY (id); + + +-- +-- Name: DonasiMaster_StatusInvoice DonasiMaster_StatusInvoice_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."DonasiMaster_StatusInvoice" + ADD CONSTRAINT "DonasiMaster_StatusInvoice_pkey" PRIMARY KEY (id); + + +-- +-- Name: Donasi_Cerita Donasi_Cerita_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Donasi_Cerita" + ADD CONSTRAINT "Donasi_Cerita_pkey" PRIMARY KEY (id); + + +-- +-- Name: Donasi_Invoice Donasi_Invoice_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Donasi_Invoice" + ADD CONSTRAINT "Donasi_Invoice_pkey" PRIMARY KEY (id); + + +-- +-- Name: Donasi_Kabar Donasi_Kabar_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Donasi_Kabar" + ADD CONSTRAINT "Donasi_Kabar_pkey" PRIMARY KEY (id); + + +-- +-- Name: Donasi_Notif Donasi_Notif_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Donasi_Notif" + ADD CONSTRAINT "Donasi_Notif_pkey" PRIMARY KEY (id); + + +-- +-- Name: Donasi_PencairanDana Donasi_PencairanDana_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Donasi_PencairanDana" + ADD CONSTRAINT "Donasi_PencairanDana_pkey" PRIMARY KEY (id); + + +-- +-- Name: Donasi_TemporaryCreate Donasi_TemporaryCreate_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Donasi_TemporaryCreate" + ADD CONSTRAINT "Donasi_TemporaryCreate_pkey" PRIMARY KEY (id); + + +-- +-- Name: Donasi Donasi_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Donasi" + ADD CONSTRAINT "Donasi_pkey" PRIMARY KEY (id); + + +-- +-- Name: EventMaster_Status EventMaster_Status_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."EventMaster_Status" + ADD CONSTRAINT "EventMaster_Status_pkey" PRIMARY KEY (id); + + +-- +-- Name: EventMaster_TipeAcara EventMaster_TipeAcara_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."EventMaster_TipeAcara" + ADD CONSTRAINT "EventMaster_TipeAcara_pkey" PRIMARY KEY (id); + + +-- +-- Name: EventSponsor EventSponsor_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."EventSponsor" + ADD CONSTRAINT "EventSponsor_pkey" PRIMARY KEY (id); + + +-- +-- Name: EventTransaksi EventTransaksi_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."EventTransaksi" + ADD CONSTRAINT "EventTransaksi_pkey" PRIMARY KEY (id); + + +-- +-- Name: Event_Peserta Event_Peserta_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Event_Peserta" + ADD CONSTRAINT "Event_Peserta_pkey" PRIMARY KEY (id); + + +-- +-- Name: Event Event_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Event" + ADD CONSTRAINT "Event_pkey" PRIMARY KEY (id); + + +-- +-- Name: ForumMaster_KategoriReport ForumMaster_KategoriReport_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."ForumMaster_KategoriReport" + ADD CONSTRAINT "ForumMaster_KategoriReport_pkey" PRIMARY KEY (id); + + +-- +-- Name: ForumMaster_StatusPosting ForumMaster_StatusPosting_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."ForumMaster_StatusPosting" + ADD CONSTRAINT "ForumMaster_StatusPosting_pkey" PRIMARY KEY (id); + + +-- +-- Name: Forum_Komentar Forum_Komentar_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Forum_Komentar" + ADD CONSTRAINT "Forum_Komentar_pkey" PRIMARY KEY (id); + + +-- +-- Name: Forum_Posting Forum_Posting_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Forum_Posting" + ADD CONSTRAINT "Forum_Posting_pkey" PRIMARY KEY (id); + + +-- +-- Name: Forum_ReportKomentar Forum_ReportKomentar_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Forum_ReportKomentar" + ADD CONSTRAINT "Forum_ReportKomentar_pkey" PRIMARY KEY (id); + + +-- +-- Name: Forum_ReportPosting Forum_ReportPosting_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Forum_ReportPosting" + ADD CONSTRAINT "Forum_ReportPosting_pkey" PRIMARY KEY (id); + + +-- +-- Name: Images Images_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Images" + ADD CONSTRAINT "Images_pkey" PRIMARY KEY (id); + + +-- +-- Name: InvestasiMaster_StatusInvoice InvestasiMaster_StatusInvoice_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."InvestasiMaster_StatusInvoice" + ADD CONSTRAINT "InvestasiMaster_StatusInvoice_pkey" PRIMARY KEY (id); + + +-- +-- Name: Investasi_Invoice Investasi_Invoice_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Investasi_Invoice" + ADD CONSTRAINT "Investasi_Invoice_pkey" PRIMARY KEY (id); + + +-- +-- Name: Investasi Investasi_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Investasi" + ADD CONSTRAINT "Investasi_pkey" PRIMARY KEY (id); + + +-- +-- Name: Job Job_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Job" + ADD CONSTRAINT "Job_pkey" PRIMARY KEY (id); + + +-- +-- Name: KodeOtp KodeOtp_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."KodeOtp" + ADD CONSTRAINT "KodeOtp_pkey" PRIMARY KEY (id); + + +-- +-- Name: MasterBank MasterBank_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."MasterBank" + ADD CONSTRAINT "MasterBank_pkey" PRIMARY KEY (id); + + +-- +-- Name: MasterBidangBisnis MasterBidangBisnis_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."MasterBidangBisnis" + ADD CONSTRAINT "MasterBidangBisnis_pkey" PRIMARY KEY (id); + + +-- +-- Name: MasterKategoriApp MasterKategoriApp_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."MasterKategoriApp" + ADD CONSTRAINT "MasterKategoriApp_pkey" PRIMARY KEY (id); + + +-- +-- Name: MasterPembagianDeviden MasterPembagianDeviden_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."MasterPembagianDeviden" + ADD CONSTRAINT "MasterPembagianDeviden_pkey" PRIMARY KEY (id); + + +-- +-- Name: MasterPencarianInvestor MasterPencarianInvestor_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."MasterPencarianInvestor" + ADD CONSTRAINT "MasterPencarianInvestor_pkey" PRIMARY KEY (id); + + +-- +-- Name: MasterPeriodeDeviden MasterPeriodeDeviden_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."MasterPeriodeDeviden" + ADD CONSTRAINT "MasterPeriodeDeviden_pkey" PRIMARY KEY (id); + + +-- +-- Name: MasterProgresInvestasi MasterProgresInvestasi_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."MasterProgresInvestasi" + ADD CONSTRAINT "MasterProgresInvestasi_pkey" PRIMARY KEY (id); + + +-- +-- Name: MasterStatusInvestasi MasterStatusInvestasi_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."MasterStatusInvestasi" + ADD CONSTRAINT "MasterStatusInvestasi_pkey" PRIMARY KEY (id); + + +-- +-- Name: MasterStatusTransaksiInvestasi MasterStatusTransaksiInvestasi_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."MasterStatusTransaksiInvestasi" + ADD CONSTRAINT "MasterStatusTransaksiInvestasi_pkey" PRIMARY KEY (id); + + +-- +-- Name: MasterStatus MasterStatus_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."MasterStatus" + ADD CONSTRAINT "MasterStatus_pkey" PRIMARY KEY (id); + + +-- +-- Name: MasterUserRole MasterUserRole_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."MasterUserRole" + ADD CONSTRAINT "MasterUserRole_pkey" PRIMARY KEY (id); + + +-- +-- Name: NomorAdmin NomorAdmin_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."NomorAdmin" + ADD CONSTRAINT "NomorAdmin_pkey" PRIMARY KEY (id); + + +-- +-- Name: Notifikasi Notifikasi_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Notifikasi" + ADD CONSTRAINT "Notifikasi_pkey" PRIMARY KEY (id); + + +-- +-- Name: Portofolio_MediaSosial Portofolio_MediaSosial_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Portofolio_MediaSosial" + ADD CONSTRAINT "Portofolio_MediaSosial_pkey" PRIMARY KEY (id); + + +-- +-- Name: Portofolio Portofolio_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Portofolio" + ADD CONSTRAINT "Portofolio_pkey" PRIMARY KEY (id); + + +-- +-- Name: Profile Profile_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Profile" + ADD CONSTRAINT "Profile_pkey" PRIMARY KEY (id); + + +-- +-- Name: ProjectCollaborationMaster_Industri ProjectCollaborationMaster_Industri_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."ProjectCollaborationMaster_Industri" + ADD CONSTRAINT "ProjectCollaborationMaster_Industri_pkey" PRIMARY KEY (id); + + +-- +-- Name: ProjectCollaborationMaster_Status ProjectCollaborationMaster_Status_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."ProjectCollaborationMaster_Status" + ADD CONSTRAINT "ProjectCollaborationMaster_Status_pkey" PRIMARY KEY (id); + + +-- +-- Name: ProjectCollaboration_AnggotaRoomChat ProjectCollaboration_AnggotaRoomChat_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."ProjectCollaboration_AnggotaRoomChat" + ADD CONSTRAINT "ProjectCollaboration_AnggotaRoomChat_pkey" PRIMARY KEY (id); + + +-- +-- Name: ProjectCollaboration_Message ProjectCollaboration_Message_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."ProjectCollaboration_Message" + ADD CONSTRAINT "ProjectCollaboration_Message_pkey" PRIMARY KEY (id); + + +-- +-- Name: ProjectCollaboration_Notifikasi ProjectCollaboration_Notifikasi_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."ProjectCollaboration_Notifikasi" + ADD CONSTRAINT "ProjectCollaboration_Notifikasi_pkey" PRIMARY KEY (id); + + +-- +-- Name: ProjectCollaboration_Partisipasi ProjectCollaboration_Partisipasi_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."ProjectCollaboration_Partisipasi" + ADD CONSTRAINT "ProjectCollaboration_Partisipasi_pkey" PRIMARY KEY (id); + + +-- +-- Name: ProjectCollaboration_RoomChat ProjectCollaboration_RoomChat_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."ProjectCollaboration_RoomChat" + ADD CONSTRAINT "ProjectCollaboration_RoomChat_pkey" PRIMARY KEY (id); + + +-- +-- Name: ProjectCollaboration ProjectCollaboration_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."ProjectCollaboration" + ADD CONSTRAINT "ProjectCollaboration_pkey" PRIMARY KEY (id); + + +-- +-- Name: ProspektusInvestasi ProspektusInvestasi_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."ProspektusInvestasi" + ADD CONSTRAINT "ProspektusInvestasi_pkey" PRIMARY KEY (id); + + +-- +-- Name: TransaksiInvestasi TransaksiInvestasi_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."TransaksiInvestasi" + ADD CONSTRAINT "TransaksiInvestasi_pkey" PRIMARY KEY (id); + + +-- +-- Name: UserSession UserSession_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."UserSession" + ADD CONSTRAINT "UserSession_pkey" PRIMARY KEY (id); + + +-- +-- Name: User User_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."User" + ADD CONSTRAINT "User_pkey" PRIMARY KEY (id); + + +-- +-- Name: Voting_DaftarNamaVote Voting_DaftarNamaVote_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Voting_DaftarNamaVote" + ADD CONSTRAINT "Voting_DaftarNamaVote_pkey" PRIMARY KEY (id); + + +-- +-- Name: Voting_Kontributor Voting_Kontributor_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Voting_Kontributor" + ADD CONSTRAINT "Voting_Kontributor_pkey" PRIMARY KEY (id); + + +-- +-- Name: Voting_Status Voting_Status_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Voting_Status" + ADD CONSTRAINT "Voting_Status_pkey" PRIMARY KEY (id); + + +-- +-- Name: Voting Voting_pkey; Type: CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Voting" + ADD CONSTRAINT "Voting_pkey" PRIMARY KEY (id); + + +-- +-- Name: BusinessMaps_portofolioId_key; Type: INDEX; Schema: public; Owner: bip +-- + +CREATE UNIQUE INDEX "BusinessMaps_portofolioId_key" ON public."BusinessMaps" USING btree ("portofolioId"); + + +-- +-- Name: Donasi_Cerita_donasiId_key; Type: INDEX; Schema: public; Owner: bip +-- + +CREATE UNIQUE INDEX "Donasi_Cerita_donasiId_key" ON public."Donasi_Cerita" USING btree ("donasiId"); + + +-- +-- Name: Donasi_Cerita_imagesId_key; Type: INDEX; Schema: public; Owner: bip +-- + +CREATE UNIQUE INDEX "Donasi_Cerita_imagesId_key" ON public."Donasi_Cerita" USING btree ("imagesId"); + + +-- +-- Name: Donasi_TemporaryCreate_imagesId_key; Type: INDEX; Schema: public; Owner: bip +-- + +CREATE UNIQUE INDEX "Donasi_TemporaryCreate_imagesId_key" ON public."Donasi_TemporaryCreate" USING btree ("imagesId"); + + +-- +-- Name: Donasi_imagesId_key; Type: INDEX; Schema: public; Owner: bip +-- + +CREATE UNIQUE INDEX "Donasi_imagesId_key" ON public."Donasi" USING btree ("imagesId"); + + +-- +-- Name: EventTransaksi_eventSponsorId_key; Type: INDEX; Schema: public; Owner: bip +-- + +CREATE UNIQUE INDEX "EventTransaksi_eventSponsorId_key" ON public."EventTransaksi" USING btree ("eventSponsorId"); + + +-- +-- Name: Investasi_imagesId_key; Type: INDEX; Schema: public; Owner: bip +-- + +CREATE UNIQUE INDEX "Investasi_imagesId_key" ON public."Investasi" USING btree ("imagesId"); + + +-- +-- Name: Portofolio_MediaSosial_portofolioId_key; Type: INDEX; Schema: public; Owner: bip +-- + +CREATE UNIQUE INDEX "Portofolio_MediaSosial_portofolioId_key" ON public."Portofolio_MediaSosial" USING btree ("portofolioId"); + + +-- +-- Name: Portofolio_id_Portofolio_key; Type: INDEX; Schema: public; Owner: bip +-- + +CREATE UNIQUE INDEX "Portofolio_id_Portofolio_key" ON public."Portofolio" USING btree ("id_Portofolio"); + + +-- +-- Name: Profile_email_key; Type: INDEX; Schema: public; Owner: bip +-- + +CREATE UNIQUE INDEX "Profile_email_key" ON public."Profile" USING btree (email); + + +-- +-- Name: Profile_userId_key; Type: INDEX; Schema: public; Owner: bip +-- + +CREATE UNIQUE INDEX "Profile_userId_key" ON public."Profile" USING btree ("userId"); + + +-- +-- Name: ProspektusInvestasi_investasiId_key; Type: INDEX; Schema: public; Owner: bip +-- + +CREATE UNIQUE INDEX "ProspektusInvestasi_investasiId_key" ON public."ProspektusInvestasi" USING btree ("investasiId"); + + +-- +-- Name: UserSession_userId_key; Type: INDEX; Schema: public; Owner: bip +-- + +CREATE UNIQUE INDEX "UserSession_userId_key" ON public."UserSession" USING btree ("userId"); + + +-- +-- Name: User_nomor_key; Type: INDEX; Schema: public; Owner: bip +-- + +CREATE UNIQUE INDEX "User_nomor_key" ON public."User" USING btree (nomor); + + +-- +-- Name: User_username_key; Type: INDEX; Schema: public; Owner: bip +-- + +CREATE UNIQUE INDEX "User_username_key" ON public."User" USING btree (username); + + +-- +-- Name: ProjectCollaboration_Notifikasi AdminNotifProjectUser; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."ProjectCollaboration_Notifikasi" + ADD CONSTRAINT "AdminNotifProjectUser" FOREIGN KEY ("adminId") REFERENCES public."User"(id) ON UPDATE CASCADE ON DELETE RESTRICT; + + +-- +-- Name: BeritaInvestasi BeritaInvestasi_imagesId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."BeritaInvestasi" + ADD CONSTRAINT "BeritaInvestasi_imagesId_fkey" FOREIGN KEY ("imagesId") REFERENCES public."Images"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: BeritaInvestasi BeritaInvestasi_investasiId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."BeritaInvestasi" + ADD CONSTRAINT "BeritaInvestasi_investasiId_fkey" FOREIGN KEY ("investasiId") REFERENCES public."Investasi"(id) ON UPDATE CASCADE ON DELETE RESTRICT; + + +-- +-- Name: BusinessMaps BusinessMaps_authorId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."BusinessMaps" + ADD CONSTRAINT "BusinessMaps_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES public."User"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: BusinessMaps BusinessMaps_portofolioId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."BusinessMaps" + ADD CONSTRAINT "BusinessMaps_portofolioId_fkey" FOREIGN KEY ("portofolioId") REFERENCES public."Portofolio"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: DokumenInvestasi DokumenInvestasi_investasiId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."DokumenInvestasi" + ADD CONSTRAINT "DokumenInvestasi_investasiId_fkey" FOREIGN KEY ("investasiId") REFERENCES public."Investasi"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: Donasi_Cerita Donasi_Cerita_donasiId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Donasi_Cerita" + ADD CONSTRAINT "Donasi_Cerita_donasiId_fkey" FOREIGN KEY ("donasiId") REFERENCES public."Donasi"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: Donasi_Cerita Donasi_Cerita_imagesId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Donasi_Cerita" + ADD CONSTRAINT "Donasi_Cerita_imagesId_fkey" FOREIGN KEY ("imagesId") REFERENCES public."Images"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: Donasi_Invoice Donasi_Invoice_authorId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Donasi_Invoice" + ADD CONSTRAINT "Donasi_Invoice_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES public."User"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: Donasi_Invoice Donasi_Invoice_donasiId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Donasi_Invoice" + ADD CONSTRAINT "Donasi_Invoice_donasiId_fkey" FOREIGN KEY ("donasiId") REFERENCES public."Donasi"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: Donasi_Invoice Donasi_Invoice_donasiMaster_BankId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Donasi_Invoice" + ADD CONSTRAINT "Donasi_Invoice_donasiMaster_BankId_fkey" FOREIGN KEY ("donasiMaster_BankId") REFERENCES public."DonasiMaster_Bank"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: Donasi_Invoice Donasi_Invoice_donasiMaster_StatusInvoiceId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Donasi_Invoice" + ADD CONSTRAINT "Donasi_Invoice_donasiMaster_StatusInvoiceId_fkey" FOREIGN KEY ("donasiMaster_StatusInvoiceId") REFERENCES public."DonasiMaster_StatusInvoice"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: Donasi_Invoice Donasi_Invoice_imagesId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Donasi_Invoice" + ADD CONSTRAINT "Donasi_Invoice_imagesId_fkey" FOREIGN KEY ("imagesId") REFERENCES public."Images"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: Donasi_Kabar Donasi_Kabar_donasiId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Donasi_Kabar" + ADD CONSTRAINT "Donasi_Kabar_donasiId_fkey" FOREIGN KEY ("donasiId") REFERENCES public."Donasi"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: Donasi_Kabar Donasi_Kabar_imagesId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Donasi_Kabar" + ADD CONSTRAINT "Donasi_Kabar_imagesId_fkey" FOREIGN KEY ("imagesId") REFERENCES public."Images"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: Donasi_Notif Donasi_Notif_donasi_KabarId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Donasi_Notif" + ADD CONSTRAINT "Donasi_Notif_donasi_KabarId_fkey" FOREIGN KEY ("donasi_KabarId") REFERENCES public."Donasi_Kabar"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: Donasi_Notif Donasi_Notif_userId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Donasi_Notif" + ADD CONSTRAINT "Donasi_Notif_userId_fkey" FOREIGN KEY ("userId") REFERENCES public."User"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: Donasi_PencairanDana Donasi_PencairanDana_donasiId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Donasi_PencairanDana" + ADD CONSTRAINT "Donasi_PencairanDana_donasiId_fkey" FOREIGN KEY ("donasiId") REFERENCES public."Donasi"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: Donasi_PencairanDana Donasi_PencairanDana_imagesId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Donasi_PencairanDana" + ADD CONSTRAINT "Donasi_PencairanDana_imagesId_fkey" FOREIGN KEY ("imagesId") REFERENCES public."Images"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: Donasi_TemporaryCreate Donasi_TemporaryCreate_donasiMaster_DurasiId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Donasi_TemporaryCreate" + ADD CONSTRAINT "Donasi_TemporaryCreate_donasiMaster_DurasiId_fkey" FOREIGN KEY ("donasiMaster_DurasiId") REFERENCES public."DonasiMaster_Durasi"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: Donasi_TemporaryCreate Donasi_TemporaryCreate_donasiMaster_KategoriId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Donasi_TemporaryCreate" + ADD CONSTRAINT "Donasi_TemporaryCreate_donasiMaster_KategoriId_fkey" FOREIGN KEY ("donasiMaster_KategoriId") REFERENCES public."DonasiMaster_Kategori"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: Donasi_TemporaryCreate Donasi_TemporaryCreate_imagesId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Donasi_TemporaryCreate" + ADD CONSTRAINT "Donasi_TemporaryCreate_imagesId_fkey" FOREIGN KEY ("imagesId") REFERENCES public."Images"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: Donasi Donasi_authorId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Donasi" + ADD CONSTRAINT "Donasi_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES public."User"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: Donasi Donasi_donasiMaster_DurasiId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Donasi" + ADD CONSTRAINT "Donasi_donasiMaster_DurasiId_fkey" FOREIGN KEY ("donasiMaster_DurasiId") REFERENCES public."DonasiMaster_Durasi"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: Donasi Donasi_donasiMaster_KategoriId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Donasi" + ADD CONSTRAINT "Donasi_donasiMaster_KategoriId_fkey" FOREIGN KEY ("donasiMaster_KategoriId") REFERENCES public."DonasiMaster_Kategori"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: Donasi Donasi_donasiMaster_StatusDonasiId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Donasi" + ADD CONSTRAINT "Donasi_donasiMaster_StatusDonasiId_fkey" FOREIGN KEY ("donasiMaster_StatusDonasiId") REFERENCES public."DonasiMaster_StatusDonasi"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: Donasi Donasi_imagesId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Donasi" + ADD CONSTRAINT "Donasi_imagesId_fkey" FOREIGN KEY ("imagesId") REFERENCES public."Images"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: EventSponsor EventSponsor_auhtorId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."EventSponsor" + ADD CONSTRAINT "EventSponsor_auhtorId_fkey" FOREIGN KEY ("auhtorId") REFERENCES public."User"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: EventSponsor EventSponsor_eventId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."EventSponsor" + ADD CONSTRAINT "EventSponsor_eventId_fkey" FOREIGN KEY ("eventId") REFERENCES public."Event"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: EventTransaksi EventTransaksi_authorId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."EventTransaksi" + ADD CONSTRAINT "EventTransaksi_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES public."User"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: EventTransaksi EventTransaksi_eventId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."EventTransaksi" + ADD CONSTRAINT "EventTransaksi_eventId_fkey" FOREIGN KEY ("eventId") REFERENCES public."Event"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: EventTransaksi EventTransaksi_eventSponsorId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."EventTransaksi" + ADD CONSTRAINT "EventTransaksi_eventSponsorId_fkey" FOREIGN KEY ("eventSponsorId") REFERENCES public."EventSponsor"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: EventTransaksi EventTransaksi_masterBankId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."EventTransaksi" + ADD CONSTRAINT "EventTransaksi_masterBankId_fkey" FOREIGN KEY ("masterBankId") REFERENCES public."MasterBank"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: Event_Peserta Event_Peserta_eventId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Event_Peserta" + ADD CONSTRAINT "Event_Peserta_eventId_fkey" FOREIGN KEY ("eventId") REFERENCES public."Event"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: Event_Peserta Event_Peserta_userId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Event_Peserta" + ADD CONSTRAINT "Event_Peserta_userId_fkey" FOREIGN KEY ("userId") REFERENCES public."User"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: Event Event_authorId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Event" + ADD CONSTRAINT "Event_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES public."User"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: Event Event_eventMaster_StatusId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Event" + ADD CONSTRAINT "Event_eventMaster_StatusId_fkey" FOREIGN KEY ("eventMaster_StatusId") REFERENCES public."EventMaster_Status"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: Event Event_eventMaster_TipeAcaraId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Event" + ADD CONSTRAINT "Event_eventMaster_TipeAcaraId_fkey" FOREIGN KEY ("eventMaster_TipeAcaraId") REFERENCES public."EventMaster_TipeAcara"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: Forum_Komentar Forum_Komentar_authorId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Forum_Komentar" + ADD CONSTRAINT "Forum_Komentar_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES public."User"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: Forum_Komentar Forum_Komentar_forum_PostingId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Forum_Komentar" + ADD CONSTRAINT "Forum_Komentar_forum_PostingId_fkey" FOREIGN KEY ("forum_PostingId") REFERENCES public."Forum_Posting"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: Forum_Posting Forum_Posting_authorId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Forum_Posting" + ADD CONSTRAINT "Forum_Posting_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES public."User"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: Forum_Posting Forum_Posting_forumMaster_StatusPostingId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Forum_Posting" + ADD CONSTRAINT "Forum_Posting_forumMaster_StatusPostingId_fkey" FOREIGN KEY ("forumMaster_StatusPostingId") REFERENCES public."ForumMaster_StatusPosting"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: Forum_ReportKomentar Forum_ReportKomentar_forumMaster_KategoriReportId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Forum_ReportKomentar" + ADD CONSTRAINT "Forum_ReportKomentar_forumMaster_KategoriReportId_fkey" FOREIGN KEY ("forumMaster_KategoriReportId") REFERENCES public."ForumMaster_KategoriReport"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: Forum_ReportKomentar Forum_ReportKomentar_forum_KomentarId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Forum_ReportKomentar" + ADD CONSTRAINT "Forum_ReportKomentar_forum_KomentarId_fkey" FOREIGN KEY ("forum_KomentarId") REFERENCES public."Forum_Komentar"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: Forum_ReportKomentar Forum_ReportKomentar_userId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Forum_ReportKomentar" + ADD CONSTRAINT "Forum_ReportKomentar_userId_fkey" FOREIGN KEY ("userId") REFERENCES public."User"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: Forum_ReportPosting Forum_ReportPosting_forumMaster_KategoriReportId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Forum_ReportPosting" + ADD CONSTRAINT "Forum_ReportPosting_forumMaster_KategoriReportId_fkey" FOREIGN KEY ("forumMaster_KategoriReportId") REFERENCES public."ForumMaster_KategoriReport"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: Forum_ReportPosting Forum_ReportPosting_forum_PostingId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Forum_ReportPosting" + ADD CONSTRAINT "Forum_ReportPosting_forum_PostingId_fkey" FOREIGN KEY ("forum_PostingId") REFERENCES public."Forum_Posting"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: Forum_ReportPosting Forum_ReportPosting_userId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Forum_ReportPosting" + ADD CONSTRAINT "Forum_ReportPosting_userId_fkey" FOREIGN KEY ("userId") REFERENCES public."User"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: Investasi_Invoice Investasi_Invoice_authorId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Investasi_Invoice" + ADD CONSTRAINT "Investasi_Invoice_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES public."User"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: Investasi_Invoice Investasi_Invoice_imagesId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Investasi_Invoice" + ADD CONSTRAINT "Investasi_Invoice_imagesId_fkey" FOREIGN KEY ("imagesId") REFERENCES public."Images"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: Investasi_Invoice Investasi_Invoice_investasiId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Investasi_Invoice" + ADD CONSTRAINT "Investasi_Invoice_investasiId_fkey" FOREIGN KEY ("investasiId") REFERENCES public."Investasi"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: Investasi_Invoice Investasi_Invoice_masterBankId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Investasi_Invoice" + ADD CONSTRAINT "Investasi_Invoice_masterBankId_fkey" FOREIGN KEY ("masterBankId") REFERENCES public."MasterBank"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: Investasi_Invoice Investasi_Invoice_statusInvoiceId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Investasi_Invoice" + ADD CONSTRAINT "Investasi_Invoice_statusInvoiceId_fkey" FOREIGN KEY ("statusInvoiceId") REFERENCES public."InvestasiMaster_StatusInvoice"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: Investasi Investasi_authorId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Investasi" + ADD CONSTRAINT "Investasi_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES public."User"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: Investasi Investasi_imagesId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Investasi" + ADD CONSTRAINT "Investasi_imagesId_fkey" FOREIGN KEY ("imagesId") REFERENCES public."Images"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: Investasi Investasi_masterPembagianDevidenId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Investasi" + ADD CONSTRAINT "Investasi_masterPembagianDevidenId_fkey" FOREIGN KEY ("masterPembagianDevidenId") REFERENCES public."MasterPembagianDeviden"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: Investasi Investasi_masterPencarianInvestorId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Investasi" + ADD CONSTRAINT "Investasi_masterPencarianInvestorId_fkey" FOREIGN KEY ("masterPencarianInvestorId") REFERENCES public."MasterPencarianInvestor"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: Investasi Investasi_masterPeriodeDevidenId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Investasi" + ADD CONSTRAINT "Investasi_masterPeriodeDevidenId_fkey" FOREIGN KEY ("masterPeriodeDevidenId") REFERENCES public."MasterPeriodeDeviden"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: Investasi Investasi_masterProgresInvestasiId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Investasi" + ADD CONSTRAINT "Investasi_masterProgresInvestasiId_fkey" FOREIGN KEY ("masterProgresInvestasiId") REFERENCES public."MasterProgresInvestasi"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: Investasi Investasi_masterStatusInvestasiId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Investasi" + ADD CONSTRAINT "Investasi_masterStatusInvestasiId_fkey" FOREIGN KEY ("masterStatusInvestasiId") REFERENCES public."MasterStatusInvestasi"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: Job Job_authorId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Job" + ADD CONSTRAINT "Job_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES public."User"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: Job Job_masterStatusId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Job" + ADD CONSTRAINT "Job_masterStatusId_fkey" FOREIGN KEY ("masterStatusId") REFERENCES public."MasterStatus"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: Notifikasi NotifikasiAdmin; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Notifikasi" + ADD CONSTRAINT "NotifikasiAdmin" FOREIGN KEY ("adminId") REFERENCES public."User"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: Notifikasi NotifikasiUser; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Notifikasi" + ADD CONSTRAINT "NotifikasiUser" FOREIGN KEY ("userId") REFERENCES public."User"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: Notifikasi Notifikasi_userRoleId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Notifikasi" + ADD CONSTRAINT "Notifikasi_userRoleId_fkey" FOREIGN KEY ("userRoleId") REFERENCES public."MasterUserRole"(id) ON UPDATE CASCADE ON DELETE RESTRICT; + + +-- +-- Name: Portofolio_MediaSosial Portofolio_MediaSosial_portofolioId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Portofolio_MediaSosial" + ADD CONSTRAINT "Portofolio_MediaSosial_portofolioId_fkey" FOREIGN KEY ("portofolioId") REFERENCES public."Portofolio"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: Portofolio Portofolio_masterBidangBisnisId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Portofolio" + ADD CONSTRAINT "Portofolio_masterBidangBisnisId_fkey" FOREIGN KEY ("masterBidangBisnisId") REFERENCES public."MasterBidangBisnis"(id) ON UPDATE CASCADE ON DELETE RESTRICT; + + +-- +-- Name: Portofolio Portofolio_profileId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Portofolio" + ADD CONSTRAINT "Portofolio_profileId_fkey" FOREIGN KEY ("profileId") REFERENCES public."Profile"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: Profile Profile_userId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Profile" + ADD CONSTRAINT "Profile_userId_fkey" FOREIGN KEY ("userId") REFERENCES public."User"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: ProjectCollaboration_AnggotaRoomChat ProjectCollaboration_AnggotaRoomChat_projectCollaboration__fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."ProjectCollaboration_AnggotaRoomChat" + ADD CONSTRAINT "ProjectCollaboration_AnggotaRoomChat_projectCollaboration__fkey" FOREIGN KEY ("projectCollaboration_RoomChatId") REFERENCES public."ProjectCollaboration_RoomChat"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: ProjectCollaboration_AnggotaRoomChat ProjectCollaboration_AnggotaRoomChat_userId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."ProjectCollaboration_AnggotaRoomChat" + ADD CONSTRAINT "ProjectCollaboration_AnggotaRoomChat_userId_fkey" FOREIGN KEY ("userId") REFERENCES public."User"(id) ON UPDATE CASCADE ON DELETE RESTRICT; + + +-- +-- Name: ProjectCollaboration_Message ProjectCollaboration_Message_projectCollaboration_RoomChat_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."ProjectCollaboration_Message" + ADD CONSTRAINT "ProjectCollaboration_Message_projectCollaboration_RoomChat_fkey" FOREIGN KEY ("projectCollaboration_RoomChatId") REFERENCES public."ProjectCollaboration_RoomChat"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: ProjectCollaboration_Message ProjectCollaboration_Message_userId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."ProjectCollaboration_Message" + ADD CONSTRAINT "ProjectCollaboration_Message_userId_fkey" FOREIGN KEY ("userId") REFERENCES public."User"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: ProjectCollaboration_Notifikasi ProjectCollaboration_Notifikasi_projectCollaborationId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."ProjectCollaboration_Notifikasi" + ADD CONSTRAINT "ProjectCollaboration_Notifikasi_projectCollaborationId_fkey" FOREIGN KEY ("projectCollaborationId") REFERENCES public."ProjectCollaboration"(id) ON UPDATE CASCADE ON DELETE RESTRICT; + + +-- +-- Name: ProjectCollaboration_Partisipasi ProjectCollaboration_Partisipasi_projectCollaborationId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."ProjectCollaboration_Partisipasi" + ADD CONSTRAINT "ProjectCollaboration_Partisipasi_projectCollaborationId_fkey" FOREIGN KEY ("projectCollaborationId") REFERENCES public."ProjectCollaboration"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: ProjectCollaboration_Partisipasi ProjectCollaboration_Partisipasi_userId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."ProjectCollaboration_Partisipasi" + ADD CONSTRAINT "ProjectCollaboration_Partisipasi_userId_fkey" FOREIGN KEY ("userId") REFERENCES public."User"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: ProjectCollaboration_RoomChat ProjectCollaboration_RoomChat_projectCollaborationId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."ProjectCollaboration_RoomChat" + ADD CONSTRAINT "ProjectCollaboration_RoomChat_projectCollaborationId_fkey" FOREIGN KEY ("projectCollaborationId") REFERENCES public."ProjectCollaboration"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: ProjectCollaboration_RoomChat ProjectCollaboration_RoomChat_userId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."ProjectCollaboration_RoomChat" + ADD CONSTRAINT "ProjectCollaboration_RoomChat_userId_fkey" FOREIGN KEY ("userId") REFERENCES public."User"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: ProjectCollaboration ProjectCollaboration_projectCollaborationMaster_IndustriId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."ProjectCollaboration" + ADD CONSTRAINT "ProjectCollaboration_projectCollaborationMaster_IndustriId_fkey" FOREIGN KEY ("projectCollaborationMaster_IndustriId") REFERENCES public."ProjectCollaborationMaster_Industri"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: ProjectCollaboration ProjectCollaboration_projectCollaborationMaster_StatusId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."ProjectCollaboration" + ADD CONSTRAINT "ProjectCollaboration_projectCollaborationMaster_StatusId_fkey" FOREIGN KEY ("projectCollaborationMaster_StatusId") REFERENCES public."ProjectCollaborationMaster_Status"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: ProjectCollaboration ProjectCollaboration_userId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."ProjectCollaboration" + ADD CONSTRAINT "ProjectCollaboration_userId_fkey" FOREIGN KEY ("userId") REFERENCES public."User"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: ProspektusInvestasi ProspektusInvestasi_investasiId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."ProspektusInvestasi" + ADD CONSTRAINT "ProspektusInvestasi_investasiId_fkey" FOREIGN KEY ("investasiId") REFERENCES public."Investasi"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: TransaksiInvestasi TransaksiInvestasi_authorId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."TransaksiInvestasi" + ADD CONSTRAINT "TransaksiInvestasi_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES public."User"(id) ON UPDATE CASCADE ON DELETE RESTRICT; + + +-- +-- Name: TransaksiInvestasi TransaksiInvestasi_investasiId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."TransaksiInvestasi" + ADD CONSTRAINT "TransaksiInvestasi_investasiId_fkey" FOREIGN KEY ("investasiId") REFERENCES public."Investasi"(id) ON UPDATE CASCADE ON DELETE RESTRICT; + + +-- +-- Name: TransaksiInvestasi TransaksiInvestasi_masterStatusTransaksiInvestasiId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."TransaksiInvestasi" + ADD CONSTRAINT "TransaksiInvestasi_masterStatusTransaksiInvestasiId_fkey" FOREIGN KEY ("masterStatusTransaksiInvestasiId") REFERENCES public."MasterStatusTransaksiInvestasi"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: ProjectCollaboration_Notifikasi UserNotifProjectUser; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."ProjectCollaboration_Notifikasi" + ADD CONSTRAINT "UserNotifProjectUser" FOREIGN KEY ("userId") REFERENCES public."User"(id) ON UPDATE CASCADE ON DELETE RESTRICT; + + +-- +-- Name: UserSession UserSession_userId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."UserSession" + ADD CONSTRAINT "UserSession_userId_fkey" FOREIGN KEY ("userId") REFERENCES public."User"(id) ON UPDATE CASCADE ON DELETE RESTRICT; + + +-- +-- Name: User User_masterUserRoleId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."User" + ADD CONSTRAINT "User_masterUserRoleId_fkey" FOREIGN KEY ("masterUserRoleId") REFERENCES public."MasterUserRole"(id) ON UPDATE CASCADE ON DELETE RESTRICT; + + +-- +-- Name: Voting_DaftarNamaVote Voting_DaftarNamaVote_votingId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Voting_DaftarNamaVote" + ADD CONSTRAINT "Voting_DaftarNamaVote_votingId_fkey" FOREIGN KEY ("votingId") REFERENCES public."Voting"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: Voting_Kontributor Voting_Kontributor_authorId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Voting_Kontributor" + ADD CONSTRAINT "Voting_Kontributor_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES public."User"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: Voting_Kontributor Voting_Kontributor_votingId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Voting_Kontributor" + ADD CONSTRAINT "Voting_Kontributor_votingId_fkey" FOREIGN KEY ("votingId") REFERENCES public."Voting"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: Voting_Kontributor Voting_Kontributor_voting_DaftarNamaVoteId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Voting_Kontributor" + ADD CONSTRAINT "Voting_Kontributor_voting_DaftarNamaVoteId_fkey" FOREIGN KEY ("voting_DaftarNamaVoteId") REFERENCES public."Voting_DaftarNamaVote"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: Voting Voting_authorId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Voting" + ADD CONSTRAINT "Voting_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES public."User"(id) ON UPDATE CASCADE ON DELETE RESTRICT; + + +-- +-- Name: Voting Voting_voting_StatusId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: bip +-- + +ALTER TABLE ONLY public."Voting" + ADD CONSTRAINT "Voting_voting_StatusId_fkey" FOREIGN KEY ("voting_StatusId") REFERENCES public."Voting_Status"(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- PostgreSQL database dump complete +-- + diff --git a/build.wibu b/build.wibu new file mode 100644 index 00000000..62d352e1 --- /dev/null +++ b/build.wibu @@ -0,0 +1,3 @@ +bun --env-file=.env.build prisma db push +bun --env-file=.env.build prisma db seed +bun --env-file=.env.build run build \ No newline at end of file diff --git a/bun.lock b/bun.lock new file mode 100644 index 00000000..6a0ca50e --- /dev/null +++ b/bun.lock @@ -0,0 +1,4113 @@ +{ + "lockfileVersion": 1, + "workspaces": { + "": { + "dependencies": { + "@bounceapp/iframe": "^0.3.0", + "@cyntler/react-doc-viewer": "^1.16.6", + "@emotion/react": "^11.11.1", + "@emotion/server": "^11.11.0", + "@hookstate/core": "^4.0.1", + "@mantine/carousel": "^7.1.5", + "@mantine/core": "^6.0.17", + "@mantine/dates": "^6.0.17", + "@mantine/dropzone": "^7.1.3", + "@mantine/form": "^7.6.1", + "@mantine/hooks": "^6.0.17", + "@mantine/next": "^6.0.17", + "@mantine/notifications": "^6.0.17", + "@mantine/tiptap": "^7.5.3", + "@prisma/client": "^6.3.0", + "@react-pdf/renderer": "^3.4.4", + "@tabler/icons-react": "^3.31.0", + "@tiptap/extension-highlight": "^2.2.3", + "@tiptap/extension-image": "^2.11.7", + "@tiptap/extension-link": "^2.2.3", + "@tiptap/extension-subscript": "^2.2.3", + "@tiptap/extension-superscript": "^2.2.3", + "@tiptap/extension-text-align": "^2.2.3", + "@tiptap/extension-underline": "^2.11.7", + "@tiptap/pm": "^2.2.3", + "@tiptap/react": "^2.2.3", + "@tiptap/starter-kit": "^2.2.3", + "@types/bun": "^1.1.14", + "@types/lodash": "^4.17.4", + "@types/mapbox-gl": "^3.4.0", + "@types/node": "20.4.5", + "@types/react": "18.2.17", + "@types/react-dom": "18.2.7", + "@types/uuid": "^9.0.4", + "autoprefixer": "10.4.14", + "bufferutil": "^4.0.8", + "bun": "^1.1.38", + "colors": "^1.4.0", + "date-fns": "^4.1.0", + "dayjs": "^1.11.10", + "dotenv": "^16.4.5", + "echarts": "^5.4.3", + "echarts-for-react": "^3.0.2", + "embla-carousel-react": "^8.0.0-rc14", + "eslint-config-next": "^13.5.4", + "iron-session": "^6.3.1", + "jose": "^5.9.2", + "jotai": "^2.4.3", + "lodash": "^4.17.21", + "mapbox-gl": "^3.5.2", + "midtrans-client": "^1.3.1", + "moment": "^2.29.4", + "mqtt": "^5.5.0", + "next": "^13.5.4", + "next-dev": "^1.1.9", + "next-scroll-loader": "^1.0.9", + "p-limit": "^6.2.0", + "pdf-lib": "^1.17.1", + "pdf2pic": "^3.1.3", + "pdfjs-dist": "^4.6.82", + "postcss": "8.4.27", + "prisma": "^6.3.0", + "react": "18.2.0", + "react-countdown": "^2.3.5", + "react-dom": "18.2.0", + "react-easy-infinite-scroll-hook": "^2.1.4", + "react-fast-marquee": "^1.6.4", + "react-iframe": "^1.8.5", + "react-infinite-scroll-component": "^6.1.0", + "react-international-phone": "^4.2.6", + "react-map-gl": "^7.1.7", + "react-pdf": "^9.1.0", + "react-qr-code": "^2.0.15", + "react-quill": "^2.0.0", + "react-responsive-carousel": "^3.2.23", + "react-toastify": "^9.1.3", + "sharp": "^0.33.5", + "socket.io-client": "^4.7.2", + "swr": "^2.3.0", + "tailwindcss": "3.3.3", + "ts-node": "^10.9.2", + "typescript": "5.1.6", + "utf-8-validate": "^6.0.3", + "uuid": "^9.0.1", + "wibu": "bipproduction/wibu", + "wibu-cli": "^1.0.91", + "wibu-pkg": "^1.0.3", + "winston": "^3.17.0", + "winston-daily-rotate-file": "^5.0.0", + "yaml": "^2.3.2", + }, + "devDependencies": { + "@typescript-eslint/eslint-plugin": "^7.0.0", + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0", + }, + }, + }, + "packages": { + "@0no-co/graphql.web": ["@0no-co/graphql.web@1.1.1", "", { "peerDependencies": { "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0" }, "optionalPeers": ["graphql"] }, "sha512-F2i3xdycesw78QCOBHmpTn7eaD2iNXGwB2gkfwxcOfBbeauYpr8RBSyJOkDrFtKtVRMclg8Sg3n1ip0ACyUuag=="], + + "@alloc/quick-lru": ["@alloc/quick-lru@5.2.0", "", {}, "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw=="], + + "@ampproject/remapping": ["@ampproject/remapping@2.3.0", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw=="], + + "@assemblyscript/loader": ["@assemblyscript/loader@0.19.23", "", {}, "sha512-ulkCYfFbYj01ie1MDOyxv2F6SpRN1TOj7fQxbP07D6HmeR+gr2JLSmINKjga2emB+b1L2KGrFKBTc+e00p54nw=="], + + "@babel/code-frame": ["@babel/code-frame@7.26.2", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.25.9", "js-tokens": "^4.0.0", "picocolors": "^1.0.0" } }, "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ=="], + + "@babel/compat-data": ["@babel/compat-data@7.26.8", "", {}, "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ=="], + + "@babel/core": ["@babel/core@7.26.9", "", { "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.26.2", "@babel/generator": "^7.26.9", "@babel/helper-compilation-targets": "^7.26.5", "@babel/helper-module-transforms": "^7.26.0", "@babel/helpers": "^7.26.9", "@babel/parser": "^7.26.9", "@babel/template": "^7.26.9", "@babel/traverse": "^7.26.9", "@babel/types": "^7.26.9", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", "semver": "^6.3.1" } }, "sha512-lWBYIrF7qK5+GjY5Uy+/hEgp8OJWOD/rpy74GplYRhEauvbHDeFB8t5hPOZxCZ0Oxf4Cc36tK51/l3ymJysrKw=="], + + "@babel/generator": ["@babel/generator@7.26.9", "", { "dependencies": { "@babel/parser": "^7.26.9", "@babel/types": "^7.26.9", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^3.0.2" } }, "sha512-kEWdzjOAUMW4hAyrzJ0ZaTOu9OmpyDIQicIh0zg0EEcEkYXZb2TjtBhnHi2ViX7PKwZqF4xwqfAm299/QMP3lg=="], + + "@babel/helper-annotate-as-pure": ["@babel/helper-annotate-as-pure@7.25.9", "", { "dependencies": { "@babel/types": "^7.25.9" } }, "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g=="], + + "@babel/helper-compilation-targets": ["@babel/helper-compilation-targets@7.26.5", "", { "dependencies": { "@babel/compat-data": "^7.26.5", "@babel/helper-validator-option": "^7.25.9", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" } }, "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA=="], + + "@babel/helper-create-class-features-plugin": ["@babel/helper-create-class-features-plugin@7.26.9", "", { "dependencies": { "@babel/helper-annotate-as-pure": "^7.25.9", "@babel/helper-member-expression-to-functions": "^7.25.9", "@babel/helper-optimise-call-expression": "^7.25.9", "@babel/helper-replace-supers": "^7.26.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", "@babel/traverse": "^7.26.9", "semver": "^6.3.1" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-ubbUqCofvxPRurw5L8WTsCLSkQiVpov4Qx0WMA+jUN+nXBK8ADPlJO1grkFw5CWKC5+sZSOfuGMdX1aI1iT9Sg=="], + + "@babel/helper-create-regexp-features-plugin": ["@babel/helper-create-regexp-features-plugin@7.26.3", "", { "dependencies": { "@babel/helper-annotate-as-pure": "^7.25.9", "regexpu-core": "^6.2.0", "semver": "^6.3.1" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-G7ZRb40uUgdKOQqPLjfD12ZmGA54PzqDFUv2BKImnC9QIfGhIHKvVML0oN8IUiDq4iRqpq74ABpvOaerfWdong=="], + + "@babel/helper-define-polyfill-provider": ["@babel/helper-define-polyfill-provider@0.6.3", "", { "dependencies": { "@babel/helper-compilation-targets": "^7.22.6", "@babel/helper-plugin-utils": "^7.22.5", "debug": "^4.1.1", "lodash.debounce": "^4.0.8", "resolve": "^1.14.2" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg=="], + + "@babel/helper-member-expression-to-functions": ["@babel/helper-member-expression-to-functions@7.25.9", "", { "dependencies": { "@babel/traverse": "^7.25.9", "@babel/types": "^7.25.9" } }, "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ=="], + + "@babel/helper-module-imports": ["@babel/helper-module-imports@7.25.9", "", { "dependencies": { "@babel/traverse": "^7.25.9", "@babel/types": "^7.25.9" } }, "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw=="], + + "@babel/helper-module-transforms": ["@babel/helper-module-transforms@7.26.0", "", { "dependencies": { "@babel/helper-module-imports": "^7.25.9", "@babel/helper-validator-identifier": "^7.25.9", "@babel/traverse": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw=="], + + "@babel/helper-optimise-call-expression": ["@babel/helper-optimise-call-expression@7.25.9", "", { "dependencies": { "@babel/types": "^7.25.9" } }, "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ=="], + + "@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.26.5", "", {}, "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg=="], + + "@babel/helper-remap-async-to-generator": ["@babel/helper-remap-async-to-generator@7.25.9", "", { "dependencies": { "@babel/helper-annotate-as-pure": "^7.25.9", "@babel/helper-wrap-function": "^7.25.9", "@babel/traverse": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw=="], + + "@babel/helper-replace-supers": ["@babel/helper-replace-supers@7.26.5", "", { "dependencies": { "@babel/helper-member-expression-to-functions": "^7.25.9", "@babel/helper-optimise-call-expression": "^7.25.9", "@babel/traverse": "^7.26.5" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg=="], + + "@babel/helper-skip-transparent-expression-wrappers": ["@babel/helper-skip-transparent-expression-wrappers@7.25.9", "", { "dependencies": { "@babel/traverse": "^7.25.9", "@babel/types": "^7.25.9" } }, "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA=="], + + "@babel/helper-string-parser": ["@babel/helper-string-parser@7.25.9", "", {}, "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA=="], + + "@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.25.9", "", {}, "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ=="], + + "@babel/helper-validator-option": ["@babel/helper-validator-option@7.25.9", "", {}, "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw=="], + + "@babel/helper-wrap-function": ["@babel/helper-wrap-function@7.25.9", "", { "dependencies": { "@babel/template": "^7.25.9", "@babel/traverse": "^7.25.9", "@babel/types": "^7.25.9" } }, "sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g=="], + + "@babel/helpers": ["@babel/helpers@7.26.9", "", { "dependencies": { "@babel/template": "^7.26.9", "@babel/types": "^7.26.9" } }, "sha512-Mz/4+y8udxBKdmzt/UjPACs4G3j5SshJJEFFKxlCGPydG4JAHXxjWjAwjd09tf6oINvl1VfMJo+nB7H2YKQ0dA=="], + + "@babel/highlight": ["@babel/highlight@7.25.9", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.25.9", "chalk": "^2.4.2", "js-tokens": "^4.0.0", "picocolors": "^1.0.0" } }, "sha512-llL88JShoCsth8fF8R4SJnIn+WLvR6ccFxu1H3FlMhDontdcmZWf2HgIZ7AIqV3Xcck1idlohrN4EUBQz6klbw=="], + + "@babel/parser": ["@babel/parser@7.26.9", "", { "dependencies": { "@babel/types": "^7.26.9" }, "bin": "./bin/babel-parser.js" }, "sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A=="], + + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": ["@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9", "@babel/traverse": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g=="], + + "@babel/plugin-bugfix-safari-class-field-initializer-scope": ["@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw=="], + + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": ["@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug=="], + + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": ["@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9", "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", "@babel/plugin-transform-optional-chaining": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.13.0" } }, "sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g=="], + + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": ["@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9", "@babel/traverse": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg=="], + + "@babel/plugin-proposal-class-properties": ["@babel/plugin-proposal-class-properties@7.18.6", "", { "dependencies": { "@babel/helper-create-class-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ=="], + + "@babel/plugin-proposal-decorators": ["@babel/plugin-proposal-decorators@7.25.9", "", { "dependencies": { "@babel/helper-create-class-features-plugin": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9", "@babel/plugin-syntax-decorators": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-smkNLL/O1ezy9Nhy4CNosc4Va+1wo5w4gzSZeLe6y6dM4mmHfYOCPolXQPHQxonZCF+ZyebxN9vqOolkYrSn5g=="], + + "@babel/plugin-proposal-export-default-from": ["@babel/plugin-proposal-export-default-from@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-ykqgwNfSnNOB+C8fV5X4mG3AVmvu+WVxcaU9xHHtBb7PCrPeweMmPjGsn8eMaeJg6SJuoUuZENeeSWaarWqonQ=="], + + "@babel/plugin-proposal-nullish-coalescing-operator": ["@babel/plugin-proposal-nullish-coalescing-operator@7.18.6", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA=="], + + "@babel/plugin-proposal-optional-chaining": ["@babel/plugin-proposal-optional-chaining@7.21.0", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.20.2", "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA=="], + + "@babel/plugin-proposal-private-property-in-object": ["@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2", "", { "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w=="], + + "@babel/plugin-syntax-async-generators": ["@babel/plugin-syntax-async-generators@7.8.4", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw=="], + + "@babel/plugin-syntax-bigint": ["@babel/plugin-syntax-bigint@7.8.3", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg=="], + + "@babel/plugin-syntax-class-properties": ["@babel/plugin-syntax-class-properties@7.12.13", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA=="], + + "@babel/plugin-syntax-class-static-block": ["@babel/plugin-syntax-class-static-block@7.14.5", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw=="], + + "@babel/plugin-syntax-decorators": ["@babel/plugin-syntax-decorators@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-ryzI0McXUPJnRCvMo4lumIKZUzhYUO/ScI+Mz4YVaTLt04DHNSjEUjKVvbzQjZFLuod/cYEc07mJWhzl6v4DPg=="], + + "@babel/plugin-syntax-dynamic-import": ["@babel/plugin-syntax-dynamic-import@7.8.3", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ=="], + + "@babel/plugin-syntax-export-default-from": ["@babel/plugin-syntax-export-default-from@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-9MhJ/SMTsVqsd69GyQg89lYR4o9T+oDGv5F6IsigxxqFVOyR/IflDLYP8WDI1l8fkhNGGktqkvL5qwNCtGEpgQ=="], + + "@babel/plugin-syntax-flow": ["@babel/plugin-syntax-flow@7.26.0", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-B+O2DnPc0iG+YXFqOxv2WNuNU97ToWjOomUQ78DouOENWUaM5sVrmet9mcomUGQFwpJd//gvUagXBSdzO1fRKg=="], + + "@babel/plugin-syntax-import-assertions": ["@babel/plugin-syntax-import-assertions@7.26.0", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg=="], + + "@babel/plugin-syntax-import-attributes": ["@babel/plugin-syntax-import-attributes@7.26.0", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A=="], + + "@babel/plugin-syntax-import-meta": ["@babel/plugin-syntax-import-meta@7.10.4", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g=="], + + "@babel/plugin-syntax-json-strings": ["@babel/plugin-syntax-json-strings@7.8.3", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA=="], + + "@babel/plugin-syntax-jsx": ["@babel/plugin-syntax-jsx@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA=="], + + "@babel/plugin-syntax-logical-assignment-operators": ["@babel/plugin-syntax-logical-assignment-operators@7.10.4", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig=="], + + "@babel/plugin-syntax-nullish-coalescing-operator": ["@babel/plugin-syntax-nullish-coalescing-operator@7.8.3", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ=="], + + "@babel/plugin-syntax-numeric-separator": ["@babel/plugin-syntax-numeric-separator@7.10.4", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug=="], + + "@babel/plugin-syntax-object-rest-spread": ["@babel/plugin-syntax-object-rest-spread@7.8.3", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA=="], + + "@babel/plugin-syntax-optional-catch-binding": ["@babel/plugin-syntax-optional-catch-binding@7.8.3", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q=="], + + "@babel/plugin-syntax-optional-chaining": ["@babel/plugin-syntax-optional-chaining@7.8.3", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg=="], + + "@babel/plugin-syntax-private-property-in-object": ["@babel/plugin-syntax-private-property-in-object@7.14.5", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg=="], + + "@babel/plugin-syntax-top-level-await": ["@babel/plugin-syntax-top-level-await@7.14.5", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw=="], + + "@babel/plugin-syntax-typescript": ["@babel/plugin-syntax-typescript@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ=="], + + "@babel/plugin-syntax-unicode-sets-regex": ["@babel/plugin-syntax-unicode-sets-regex@7.18.6", "", { "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg=="], + + "@babel/plugin-transform-arrow-functions": ["@babel/plugin-transform-arrow-functions@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg=="], + + "@babel/plugin-transform-async-generator-functions": ["@babel/plugin-transform-async-generator-functions@7.26.8", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.26.5", "@babel/helper-remap-async-to-generator": "^7.25.9", "@babel/traverse": "^7.26.8" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-He9Ej2X7tNf2zdKMAGOsmg2MrFc+hfoAhd3po4cWfo/NWjzEAKa0oQruj1ROVUdl0e6fb6/kE/G3SSxE0lRJOg=="], + + "@babel/plugin-transform-async-to-generator": ["@babel/plugin-transform-async-to-generator@7.25.9", "", { "dependencies": { "@babel/helper-module-imports": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9", "@babel/helper-remap-async-to-generator": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ=="], + + "@babel/plugin-transform-block-scoped-functions": ["@babel/plugin-transform-block-scoped-functions@7.26.5", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.26.5" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-chuTSY+hq09+/f5lMj8ZSYgCFpppV2CbYrhNFJ1BFoXpiWPnnAb7R0MqrafCpN8E1+YRrtM1MXZHJdIx8B6rMQ=="], + + "@babel/plugin-transform-block-scoping": ["@babel/plugin-transform-block-scoping@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg=="], + + "@babel/plugin-transform-class-properties": ["@babel/plugin-transform-class-properties@7.25.9", "", { "dependencies": { "@babel/helper-create-class-features-plugin": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q=="], + + "@babel/plugin-transform-class-static-block": ["@babel/plugin-transform-class-static-block@7.26.0", "", { "dependencies": { "@babel/helper-create-class-features-plugin": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.12.0" } }, "sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ=="], + + "@babel/plugin-transform-classes": ["@babel/plugin-transform-classes@7.25.9", "", { "dependencies": { "@babel/helper-annotate-as-pure": "^7.25.9", "@babel/helper-compilation-targets": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9", "@babel/helper-replace-supers": "^7.25.9", "@babel/traverse": "^7.25.9", "globals": "^11.1.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg=="], + + "@babel/plugin-transform-computed-properties": ["@babel/plugin-transform-computed-properties@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9", "@babel/template": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA=="], + + "@babel/plugin-transform-destructuring": ["@babel/plugin-transform-destructuring@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ=="], + + "@babel/plugin-transform-dotall-regex": ["@babel/plugin-transform-dotall-regex@7.25.9", "", { "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA=="], + + "@babel/plugin-transform-duplicate-keys": ["@babel/plugin-transform-duplicate-keys@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw=="], + + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": ["@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9", "", { "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog=="], + + "@babel/plugin-transform-dynamic-import": ["@babel/plugin-transform-dynamic-import@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg=="], + + "@babel/plugin-transform-exponentiation-operator": ["@babel/plugin-transform-exponentiation-operator@7.26.3", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ=="], + + "@babel/plugin-transform-export-namespace-from": ["@babel/plugin-transform-export-namespace-from@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww=="], + + "@babel/plugin-transform-flow-strip-types": ["@babel/plugin-transform-flow-strip-types@7.26.5", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.26.5", "@babel/plugin-syntax-flow": "^7.26.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-eGK26RsbIkYUns3Y8qKl362juDDYK+wEdPGHGrhzUl6CewZFo55VZ7hg+CyMFU4dd5QQakBN86nBMpRsFpRvbQ=="], + + "@babel/plugin-transform-for-of": ["@babel/plugin-transform-for-of@7.26.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.26.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-Hry8AusVm8LW5BVFgiyUReuoGzPUpdHQQqJY5bZnbbf+ngOHWuCuYFKw/BqaaWlvEUrF91HMhDtEaI1hZzNbLg=="], + + "@babel/plugin-transform-function-name": ["@babel/plugin-transform-function-name@7.25.9", "", { "dependencies": { "@babel/helper-compilation-targets": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9", "@babel/traverse": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA=="], + + "@babel/plugin-transform-json-strings": ["@babel/plugin-transform-json-strings@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw=="], + + "@babel/plugin-transform-literals": ["@babel/plugin-transform-literals@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ=="], + + "@babel/plugin-transform-logical-assignment-operators": ["@babel/plugin-transform-logical-assignment-operators@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q=="], + + "@babel/plugin-transform-member-expression-literals": ["@babel/plugin-transform-member-expression-literals@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA=="], + + "@babel/plugin-transform-modules-amd": ["@babel/plugin-transform-modules-amd@7.25.9", "", { "dependencies": { "@babel/helper-module-transforms": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw=="], + + "@babel/plugin-transform-modules-commonjs": ["@babel/plugin-transform-modules-commonjs@7.26.3", "", { "dependencies": { "@babel/helper-module-transforms": "^7.26.0", "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ=="], + + "@babel/plugin-transform-modules-systemjs": ["@babel/plugin-transform-modules-systemjs@7.25.9", "", { "dependencies": { "@babel/helper-module-transforms": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9", "@babel/helper-validator-identifier": "^7.25.9", "@babel/traverse": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA=="], + + "@babel/plugin-transform-modules-umd": ["@babel/plugin-transform-modules-umd@7.25.9", "", { "dependencies": { "@babel/helper-module-transforms": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw=="], + + "@babel/plugin-transform-named-capturing-groups-regex": ["@babel/plugin-transform-named-capturing-groups-regex@7.25.9", "", { "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA=="], + + "@babel/plugin-transform-new-target": ["@babel/plugin-transform-new-target@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ=="], + + "@babel/plugin-transform-nullish-coalescing-operator": ["@babel/plugin-transform-nullish-coalescing-operator@7.26.6", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.26.5" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-CKW8Vu+uUZneQCPtXmSBUC6NCAUdya26hWCElAWh5mVSlSRsmiCPUUDKb3Z0szng1hiAJa098Hkhg9o4SE35Qw=="], + + "@babel/plugin-transform-numeric-separator": ["@babel/plugin-transform-numeric-separator@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q=="], + + "@babel/plugin-transform-object-rest-spread": ["@babel/plugin-transform-object-rest-spread@7.25.9", "", { "dependencies": { "@babel/helper-compilation-targets": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9", "@babel/plugin-transform-parameters": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg=="], + + "@babel/plugin-transform-object-super": ["@babel/plugin-transform-object-super@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9", "@babel/helper-replace-supers": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A=="], + + "@babel/plugin-transform-optional-catch-binding": ["@babel/plugin-transform-optional-catch-binding@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g=="], + + "@babel/plugin-transform-optional-chaining": ["@babel/plugin-transform-optional-chaining@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9", "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A=="], + + "@babel/plugin-transform-parameters": ["@babel/plugin-transform-parameters@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g=="], + + "@babel/plugin-transform-private-methods": ["@babel/plugin-transform-private-methods@7.25.9", "", { "dependencies": { "@babel/helper-create-class-features-plugin": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw=="], + + "@babel/plugin-transform-private-property-in-object": ["@babel/plugin-transform-private-property-in-object@7.25.9", "", { "dependencies": { "@babel/helper-annotate-as-pure": "^7.25.9", "@babel/helper-create-class-features-plugin": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw=="], + + "@babel/plugin-transform-property-literals": ["@babel/plugin-transform-property-literals@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA=="], + + "@babel/plugin-transform-react-display-name": ["@babel/plugin-transform-react-display-name@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-KJfMlYIUxQB1CJfO3e0+h0ZHWOTLCPP115Awhaz8U0Zpq36Gl/cXlpoyMRnUWlhNUBAzldnCiAZNvCDj7CrKxQ=="], + + "@babel/plugin-transform-react-jsx": ["@babel/plugin-transform-react-jsx@7.25.9", "", { "dependencies": { "@babel/helper-annotate-as-pure": "^7.25.9", "@babel/helper-module-imports": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9", "@babel/plugin-syntax-jsx": "^7.25.9", "@babel/types": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw=="], + + "@babel/plugin-transform-react-jsx-development": ["@babel/plugin-transform-react-jsx-development@7.25.9", "", { "dependencies": { "@babel/plugin-transform-react-jsx": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-9mj6rm7XVYs4mdLIpbZnHOYdpW42uoiBCTVowg7sP1thUOiANgMb4UtpRivR0pp5iL+ocvUv7X4mZgFRpJEzGw=="], + + "@babel/plugin-transform-react-jsx-self": ["@babel/plugin-transform-react-jsx-self@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg=="], + + "@babel/plugin-transform-react-jsx-source": ["@babel/plugin-transform-react-jsx-source@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg=="], + + "@babel/plugin-transform-react-pure-annotations": ["@babel/plugin-transform-react-pure-annotations@7.25.9", "", { "dependencies": { "@babel/helper-annotate-as-pure": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-KQ/Takk3T8Qzj5TppkS1be588lkbTp5uj7w6a0LeQaTMSckU/wK0oJ/pih+T690tkgI5jfmg2TqDJvd41Sj1Cg=="], + + "@babel/plugin-transform-regenerator": ["@babel/plugin-transform-regenerator@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9", "regenerator-transform": "^0.15.2" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg=="], + + "@babel/plugin-transform-regexp-modifiers": ["@babel/plugin-transform-regexp-modifiers@7.26.0", "", { "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw=="], + + "@babel/plugin-transform-reserved-words": ["@babel/plugin-transform-reserved-words@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg=="], + + "@babel/plugin-transform-runtime": ["@babel/plugin-transform-runtime@7.26.9", "", { "dependencies": { "@babel/helper-module-imports": "^7.25.9", "@babel/helper-plugin-utils": "^7.26.5", "babel-plugin-polyfill-corejs2": "^0.4.10", "babel-plugin-polyfill-corejs3": "^0.10.6", "babel-plugin-polyfill-regenerator": "^0.6.1", "semver": "^6.3.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-Jf+8y9wXQbbxvVYTM8gO5oEF2POdNji0NMltEkG7FtmzD9PVz7/lxpqSdTvwsjTMU5HIHuDVNf2SOxLkWi+wPQ=="], + + "@babel/plugin-transform-shorthand-properties": ["@babel/plugin-transform-shorthand-properties@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng=="], + + "@babel/plugin-transform-spread": ["@babel/plugin-transform-spread@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9", "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A=="], + + "@babel/plugin-transform-sticky-regex": ["@babel/plugin-transform-sticky-regex@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA=="], + + "@babel/plugin-transform-template-literals": ["@babel/plugin-transform-template-literals@7.26.8", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.26.5" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-OmGDL5/J0CJPJZTHZbi2XpO0tyT2Ia7fzpW5GURwdtp2X3fMmN8au/ej6peC/T33/+CRiIpA8Krse8hFGVmT5Q=="], + + "@babel/plugin-transform-typeof-symbol": ["@babel/plugin-transform-typeof-symbol@7.26.7", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.26.5" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-jfoTXXZTgGg36BmhqT3cAYK5qkmqvJpvNrPhaK/52Vgjhw4Rq29s9UqpWWV0D6yuRmgiFH/BUVlkl96zJWqnaw=="], + + "@babel/plugin-transform-typescript": ["@babel/plugin-transform-typescript@7.26.8", "", { "dependencies": { "@babel/helper-annotate-as-pure": "^7.25.9", "@babel/helper-create-class-features-plugin": "^7.25.9", "@babel/helper-plugin-utils": "^7.26.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", "@babel/plugin-syntax-typescript": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-bME5J9AC8ChwA7aEPJ6zym3w7aObZULHhbNLU0bKUhKsAkylkzUdq+0kdymh9rzi8nlNFl2bmldFBCKNJBUpuw=="], + + "@babel/plugin-transform-unicode-escapes": ["@babel/plugin-transform-unicode-escapes@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q=="], + + "@babel/plugin-transform-unicode-property-regex": ["@babel/plugin-transform-unicode-property-regex@7.25.9", "", { "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg=="], + + "@babel/plugin-transform-unicode-regex": ["@babel/plugin-transform-unicode-regex@7.25.9", "", { "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA=="], + + "@babel/plugin-transform-unicode-sets-regex": ["@babel/plugin-transform-unicode-sets-regex@7.25.9", "", { "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ=="], + + "@babel/preset-env": ["@babel/preset-env@7.26.9", "", { "dependencies": { "@babel/compat-data": "^7.26.8", "@babel/helper-compilation-targets": "^7.26.5", "@babel/helper-plugin-utils": "^7.26.5", "@babel/helper-validator-option": "^7.25.9", "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.9", "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.9", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.9", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.9", "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.9", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-import-assertions": "^7.26.0", "@babel/plugin-syntax-import-attributes": "^7.26.0", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", "@babel/plugin-transform-arrow-functions": "^7.25.9", "@babel/plugin-transform-async-generator-functions": "^7.26.8", "@babel/plugin-transform-async-to-generator": "^7.25.9", "@babel/plugin-transform-block-scoped-functions": "^7.26.5", "@babel/plugin-transform-block-scoping": "^7.25.9", "@babel/plugin-transform-class-properties": "^7.25.9", "@babel/plugin-transform-class-static-block": "^7.26.0", "@babel/plugin-transform-classes": "^7.25.9", "@babel/plugin-transform-computed-properties": "^7.25.9", "@babel/plugin-transform-destructuring": "^7.25.9", "@babel/plugin-transform-dotall-regex": "^7.25.9", "@babel/plugin-transform-duplicate-keys": "^7.25.9", "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.9", "@babel/plugin-transform-dynamic-import": "^7.25.9", "@babel/plugin-transform-exponentiation-operator": "^7.26.3", "@babel/plugin-transform-export-namespace-from": "^7.25.9", "@babel/plugin-transform-for-of": "^7.26.9", "@babel/plugin-transform-function-name": "^7.25.9", "@babel/plugin-transform-json-strings": "^7.25.9", "@babel/plugin-transform-literals": "^7.25.9", "@babel/plugin-transform-logical-assignment-operators": "^7.25.9", "@babel/plugin-transform-member-expression-literals": "^7.25.9", "@babel/plugin-transform-modules-amd": "^7.25.9", "@babel/plugin-transform-modules-commonjs": "^7.26.3", "@babel/plugin-transform-modules-systemjs": "^7.25.9", "@babel/plugin-transform-modules-umd": "^7.25.9", "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.9", "@babel/plugin-transform-new-target": "^7.25.9", "@babel/plugin-transform-nullish-coalescing-operator": "^7.26.6", "@babel/plugin-transform-numeric-separator": "^7.25.9", "@babel/plugin-transform-object-rest-spread": "^7.25.9", "@babel/plugin-transform-object-super": "^7.25.9", "@babel/plugin-transform-optional-catch-binding": "^7.25.9", "@babel/plugin-transform-optional-chaining": "^7.25.9", "@babel/plugin-transform-parameters": "^7.25.9", "@babel/plugin-transform-private-methods": "^7.25.9", "@babel/plugin-transform-private-property-in-object": "^7.25.9", "@babel/plugin-transform-property-literals": "^7.25.9", "@babel/plugin-transform-regenerator": "^7.25.9", "@babel/plugin-transform-regexp-modifiers": "^7.26.0", "@babel/plugin-transform-reserved-words": "^7.25.9", "@babel/plugin-transform-shorthand-properties": "^7.25.9", "@babel/plugin-transform-spread": "^7.25.9", "@babel/plugin-transform-sticky-regex": "^7.25.9", "@babel/plugin-transform-template-literals": "^7.26.8", "@babel/plugin-transform-typeof-symbol": "^7.26.7", "@babel/plugin-transform-unicode-escapes": "^7.25.9", "@babel/plugin-transform-unicode-property-regex": "^7.25.9", "@babel/plugin-transform-unicode-regex": "^7.25.9", "@babel/plugin-transform-unicode-sets-regex": "^7.25.9", "@babel/preset-modules": "0.1.6-no-external-plugins", "babel-plugin-polyfill-corejs2": "^0.4.10", "babel-plugin-polyfill-corejs3": "^0.11.0", "babel-plugin-polyfill-regenerator": "^0.6.1", "core-js-compat": "^3.40.0", "semver": "^6.3.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-vX3qPGE8sEKEAZCWk05k3cpTAE3/nOYca++JA+Rd0z2NCNzabmYvEiSShKzm10zdquOIAVXsy2Ei/DTW34KlKQ=="], + + "@babel/preset-flow": ["@babel/preset-flow@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9", "@babel/helper-validator-option": "^7.25.9", "@babel/plugin-transform-flow-strip-types": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-EASHsAhE+SSlEzJ4bzfusnXSHiU+JfAYzj+jbw2vgQKgq5HrUr8qs+vgtiEL5dOH6sEweI+PNt2D7AqrDSHyqQ=="], + + "@babel/preset-modules": ["@babel/preset-modules@0.1.6-no-external-plugins", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/types": "^7.4.4", "esutils": "^2.0.2" }, "peerDependencies": { "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" } }, "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA=="], + + "@babel/preset-react": ["@babel/preset-react@7.26.3", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9", "@babel/helper-validator-option": "^7.25.9", "@babel/plugin-transform-react-display-name": "^7.25.9", "@babel/plugin-transform-react-jsx": "^7.25.9", "@babel/plugin-transform-react-jsx-development": "^7.25.9", "@babel/plugin-transform-react-pure-annotations": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-Nl03d6T9ky516DGK2YMxrTqvnpUW63TnJMOMonj+Zae0JiPC5BC9xPMSL6L8fiSpA5vP88qfygavVQvnLp+6Cw=="], + + "@babel/preset-typescript": ["@babel/preset-typescript@7.26.0", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9", "@babel/helper-validator-option": "^7.25.9", "@babel/plugin-syntax-jsx": "^7.25.9", "@babel/plugin-transform-modules-commonjs": "^7.25.9", "@babel/plugin-transform-typescript": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-NMk1IGZ5I/oHhoXEElcm+xUnL/szL6xflkFZmoEU9xj1qSJXpiS7rsspYo92B4DRCDvZn2erT5LdsCeXAKNCkg=="], + + "@babel/register": ["@babel/register@7.25.9", "", { "dependencies": { "clone-deep": "^4.0.1", "find-cache-dir": "^2.0.0", "make-dir": "^2.1.0", "pirates": "^4.0.6", "source-map-support": "^0.5.16" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-8D43jXtGsYmEeDvm4MWHYUpWf8iiXgWYx3fW7E7Wb7Oe6FWqJPl5K6TuFW0dOwNZzEE5rjlaSJYH9JjrUKJszA=="], + + "@babel/runtime": ["@babel/runtime@7.26.9", "", { "dependencies": { "regenerator-runtime": "^0.14.0" } }, "sha512-aA63XwOkcl4xxQa3HjPMqOP6LiK0ZDv3mUPYEFXkpHbaFjtGggE1A61FjFzJnB+p7/oy2gA8E+rcBNl/zC1tMg=="], + + "@babel/template": ["@babel/template@7.26.9", "", { "dependencies": { "@babel/code-frame": "^7.26.2", "@babel/parser": "^7.26.9", "@babel/types": "^7.26.9" } }, "sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA=="], + + "@babel/traverse": ["@babel/traverse@7.26.9", "", { "dependencies": { "@babel/code-frame": "^7.26.2", "@babel/generator": "^7.26.9", "@babel/parser": "^7.26.9", "@babel/template": "^7.26.9", "@babel/types": "^7.26.9", "debug": "^4.3.1", "globals": "^11.1.0" } }, "sha512-ZYW7L+pL8ahU5fXmNbPF+iZFHCv5scFak7MZ9bwaRPLUhHh7QQEMjZUg0HevihoqCM5iSYHN61EyCoZvqC+bxg=="], + + "@babel/traverse--for-generate-function-map": ["@babel/traverse@7.26.9", "", { "dependencies": { "@babel/code-frame": "^7.26.2", "@babel/generator": "^7.26.9", "@babel/parser": "^7.26.9", "@babel/template": "^7.26.9", "@babel/types": "^7.26.9", "debug": "^4.3.1", "globals": "^11.1.0" } }, "sha512-ZYW7L+pL8ahU5fXmNbPF+iZFHCv5scFak7MZ9bwaRPLUhHh7QQEMjZUg0HevihoqCM5iSYHN61EyCoZvqC+bxg=="], + + "@babel/types": ["@babel/types@7.26.9", "", { "dependencies": { "@babel/helper-string-parser": "^7.25.9", "@babel/helper-validator-identifier": "^7.25.9" } }, "sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw=="], + + "@bounceapp/iframe": ["@bounceapp/iframe@0.3.0", "", { "peerDependencies": { "expo": "*", "react": "*", "react-dom": "*", "react-native": "*", "react-native-web": "*", "react-native-webview": "*" } }, "sha512-7GVM6nCWS01yWuZtVYataziRhrPKqs4JG/7Q+Mf4ZCxuIN7u+qXLXnz4w9f4xF0WxsioL1VkScNRxweC2yBc3g=="], + + "@colors/colors": ["@colors/colors@1.6.0", "", {}, "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA=="], + + "@cspotcode/source-map-support": ["@cspotcode/source-map-support@0.8.1", "", { "dependencies": { "@jridgewell/trace-mapping": "0.3.9" } }, "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw=="], + + "@cyntler/react-doc-viewer": ["@cyntler/react-doc-viewer@1.17.0", "", { "dependencies": { "@types/mustache": "^4.2.5", "@types/papaparse": "^5.3.14", "ajv": "^7.2.4", "core-js": "^3.37.1", "mustache": "^4.2.0", "papaparse": "^5.4.1", "react-pdf": "^9.0.0", "styled-components": "^6.1.11" }, "peerDependencies": { "react": ">=17.0.0", "react-dom": ">=17.0.0" } }, "sha512-rx3HGcDpOtyuBuWjPaiMxgC4t476DeZiMS1KkQGY/o49SCjFr1Kh19UeICxYAt2oZ2mifE08xI3hcTQpIZ/jqw=="], + + "@dabh/diagnostics": ["@dabh/diagnostics@2.0.3", "", { "dependencies": { "colorspace": "1.1.x", "enabled": "2.0.x", "kuler": "^2.0.0" } }, "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA=="], + + "@emnapi/runtime": ["@emnapi/runtime@1.3.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw=="], + + "@emotion/babel-plugin": ["@emotion/babel-plugin@11.13.5", "", { "dependencies": { "@babel/helper-module-imports": "^7.16.7", "@babel/runtime": "^7.18.3", "@emotion/hash": "^0.9.2", "@emotion/memoize": "^0.9.0", "@emotion/serialize": "^1.3.3", "babel-plugin-macros": "^3.1.0", "convert-source-map": "^1.5.0", "escape-string-regexp": "^4.0.0", "find-root": "^1.1.0", "source-map": "^0.5.7", "stylis": "4.2.0" } }, "sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ=="], + + "@emotion/cache": ["@emotion/cache@11.14.0", "", { "dependencies": { "@emotion/memoize": "^0.9.0", "@emotion/sheet": "^1.4.0", "@emotion/utils": "^1.4.2", "@emotion/weak-memoize": "^0.4.0", "stylis": "4.2.0" } }, "sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA=="], + + "@emotion/hash": ["@emotion/hash@0.9.2", "", {}, "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g=="], + + "@emotion/is-prop-valid": ["@emotion/is-prop-valid@1.2.2", "", { "dependencies": { "@emotion/memoize": "^0.8.1" } }, "sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw=="], + + "@emotion/memoize": ["@emotion/memoize@0.9.0", "", {}, "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ=="], + + "@emotion/react": ["@emotion/react@11.14.0", "", { "dependencies": { "@babel/runtime": "^7.18.3", "@emotion/babel-plugin": "^11.13.5", "@emotion/cache": "^11.14.0", "@emotion/serialize": "^1.3.3", "@emotion/use-insertion-effect-with-fallbacks": "^1.2.0", "@emotion/utils": "^1.4.2", "@emotion/weak-memoize": "^0.4.0", "hoist-non-react-statics": "^3.3.1" }, "peerDependencies": { "react": ">=16.8.0" } }, "sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA=="], + + "@emotion/serialize": ["@emotion/serialize@1.3.3", "", { "dependencies": { "@emotion/hash": "^0.9.2", "@emotion/memoize": "^0.9.0", "@emotion/unitless": "^0.10.0", "@emotion/utils": "^1.4.2", "csstype": "^3.0.2" } }, "sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA=="], + + "@emotion/server": ["@emotion/server@11.11.0", "", { "dependencies": { "@emotion/utils": "^1.2.1", "html-tokenize": "^2.0.0", "multipipe": "^1.0.2", "through": "^2.3.8" }, "peerDependencies": { "@emotion/css": "^11.0.0-rc.0" }, "optionalPeers": ["@emotion/css"] }, "sha512-6q89fj2z8VBTx9w93kJ5n51hsmtYuFPtZgnc1L8VzRx9ti4EU6EyvF6Nn1H1x3vcCQCF7u2dB2lY4AYJwUW4PA=="], + + "@emotion/sheet": ["@emotion/sheet@1.4.0", "", {}, "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg=="], + + "@emotion/unitless": ["@emotion/unitless@0.8.1", "", {}, "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ=="], + + "@emotion/use-insertion-effect-with-fallbacks": ["@emotion/use-insertion-effect-with-fallbacks@1.2.0", "", { "peerDependencies": { "react": ">=16.8.0" } }, "sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg=="], + + "@emotion/utils": ["@emotion/utils@1.4.2", "", {}, "sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA=="], + + "@emotion/weak-memoize": ["@emotion/weak-memoize@0.4.0", "", {}, "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg=="], + + "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.0", "", { "os": "aix", "cpu": "ppc64" }, "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ=="], + + "@esbuild/android-arm": ["@esbuild/android-arm@0.25.0", "", { "os": "android", "cpu": "arm" }, "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g=="], + + "@esbuild/android-arm64": ["@esbuild/android-arm64@0.25.0", "", { "os": "android", "cpu": "arm64" }, "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g=="], + + "@esbuild/android-x64": ["@esbuild/android-x64@0.25.0", "", { "os": "android", "cpu": "x64" }, "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg=="], + + "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.25.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw=="], + + "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.25.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg=="], + + "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.25.0", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w=="], + + "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.25.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A=="], + + "@esbuild/linux-arm": ["@esbuild/linux-arm@0.25.0", "", { "os": "linux", "cpu": "arm" }, "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg=="], + + "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.25.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg=="], + + "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.25.0", "", { "os": "linux", "cpu": "ia32" }, "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg=="], + + "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.25.0", "", { "os": "linux", "cpu": "none" }, "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw=="], + + "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.25.0", "", { "os": "linux", "cpu": "none" }, "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ=="], + + "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.25.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw=="], + + "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.25.0", "", { "os": "linux", "cpu": "none" }, "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA=="], + + "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.25.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA=="], + + "@esbuild/linux-x64": ["@esbuild/linux-x64@0.25.0", "", { "os": "linux", "cpu": "x64" }, "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw=="], + + "@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.25.0", "", { "os": "none", "cpu": "arm64" }, "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw=="], + + "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.25.0", "", { "os": "none", "cpu": "x64" }, "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA=="], + + "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.25.0", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw=="], + + "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.25.0", "", { "os": "openbsd", "cpu": "x64" }, "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg=="], + + "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.25.0", "", { "os": "sunos", "cpu": "x64" }, "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg=="], + + "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.25.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw=="], + + "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.25.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA=="], + + "@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.0", "", { "os": "win32", "cpu": "x64" }, "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ=="], + + "@eslint-community/eslint-utils": ["@eslint-community/eslint-utils@4.4.1", "", { "dependencies": { "eslint-visitor-keys": "^3.4.3" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA=="], + + "@eslint-community/regexpp": ["@eslint-community/regexpp@4.12.1", "", {}, "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ=="], + + "@eslint/eslintrc": ["@eslint/eslintrc@2.1.4", "", { "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^9.6.0", "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" } }, "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ=="], + + "@eslint/js": ["@eslint/js@8.57.1", "", {}, "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q=="], + + "@expo/bunyan": ["@expo/bunyan@4.0.1", "", { "dependencies": { "uuid": "^8.0.0" } }, "sha512-+Lla7nYSiHZirgK+U/uYzsLv/X+HaJienbD5AKX1UQZHYfWaP+9uuQluRB4GrEVWF0GZ7vEVp/jzaOT9k/SQlg=="], + + "@expo/cli": ["@expo/cli@0.22.18", "", { "dependencies": { "@0no-co/graphql.web": "^1.0.8", "@babel/runtime": "^7.20.0", "@expo/code-signing-certificates": "^0.0.5", "@expo/config": "~10.0.10", "@expo/config-plugins": "~9.0.15", "@expo/devcert": "^1.1.2", "@expo/env": "~0.4.2", "@expo/image-utils": "^0.6.5", "@expo/json-file": "^9.0.2", "@expo/metro-config": "~0.19.11", "@expo/osascript": "^2.1.6", "@expo/package-manager": "^1.7.2", "@expo/plist": "^0.2.2", "@expo/prebuild-config": "^8.0.28", "@expo/rudder-sdk-node": "^1.1.1", "@expo/spawn-async": "^1.7.2", "@expo/ws-tunnel": "^1.0.1", "@expo/xcpretty": "^4.3.0", "@react-native/dev-middleware": "0.76.7", "@urql/core": "^5.0.6", "@urql/exchange-retry": "^1.3.0", "accepts": "^1.3.8", "arg": "^5.0.2", "better-opn": "~3.0.2", "bplist-creator": "0.0.7", "bplist-parser": "^0.3.1", "cacache": "^18.0.2", "chalk": "^4.0.0", "ci-info": "^3.3.0", "compression": "^1.7.4", "connect": "^3.7.0", "debug": "^4.3.4", "env-editor": "^0.4.1", "fast-glob": "^3.3.2", "form-data": "^3.0.1", "freeport-async": "^2.0.0", "fs-extra": "~8.1.0", "getenv": "^1.0.0", "glob": "^10.4.2", "internal-ip": "^4.3.0", "is-docker": "^2.0.0", "is-wsl": "^2.1.1", "lodash.debounce": "^4.0.8", "minimatch": "^3.0.4", "node-forge": "^1.3.1", "npm-package-arg": "^11.0.0", "ora": "^3.4.0", "picomatch": "^3.0.1", "pretty-bytes": "^5.6.0", "pretty-format": "^29.7.0", "progress": "^2.0.3", "prompts": "^2.3.2", "qrcode-terminal": "0.11.0", "require-from-string": "^2.0.2", "requireg": "^0.2.2", "resolve": "^1.22.2", "resolve-from": "^5.0.0", "resolve.exports": "^2.0.3", "semver": "^7.6.0", "send": "^0.19.0", "slugify": "^1.3.4", "source-map-support": "~0.5.21", "stacktrace-parser": "^0.1.10", "structured-headers": "^0.4.1", "tar": "^6.2.1", "temp-dir": "^2.0.0", "tempy": "^0.7.1", "terminal-link": "^2.1.1", "undici": "^6.18.2", "unique-string": "~2.0.0", "wrap-ansi": "^7.0.0", "ws": "^8.12.1" }, "bin": { "expo-internal": "build/bin/cli" } }, "sha512-TWGKHWTYU9xE7YETPk2zQzLPl+bldpzZCa0Cqg0QeENpu03ZEnMxUqrgHwrbWGTf7ONTYC1tODBkFCFw/qgPGA=="], + + "@expo/code-signing-certificates": ["@expo/code-signing-certificates@0.0.5", "", { "dependencies": { "node-forge": "^1.2.1", "nullthrows": "^1.1.1" } }, "sha512-BNhXkY1bblxKZpltzAx98G2Egj9g1Q+JRcvR7E99DOj862FTCX+ZPsAUtPTr7aHxwtrL7+fL3r0JSmM9kBm+Bw=="], + + "@expo/config": ["@expo/config@10.0.10", "", { "dependencies": { "@babel/code-frame": "~7.10.4", "@expo/config-plugins": "~9.0.15", "@expo/config-types": "^52.0.4", "@expo/json-file": "^9.0.2", "deepmerge": "^4.3.1", "getenv": "^1.0.0", "glob": "^10.4.2", "require-from-string": "^2.0.2", "resolve-from": "^5.0.0", "resolve-workspace-root": "^2.0.0", "semver": "^7.6.0", "slugify": "^1.3.4", "sucrase": "3.35.0" } }, "sha512-wI9/iam3Irk99ADGM/FyD7YrrEibIZXR4huSZiU5zt9o3dASOKhqepiNJex4YPiktLfKhYrpSEJtwno1g0SrgA=="], + + "@expo/config-plugins": ["@expo/config-plugins@9.0.16", "", { "dependencies": { "@expo/config-types": "^52.0.5", "@expo/json-file": "~9.0.2", "@expo/plist": "^0.2.2", "@expo/sdk-runtime-versions": "^1.0.0", "chalk": "^4.1.2", "debug": "^4.3.5", "getenv": "^1.0.0", "glob": "^10.4.2", "resolve-from": "^5.0.0", "semver": "^7.5.4", "slash": "^3.0.0", "slugify": "^1.6.6", "xcode": "^3.0.1", "xml2js": "0.6.0" } }, "sha512-AnJzmFB7ztM0JZBn+Ut6BQYC2WeGDzfIhBZVOIPMQbdBqvwJ7TmFEsGTGSxdwU/VqJaJK2sWxyt1zbWkpIYCEA=="], + + "@expo/config-types": ["@expo/config-types@52.0.5", "", {}, "sha512-AMDeuDLHXXqd8W+0zSjIt7f37vUd/BP8p43k68NHpyAvQO+z8mbQZm3cNQVAMySeayK2XoPigAFB1JF2NFajaA=="], + + "@expo/devcert": ["@expo/devcert@1.1.4", "", { "dependencies": { "application-config-path": "^0.1.0", "command-exists": "^1.2.4", "debug": "^3.1.0", "eol": "^0.9.1", "get-port": "^3.2.0", "glob": "^10.4.2", "lodash": "^4.17.21", "mkdirp": "^0.5.1", "password-prompt": "^1.0.4", "sudo-prompt": "^8.2.0", "tmp": "^0.0.33", "tslib": "^2.4.0" } }, "sha512-fqBODr8c72+gBSX5Ty3SIzaY4bXainlpab78+vEYEKL3fXmsOswMLf0+KE36mUEAa36BYabX7K3EiXOXX5OPMw=="], + + "@expo/env": ["@expo/env@0.4.2", "", { "dependencies": { "chalk": "^4.0.0", "debug": "^4.3.4", "dotenv": "~16.4.5", "dotenv-expand": "~11.0.6", "getenv": "^1.0.0" } }, "sha512-TgbCgvSk0Kq0e2fLoqHwEBL4M0ztFjnBEz0YCDm5boc1nvkV1VMuIMteVdeBwnTh8Z0oPJTwHCD49vhMEt1I6A=="], + + "@expo/fingerprint": ["@expo/fingerprint@0.11.11", "", { "dependencies": { "@expo/spawn-async": "^1.7.2", "arg": "^5.0.2", "chalk": "^4.1.2", "debug": "^4.3.4", "find-up": "^5.0.0", "getenv": "^1.0.0", "minimatch": "^3.0.4", "p-limit": "^3.1.0", "resolve-from": "^5.0.0", "semver": "^7.6.0" }, "bin": { "fingerprint": "bin/cli.js" } }, "sha512-gNyn1KnAOpEa8gSNsYqXMTcq0fSwqU/vit6fP5863vLSKxHm/dNt/gm/uZJxrRZxKq71KUJWF6I7d3z8qIfq5g=="], + + "@expo/image-utils": ["@expo/image-utils@0.6.5", "", { "dependencies": { "@expo/spawn-async": "^1.7.2", "chalk": "^4.0.0", "fs-extra": "9.0.0", "getenv": "^1.0.0", "jimp-compact": "0.16.1", "parse-png": "^2.1.0", "resolve-from": "^5.0.0", "semver": "^7.6.0", "temp-dir": "~2.0.0", "unique-string": "~2.0.0" } }, "sha512-RsS/1CwJYzccvlprYktD42KjyfWZECH6PPIEowvoSmXfGLfdViwcUEI4RvBfKX5Jli6P67H+6YmHvPTbGOboew=="], + + "@expo/json-file": ["@expo/json-file@9.0.2", "", { "dependencies": { "@babel/code-frame": "~7.10.4", "json5": "^2.2.3", "write-file-atomic": "^2.3.0" } }, "sha512-yAznIUrybOIWp3Uax7yRflB0xsEpvIwIEqIjao9SGi2Gaa+N0OamWfe0fnXBSWF+2zzF4VvqwT4W5zwelchfgw=="], + + "@expo/metro-config": ["@expo/metro-config@0.19.11", "", { "dependencies": { "@babel/core": "^7.20.0", "@babel/generator": "^7.20.5", "@babel/parser": "^7.20.0", "@babel/types": "^7.20.0", "@expo/config": "~10.0.10", "@expo/env": "~0.4.2", "@expo/json-file": "~9.0.2", "@expo/spawn-async": "^1.7.2", "chalk": "^4.1.0", "debug": "^4.3.2", "fs-extra": "^9.1.0", "getenv": "^1.0.0", "glob": "^10.4.2", "jsc-safe-url": "^0.2.4", "lightningcss": "~1.27.0", "minimatch": "^3.0.4", "postcss": "~8.4.32", "resolve-from": "^5.0.0" } }, "sha512-XaobHTcsoHQdKEH7PI/DIpr2QiugkQmPYolbfzkpSJMplNWfSh+cTRjrm4//mS2Sb78qohtu0u2CGJnFqFUGag=="], + + "@expo/osascript": ["@expo/osascript@2.1.6", "", { "dependencies": { "@expo/spawn-async": "^1.7.2", "exec-async": "^2.2.0" } }, "sha512-SbMp4BUwDAKiFF4zZEJf32rRYMeNnLK9u4FaPo0lQRer60F+SKd20NTSys0wgssiVeQyQz2OhGLRx3cxYowAGw=="], + + "@expo/package-manager": ["@expo/package-manager@1.7.2", "", { "dependencies": { "@expo/json-file": "^9.0.2", "@expo/spawn-async": "^1.7.2", "ansi-regex": "^5.0.0", "chalk": "^4.0.0", "find-up": "^5.0.0", "js-yaml": "^3.13.1", "micromatch": "^4.0.8", "npm-package-arg": "^11.0.0", "ora": "^3.4.0", "resolve-workspace-root": "^2.0.0", "split": "^1.0.1", "sudo-prompt": "9.1.1" } }, "sha512-wT/qh9ebNjl6xr00bYkSh93b6E/78J3JPlT6WzGbxbsnv5FIZKB/nr522oWqVe1E+ML7BpXs8WugErWDN9kOFg=="], + + "@expo/plist": ["@expo/plist@0.2.2", "", { "dependencies": { "@xmldom/xmldom": "~0.7.7", "base64-js": "^1.2.3", "xmlbuilder": "^14.0.0" } }, "sha512-ZZGvTO6vEWq02UAPs3LIdja+HRO18+LRI5QuDl6Hs3Ps7KX7xU6Y6kjahWKY37Rx2YjNpX07dGpBFzzC+vKa2g=="], + + "@expo/prebuild-config": ["@expo/prebuild-config@8.0.28", "", { "dependencies": { "@expo/config": "~10.0.10", "@expo/config-plugins": "~9.0.15", "@expo/config-types": "^52.0.4", "@expo/image-utils": "^0.6.5", "@expo/json-file": "^9.0.2", "@react-native/normalize-colors": "0.76.7", "debug": "^4.3.1", "fs-extra": "^9.0.0", "resolve-from": "^5.0.0", "semver": "^7.6.0", "xml2js": "0.6.0" } }, "sha512-SDDgCKKS1wFNNm3de2vBP8Q5bnxcabuPDE9Mnk9p7Gb4qBavhwMbAtrLcAyZB+WRb4QM+yan3z3K95vvCfI/+A=="], + + "@expo/rudder-sdk-node": ["@expo/rudder-sdk-node@1.1.1", "", { "dependencies": { "@expo/bunyan": "^4.0.0", "@segment/loosely-validate-event": "^2.0.0", "fetch-retry": "^4.1.1", "md5": "^2.2.1", "node-fetch": "^2.6.1", "remove-trailing-slash": "^0.1.0", "uuid": "^8.3.2" } }, "sha512-uy/hS/awclDJ1S88w9UGpc6Nm9XnNUjzOAAib1A3PVAnGQIwebg8DpFqOthFBTlZxeuV/BKbZ5jmTbtNZkp1WQ=="], + + "@expo/sdk-runtime-versions": ["@expo/sdk-runtime-versions@1.0.0", "", {}, "sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ=="], + + "@expo/spawn-async": ["@expo/spawn-async@1.7.2", "", { "dependencies": { "cross-spawn": "^7.0.3" } }, "sha512-QdWi16+CHB9JYP7gma19OVVg0BFkvU8zNj9GjWorYI8Iv8FUxjOCcYRuAmX4s/h91e4e7BPsskc8cSrZYho9Ew=="], + + "@expo/vector-icons": ["@expo/vector-icons@14.0.4", "", { "dependencies": { "prop-types": "^15.8.1" } }, "sha512-+yKshcbpDfbV4zoXOgHxCwh7lkE9VVTT5T03OUlBsqfze1PLy6Hi4jp1vSb1GVbY6eskvMIivGVc9SKzIv0oEQ=="], + + "@expo/ws-tunnel": ["@expo/ws-tunnel@1.0.5", "", {}, "sha512-Ta9KzslHAIbw2ZoyZ7Ud7/QImucy+K4YvOqo9AhGfUfH76hQzaffQreOySzYusDfW8Y+EXh0ZNWE68dfCumFFw=="], + + "@expo/xcpretty": ["@expo/xcpretty@4.3.2", "", { "dependencies": { "@babel/code-frame": "7.10.4", "chalk": "^4.1.0", "find-up": "^5.0.0", "js-yaml": "^4.1.0" }, "bin": { "excpretty": "build/cli.js" } }, "sha512-ReZxZ8pdnoI3tP/dNnJdnmAk7uLT4FjsKDGW7YeDdvdOMz2XCQSmSCM9IWlrXuWtMF9zeSB6WJtEhCQ41gQOfw=="], + + "@floating-ui/core": ["@floating-ui/core@1.6.9", "", { "dependencies": { "@floating-ui/utils": "^0.2.9" } }, "sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw=="], + + "@floating-ui/dom": ["@floating-ui/dom@1.6.13", "", { "dependencies": { "@floating-ui/core": "^1.6.0", "@floating-ui/utils": "^0.2.9" } }, "sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w=="], + + "@floating-ui/react": ["@floating-ui/react@0.19.2", "", { "dependencies": { "@floating-ui/react-dom": "^1.3.0", "aria-hidden": "^1.1.3", "tabbable": "^6.0.1" }, "peerDependencies": { "react": ">=16.8.0", "react-dom": ">=16.8.0" } }, "sha512-JyNk4A0Ezirq8FlXECvRtQOX/iBe5Ize0W/pLkrZjfHW9GUV7Xnq6zm6fyZuQzaHHqEnVizmvlA96e1/CkZv+w=="], + + "@floating-ui/react-dom": ["@floating-ui/react-dom@1.3.0", "", { "dependencies": { "@floating-ui/dom": "^1.2.1" }, "peerDependencies": { "react": ">=16.8.0", "react-dom": ">=16.8.0" } }, "sha512-htwHm67Ji5E/pROEAr7f8IKFShuiCKHwUC/UY4vC3I5jiSvGFAYnSYiZO5MlGmads+QqvUkR9ANHEguGrDv72g=="], + + "@floating-ui/utils": ["@floating-ui/utils@0.2.9", "", {}, "sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg=="], + + "@google/generative-ai": ["@google/generative-ai@0.19.0", "", {}, "sha512-iGf/62v3sTwtEJGJY6S5m7PfkglU8hi1URaxqIjiRg1OItV27xyc4aVeR0og8cDkZFkUlGZKv+23bJtT1QWFzQ=="], + + "@hookstate/core": ["@hookstate/core@4.0.1", "", { "peerDependencies": { "react": "^16.8.6 || ^17.0.0 || ^18.0.0" } }, "sha512-Uh2D8Z0z/pqOJ7t+SfC+2sj13JQcB4yFhtL+T1choCaBxTSlgOS/CKRBohgJ4cjTKoxOmTT8uSQysu3gUjX+Gw=="], + + "@huggingface/jinja": ["@huggingface/jinja@0.3.3", "", {}, "sha512-vQQr2JyWvVFba3Lj9es4q9vCl1sAc74fdgnEMoX8qHrXtswap9ge9uO3ONDzQB0cQ0PUyaKY2N6HaVbTBvSXvw=="], + + "@huggingface/transformers": ["@huggingface/transformers@3.3.3", "", { "dependencies": { "@huggingface/jinja": "^0.3.3", "onnxruntime-node": "1.20.1", "onnxruntime-web": "1.21.0-dev.20250206-d981b153d3", "sharp": "^0.33.5" } }, "sha512-OcMubhBjW6u1xnp0zSt5SvCxdGHuhP2k+w2Vlm3i0vNcTJhJTZWxxYQmPBfcb7PX+Q6c43lGSzWD6tsJFwka4Q=="], + + "@humanwhocodes/config-array": ["@humanwhocodes/config-array@0.13.0", "", { "dependencies": { "@humanwhocodes/object-schema": "^2.0.3", "debug": "^4.3.1", "minimatch": "^3.0.5" } }, "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw=="], + + "@humanwhocodes/module-importer": ["@humanwhocodes/module-importer@1.0.1", "", {}, "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA=="], + + "@humanwhocodes/object-schema": ["@humanwhocodes/object-schema@2.0.3", "", {}, "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA=="], + + "@img/sharp-darwin-arm64": ["@img/sharp-darwin-arm64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.0.4" }, "os": "darwin", "cpu": "arm64" }, "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ=="], + + "@img/sharp-darwin-x64": ["@img/sharp-darwin-x64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-x64": "1.0.4" }, "os": "darwin", "cpu": "x64" }, "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q=="], + + "@img/sharp-libvips-darwin-arm64": ["@img/sharp-libvips-darwin-arm64@1.0.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg=="], + + "@img/sharp-libvips-darwin-x64": ["@img/sharp-libvips-darwin-x64@1.0.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ=="], + + "@img/sharp-libvips-linux-arm": ["@img/sharp-libvips-linux-arm@1.0.5", "", { "os": "linux", "cpu": "arm" }, "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g=="], + + "@img/sharp-libvips-linux-arm64": ["@img/sharp-libvips-linux-arm64@1.0.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA=="], + + "@img/sharp-libvips-linux-s390x": ["@img/sharp-libvips-linux-s390x@1.0.4", "", { "os": "linux", "cpu": "s390x" }, "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA=="], + + "@img/sharp-libvips-linux-x64": ["@img/sharp-libvips-linux-x64@1.0.4", "", { "os": "linux", "cpu": "x64" }, "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw=="], + + "@img/sharp-libvips-linuxmusl-arm64": ["@img/sharp-libvips-linuxmusl-arm64@1.0.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA=="], + + "@img/sharp-libvips-linuxmusl-x64": ["@img/sharp-libvips-linuxmusl-x64@1.0.4", "", { "os": "linux", "cpu": "x64" }, "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw=="], + + "@img/sharp-linux-arm": ["@img/sharp-linux-arm@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm": "1.0.5" }, "os": "linux", "cpu": "arm" }, "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ=="], + + "@img/sharp-linux-arm64": ["@img/sharp-linux-arm64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm64": "1.0.4" }, "os": "linux", "cpu": "arm64" }, "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA=="], + + "@img/sharp-linux-s390x": ["@img/sharp-linux-s390x@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-s390x": "1.0.4" }, "os": "linux", "cpu": "s390x" }, "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q=="], + + "@img/sharp-linux-x64": ["@img/sharp-linux-x64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-x64": "1.0.4" }, "os": "linux", "cpu": "x64" }, "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA=="], + + "@img/sharp-linuxmusl-arm64": ["@img/sharp-linuxmusl-arm64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-arm64": "1.0.4" }, "os": "linux", "cpu": "arm64" }, "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g=="], + + "@img/sharp-linuxmusl-x64": ["@img/sharp-linuxmusl-x64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-x64": "1.0.4" }, "os": "linux", "cpu": "x64" }, "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw=="], + + "@img/sharp-wasm32": ["@img/sharp-wasm32@0.33.5", "", { "dependencies": { "@emnapi/runtime": "^1.2.0" }, "cpu": "none" }, "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg=="], + + "@img/sharp-win32-ia32": ["@img/sharp-win32-ia32@0.33.5", "", { "os": "win32", "cpu": "ia32" }, "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ=="], + + "@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.33.5", "", { "os": "win32", "cpu": "x64" }, "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg=="], + + "@isaacs/cliui": ["@isaacs/cliui@8.0.2", "", { "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", "strip-ansi": "^7.0.1", "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", "wrap-ansi": "^8.1.0", "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" } }, "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA=="], + + "@isaacs/fs-minipass": ["@isaacs/fs-minipass@4.0.1", "", { "dependencies": { "minipass": "^7.0.4" } }, "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w=="], + + "@isaacs/ttlcache": ["@isaacs/ttlcache@1.4.1", "", {}, "sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA=="], + + "@istanbuljs/load-nyc-config": ["@istanbuljs/load-nyc-config@1.1.0", "", { "dependencies": { "camelcase": "^5.3.1", "find-up": "^4.1.0", "get-package-type": "^0.1.0", "js-yaml": "^3.13.1", "resolve-from": "^5.0.0" } }, "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ=="], + + "@istanbuljs/schema": ["@istanbuljs/schema@0.1.3", "", {}, "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA=="], + + "@jest/create-cache-key-function": ["@jest/create-cache-key-function@29.7.0", "", { "dependencies": { "@jest/types": "^29.6.3" } }, "sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA=="], + + "@jest/environment": ["@jest/environment@29.7.0", "", { "dependencies": { "@jest/fake-timers": "^29.7.0", "@jest/types": "^29.6.3", "@types/node": "*", "jest-mock": "^29.7.0" } }, "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw=="], + + "@jest/fake-timers": ["@jest/fake-timers@29.7.0", "", { "dependencies": { "@jest/types": "^29.6.3", "@sinonjs/fake-timers": "^10.0.2", "@types/node": "*", "jest-message-util": "^29.7.0", "jest-mock": "^29.7.0", "jest-util": "^29.7.0" } }, "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ=="], + + "@jest/schemas": ["@jest/schemas@29.6.3", "", { "dependencies": { "@sinclair/typebox": "^0.27.8" } }, "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA=="], + + "@jest/transform": ["@jest/transform@29.7.0", "", { "dependencies": { "@babel/core": "^7.11.6", "@jest/types": "^29.6.3", "@jridgewell/trace-mapping": "^0.3.18", "babel-plugin-istanbul": "^6.1.1", "chalk": "^4.0.0", "convert-source-map": "^2.0.0", "fast-json-stable-stringify": "^2.1.0", "graceful-fs": "^4.2.9", "jest-haste-map": "^29.7.0", "jest-regex-util": "^29.6.3", "jest-util": "^29.7.0", "micromatch": "^4.0.4", "pirates": "^4.0.4", "slash": "^3.0.0", "write-file-atomic": "^4.0.2" } }, "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw=="], + + "@jest/types": ["@jest/types@29.6.3", "", { "dependencies": { "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", "@types/yargs": "^17.0.8", "chalk": "^4.0.0" } }, "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw=="], + + "@jridgewell/gen-mapping": ["@jridgewell/gen-mapping@0.3.8", "", { "dependencies": { "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA=="], + + "@jridgewell/resolve-uri": ["@jridgewell/resolve-uri@3.1.2", "", {}, "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw=="], + + "@jridgewell/set-array": ["@jridgewell/set-array@1.2.1", "", {}, "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A=="], + + "@jridgewell/source-map": ["@jridgewell/source-map@0.3.6", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25" } }, "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ=="], + + "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.0", "", {}, "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ=="], + + "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.9", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" } }, "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ=="], + + "@mantine/carousel": ["@mantine/carousel@7.17.0", "", { "peerDependencies": { "@mantine/core": "7.17.0", "@mantine/hooks": "7.17.0", "embla-carousel-react": ">=7.0.0", "react": "^18.x || ^19.x", "react-dom": "^18.x || ^19.x" } }, "sha512-NrgfUBa7tbtDFem6TAntZjQknymqhzZ/d52szheRu+3GIfd9d8qEPHV1sMFRQ3DkzMxiJfzI6G61GvW6yLOaGg=="], + + "@mantine/core": ["@mantine/core@6.0.22", "", { "dependencies": { "@floating-ui/react": "^0.19.1", "@mantine/styles": "6.0.22", "@mantine/utils": "6.0.22", "@radix-ui/react-scroll-area": "1.0.2", "react-remove-scroll": "^2.5.5", "react-textarea-autosize": "8.3.4" }, "peerDependencies": { "@mantine/hooks": "6.0.22", "react": ">=16.8.0", "react-dom": ">=16.8.0" } }, "sha512-6kv0eY7n565fyjgS20qUYeCSxg3f1TJ5vurzbP1HHtFXXKSY0bYoqqDoHipFCt6NxsPQGeiC6cC0c/IWIlxoKQ=="], + + "@mantine/dates": ["@mantine/dates@6.0.22", "", { "dependencies": { "@mantine/utils": "6.0.22" }, "peerDependencies": { "@mantine/core": "6.0.22", "@mantine/hooks": "6.0.22", "dayjs": ">=1.0.0", "react": ">=16.8.0" } }, "sha512-RwZzaRtyCdwXWrszjoDFUrYdy2s6sAZgXZzp+ytp0KJDm63+H+4ri1Qkv7bWKVBgrTP7alsxCIGHV2weEOZKog=="], + + "@mantine/dropzone": ["@mantine/dropzone@7.17.0", "", { "dependencies": { "react-dropzone-esm": "15.2.0" }, "peerDependencies": { "@mantine/core": "7.17.0", "@mantine/hooks": "7.17.0", "react": "^18.x || ^19.x", "react-dom": "^18.x || ^19.x" } }, "sha512-1BGOH/Fs1xxsVl6JUxFAElwqdmtj1nrzc7QSV3vs3xh7zAIAH6wqeor8j8+yycxz4lCfehHSaVAyDDv3AFsX8w=="], + + "@mantine/form": ["@mantine/form@7.17.0", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "klona": "^2.0.6" }, "peerDependencies": { "react": "^18.x || ^19.x" } }, "sha512-LONdeb+wL8h9fvyQ339ZFLxqrvYff+b+H+kginZhnr45OBTZDLXNVAt/YoKVFEkynF9WDJjdBVrXKcOZvPgmrA=="], + + "@mantine/hooks": ["@mantine/hooks@6.0.22", "", { "peerDependencies": { "react": ">=16.8.0" } }, "sha512-e10//QTN2sAmC4Ryeu5X5L/TsxnrjXMOaGq3dxFPIPsCSwLzyxqySfjzVViWmoPWAj0Ak9MvE2MHFjzmOpA80w=="], + + "@mantine/next": ["@mantine/next@6.0.22", "", { "dependencies": { "@mantine/ssr": "6.0.22", "@mantine/styles": "6.0.22" }, "peerDependencies": { "next": "*", "react": ">=16.8.0", "react-dom": ">=16.8.0" } }, "sha512-OIDeCaMSVfmaN0F38y6Ir8tmMZHDAmy8MhalDAFjGdTD9UKO1V9nQKTNJAuvo5yldslGlfvwhKUjKy7oy/M65g=="], + + "@mantine/notifications": ["@mantine/notifications@6.0.22", "", { "dependencies": { "@mantine/utils": "6.0.22", "react-transition-group": "4.4.2" }, "peerDependencies": { "@mantine/core": "6.0.22", "@mantine/hooks": "6.0.22", "react": ">=16.8.0", "react-dom": ">=16.8.0" } }, "sha512-x7iIil2yC81fEv/7YK6NYn6CKaftlw0E/hdprmxGWFhy87W9sYiYzPqigXZh11IJZFFW9ZPftpjPQFvDwE4KOw=="], + + "@mantine/ssr": ["@mantine/ssr@6.0.22", "", { "dependencies": { "@mantine/styles": "6.0.22", "html-react-parser": "1.4.12" }, "peerDependencies": { "@emotion/react": ">=11.9.0", "@emotion/server": ">=11.4.0", "react": ">=16.8.0", "react-dom": ">=16.8.0" } }, "sha512-ZW89nrL39sfOEOSRlUEP92y5ItWFAbKOYwtgGBS7vHZ56hd6cOWH7bLr5GoQZGLJFywB/0lIpMk+pGsaA8YVEQ=="], + + "@mantine/styles": ["@mantine/styles@6.0.22", "", { "dependencies": { "clsx": "1.1.1", "csstype": "3.0.9" }, "peerDependencies": { "@emotion/react": ">=11.9.0", "react": ">=16.8.0", "react-dom": ">=16.8.0" } }, "sha512-Rud/IQp2EFYDiP4csRy2XBrho/Ct+W2/b+XbvCRTeQTmpFy/NfAKm/TWJa5zPvuv/iLTjGkVos9SHw/DteESpQ=="], + + "@mantine/tiptap": ["@mantine/tiptap@7.17.0", "", { "peerDependencies": { "@mantine/core": "7.17.0", "@mantine/hooks": "7.17.0", "@tiptap/extension-link": ">=2.1.12", "@tiptap/react": ">=2.1.12", "react": "^18.x || ^19.x", "react-dom": "^18.x || ^19.x" } }, "sha512-WgmtQ5xJ9fenEbgpfG/HFU8O5R9SWrI8NJTpc0VLQKA2t+I4S/j8dTXr58aLCEXqqo6MlX9hkIDZQSxzUNoPXQ=="], + + "@mantine/utils": ["@mantine/utils@6.0.22", "", { "peerDependencies": { "react": ">=16.8.0" } }, "sha512-RSKlNZvxhMCkOFZ6slbYvZYbWjHUM+PxDQnupIOxIdsTZQQjx/BFfrfJ7kQFOP+g7MtpOds8weAetEs5obwMOQ=="], + + "@mapbox/jsonlint-lines-primitives": ["@mapbox/jsonlint-lines-primitives@2.0.2", "", {}, "sha512-rY0o9A5ECsTQRVhv7tL/OyDpGAoUB4tTvLiW1DSzQGq4bvTPhNw1VpSNjDJc5GFZ2XuyOtSWSVN05qOtcD71qQ=="], + + "@mapbox/mapbox-gl-supported": ["@mapbox/mapbox-gl-supported@3.0.0", "", {}, "sha512-2XghOwu16ZwPJLOFVuIOaLbN0iKMn867evzXFyf0P22dqugezfJwLmdanAgU25ITvz1TvOfVP4jsDImlDJzcWg=="], + + "@mapbox/point-geometry": ["@mapbox/point-geometry@0.1.0", "", {}, "sha512-6j56HdLTwWGO0fJPlrZtdU/B13q8Uwmo18Ck2GnGgN9PCFyKTZ3UbXeEdRFh18i9XQ92eH2VdtpJHpBD3aripQ=="], + + "@mapbox/tiny-sdf": ["@mapbox/tiny-sdf@2.0.6", "", {}, "sha512-qMqa27TLw+ZQz5Jk+RcwZGH7BQf5G/TrutJhspsca/3SHwmgKQ1iq+d3Jxz5oysPVYTGP6aXxCo5Lk9Er6YBAA=="], + + "@mapbox/unitbezier": ["@mapbox/unitbezier@0.0.1", "", {}, "sha512-nMkuDXFv60aBr9soUG5q+GvZYL+2KZHVvsqFCzqnkGEf46U2fvmytHaEVc1/YZbiLn8X+eR3QzX1+dwDO1lxlw=="], + + "@mapbox/vector-tile": ["@mapbox/vector-tile@1.3.1", "", { "dependencies": { "@mapbox/point-geometry": "~0.1.0" } }, "sha512-MCEddb8u44/xfQ3oD+Srl/tNcQoqTw3goGk2oLsrFxOTc3dUp+kAnby3PvAeeBYSMSjSPD1nd1AJA6W49WnoUw=="], + + "@mapbox/whoots-js": ["@mapbox/whoots-js@3.1.0", "", {}, "sha512-Es6WcD0nO5l+2BOQS4uLfNPYQaNDfbot3X1XUoloz+x0mPDS3eeORZJl06HXjwBG1fOGwCRnzK88LMdxKRrd6Q=="], + + "@maplibre/maplibre-gl-style-spec": ["@maplibre/maplibre-gl-style-spec@19.3.3", "", { "dependencies": { "@mapbox/jsonlint-lines-primitives": "~2.0.2", "@mapbox/unitbezier": "^0.0.1", "json-stringify-pretty-compact": "^3.0.0", "minimist": "^1.2.8", "rw": "^1.3.3", "sort-object": "^3.0.3" }, "bin": { "gl-style-format": "dist/gl-style-format.mjs", "gl-style-migrate": "dist/gl-style-migrate.mjs", "gl-style-validate": "dist/gl-style-validate.mjs" } }, "sha512-cOZZOVhDSulgK0meTsTkmNXb1ahVvmTmWmfx9gRBwc6hq98wS9JP35ESIoNq3xqEan+UN+gn8187Z6E4NKhLsw=="], + + "@msgpack/msgpack": ["@msgpack/msgpack@2.8.0", "", {}, "sha512-h9u4u/jiIRKbq25PM+zymTyW6bhTzELvOoUd+AvYriWOAKpLGnIamaET3pnHYoI5iYphAHBI4ayx0MehR+VVPQ=="], + + "@napi-rs/canvas": ["@napi-rs/canvas@0.1.67", "", { "optionalDependencies": { "@napi-rs/canvas-android-arm64": "0.1.67", "@napi-rs/canvas-darwin-arm64": "0.1.67", "@napi-rs/canvas-darwin-x64": "0.1.67", "@napi-rs/canvas-linux-arm-gnueabihf": "0.1.67", "@napi-rs/canvas-linux-arm64-gnu": "0.1.67", "@napi-rs/canvas-linux-arm64-musl": "0.1.67", "@napi-rs/canvas-linux-riscv64-gnu": "0.1.67", "@napi-rs/canvas-linux-x64-gnu": "0.1.67", "@napi-rs/canvas-linux-x64-musl": "0.1.67", "@napi-rs/canvas-win32-x64-msvc": "0.1.67" } }, "sha512-VA4Khm/5Kg2bQGx3jXotTC4MloOG8b1Ung80exafUK0k5u6yJmIz3Q2iXeeWZs5weV+LQOEB+CPKsYwEYaGAjw=="], + + "@napi-rs/canvas-android-arm64": ["@napi-rs/canvas-android-arm64@0.1.67", "", { "os": "android", "cpu": "arm64" }, "sha512-W+3DFG5h0WU8Vqqb3W5fNmm5/TPH5ECZRinQDK4CAKFSUkc4iZcDwrmyFG9sB4KdHazf1mFVHCpEeVMO6Mk6Zg=="], + + "@napi-rs/canvas-darwin-arm64": ["@napi-rs/canvas-darwin-arm64@0.1.67", "", { "os": "darwin", "cpu": "arm64" }, "sha512-xzrv7QboI47yhIHR5P5u/9KGswokuOKLiKSukr1Ku03RRJxP6lGuVtrAZAgdRg7F9FsuF2REf2yK53YVb6pMlA=="], + + "@napi-rs/canvas-darwin-x64": ["@napi-rs/canvas-darwin-x64@0.1.67", "", { "os": "darwin", "cpu": "x64" }, "sha512-SNk9lYBr84N0gW8MZ2IrjygFtbFBILr3SEqMdHzHHuph20SQmssFvJGPZwSSCMEyKAvyqhogbmlew0te5Z4w9Q=="], + + "@napi-rs/canvas-linux-arm-gnueabihf": ["@napi-rs/canvas-linux-arm-gnueabihf@0.1.67", "", { "os": "linux", "cpu": "arm" }, "sha512-qmBlSvUpl567bzH8tNXi82u5FrL4d0qINqd6K9O7GWGGGFmKMJdrgi2/SW3wwCTxqHBasIDdVWc4KSJfwyaoDQ=="], + + "@napi-rs/canvas-linux-arm64-gnu": ["@napi-rs/canvas-linux-arm64-gnu@0.1.67", "", { "os": "linux", "cpu": "arm64" }, "sha512-k3nAPQefkMeFuJ65Rqdnx92KX1JXQhEKjjWeKsCJB+7sIBgQUWtHo9c3etfVLv5pkWJJDFi/Zc2soNkH3E8dRA=="], + + "@napi-rs/canvas-linux-arm64-musl": ["@napi-rs/canvas-linux-arm64-musl@0.1.67", "", { "os": "linux", "cpu": "arm64" }, "sha512-lZwHWR1cCP408l86n3Qbs3X1oFeAYMjJIQvQl1VMZh6wo5PfI+jaZSKBUOd8x44TnVllX9yhLY9unNRztk/sUQ=="], + + "@napi-rs/canvas-linux-riscv64-gnu": ["@napi-rs/canvas-linux-riscv64-gnu@0.1.67", "", { "os": "linux", "cpu": "none" }, "sha512-PdBC9p6bLHA1W3OdA0vTHj701SB/kioGQ1uCFBRMs5KBCaMLb/H4aNi8uaIUIEvBWnxeAjoNcLU7//q0FxEosw=="], + + "@napi-rs/canvas-linux-x64-gnu": ["@napi-rs/canvas-linux-x64-gnu@0.1.67", "", { "os": "linux", "cpu": "x64" }, "sha512-kJJX6eWzjipL/LdKOWCJctc88e5yzuXri8+s0V/lN06OwuLGW62TWS3lvi8qlUrGMOfRGabSWWlB4omhASSB8w=="], + + "@napi-rs/canvas-linux-x64-musl": ["@napi-rs/canvas-linux-x64-musl@0.1.67", "", { "os": "linux", "cpu": "x64" }, "sha512-jLKiPWGeN6ZzhnaLG7ex7eexsiHJ1mdtPK1qKvETIcu45dApMXyUIHvdL6XWB5gFFtj5ScHzLUxv1vkfPZsoxA=="], + + "@napi-rs/canvas-win32-x64-msvc": ["@napi-rs/canvas-win32-x64-msvc@0.1.67", "", { "os": "win32", "cpu": "x64" }, "sha512-K/JmkOFbc4iRZYUqJhj0jwqfHA/wNQEmTiGNsgZ6d59yF/IBNp5T0D5eg3B8ghjI8GxDYCiSJ6DNX8mC3Oh2EQ=="], + + "@next/env": ["@next/env@13.5.8", "", {}, "sha512-YmiG58BqyZ2FjrF2+5uZExL2BrLr8RTQzLXNDJ8pJr0O+rPlOeDPXp1p1/4OrR3avDidzZo3D8QO2cuDv1KCkw=="], + + "@next/eslint-plugin-next": ["@next/eslint-plugin-next@13.5.8", "", { "dependencies": { "glob": "7.1.7" } }, "sha512-rmNr6kz5g7x2CQ/5RMmav7/wTGOFIv4fcP+bxawNaJP+Y5Gb0Dvq+omBUvL66pDo/fhWurElatelEFpHX+tMSw=="], + + "@next/swc-darwin-arm64": ["@next/swc-darwin-arm64@13.5.8", "", { "os": "darwin", "cpu": "arm64" }, "sha512-HkFw3QPeIy9bImWVTbsvzfEWQkuzBEQTK/L7ORMg+9sXNN0vNR5Gz/chD4/VbozTHyA38lWTrMBfLoWVpD+2IA=="], + + "@next/swc-darwin-x64": ["@next/swc-darwin-x64@13.5.8", "", { "os": "darwin", "cpu": "x64" }, "sha512-TpRTH5FyH4qGw0MCq6UE3yQGWtwhdDCwSE0wWcYwDWC5cpx3mGKVmAVKwDNbrpk0U5bl0tEzgxp5X4UPHWA81A=="], + + "@next/swc-linux-arm64-gnu": ["@next/swc-linux-arm64-gnu@13.5.8", "", { "os": "linux", "cpu": "arm64" }, "sha512-KUPKuu4EZCCTU5M61YLpuL2fKMWQRijJLtBk2Hph8FJUx6RsNRDwS0MVlJqAr2IwjJwrNxYm5QAdQ1LuRbrZMw=="], + + "@next/swc-linux-arm64-musl": ["@next/swc-linux-arm64-musl@13.5.8", "", { "os": "linux", "cpu": "arm64" }, "sha512-hLyaBgXynyuVgqLwzcwF6loc0XuEz9zuK8XbzX5uslj3aqiw38l+qL1IJNLzHmkDX0nfVuBfIRV6QPsm0sCXnQ=="], + + "@next/swc-linux-x64-gnu": ["@next/swc-linux-x64-gnu@13.5.8", "", { "os": "linux", "cpu": "x64" }, "sha512-IhxeEpi+U85GU9p6bVSAFMwuCNRdpmHueM8Z9DRft8f70Rvt3Q9tNFJxqLxAbiGoNOR7TuLNjAw2wJucHfMw3g=="], + + "@next/swc-linux-x64-musl": ["@next/swc-linux-x64-musl@13.5.8", "", { "os": "linux", "cpu": "x64" }, "sha512-NQICDU7X/tcAVkTEfvpkq5Z1EViodDj3m18wiyJ5wpzOFf4LH7vFjLBVCWNcf3/sfqv/yfD8jshqrffOPtZitg=="], + + "@next/swc-win32-arm64-msvc": ["@next/swc-win32-arm64-msvc@13.5.8", "", { "os": "win32", "cpu": "arm64" }, "sha512-ndLIuFI/26CrhG+pqGkW+yPV/xuIijgaZbzPhujlDaUGczizzXgnI78iuisdPdGoMHLlQ9pRkFUeMGzENdyEHg=="], + + "@next/swc-win32-ia32-msvc": ["@next/swc-win32-ia32-msvc@13.5.8", "", { "os": "win32", "cpu": "ia32" }, "sha512-9HUxSP76n8VbEtwZVNZDMY32Y4fm53ORaiopQkGQ4q54okYa5T8szhVkLTFKu4gaA/KJcJGvCC5dDIaqfSta1w=="], + + "@next/swc-win32-x64-msvc": ["@next/swc-win32-x64-msvc@13.5.8", "", { "os": "win32", "cpu": "x64" }, "sha512-WFisiehrLrkX/nv6Vg7CUT6tdrhO6Nv0mLh5zuYQ5GLD4OnaOHkBt9iRkOziMy7ny+qF+V7023+loZIV/R9j8A=="], + + "@nodelib/fs.scandir": ["@nodelib/fs.scandir@2.1.5", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="], + + "@nodelib/fs.stat": ["@nodelib/fs.stat@2.0.5", "", {}, "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="], + + "@nodelib/fs.walk": ["@nodelib/fs.walk@1.2.8", "", { "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg=="], + + "@nolyfill/is-core-module": ["@nolyfill/is-core-module@1.0.39", "", {}, "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA=="], + + "@npmcli/fs": ["@npmcli/fs@3.1.1", "", { "dependencies": { "semver": "^7.3.5" } }, "sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg=="], + + "@octokit/app": ["@octokit/app@15.1.5", "", { "dependencies": { "@octokit/auth-app": "^7.1.5", "@octokit/auth-unauthenticated": "^6.1.2", "@octokit/core": "^6.1.4", "@octokit/oauth-app": "^7.1.6", "@octokit/plugin-paginate-rest": "^11.4.2", "@octokit/types": "^13.8.0", "@octokit/webhooks": "^13.6.1" } }, "sha512-6cxLT9U8x7GGQ7lNWsKtFr4ccg9oLkGvowk373sX9HvX5U37kql5d55SzaQUxPE8PwgX2cqkzDm5NF5aPKevqg=="], + + "@octokit/auth-app": ["@octokit/auth-app@7.1.5", "", { "dependencies": { "@octokit/auth-oauth-app": "^8.1.3", "@octokit/auth-oauth-user": "^5.1.3", "@octokit/request": "^9.2.1", "@octokit/request-error": "^6.1.7", "@octokit/types": "^13.8.0", "toad-cache": "^3.7.0", "universal-github-app-jwt": "^2.2.0", "universal-user-agent": "^7.0.0" } }, "sha512-boklS4E6LpbA3nRx+SU2fRKRGZJdOGoSZne/i3Y0B5rfHOcGwFgcXrwDLdtbv4igfDSnAkZaoNBv1GYjPDKRNw=="], + + "@octokit/auth-oauth-app": ["@octokit/auth-oauth-app@8.1.3", "", { "dependencies": { "@octokit/auth-oauth-device": "^7.1.3", "@octokit/auth-oauth-user": "^5.1.3", "@octokit/request": "^9.2.1", "@octokit/types": "^13.6.2", "universal-user-agent": "^7.0.0" } }, "sha512-4e6OjVe5rZ8yBe8w7byBjpKtSXFuro7gqeGAAZc7QYltOF8wB93rJl2FE0a4U1Mt88xxPv/mS+25/0DuLk0Ewg=="], + + "@octokit/auth-oauth-device": ["@octokit/auth-oauth-device@7.1.3", "", { "dependencies": { "@octokit/oauth-methods": "^5.1.4", "@octokit/request": "^9.2.1", "@octokit/types": "^13.6.2", "universal-user-agent": "^7.0.0" } }, "sha512-BECO/N4B/Uikj0w3GCvjf/odMujtYTP3q82BJSjxC2J3rxTEiZIJ+z2xnRlDb0IE9dQSaTgRqUPVOieSbFcVzg=="], + + "@octokit/auth-oauth-user": ["@octokit/auth-oauth-user@5.1.3", "", { "dependencies": { "@octokit/auth-oauth-device": "^7.1.3", "@octokit/oauth-methods": "^5.1.3", "@octokit/request": "^9.2.1", "@octokit/types": "^13.6.2", "universal-user-agent": "^7.0.0" } }, "sha512-zNPByPn9K7TC+OOHKGxU+MxrE9SZAN11UHYEFLsK2NRn3akJN2LHRl85q+Eypr3tuB2GrKx3rfj2phJdkYCvzw=="], + + "@octokit/auth-token": ["@octokit/auth-token@5.1.2", "", {}, "sha512-JcQDsBdg49Yky2w2ld20IHAlwr8d/d8N6NiOXbtuoPCqzbsiJgF633mVUw3x4mo0H5ypataQIX7SFu3yy44Mpw=="], + + "@octokit/auth-unauthenticated": ["@octokit/auth-unauthenticated@6.1.2", "", { "dependencies": { "@octokit/request-error": "^6.1.7", "@octokit/types": "^13.6.2" } }, "sha512-07DlUGcz/AAVdzu3EYfi/dOyMSHp9YsOxPl/MPmtlVXWiD//GlV8HgZsPhud94DEyx+RfrW0wSl46Lx+AWbOlg=="], + + "@octokit/core": ["@octokit/core@6.1.4", "", { "dependencies": { "@octokit/auth-token": "^5.0.0", "@octokit/graphql": "^8.1.2", "@octokit/request": "^9.2.1", "@octokit/request-error": "^6.1.7", "@octokit/types": "^13.6.2", "before-after-hook": "^3.0.2", "universal-user-agent": "^7.0.0" } }, "sha512-lAS9k7d6I0MPN+gb9bKDt7X8SdxknYqAMh44S5L+lNqIN2NuV8nvv3g8rPp7MuRxcOpxpUIATWprO0C34a8Qmg=="], + + "@octokit/endpoint": ["@octokit/endpoint@10.1.3", "", { "dependencies": { "@octokit/types": "^13.6.2", "universal-user-agent": "^7.0.2" } }, "sha512-nBRBMpKPhQUxCsQQeW+rCJ/OPSMcj3g0nfHn01zGYZXuNDvvXudF/TYY6APj5THlurerpFN4a/dQAIAaM6BYhA=="], + + "@octokit/graphql": ["@octokit/graphql@8.2.1", "", { "dependencies": { "@octokit/request": "^9.2.2", "@octokit/types": "^13.8.0", "universal-user-agent": "^7.0.0" } }, "sha512-n57hXtOoHrhwTWdvhVkdJHdhTv0JstjDbDRhJfwIRNfFqmSo1DaK/mD2syoNUoLCyqSjBpGAKOG0BuwF392slw=="], + + "@octokit/oauth-app": ["@octokit/oauth-app@7.1.6", "", { "dependencies": { "@octokit/auth-oauth-app": "^8.1.3", "@octokit/auth-oauth-user": "^5.1.3", "@octokit/auth-unauthenticated": "^6.1.2", "@octokit/core": "^6.1.4", "@octokit/oauth-authorization-url": "^7.1.1", "@octokit/oauth-methods": "^5.1.4", "@types/aws-lambda": "^8.10.83", "universal-user-agent": "^7.0.0" } }, "sha512-OMcMzY2WFARg80oJNFwWbY51TBUfLH4JGTy119cqiDawSFXSIBujxmpXiKbGWQlvfn0CxE6f7/+c6+Kr5hI2YA=="], + + "@octokit/oauth-authorization-url": ["@octokit/oauth-authorization-url@7.1.1", "", {}, "sha512-ooXV8GBSabSWyhLUowlMIVd9l1s2nsOGQdlP2SQ4LnkEsGXzeCvbSbCPdZThXhEFzleGPwbapT0Sb+YhXRyjCA=="], + + "@octokit/oauth-methods": ["@octokit/oauth-methods@5.1.4", "", { "dependencies": { "@octokit/oauth-authorization-url": "^7.0.0", "@octokit/request": "^9.2.1", "@octokit/request-error": "^6.1.7", "@octokit/types": "^13.6.2" } }, "sha512-Jc/ycnePClOvO1WL7tlC+TRxOFtyJBGuTDsL4dzXNiVZvzZdrPuNw7zHI3qJSUX2n6RLXE5L0SkFmYyNaVUFoQ=="], + + "@octokit/openapi-types": ["@octokit/openapi-types@23.0.1", "", {}, "sha512-izFjMJ1sir0jn0ldEKhZ7xegCTj/ObmEDlEfpFrx4k/JyZSMRHbO3/rBwgE7f3m2DHt+RrNGIVw4wSmwnm3t/g=="], + + "@octokit/openapi-webhooks-types": ["@octokit/openapi-webhooks-types@10.1.1", "", {}, "sha512-qBfqQVIDQaCFeGCofXieJDwvXcGgDn17+UwZ6WW6lfEvGYGreLFzTiaz9xjet9Us4zDf8iasoW3ixUj/R5lMhA=="], + + "@octokit/plugin-paginate-graphql": ["@octokit/plugin-paginate-graphql@5.2.4", "", { "peerDependencies": { "@octokit/core": ">=6" } }, "sha512-pLZES1jWaOynXKHOqdnwZ5ULeVR6tVVCMm+AUbp0htdcyXDU95WbkYdU4R2ej1wKj5Tu94Mee2Ne0PjPO9cCyA=="], + + "@octokit/plugin-paginate-rest": ["@octokit/plugin-paginate-rest@11.4.3", "", { "dependencies": { "@octokit/types": "^13.7.0" }, "peerDependencies": { "@octokit/core": ">=6" } }, "sha512-tBXaAbXkqVJlRoA/zQVe9mUdb8rScmivqtpv3ovsC5xhje/a+NOCivs7eUhWBwCApJVsR4G5HMeaLbq7PxqZGA=="], + + "@octokit/plugin-rest-endpoint-methods": ["@octokit/plugin-rest-endpoint-methods@13.3.1", "", { "dependencies": { "@octokit/types": "^13.8.0" }, "peerDependencies": { "@octokit/core": ">=6" } }, "sha512-o8uOBdsyR+WR8MK9Cco8dCgvG13H1RlM1nWnK/W7TEACQBFux/vPREgKucxUfuDQ5yi1T3hGf4C5ZmZXAERgwQ=="], + + "@octokit/plugin-retry": ["@octokit/plugin-retry@7.1.4", "", { "dependencies": { "@octokit/request-error": "^6.1.7", "@octokit/types": "^13.6.2", "bottleneck": "^2.15.3" }, "peerDependencies": { "@octokit/core": ">=6" } }, "sha512-7AIP4p9TttKN7ctygG4BtR7rrB0anZqoU9ThXFk8nETqIfvgPUANTSYHqWYknK7W3isw59LpZeLI8pcEwiJdRg=="], + + "@octokit/plugin-throttling": ["@octokit/plugin-throttling@9.4.0", "", { "dependencies": { "@octokit/types": "^13.7.0", "bottleneck": "^2.15.3" }, "peerDependencies": { "@octokit/core": "^6.1.3" } }, "sha512-IOlXxXhZA4Z3m0EEYtrrACkuHiArHLZ3CvqWwOez/pURNqRuwfoFlTPbN5Muf28pzFuztxPyiUiNwz8KctdZaQ=="], + + "@octokit/request": ["@octokit/request@9.2.2", "", { "dependencies": { "@octokit/endpoint": "^10.1.3", "@octokit/request-error": "^6.1.7", "@octokit/types": "^13.6.2", "fast-content-type-parse": "^2.0.0", "universal-user-agent": "^7.0.2" } }, "sha512-dZl0ZHx6gOQGcffgm1/Sf6JfEpmh34v3Af2Uci02vzUYz6qEN6zepoRtmybWXIGXFIK8K9ylE3b+duCWqhArtg=="], + + "@octokit/request-error": ["@octokit/request-error@6.1.7", "", { "dependencies": { "@octokit/types": "^13.6.2" } }, "sha512-69NIppAwaauwZv6aOzb+VVLwt+0havz9GT5YplkeJv7fG7a40qpLt/yZKyiDxAhgz0EtgNdNcb96Z0u+Zyuy2g=="], + + "@octokit/types": ["@octokit/types@13.8.0", "", { "dependencies": { "@octokit/openapi-types": "^23.0.1" } }, "sha512-x7DjTIbEpEWXK99DMd01QfWy0hd5h4EN+Q7shkdKds3otGQP+oWE/y0A76i1OvH9fygo4ddvNf7ZvF0t78P98A=="], + + "@octokit/webhooks": ["@octokit/webhooks@13.7.4", "", { "dependencies": { "@octokit/openapi-webhooks-types": "10.1.1", "@octokit/request-error": "^6.1.7", "@octokit/webhooks-methods": "^5.1.1" } }, "sha512-f386XyLTieQbgKPKS6ZMlH4dq8eLsxNddwofiKRZCq0bZ2gikoFwMD99K6l1oAwqe/KZNzrEziGicRgnzplplQ=="], + + "@octokit/webhooks-methods": ["@octokit/webhooks-methods@5.1.1", "", {}, "sha512-NGlEHZDseJTCj8TMMFehzwa9g7On4KJMPVHDSrHxCQumL6uSQR8wIkP/qesv52fXqV1BPf4pTxwtS31ldAt9Xg=="], + + "@oven/bun-darwin-aarch64": ["@oven/bun-darwin-aarch64@1.2.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-xBz/Q7X6AFwMg7MXtBemjjt5uB+tvEYBmi9Zbm1r8qnI2V8m/Smuhma0EARhiVfLuIAYj2EM5qjzxeAFV4TBJA=="], + + "@oven/bun-darwin-x64": ["@oven/bun-darwin-x64@1.2.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-ufyty+2754QCFDhq447H39JiqabMlFRItLn1YFp+2hdpKak7KCYLGOUuHnlr1pmImKJzDHURjnvTTq1QRlUWAA=="], + + "@oven/bun-darwin-x64-baseline": ["@oven/bun-darwin-x64-baseline@1.2.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-stsq8vBiYgfGunBGlf2M7ST7Ymyw3WnwrxEeJ04vkKmMEEE2LpX8Rkol6UPRvZawab9s9/scFIRgFi6hu9H4SQ=="], + + "@oven/bun-linux-aarch64": ["@oven/bun-linux-aarch64@1.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-OhVpzme2vvLA7w8GYeJg2SQ2h2CwJQN9oYDiGeoML4EwE+DEoYHdxgaBZsQySOwZtFIr8ufpc/8iD4hssJ50qg=="], + + "@oven/bun-linux-aarch64-musl": ["@oven/bun-linux-aarch64-musl@1.2.4", "", { "os": "linux", "cpu": "none" }, "sha512-+lxWF7up9MuB1ZdGxXCH3AH3XmYtdBC6soQ38+yg3+y3iOPrAlSG+wytHEkypN/UU2mGvCuaEED3cMvejrGdDw=="], + + "@oven/bun-linux-x64": ["@oven/bun-linux-x64@1.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-oof3ii92Cz2yIOZRbVFHMHmffCutRPFITIdXLZ2/rkqVuKUe0ZdqWjHPhxJFm31AL9MlJ/dSqDbPb51SaLI7tw=="], + + "@oven/bun-linux-x64-baseline": ["@oven/bun-linux-x64-baseline@1.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-3nmDDZJH73MzhBg2sRYioj4CE8wgaz0w24OieMqj4/c44BbNr3X5RewrldsMD2cU6DtVbi52FuD5WpTw3N8nmw=="], + + "@oven/bun-linux-x64-musl": ["@oven/bun-linux-x64-musl@1.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-cLdMbK7srNoUbYSG3Tp4GYdPAO0+5mgUhdbU053GZs0DLQmQ8h1JQhALp+ZjrUWstmQe7ddcNu7l7EAu6E76XA=="], + + "@oven/bun-linux-x64-musl-baseline": ["@oven/bun-linux-x64-musl-baseline@1.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-qDsUvKCW0WUlVOt6Yx5eEzxgCbvzuSJBsu0sXtr6uGt8TnMKghmliRO5FmiMLQ0k/PUDA8vPJCtuv5k14bDi6g=="], + + "@oven/bun-windows-x64": ["@oven/bun-windows-x64@1.2.4", "", { "os": "win32", "cpu": "x64" }, "sha512-4YRJd4pdaTWEM+uawYmchOeNv874RGAFpIZQubWnN4SBf6HfcDm0OMMZcm0f0I70Wd5gbPg1+rvCRtDZWVmZog=="], + + "@oven/bun-windows-x64-baseline": ["@oven/bun-windows-x64-baseline@1.2.4", "", { "os": "win32", "cpu": "x64" }, "sha512-j/G4bnfsRAiCvpTADda40m29iSGvueIaF9Kc9hBu4jN8dTS9fEXdNNXuf8c30/z7/npxw2dhzsAn8jbc5QvD1A=="], + + "@pdf-lib/standard-fonts": ["@pdf-lib/standard-fonts@1.0.0", "", { "dependencies": { "pako": "^1.0.6" } }, "sha512-hU30BK9IUN/su0Mn9VdlVKsWBS6GyhVfqjwl1FjZN4TxP6cCw0jP2w7V3Hf5uX7M0AZJ16vey9yE0ny7Sa59ZA=="], + + "@pdf-lib/upng": ["@pdf-lib/upng@1.0.1", "", { "dependencies": { "pako": "^1.0.10" } }, "sha512-dQK2FUMQtowVP00mtIksrlZhdFXQZPC+taih1q4CvPZ5vqdxR/LKBaFg0oAfzd1GlHZXXSPdQfzQnt+ViGvEIQ=="], + + "@peculiar/asn1-schema": ["@peculiar/asn1-schema@2.3.15", "", { "dependencies": { "asn1js": "^3.0.5", "pvtsutils": "^1.3.6", "tslib": "^2.8.1" } }, "sha512-QPeD8UA8axQREpgR5UTAfu2mqQmm97oUqahDtNdBcfj3qAnoXzFdQW+aNf/tD2WVXF8Fhmftxoj0eMIT++gX2w=="], + + "@peculiar/json-schema": ["@peculiar/json-schema@1.1.12", "", { "dependencies": { "tslib": "^2.0.0" } }, "sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w=="], + + "@peculiar/webcrypto": ["@peculiar/webcrypto@1.5.0", "", { "dependencies": { "@peculiar/asn1-schema": "^2.3.8", "@peculiar/json-schema": "^1.1.12", "pvtsutils": "^1.3.5", "tslib": "^2.6.2", "webcrypto-core": "^1.8.0" } }, "sha512-BRs5XUAwiyCDQMsVA9IDvDa7UBR9gAvPHgugOeGng3YN6vJ9JYonyDc0lNczErgtCWtucjR5N7VtaonboD/ezg=="], + + "@pkgjs/parseargs": ["@pkgjs/parseargs@0.11.0", "", {}, "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg=="], + + "@popperjs/core": ["@popperjs/core@2.11.8", "", {}, "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A=="], + + "@prisma/client": ["@prisma/client@6.4.1", "", { "peerDependencies": { "prisma": "*", "typescript": ">=5.1.0" }, "optionalPeers": ["prisma", "typescript"] }, "sha512-A7Mwx44+GVZVexT5e2GF/WcKkEkNNKbgr059xpr5mn+oUm2ZW1svhe+0TRNBwCdzhfIZ+q23jEgsNPvKD9u+6g=="], + + "@prisma/debug": ["@prisma/debug@6.4.1", "", {}, "sha512-Q9xk6yjEGIThjSD8zZegxd5tBRNHYd13GOIG0nLsanbTXATiPXCLyvlYEfvbR2ft6dlRsziQXfQGxAgv7zcMUA=="], + + "@prisma/engines": ["@prisma/engines@6.4.1", "", { "dependencies": { "@prisma/debug": "6.4.1", "@prisma/engines-version": "6.4.0-29.a9055b89e58b4b5bfb59600785423b1db3d0e75d", "@prisma/fetch-engine": "6.4.1", "@prisma/get-platform": "6.4.1" } }, "sha512-KldENzMHtKYwsOSLThghOIdXOBEsfDuGSrxAZjMnimBiDKd3AE4JQ+Kv+gBD/x77WoV9xIPf25GXMWffXZ17BA=="], + + "@prisma/engines-version": ["@prisma/engines-version@6.4.0-29.a9055b89e58b4b5bfb59600785423b1db3d0e75d", "", {}, "sha512-Xq54qw55vaCGrGgIJqyDwOq0TtjZPJEWsbQAHugk99hpDf2jcEeQhUcF+yzEsSqegBaDNLA4IC8Nn34sXmkiTQ=="], + + "@prisma/fetch-engine": ["@prisma/fetch-engine@6.4.1", "", { "dependencies": { "@prisma/debug": "6.4.1", "@prisma/engines-version": "6.4.0-29.a9055b89e58b4b5bfb59600785423b1db3d0e75d", "@prisma/get-platform": "6.4.1" } }, "sha512-uZ5hVeTmDspx7KcaRCNoXmcReOD+84nwlO2oFvQPRQh9xiFYnnUKDz7l9bLxp8t4+25CsaNlgrgilXKSQwrIGQ=="], + + "@prisma/get-platform": ["@prisma/get-platform@6.4.1", "", { "dependencies": { "@prisma/debug": "6.4.1" } }, "sha512-gXqZaDI5scDkBF8oza7fOD3Q3QMD0e0rBynlzDDZdTWbWmzjuW58PRZtj+jkvKje2+ZigCWkH8SsWZAsH6q1Yw=="], + + "@protobufjs/aspromise": ["@protobufjs/aspromise@1.1.2", "", {}, "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ=="], + + "@protobufjs/base64": ["@protobufjs/base64@1.1.2", "", {}, "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg=="], + + "@protobufjs/codegen": ["@protobufjs/codegen@2.0.4", "", {}, "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg=="], + + "@protobufjs/eventemitter": ["@protobufjs/eventemitter@1.1.0", "", {}, "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q=="], + + "@protobufjs/fetch": ["@protobufjs/fetch@1.1.0", "", { "dependencies": { "@protobufjs/aspromise": "^1.1.1", "@protobufjs/inquire": "^1.1.0" } }, "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ=="], + + "@protobufjs/float": ["@protobufjs/float@1.0.2", "", {}, "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ=="], + + "@protobufjs/inquire": ["@protobufjs/inquire@1.1.0", "", {}, "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q=="], + + "@protobufjs/path": ["@protobufjs/path@1.1.2", "", {}, "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA=="], + + "@protobufjs/pool": ["@protobufjs/pool@1.1.0", "", {}, "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw=="], + + "@protobufjs/utf8": ["@protobufjs/utf8@1.1.0", "", {}, "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw=="], + + "@radix-ui/number": ["@radix-ui/number@1.0.0", "", { "dependencies": { "@babel/runtime": "^7.13.10" } }, "sha512-Ofwh/1HX69ZfJRiRBMTy7rgjAzHmwe4kW9C9Y99HTRUcYLUuVT0KESFj15rPjRgKJs20GPq8Bm5aEDJ8DuA3vA=="], + + "@radix-ui/primitive": ["@radix-ui/primitive@1.0.0", "", { "dependencies": { "@babel/runtime": "^7.13.10" } }, "sha512-3e7rn8FDMin4CgeL7Z/49smCA3rFYY3Ha2rUQ7HRWFadS5iCRw08ZgVT1LaNTCNqgvrUiyczLflrVrF0SRQtNA=="], + + "@radix-ui/react-compose-refs": ["@radix-ui/react-compose-refs@1.0.0", "", { "dependencies": { "@babel/runtime": "^7.13.10" }, "peerDependencies": { "react": "^16.8 || ^17.0 || ^18.0" } }, "sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA=="], + + "@radix-ui/react-context": ["@radix-ui/react-context@1.0.0", "", { "dependencies": { "@babel/runtime": "^7.13.10" }, "peerDependencies": { "react": "^16.8 || ^17.0 || ^18.0" } }, "sha512-1pVM9RfOQ+n/N5PJK33kRSKsr1glNxomxONs5c49MliinBY6Yw2Q995qfBUUo0/Mbg05B/sGA0gkgPI7kmSHBg=="], + + "@radix-ui/react-direction": ["@radix-ui/react-direction@1.0.0", "", { "dependencies": { "@babel/runtime": "^7.13.10" }, "peerDependencies": { "react": "^16.8 || ^17.0 || ^18.0" } }, "sha512-2HV05lGUgYcA6xgLQ4BKPDmtL+QbIZYH5fCOTAOOcJ5O0QbWS3i9lKaurLzliYUDhORI2Qr3pyjhJh44lKA3rQ=="], + + "@radix-ui/react-presence": ["@radix-ui/react-presence@1.0.0", "", { "dependencies": { "@babel/runtime": "^7.13.10", "@radix-ui/react-compose-refs": "1.0.0", "@radix-ui/react-use-layout-effect": "1.0.0" }, "peerDependencies": { "react": "^16.8 || ^17.0 || ^18.0", "react-dom": "^16.8 || ^17.0 || ^18.0" } }, "sha512-A+6XEvN01NfVWiKu38ybawfHsBjWum42MRPnEuqPsBZ4eV7e/7K321B5VgYMPv3Xx5An6o1/l9ZuDBgmcmWK3w=="], + + "@radix-ui/react-primitive": ["@radix-ui/react-primitive@1.0.1", "", { "dependencies": { "@babel/runtime": "^7.13.10", "@radix-ui/react-slot": "1.0.1" }, "peerDependencies": { "react": "^16.8 || ^17.0 || ^18.0", "react-dom": "^16.8 || ^17.0 || ^18.0" } }, "sha512-fHbmislWVkZaIdeF6GZxF0A/NH/3BjrGIYj+Ae6eTmTCr7EB0RQAAVEiqsXK6p3/JcRqVSBQoceZroj30Jj3XA=="], + + "@radix-ui/react-scroll-area": ["@radix-ui/react-scroll-area@1.0.2", "", { "dependencies": { "@babel/runtime": "^7.13.10", "@radix-ui/number": "1.0.0", "@radix-ui/primitive": "1.0.0", "@radix-ui/react-compose-refs": "1.0.0", "@radix-ui/react-context": "1.0.0", "@radix-ui/react-direction": "1.0.0", "@radix-ui/react-presence": "1.0.0", "@radix-ui/react-primitive": "1.0.1", "@radix-ui/react-use-callback-ref": "1.0.0", "@radix-ui/react-use-layout-effect": "1.0.0" }, "peerDependencies": { "react": "^16.8 || ^17.0 || ^18.0", "react-dom": "^16.8 || ^17.0 || ^18.0" } }, "sha512-k8VseTxI26kcKJaX0HPwkvlNBPTs56JRdYzcZ/vzrNUkDlvXBy8sMc7WvCpYzZkHgb+hd72VW9MqkqecGtuNgg=="], + + "@radix-ui/react-slot": ["@radix-ui/react-slot@1.0.1", "", { "dependencies": { "@babel/runtime": "^7.13.10", "@radix-ui/react-compose-refs": "1.0.0" }, "peerDependencies": { "react": "^16.8 || ^17.0 || ^18.0" } }, "sha512-avutXAFL1ehGvAXtPquu0YK5oz6ctS474iM3vNGQIkswrVhdrS52e3uoMQBzZhNRAIE0jBnUyXWNmSjGHhCFcw=="], + + "@radix-ui/react-use-callback-ref": ["@radix-ui/react-use-callback-ref@1.0.0", "", { "dependencies": { "@babel/runtime": "^7.13.10" }, "peerDependencies": { "react": "^16.8 || ^17.0 || ^18.0" } }, "sha512-GZtyzoHz95Rhs6S63D2t/eqvdFCm7I+yHMLVQheKM7nBD8mbZIt+ct1jz4536MDnaOGKIxynJ8eHTkVGVVkoTg=="], + + "@radix-ui/react-use-layout-effect": ["@radix-ui/react-use-layout-effect@1.0.0", "", { "dependencies": { "@babel/runtime": "^7.13.10" }, "peerDependencies": { "react": "^16.8 || ^17.0 || ^18.0" } }, "sha512-6Tpkq+R6LOlmQb1R5NNETLG0B4YP0wc+klfXafpUCj6JGyaUc8il7/kUZ7m59rGbXGczE9Bs+iz2qloqsZBduQ=="], + + "@react-native/assets-registry": ["@react-native/assets-registry@0.78.0", "", {}, "sha512-PPHlTRuP9litTYkbFNkwveQFto3I94QRWPBBARU0cH/4ks4EkfCfb/Pdb3AHgtJi58QthSHKFvKTQnAWyHPs7w=="], + + "@react-native/babel-plugin-codegen": ["@react-native/babel-plugin-codegen@0.76.7", "", { "dependencies": { "@react-native/codegen": "0.76.7" } }, "sha512-+8H4DXJREM4l/pwLF/wSVMRzVhzhGDix5jLezNrMD9J1U1AMfV2aSkWA1XuqR7pjPs/Vqf6TaPL7vJMZ4LU05Q=="], + + "@react-native/babel-preset": ["@react-native/babel-preset@0.76.7", "", { "dependencies": { "@babel/core": "^7.25.2", "@babel/plugin-proposal-export-default-from": "^7.24.7", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-default-from": "^7.24.7", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", "@babel/plugin-syntax-optional-chaining": "^7.8.3", "@babel/plugin-transform-arrow-functions": "^7.24.7", "@babel/plugin-transform-async-generator-functions": "^7.25.4", "@babel/plugin-transform-async-to-generator": "^7.24.7", "@babel/plugin-transform-block-scoping": "^7.25.0", "@babel/plugin-transform-class-properties": "^7.25.4", "@babel/plugin-transform-classes": "^7.25.4", "@babel/plugin-transform-computed-properties": "^7.24.7", "@babel/plugin-transform-destructuring": "^7.24.8", "@babel/plugin-transform-flow-strip-types": "^7.25.2", "@babel/plugin-transform-for-of": "^7.24.7", "@babel/plugin-transform-function-name": "^7.25.1", "@babel/plugin-transform-literals": "^7.25.2", "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", "@babel/plugin-transform-modules-commonjs": "^7.24.8", "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", "@babel/plugin-transform-numeric-separator": "^7.24.7", "@babel/plugin-transform-object-rest-spread": "^7.24.7", "@babel/plugin-transform-optional-catch-binding": "^7.24.7", "@babel/plugin-transform-optional-chaining": "^7.24.8", "@babel/plugin-transform-parameters": "^7.24.7", "@babel/plugin-transform-private-methods": "^7.24.7", "@babel/plugin-transform-private-property-in-object": "^7.24.7", "@babel/plugin-transform-react-display-name": "^7.24.7", "@babel/plugin-transform-react-jsx": "^7.25.2", "@babel/plugin-transform-react-jsx-self": "^7.24.7", "@babel/plugin-transform-react-jsx-source": "^7.24.7", "@babel/plugin-transform-regenerator": "^7.24.7", "@babel/plugin-transform-runtime": "^7.24.7", "@babel/plugin-transform-shorthand-properties": "^7.24.7", "@babel/plugin-transform-spread": "^7.24.7", "@babel/plugin-transform-sticky-regex": "^7.24.7", "@babel/plugin-transform-typescript": "^7.25.2", "@babel/plugin-transform-unicode-regex": "^7.24.7", "@babel/template": "^7.25.0", "@react-native/babel-plugin-codegen": "0.76.7", "babel-plugin-syntax-hermes-parser": "^0.25.1", "babel-plugin-transform-flow-enums": "^0.0.2", "react-refresh": "^0.14.0" } }, "sha512-/c5DYZ6y8tyg+g8tgXKndDT7mWnGmkZ9F+T3qNDfoE3Qh7ucrNeC2XWvU9h5pk8eRtj9l4SzF4aO1phzwoibyg=="], + + "@react-native/codegen": ["@react-native/codegen@0.78.0", "", { "dependencies": { "@babel/parser": "^7.25.3", "glob": "^7.1.1", "hermes-parser": "0.25.1", "invariant": "^2.2.4", "jscodeshift": "^17.0.0", "nullthrows": "^1.1.1", "yargs": "^17.6.2" }, "peerDependencies": { "@babel/preset-env": "^7.1.6" } }, "sha512-8iVT2VYhkalLFUWoQRGSluZZHEG93StfwQGwQ+wk1vOUlOfoT/Xqglt6DvGXIyM9gaMCr6fJBFQVrU+FrXEFYA=="], + + "@react-native/community-cli-plugin": ["@react-native/community-cli-plugin@0.78.0", "", { "dependencies": { "@react-native/dev-middleware": "0.78.0", "@react-native/metro-babel-transformer": "0.78.0", "chalk": "^4.0.0", "debug": "^2.2.0", "invariant": "^2.2.4", "metro": "^0.81.0", "metro-config": "^0.81.0", "metro-core": "^0.81.0", "readline": "^1.3.0", "semver": "^7.1.3" }, "peerDependencies": { "@react-native-community/cli-server-api": "*" }, "optionalPeers": ["@react-native-community/cli-server-api"] }, "sha512-LpfEU+F1hZGcxIf07aBrjlImA0hh8v76V4wTJOgxxqGDUjjQ/X6h9V+bMXne60G9gwccTtvs1G0xiKWNUPI0VQ=="], + + "@react-native/debugger-frontend": ["@react-native/debugger-frontend@0.76.7", "", {}, "sha512-89ZtZXt7ZxE94i7T94qzZMhp4Gfcpr/QVpGqEaejAxZD+gvDCH21cYSF+/Rz2ttBazm0rk5MZ0mFqb0Iqp1jmw=="], + + "@react-native/dev-middleware": ["@react-native/dev-middleware@0.76.7", "", { "dependencies": { "@isaacs/ttlcache": "^1.4.1", "@react-native/debugger-frontend": "0.76.7", "chrome-launcher": "^0.15.2", "chromium-edge-launcher": "^0.2.0", "connect": "^3.6.5", "debug": "^2.2.0", "invariant": "^2.2.4", "nullthrows": "^1.1.1", "open": "^7.0.3", "selfsigned": "^2.4.1", "serve-static": "^1.13.1", "ws": "^6.2.3" } }, "sha512-Jsw8g9DyLPnR9yHEGuT09yHZ7M88/GL9CtU9WmyChlBwdXSeE3AmRqLegsV3XcgULQ1fqdemokaOZ/MwLYkjdA=="], + + "@react-native/gradle-plugin": ["@react-native/gradle-plugin@0.78.0", "", {}, "sha512-WvwgfmVs1QfFl1FOL514kz2Fs5Nkg2BGgpE8V0ild8b/UT6jCD8qh2dTI5kL0xdT0d2Xd2BxfuFN0xCLkMC+SA=="], + + "@react-native/js-polyfills": ["@react-native/js-polyfills@0.78.0", "", {}, "sha512-YZ9XtS77s/df7548B6dszX89ReehnA7hiab/axc30j/Mgk7Wv2woOjBKnAA4+rZ0ITLtxNwyJIMaRAc9kGznXw=="], + + "@react-native/metro-babel-transformer": ["@react-native/metro-babel-transformer@0.78.0", "", { "dependencies": { "@babel/core": "^7.25.2", "@react-native/babel-preset": "0.78.0", "hermes-parser": "0.25.1", "nullthrows": "^1.1.1" } }, "sha512-Hy/dl+zytLCRD9dp32ukcRS1Bn0gZH0h0i3AbriS6OGYgUgjAUFhXOKzZ15/G1SEq2sng91MNo/hMvo4uXoc5A=="], + + "@react-native/normalize-colors": ["@react-native/normalize-colors@0.78.0", "", {}, "sha512-FkeLvLLaMYlGsSntixTUvlNtc1OHij4TYRtymMNPWqBKFAMXJB/qe45VxXNzWP+jD0Ok6yXineQFtktKcHk9PA=="], + + "@react-native/virtualized-lists": ["@react-native/virtualized-lists@0.78.0", "", { "dependencies": { "invariant": "^2.2.4", "nullthrows": "^1.1.1" }, "peerDependencies": { "@types/react": "^19.0.0", "react": "*", "react-native": "*" }, "optionalPeers": ["@types/react"] }, "sha512-ibETs3AwpkkRcORRANvZeEFjzvN41W02X882sBzoxC5XdHiZ2DucXo4fjKF7i86MhYCFLfNSIYbwupx1D1iFmg=="], + + "@react-pdf/fns": ["@react-pdf/fns@2.2.1", "", { "dependencies": { "@babel/runtime": "^7.20.13" } }, "sha512-s78aDg0vDYaijU5lLOCsUD+qinQbfOvcNeaoX9AiE7+kZzzCo6B/nX+l48cmt9OosJmvZvE9DWR9cLhrhOi2pA=="], + + "@react-pdf/font": ["@react-pdf/font@2.5.2", "", { "dependencies": { "@babel/runtime": "^7.20.13", "@react-pdf/types": "^2.6.0", "cross-fetch": "^3.1.5", "fontkit": "^2.0.2", "is-url": "^1.2.4" } }, "sha512-Ud0EfZ2FwrbvwAWx8nz+KKLmiqACCH9a/N/xNDOja0e/YgSnqTpuyHegFBgIMKjuBtO5dNvkb4dXkxAhGe/ayw=="], + + "@react-pdf/image": ["@react-pdf/image@2.3.6", "", { "dependencies": { "@babel/runtime": "^7.20.13", "@react-pdf/png-js": "^2.3.1", "cross-fetch": "^3.1.5", "jay-peg": "^1.0.2" } }, "sha512-7iZDYZrZlJqNzS6huNl2XdMcLFUo68e6mOdzQeJ63d5eApdthhSHBnkGzHfLhH5t8DCpZNtClmklzuLL63ADfw=="], + + "@react-pdf/layout": ["@react-pdf/layout@3.13.0", "", { "dependencies": { "@babel/runtime": "^7.20.13", "@react-pdf/fns": "2.2.1", "@react-pdf/image": "^2.3.6", "@react-pdf/pdfkit": "^3.2.0", "@react-pdf/primitives": "^3.1.1", "@react-pdf/stylesheet": "^4.3.0", "@react-pdf/textkit": "^4.4.1", "@react-pdf/types": "^2.6.0", "cross-fetch": "^3.1.5", "emoji-regex": "^10.3.0", "queue": "^6.0.1", "yoga-layout": "^2.0.1" } }, "sha512-lpPj/EJYHFOc0ALiJwLP09H28B4ADyvTjxOf67xTF+qkWd+dq1vg7dw3wnYESPnWk5T9NN+HlUenJqdYEY9AvA=="], + + "@react-pdf/pdfkit": ["@react-pdf/pdfkit@3.2.0", "", { "dependencies": { "@babel/runtime": "^7.20.13", "@react-pdf/png-js": "^2.3.1", "browserify-zlib": "^0.2.0", "crypto-js": "^4.2.0", "fontkit": "^2.0.2", "jay-peg": "^1.0.2", "vite-compatible-readable-stream": "^3.6.1" } }, "sha512-OBfCcnTC6RpD9uv9L2woF60Zj1uQxhLFzTBXTdcYE9URzPE/zqXIyzpXEA4Vf3TFbvBCgFE2RzJ2ZUS0asq7yA=="], + + "@react-pdf/png-js": ["@react-pdf/png-js@2.3.1", "", { "dependencies": { "browserify-zlib": "^0.2.0" } }, "sha512-pEZ18I4t1vAUS4lmhvXPmXYP4PHeblpWP/pAlMMRkEyP7tdAeHUN7taQl9sf9OPq7YITMY3lWpYpJU6t4CZgZg=="], + + "@react-pdf/primitives": ["@react-pdf/primitives@3.1.1", "", {}, "sha512-miwjxLwTnO3IjoqkTVeTI+9CdyDggwekmSLhVCw+a/7FoQc+gF3J2dSKwsHvAcVFM0gvU8mzCeTofgw0zPDq0w=="], + + "@react-pdf/render": ["@react-pdf/render@3.5.0", "", { "dependencies": { "@babel/runtime": "^7.20.13", "@react-pdf/fns": "2.2.1", "@react-pdf/primitives": "^3.1.1", "@react-pdf/textkit": "^4.4.1", "@react-pdf/types": "^2.6.0", "abs-svg-path": "^0.1.1", "color-string": "^1.9.1", "normalize-svg-path": "^1.1.0", "parse-svg-path": "^0.1.2", "svg-arc-to-cubic-bezier": "^3.2.0" } }, "sha512-gFOpnyqCgJ6l7VzfJz6rG1i2S7iVSD8bUHDjPW9Mze8TmyksHzN2zBH3y7NbsQOw1wU6hN4NhRmslrsn+BRDPA=="], + + "@react-pdf/renderer": ["@react-pdf/renderer@3.4.5", "", { "dependencies": { "@babel/runtime": "^7.20.13", "@react-pdf/font": "^2.5.2", "@react-pdf/layout": "^3.13.0", "@react-pdf/pdfkit": "^3.2.0", "@react-pdf/primitives": "^3.1.1", "@react-pdf/render": "^3.5.0", "@react-pdf/types": "^2.6.0", "events": "^3.3.0", "object-assign": "^4.1.1", "prop-types": "^15.6.2", "queue": "^6.0.1", "scheduler": "^0.17.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, "sha512-O1N8q45bTs7YuC+x9afJSKQWDYQy2RjoCxlxEGdbCwP+WD5G6dWRUWXlc8F0TtzU3uFglYMmDab2YhXTmnVN9g=="], + + "@react-pdf/stylesheet": ["@react-pdf/stylesheet@4.3.0", "", { "dependencies": { "@babel/runtime": "^7.20.13", "@react-pdf/fns": "2.2.1", "@react-pdf/types": "^2.6.0", "color-string": "^1.9.1", "hsl-to-hex": "^1.0.0", "media-engine": "^1.0.3", "postcss-value-parser": "^4.1.0" } }, "sha512-x7IVZOqRrUum9quuDeFXBveXwBht+z/6B0M+z4a4XjfSg1vZVvzoTl07Oa1yvQ/4yIC5yIkG2TSMWeKnDB+hrw=="], + + "@react-pdf/textkit": ["@react-pdf/textkit@4.4.1", "", { "dependencies": { "@babel/runtime": "^7.20.13", "@react-pdf/fns": "2.2.1", "bidi-js": "^1.0.2", "hyphen": "^1.6.4", "unicode-properties": "^1.4.1" } }, "sha512-Jl9wdTqIvJ5pX+vAGz0EOhP7ut5Two9H6CzTKo/YYPeD79cM2yTXF3JzTERBC28y7LR0Waq9D2LHQjI+b/EYUQ=="], + + "@react-pdf/types": ["@react-pdf/types@2.8.0", "", { "dependencies": { "@react-pdf/font": "^3.1.0", "@react-pdf/primitives": "^4.1.1", "@react-pdf/stylesheet": "^6.0.0" } }, "sha512-lBnLonM2GupyTzUGlWTEoUUGvsRcgbWLn0Py3i3lK/tgn2rPCYwJ9gQ5A3warT5g4jQWyc7HmaNoPU/Zy5iBbQ=="], + + "@remirror/core-constants": ["@remirror/core-constants@3.0.0", "", {}, "sha512-42aWfPrimMfDKDi4YegyS7x+/0tlzaqwPQCULLanv3DMIlu96KTJR0fM5isWX2UViOqlGnX6YFgqWepcX+XMNg=="], + + "@rtsao/scc": ["@rtsao/scc@1.1.0", "", {}, "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g=="], + + "@rushstack/eslint-patch": ["@rushstack/eslint-patch@1.10.5", "", {}, "sha512-kkKUDVlII2DQiKy7UstOR1ErJP8kUKAQ4oa+SQtM0K+lPdmmjj0YnnxBgtTVYH7mUKtbsxeFC9y0AmK7Yb78/A=="], + + "@segment/loosely-validate-event": ["@segment/loosely-validate-event@2.0.0", "", { "dependencies": { "component-type": "^1.2.1", "join-component": "^1.1.0" } }, "sha512-ZMCSfztDBqwotkl848ODgVcAmN4OItEWDCkshcKz0/W6gGSQayuuCtWV/MlodFivAZD793d6UgANd6wCXUfrIw=="], + + "@sinclair/typebox": ["@sinclair/typebox@0.27.8", "", {}, "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA=="], + + "@sinonjs/commons": ["@sinonjs/commons@3.0.1", "", { "dependencies": { "type-detect": "4.0.8" } }, "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ=="], + + "@sinonjs/fake-timers": ["@sinonjs/fake-timers@10.3.0", "", { "dependencies": { "@sinonjs/commons": "^3.0.0" } }, "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA=="], + + "@socket.io/component-emitter": ["@socket.io/component-emitter@3.1.2", "", {}, "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA=="], + + "@supabase/auth-js": ["@supabase/auth-js@2.68.0", "", { "dependencies": { "@supabase/node-fetch": "^2.6.14" } }, "sha512-odG7nb7aOmZPUXk6SwL2JchSsn36Ppx11i2yWMIc/meUO2B2HK9YwZHPK06utD9Ql9ke7JKDbwGin/8prHKxxQ=="], + + "@supabase/functions-js": ["@supabase/functions-js@2.4.4", "", { "dependencies": { "@supabase/node-fetch": "^2.6.14" } }, "sha512-WL2p6r4AXNGwop7iwvul2BvOtuJ1YQy8EbOd0dhG1oN1q8el/BIRSFCFnWAMM/vJJlHWLi4ad22sKbKr9mvjoA=="], + + "@supabase/node-fetch": ["@supabase/node-fetch@2.6.15", "", { "dependencies": { "whatwg-url": "^5.0.0" } }, "sha512-1ibVeYUacxWYi9i0cf5efil6adJ9WRyZBLivgjs+AUpewx1F3xPi7gLgaASI2SmIQxPoCEjAsLAzKPgMJVgOUQ=="], + + "@supabase/postgrest-js": ["@supabase/postgrest-js@1.19.2", "", { "dependencies": { "@supabase/node-fetch": "^2.6.14" } }, "sha512-MXRbk4wpwhWl9IN6rIY1mR8uZCCG4MZAEji942ve6nMwIqnBgBnZhZlON6zTTs6fgveMnoCILpZv1+K91jN+ow=="], + + "@supabase/realtime-js": ["@supabase/realtime-js@2.11.2", "", { "dependencies": { "@supabase/node-fetch": "^2.6.14", "@types/phoenix": "^1.5.4", "@types/ws": "^8.5.10", "ws": "^8.18.0" } }, "sha512-u/XeuL2Y0QEhXSoIPZZwR6wMXgB+RQbJzG9VErA3VghVt7uRfSVsjeqd7m5GhX3JR6dM/WRmLbVR8URpDWG4+w=="], + + "@supabase/storage-js": ["@supabase/storage-js@2.7.1", "", { "dependencies": { "@supabase/node-fetch": "^2.6.14" } }, "sha512-asYHcyDR1fKqrMpytAS1zjyEfvxuOIp1CIXX7ji4lHHcJKqyk+sLl/Vxgm4sN6u8zvuUtae9e4kDxQP2qrwWBA=="], + + "@supabase/supabase-js": ["@supabase/supabase-js@2.49.1", "", { "dependencies": { "@supabase/auth-js": "2.68.0", "@supabase/functions-js": "2.4.4", "@supabase/node-fetch": "2.6.15", "@supabase/postgrest-js": "1.19.2", "@supabase/realtime-js": "2.11.2", "@supabase/storage-js": "2.7.1" } }, "sha512-lKaptKQB5/juEF5+jzmBeZlz69MdHZuxf+0f50NwhL+IE//m4ZnOeWlsKRjjsM0fVayZiQKqLvYdBn0RLkhGiQ=="], + + "@swc/counter": ["@swc/counter@0.1.3", "", {}, "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ=="], + + "@swc/helpers": ["@swc/helpers@0.5.2", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw=="], + + "@tabler/icons": ["@tabler/icons@3.31.0", "", {}, "sha512-dblAdeKY3+GA1U+Q9eziZ0ooVlZMHsE8dqP0RkwvRtEsAULoKOYaCUOcJ4oW1DjWegdxk++UAt2SlQVnmeHv+g=="], + + "@tabler/icons-react": ["@tabler/icons-react@3.31.0", "", { "dependencies": { "@tabler/icons": "3.31.0" }, "peerDependencies": { "react": ">= 16" } }, "sha512-2rrCM5y/VnaVKnORpDdAua9SEGuJKVqPtWxeQ/vUVsgaUx30LDgBZph7/lterXxDY1IKR6NO//HDhWiifXTi3w=="], + + "@tiptap/core": ["@tiptap/core@2.11.5", "", { "peerDependencies": { "@tiptap/pm": "^2.7.0" } }, "sha512-jb0KTdUJaJY53JaN7ooY3XAxHQNoMYti/H6ANo707PsLXVeEqJ9o8+eBup1JU5CuwzrgnDc2dECt2WIGX9f8Jw=="], + + "@tiptap/extension-blockquote": ["@tiptap/extension-blockquote@2.11.5", "", { "peerDependencies": { "@tiptap/core": "^2.7.0" } }, "sha512-MZfcRIzKRD8/J1hkt/eYv49060GTL6qGR3NY/oTDuw2wYzbQXXLEbjk8hxAtjwNn7G+pWQv3L+PKFzZDxibLuA=="], + + "@tiptap/extension-bold": ["@tiptap/extension-bold@2.11.5", "", { "peerDependencies": { "@tiptap/core": "^2.7.0" } }, "sha512-OAq03MHEbl7MtYCUzGuwb0VpOPnM0k5ekMbEaRILFU5ZC7cEAQ36XmPIw1dQayrcuE8GZL35BKub2qtRxyC9iA=="], + + "@tiptap/extension-bubble-menu": ["@tiptap/extension-bubble-menu@2.11.5", "", { "dependencies": { "tippy.js": "^6.3.7" }, "peerDependencies": { "@tiptap/core": "^2.7.0", "@tiptap/pm": "^2.7.0" } }, "sha512-rx+rMd7EEdht5EHLWldpkzJ56SWYA9799b33ustePqhXd6linnokJCzBqY13AfZ9+xp3RsR6C0ZHI9GGea0tIA=="], + + "@tiptap/extension-bullet-list": ["@tiptap/extension-bullet-list@2.11.5", "", { "peerDependencies": { "@tiptap/core": "^2.7.0" } }, "sha512-VXwHlX6A/T6FAspnyjbKDO0TQ+oetXuat6RY1/JxbXphH42nLuBaGWJ6pgy6xMl6XY8/9oPkTNrfJw/8/eeRwA=="], + + "@tiptap/extension-code": ["@tiptap/extension-code@2.11.5", "", { "peerDependencies": { "@tiptap/core": "^2.7.0" } }, "sha512-xOvHevNIQIcCCVn9tpvXa1wBp0wHN/2umbAZGTVzS+AQtM7BTo0tz8IyzwxkcZJaImONcUVYLOLzt2AgW1LltA=="], + + "@tiptap/extension-code-block": ["@tiptap/extension-code-block@2.11.5", "", { "peerDependencies": { "@tiptap/core": "^2.7.0", "@tiptap/pm": "^2.7.0" } }, "sha512-ksxMMvqLDlC+ftcQLynqZMdlJT1iHYZorXsXw/n+wuRd7YElkRkd6YWUX/Pq/njFY6lDjKiqFLEXBJB8nrzzBA=="], + + "@tiptap/extension-document": ["@tiptap/extension-document@2.11.5", "", { "peerDependencies": { "@tiptap/core": "^2.7.0" } }, "sha512-7I4BRTpIux2a0O2qS3BDmyZ5LGp3pszKbix32CmeVh7lN9dV7W5reDqtJJ9FCZEEF+pZ6e1/DQA362dflwZw2g=="], + + "@tiptap/extension-dropcursor": ["@tiptap/extension-dropcursor@2.11.5", "", { "peerDependencies": { "@tiptap/core": "^2.7.0", "@tiptap/pm": "^2.7.0" } }, "sha512-uIN7L3FU0904ec7FFFbndO7RQE/yiON4VzAMhNn587LFMyWO8US139HXIL4O8dpZeYwYL3d1FnDTflZl6CwLlg=="], + + "@tiptap/extension-floating-menu": ["@tiptap/extension-floating-menu@2.11.5", "", { "dependencies": { "tippy.js": "^6.3.7" }, "peerDependencies": { "@tiptap/core": "^2.7.0", "@tiptap/pm": "^2.7.0" } }, "sha512-HsMI0hV5Lwzm530Z5tBeyNCBNG38eJ3qjfdV2OHlfSf3+KOEfn6a5AUdoNaZO02LF79/8+7BaYU2drafag9cxQ=="], + + "@tiptap/extension-gapcursor": ["@tiptap/extension-gapcursor@2.11.5", "", { "peerDependencies": { "@tiptap/core": "^2.7.0", "@tiptap/pm": "^2.7.0" } }, "sha512-kcWa+Xq9cb6lBdiICvLReuDtz/rLjFKHWpW3jTTF3FiP3wx4H8Rs6bzVtty7uOVTfwupxZRiKICAMEU6iT0xrQ=="], + + "@tiptap/extension-hard-break": ["@tiptap/extension-hard-break@2.11.5", "", { "peerDependencies": { "@tiptap/core": "^2.7.0" } }, "sha512-q9doeN+Yg9F5QNTG8pZGYfNye3tmntOwch683v0CCVCI4ldKaLZ0jG3NbBTq+mosHYdgOH2rNbIORlRRsQ+iYQ=="], + + "@tiptap/extension-heading": ["@tiptap/extension-heading@2.11.5", "", { "peerDependencies": { "@tiptap/core": "^2.7.0" } }, "sha512-x/MV53psJ9baRcZ4k4WjnCUBMt8zCX7mPlKVT+9C/o+DEs/j/qxPLs95nHeQv70chZpSwCQCt93xMmuF0kPoAg=="], + + "@tiptap/extension-highlight": ["@tiptap/extension-highlight@2.11.5", "", { "peerDependencies": { "@tiptap/core": "^2.7.0" } }, "sha512-VBZfT869L9CiTLF8qr+3FBUtJcmlyUTECORNo0ceEiNDg4H6V9uNPwaROMXrWiQCc+DYVCOkx541QrXwNMzxlg=="], + + "@tiptap/extension-history": ["@tiptap/extension-history@2.11.5", "", { "peerDependencies": { "@tiptap/core": "^2.7.0", "@tiptap/pm": "^2.7.0" } }, "sha512-b+wOS33Dz1azw6F1i9LFTEIJ/gUui0Jwz5ZvmVDpL2ZHBhq1Ui0/spTT+tuZOXq7Y/uCbKL8Liu4WoedIvhboQ=="], + + "@tiptap/extension-horizontal-rule": ["@tiptap/extension-horizontal-rule@2.11.5", "", { "peerDependencies": { "@tiptap/core": "^2.7.0", "@tiptap/pm": "^2.7.0" } }, "sha512-3up2r1Du8/5/4ZYzTC0DjTwhgPI3dn8jhOCLu73m5F3OGvK/9whcXoeWoX103hYMnGDxBlfOje71yQuN35FL4A=="], + + "@tiptap/extension-image": ["@tiptap/extension-image@2.11.7", "", { "peerDependencies": { "@tiptap/core": "^2.7.0" } }, "sha512-YvCmTDB7Oo+A56tR4S/gcNaYpqU4DDlSQcRp5IQvmQV5EekSe0lnEazGDoqOCwsit9qQhj4MPQJhKrnaWrJUrg=="], + + "@tiptap/extension-italic": ["@tiptap/extension-italic@2.11.5", "", { "peerDependencies": { "@tiptap/core": "^2.7.0" } }, "sha512-9VGfb2/LfPhQ6TjzDwuYLRvw0A6VGbaIp3F+5Mql8XVdTBHb2+rhELbyhNGiGVR78CaB/EiKb6dO9xu/tBWSYA=="], + + "@tiptap/extension-link": ["@tiptap/extension-link@2.11.5", "", { "dependencies": { "linkifyjs": "^4.2.0" }, "peerDependencies": { "@tiptap/core": "^2.7.0", "@tiptap/pm": "^2.7.0" } }, "sha512-4Iu/aPzevbYpe50xDI0ZkqRa6nkZ9eF270Ue2qaF3Ab47nehj+9Jl78XXzo8+LTyFMnrETI73TAs1aC/IGySeQ=="], + + "@tiptap/extension-list-item": ["@tiptap/extension-list-item@2.11.5", "", { "peerDependencies": { "@tiptap/core": "^2.7.0" } }, "sha512-Mp5RD/pbkfW1vdc6xMVxXYcta73FOwLmblQlFNn/l/E5/X1DUSA4iGhgDDH4EWO3swbs03x2f7Zka/Xoj3+WLg=="], + + "@tiptap/extension-ordered-list": ["@tiptap/extension-ordered-list@2.11.5", "", { "peerDependencies": { "@tiptap/core": "^2.7.0" } }, "sha512-Cu8KwruBNWAaEfshRQR0yOSaUKAeEwxW7UgbvF9cN/zZuKgK5uZosPCPTehIFCcRe+TBpRtZQh+06f/gNYpYYg=="], + + "@tiptap/extension-paragraph": ["@tiptap/extension-paragraph@2.11.5", "", { "peerDependencies": { "@tiptap/core": "^2.7.0" } }, "sha512-YFBWeg7xu/sBnsDIF/+nh9Arf7R0h07VZMd0id5Ydd2Qe3c1uIZwXxeINVtH0SZozuPIQFAT8ICe9M0RxmE+TA=="], + + "@tiptap/extension-strike": ["@tiptap/extension-strike@2.11.5", "", { "peerDependencies": { "@tiptap/core": "^2.7.0" } }, "sha512-PVfUiCqrjvsLpbIoVlegSY8RlkR64F1Rr2RYmiybQfGbg+AkSZXDeO0eIrc03//4gua7D9DfIozHmAKv1KN3ow=="], + + "@tiptap/extension-subscript": ["@tiptap/extension-subscript@2.11.5", "", { "peerDependencies": { "@tiptap/core": "^2.7.0" } }, "sha512-VpaSzxku/Bcvf4SgDB2K5d0E+FNA/56iJHMygg/WXsq2F4tMMUEivQHI/n+17ndUEO4Wybz0wItnM1G2JfRuLQ=="], + + "@tiptap/extension-superscript": ["@tiptap/extension-superscript@2.11.5", "", { "peerDependencies": { "@tiptap/core": "^2.7.0" } }, "sha512-sK6v2G0zFfGW+j9CmYp2e+tyZ3FTa3dP0xY4kJzefgZcHhMJLlLnjxBRwHCSi/jj5ie6WdZT4KoEooxnPs1Vzw=="], + + "@tiptap/extension-text": ["@tiptap/extension-text@2.11.5", "", { "peerDependencies": { "@tiptap/core": "^2.7.0" } }, "sha512-Gq1WwyhFpCbEDrLPIHt5A8aLSlf8bfz4jm417c8F/JyU0J5dtYdmx0RAxjnLw1i7ZHE7LRyqqAoS0sl7JHDNSQ=="], + + "@tiptap/extension-text-align": ["@tiptap/extension-text-align@2.11.5", "", { "peerDependencies": { "@tiptap/core": "^2.7.0" } }, "sha512-Ei0zDpH5N9EV59ogydK4HTKa4lCPicCsQllM5n/Nf2tUJPir3aiYxzJ73FzhComD4Hpo1ANYnmssBhy8QeoPZA=="], + + "@tiptap/extension-text-style": ["@tiptap/extension-text-style@2.11.5", "", { "peerDependencies": { "@tiptap/core": "^2.7.0" } }, "sha512-YUmYl0gILSd/u/ZkOmNxjNXVw+mu8fpC2f8G4I4tLODm0zCx09j9DDEJXSrM5XX72nxJQqtSQsCpNKnL0hfeEQ=="], + + "@tiptap/extension-underline": ["@tiptap/extension-underline@2.11.7", "", { "peerDependencies": { "@tiptap/core": "^2.7.0" } }, "sha512-NtoQw6PGijOAtXC6G+0Aq0/Z5wwEjPhNHs8nsjXogfWIgaj/aI4/zfBnA06eI3WT+emMYQTl0fTc4CUPnLVU8g=="], + + "@tiptap/pm": ["@tiptap/pm@2.11.5", "", { "dependencies": { "prosemirror-changeset": "^2.2.1", "prosemirror-collab": "^1.3.1", "prosemirror-commands": "^1.6.2", "prosemirror-dropcursor": "^1.8.1", "prosemirror-gapcursor": "^1.3.2", "prosemirror-history": "^1.4.1", "prosemirror-inputrules": "^1.4.0", "prosemirror-keymap": "^1.2.2", "prosemirror-markdown": "^1.13.1", "prosemirror-menu": "^1.2.4", "prosemirror-model": "^1.23.0", "prosemirror-schema-basic": "^1.2.3", "prosemirror-schema-list": "^1.4.1", "prosemirror-state": "^1.4.3", "prosemirror-tables": "^1.6.3", "prosemirror-trailing-node": "^3.0.0", "prosemirror-transform": "^1.10.2", "prosemirror-view": "^1.37.0" } }, "sha512-z9JFtqc5ZOsdQLd9vRnXfTCQ8v5ADAfRt9Nm7SqP6FUHII8E1hs38ACzf5xursmth/VonJYb5+73Pqxk1hGIPw=="], + + "@tiptap/react": ["@tiptap/react@2.11.5", "", { "dependencies": { "@tiptap/extension-bubble-menu": "^2.11.5", "@tiptap/extension-floating-menu": "^2.11.5", "@types/use-sync-external-store": "^0.0.6", "fast-deep-equal": "^3", "use-sync-external-store": "^1" }, "peerDependencies": { "@tiptap/core": "^2.7.0", "@tiptap/pm": "^2.7.0", "react": "^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-Dp8eHL1G+R/C4+QzAczyb3t1ovexEIZx9ln7SGEM+cT1KHKAw9XGPRgsp92+NQaYI+EdEb/YqoBOSzQcd18/OQ=="], + + "@tiptap/starter-kit": ["@tiptap/starter-kit@2.11.5", "", { "dependencies": { "@tiptap/core": "^2.11.5", "@tiptap/extension-blockquote": "^2.11.5", "@tiptap/extension-bold": "^2.11.5", "@tiptap/extension-bullet-list": "^2.11.5", "@tiptap/extension-code": "^2.11.5", "@tiptap/extension-code-block": "^2.11.5", "@tiptap/extension-document": "^2.11.5", "@tiptap/extension-dropcursor": "^2.11.5", "@tiptap/extension-gapcursor": "^2.11.5", "@tiptap/extension-hard-break": "^2.11.5", "@tiptap/extension-heading": "^2.11.5", "@tiptap/extension-history": "^2.11.5", "@tiptap/extension-horizontal-rule": "^2.11.5", "@tiptap/extension-italic": "^2.11.5", "@tiptap/extension-list-item": "^2.11.5", "@tiptap/extension-ordered-list": "^2.11.5", "@tiptap/extension-paragraph": "^2.11.5", "@tiptap/extension-strike": "^2.11.5", "@tiptap/extension-text": "^2.11.5", "@tiptap/extension-text-style": "^2.11.5", "@tiptap/pm": "^2.11.5" } }, "sha512-SLI7Aj2ruU1t//6Mk8f+fqW+18uTqpdfLUJYgwu0CkqBckrkRZYZh6GVLk/02k3H2ki7QkFxiFbZrdbZdng0JA=="], + + "@tsconfig/node10": ["@tsconfig/node10@1.0.11", "", {}, "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw=="], + + "@tsconfig/node12": ["@tsconfig/node12@1.0.11", "", {}, "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag=="], + + "@tsconfig/node14": ["@tsconfig/node14@1.0.3", "", {}, "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow=="], + + "@tsconfig/node16": ["@tsconfig/node16@1.0.4", "", {}, "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA=="], + + "@types/accepts": ["@types/accepts@1.3.7", "", { "dependencies": { "@types/node": "*" } }, "sha512-Pay9fq2lM2wXPWbteBsRAGiWH2hig4ZE2asK+mm7kUzlxRTfL961rj89I6zV/E3PcIkDqyuBEcMxFT7rccugeQ=="], + + "@types/autocannon": ["@types/autocannon@7.12.6", "", { "dependencies": { "@types/node": "*" } }, "sha512-eBluTewWVKr1XlCPz3hYuzs+5JPme+Jh01sKpGPSnWg4wep1Oz2hpGn+dmcITl+uxYoV+rnhA+8LMengL+zcVw=="], + + "@types/aws-lambda": ["@types/aws-lambda@8.10.147", "", {}, "sha512-nD0Z9fNIZcxYX5Mai2CTmFD7wX7UldCkW2ezCF8D1T5hdiLsnTWDGRpfRYntU6VjTdLQjOvyszru7I1c1oCQew=="], + + "@types/babel__core": ["@types/babel__core@7.20.5", "", { "dependencies": { "@babel/parser": "^7.20.7", "@babel/types": "^7.20.7", "@types/babel__generator": "*", "@types/babel__template": "*", "@types/babel__traverse": "*" } }, "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA=="], + + "@types/babel__generator": ["@types/babel__generator@7.6.8", "", { "dependencies": { "@babel/types": "^7.0.0" } }, "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw=="], + + "@types/babel__template": ["@types/babel__template@7.4.4", "", { "dependencies": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0" } }, "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A=="], + + "@types/babel__traverse": ["@types/babel__traverse@7.20.6", "", { "dependencies": { "@babel/types": "^7.20.7" } }, "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg=="], + + "@types/blessed": ["@types/blessed@0.1.25", "", { "dependencies": { "@types/node": "*" } }, "sha512-kQsjBgtsbJLmG6CJA+Z6Nujj+tq1fcSE3UIowbDvzQI4wWmoTV7djUDhSo5lDjgwpIN0oRvks0SA5mMdKE5eFg=="], + + "@types/body-parser": ["@types/body-parser@1.19.5", "", { "dependencies": { "@types/connect": "*", "@types/node": "*" } }, "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg=="], + + "@types/bun": ["@types/bun@1.2.4", "", { "dependencies": { "bun-types": "1.2.4" } }, "sha512-QtuV5OMR8/rdKJs213iwXDpfVvnskPXY/S0ZiFbsTjQZycuqPbMW8Gf/XhLfwE5njW8sxI2WjISURXPlHypMFA=="], + + "@types/cli-progress": ["@types/cli-progress@3.11.6", "", { "dependencies": { "@types/node": "*" } }, "sha512-cE3+jb9WRlu+uOSAugewNpITJDt1VF8dHOopPO4IABFc3SXYL5WE/+PTz/FCdZRRfIujiWW3n3aMbv1eIGVRWA=="], + + "@types/connect": ["@types/connect@3.4.38", "", { "dependencies": { "@types/node": "*" } }, "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug=="], + + "@types/content-disposition": ["@types/content-disposition@0.5.8", "", {}, "sha512-QVSSvno3dE0MgO76pJhmv4Qyi/j0Yk9pBp0Y7TJ2Tlj+KCgJWY6qX7nnxCOLkZ3VYRSIk1WTxCvwUSdx6CCLdg=="], + + "@types/cookie": ["@types/cookie@0.5.4", "", {}, "sha512-7z/eR6O859gyWIAjuvBWFzNURmf2oPBmJlfVWkwehU5nzIyjwBsTh7WMmEEV4JFnHuQ3ex4oyTvfKzcyJVDBNA=="], + + "@types/cookies": ["@types/cookies@0.9.0", "", { "dependencies": { "@types/connect": "*", "@types/express": "*", "@types/keygrip": "*", "@types/node": "*" } }, "sha512-40Zk8qR147RABiQ7NQnBzWzDcjKzNrntB5BAmeGCb2p/MIyOE+4BVvc17wumsUqUw00bJYqoXFHYygQnEFh4/Q=="], + + "@types/crypto-js": ["@types/crypto-js@4.2.2", "", {}, "sha512-sDOLlVbHhXpAUAL0YHDUUwDZf3iN4Bwi4W6a0W0b+QcAezUbRtH4FVb+9J4h+XFPW7l/gQ9F8qC7P+Ec4k8QVQ=="], + + "@types/express": ["@types/express@4.17.21", "", { "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "^4.17.33", "@types/qs": "*", "@types/serve-static": "*" } }, "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ=="], + + "@types/express-serve-static-core": ["@types/express-serve-static-core@4.19.6", "", { "dependencies": { "@types/node": "*", "@types/qs": "*", "@types/range-parser": "*", "@types/send": "*" } }, "sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A=="], + + "@types/geojson": ["@types/geojson@7946.0.16", "", {}, "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg=="], + + "@types/geojson-vt": ["@types/geojson-vt@3.2.5", "", { "dependencies": { "@types/geojson": "*" } }, "sha512-qDO7wqtprzlpe8FfQ//ClPV9xiuoh2nkIgiouIptON9w5jvD/fA4szvP9GBlDVdJ5dldAl0kX/sy3URbWwLx0g=="], + + "@types/graceful-fs": ["@types/graceful-fs@4.1.9", "", { "dependencies": { "@types/node": "*" } }, "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ=="], + + "@types/http-assert": ["@types/http-assert@1.5.6", "", {}, "sha512-TTEwmtjgVbYAzZYWyeHPrrtWnfVkm8tQkP8P21uQifPgMRgjrow3XDEYqucuC8SKZJT7pUnhU/JymvjggxO9vw=="], + + "@types/http-errors": ["@types/http-errors@2.0.4", "", {}, "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA=="], + + "@types/istanbul-lib-coverage": ["@types/istanbul-lib-coverage@2.0.6", "", {}, "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w=="], + + "@types/istanbul-lib-report": ["@types/istanbul-lib-report@3.0.3", "", { "dependencies": { "@types/istanbul-lib-coverage": "*" } }, "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA=="], + + "@types/istanbul-reports": ["@types/istanbul-reports@3.0.4", "", { "dependencies": { "@types/istanbul-lib-report": "*" } }, "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ=="], + + "@types/json5": ["@types/json5@0.0.29", "", {}, "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ=="], + + "@types/keygrip": ["@types/keygrip@1.0.6", "", {}, "sha512-lZuNAY9xeJt7Bx4t4dx0rYCDqGPW8RXhQZK1td7d4H6E9zYbLoOtjBvfwdTKpsyxQI/2jv+armjX/RW+ZNpXOQ=="], + + "@types/koa": ["@types/koa@2.15.0", "", { "dependencies": { "@types/accepts": "*", "@types/content-disposition": "*", "@types/cookies": "*", "@types/http-assert": "*", "@types/http-errors": "*", "@types/keygrip": "*", "@types/koa-compose": "*", "@types/node": "*" } }, "sha512-7QFsywoE5URbuVnG3loe03QXuGajrnotr3gQkXcEBShORai23MePfFYdhz90FEtBBpkyIYQbVD+evKtloCgX3g=="], + + "@types/koa-compose": ["@types/koa-compose@3.2.8", "", { "dependencies": { "@types/koa": "*" } }, "sha512-4Olc63RY+MKvxMwVknCUDhRQX1pFQoBZ/lXcRLP69PQkEpze/0cr8LNqJQe5NFb/b19DWi2a5bTi2VAlQzhJuA=="], + + "@types/linkify-it": ["@types/linkify-it@5.0.0", "", {}, "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q=="], + + "@types/lodash": ["@types/lodash@4.17.15", "", {}, "sha512-w/P33JFeySuhN6JLkysYUK2gEmy9kHHFN7E8ro0tkfmlDOgxBDzWEZ/J8cWA+fHqFevpswDTFZnDx+R9lbL6xw=="], + + "@types/mapbox-gl": ["@types/mapbox-gl@3.4.1", "", { "dependencies": { "@types/geojson": "*" } }, "sha512-NsGKKtgW93B+UaLPti6B7NwlxYlES5DpV5Gzj9F75rK5ALKsqSk15CiEHbOnTr09RGbr6ZYiCdI+59NNNcAImg=="], + + "@types/mapbox__point-geometry": ["@types/mapbox__point-geometry@0.1.4", "", {}, "sha512-mUWlSxAmYLfwnRBmgYV86tgYmMIICX4kza8YnE/eIlywGe2XoOxlpVnXWwir92xRLjwyarqwpu2EJKD2pk0IUA=="], + + "@types/mapbox__vector-tile": ["@types/mapbox__vector-tile@1.3.4", "", { "dependencies": { "@types/geojson": "*", "@types/mapbox__point-geometry": "*", "@types/pbf": "*" } }, "sha512-bpd8dRn9pr6xKvuEBQup8pwQfD4VUyqO/2deGjfpe6AwC8YRlyEipvefyRJUSiCJTZuCb8Pl1ciVV5ekqJ96Bg=="], + + "@types/markdown-it": ["@types/markdown-it@14.1.2", "", { "dependencies": { "@types/linkify-it": "^5", "@types/mdurl": "^2" } }, "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog=="], + + "@types/mdurl": ["@types/mdurl@2.0.0", "", {}, "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg=="], + + "@types/mime": ["@types/mime@1.3.5", "", {}, "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w=="], + + "@types/mustache": ["@types/mustache@4.2.5", "", {}, "sha512-PLwiVvTBg59tGFL/8VpcGvqOu3L4OuveNvPi0EYbWchRdEVP++yRUXJPFl+CApKEq13017/4Nf7aQ5lTtHUNsA=="], + + "@types/node": ["@types/node@20.4.5", "", {}, "sha512-rt40Nk13II9JwQBdeYqmbn2Q6IVTA5uPhvSO+JVqdXw/6/4glI6oR9ezty/A9Hg5u7JH4OmYmuQ+XvjKm0Datg=="], + + "@types/node-fetch": ["@types/node-fetch@2.6.12", "", { "dependencies": { "@types/node": "*", "form-data": "^4.0.0" } }, "sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA=="], + + "@types/node-forge": ["@types/node-forge@1.3.11", "", { "dependencies": { "@types/node": "*" } }, "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ=="], + + "@types/papaparse": ["@types/papaparse@5.3.15", "", { "dependencies": { "@types/node": "*" } }, "sha512-JHe6vF6x/8Z85nCX4yFdDslN11d+1pr12E526X8WAfhadOeaOTx5AuIkvDKIBopfvlzpzkdMx4YyvSKCM9oqtw=="], + + "@types/parse-json": ["@types/parse-json@4.0.2", "", {}, "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw=="], + + "@types/pbf": ["@types/pbf@3.0.5", "", {}, "sha512-j3pOPiEcWZ34R6a6mN07mUkM4o4Lwf6hPNt8eilOeZhTFbxFXmKhvXl9Y28jotFPaI1bpPDJsbCprUoNke6OrA=="], + + "@types/phoenix": ["@types/phoenix@1.6.6", "", {}, "sha512-PIzZZlEppgrpoT2QgbnDU+MMzuR6BbCjllj0bM70lWoejMeNJAxCchxnv7J3XFkI8MpygtRpzXrIlmWUBclP5A=="], + + "@types/prop-types": ["@types/prop-types@15.7.14", "", {}, "sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ=="], + + "@types/qs": ["@types/qs@6.9.18", "", {}, "sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA=="], + + "@types/quill": ["@types/quill@1.3.10", "", { "dependencies": { "parchment": "^1.1.2" } }, "sha512-IhW3fPW+bkt9MLNlycw8u8fWb7oO7W5URC9MfZYHBlA24rex9rs23D5DETChu1zvgVdc5ka64ICjJOgQMr6Shw=="], + + "@types/range-parser": ["@types/range-parser@1.2.7", "", {}, "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ=="], + + "@types/react": ["@types/react@18.2.17", "", { "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", "csstype": "^3.0.2" } }, "sha512-u+e7OlgPPh+aryjOm5UJMX32OvB2E3QASOAqVMY6Ahs90djagxwv2ya0IctglNbNTexC12qCSMZG47KPfy1hAA=="], + + "@types/react-dom": ["@types/react-dom@18.2.7", "", { "dependencies": { "@types/react": "*" } }, "sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA=="], + + "@types/readable-stream": ["@types/readable-stream@4.0.18", "", { "dependencies": { "@types/node": "*", "safe-buffer": "~5.1.1" } }, "sha512-21jK/1j+Wg+7jVw1xnSwy/2Q1VgVjWuFssbYGTREPUBeZ+rqVFl2udq0IkxzPC0ZhOzVceUbyIACFZKLqKEBlA=="], + + "@types/scheduler": ["@types/scheduler@0.23.0", "", {}, "sha512-YIoDCTH3Af6XM5VuwGG/QL/CJqga1Zm3NkU3HZ4ZHK2fRMPYP1VczsTUqtsf43PH/iJNVlPHAo2oWX7BSdB2Hw=="], + + "@types/send": ["@types/send@0.17.4", "", { "dependencies": { "@types/mime": "^1", "@types/node": "*" } }, "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA=="], + + "@types/serve-static": ["@types/serve-static@1.15.7", "", { "dependencies": { "@types/http-errors": "*", "@types/node": "*", "@types/send": "*" } }, "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw=="], + + "@types/stack-utils": ["@types/stack-utils@2.0.3", "", {}, "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw=="], + + "@types/stylis": ["@types/stylis@4.2.5", "", {}, "sha512-1Xve+NMN7FWjY14vLoY5tL3BVEQ/n42YLwaqJIPYhotZ9uBHt87VceMwWQpzmdEt2TNXIorIFG+YeCUUW7RInw=="], + + "@types/supercluster": ["@types/supercluster@7.1.3", "", { "dependencies": { "@types/geojson": "*" } }, "sha512-Z0pOY34GDFl3Q6hUFYf3HkTwKEE02e7QgtJppBt+beEAxnyOpJua+voGFvxINBHa06GwLFFym7gRPY2SiKIfIA=="], + + "@types/triple-beam": ["@types/triple-beam@1.3.5", "", {}, "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw=="], + + "@types/use-sync-external-store": ["@types/use-sync-external-store@0.0.6", "", {}, "sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg=="], + + "@types/uuid": ["@types/uuid@9.0.8", "", {}, "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA=="], + + "@types/web-push": ["@types/web-push@3.6.4", "", { "dependencies": { "@types/node": "*" } }, "sha512-GnJmSr40H3RAnj0s34FNTcJi1hmWFV5KXugE0mYWnYhgTAHLJ/dJKAwDmvPJYMke0RplY2XE9LnM4hqSqKIjhQ=="], + + "@types/ws": ["@types/ws@8.5.14", "", { "dependencies": { "@types/node": "*" } }, "sha512-bd/YFLW+URhBzMXurx7lWByOu+xzU9+kb3RboOteXYDfW+tr+JZa99OyNmPINEGB/ahzKrEuc8rcv4gnpJmxTw=="], + + "@types/yargs": ["@types/yargs@17.0.33", "", { "dependencies": { "@types/yargs-parser": "*" } }, "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA=="], + + "@types/yargs-parser": ["@types/yargs-parser@21.0.3", "", {}, "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ=="], + + "@typescript-eslint/eslint-plugin": ["@typescript-eslint/eslint-plugin@7.18.0", "", { "dependencies": { "@eslint-community/regexpp": "^4.10.0", "@typescript-eslint/scope-manager": "7.18.0", "@typescript-eslint/type-utils": "7.18.0", "@typescript-eslint/utils": "7.18.0", "@typescript-eslint/visitor-keys": "7.18.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", "ts-api-utils": "^1.3.0" }, "peerDependencies": { "@typescript-eslint/parser": "^7.0.0", "eslint": "^8.56.0" } }, "sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw=="], + + "@typescript-eslint/parser": ["@typescript-eslint/parser@7.18.0", "", { "dependencies": { "@typescript-eslint/scope-manager": "7.18.0", "@typescript-eslint/types": "7.18.0", "@typescript-eslint/typescript-estree": "7.18.0", "@typescript-eslint/visitor-keys": "7.18.0", "debug": "^4.3.4" }, "peerDependencies": { "eslint": "^8.56.0" } }, "sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg=="], + + "@typescript-eslint/scope-manager": ["@typescript-eslint/scope-manager@7.18.0", "", { "dependencies": { "@typescript-eslint/types": "7.18.0", "@typescript-eslint/visitor-keys": "7.18.0" } }, "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA=="], + + "@typescript-eslint/type-utils": ["@typescript-eslint/type-utils@7.18.0", "", { "dependencies": { "@typescript-eslint/typescript-estree": "7.18.0", "@typescript-eslint/utils": "7.18.0", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, "peerDependencies": { "eslint": "^8.56.0" } }, "sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA=="], + + "@typescript-eslint/types": ["@typescript-eslint/types@7.18.0", "", {}, "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ=="], + + "@typescript-eslint/typescript-estree": ["@typescript-eslint/typescript-estree@7.18.0", "", { "dependencies": { "@typescript-eslint/types": "7.18.0", "@typescript-eslint/visitor-keys": "7.18.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", "ts-api-utils": "^1.3.0" } }, "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA=="], + + "@typescript-eslint/utils": ["@typescript-eslint/utils@7.18.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@typescript-eslint/scope-manager": "7.18.0", "@typescript-eslint/types": "7.18.0", "@typescript-eslint/typescript-estree": "7.18.0" }, "peerDependencies": { "eslint": "^8.56.0" } }, "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw=="], + + "@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@7.18.0", "", { "dependencies": { "@typescript-eslint/types": "7.18.0", "eslint-visitor-keys": "^3.4.3" } }, "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg=="], + + "@ungap/structured-clone": ["@ungap/structured-clone@1.3.0", "", {}, "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g=="], + + "@urql/core": ["@urql/core@5.1.0", "", { "dependencies": { "@0no-co/graphql.web": "^1.0.5", "wonka": "^6.3.2" } }, "sha512-yC3sw8yqjbX45GbXxfiBY8GLYCiyW/hLBbQF9l3TJrv4ro00Y0ChkKaD9I2KntRxAVm9IYBqh0awX8fwWAe/Yw=="], + + "@urql/exchange-retry": ["@urql/exchange-retry@1.3.0", "", { "dependencies": { "@urql/core": "^5.0.0", "wonka": "^6.3.2" } }, "sha512-FLt+d81gP4oiHah4hWFDApimc+/xABWMU1AMYsZ1PVB0L0YPtrMCjbOp9WMM7hBzy4gbTDrG24sio0dCfSh/HQ=="], + + "@xmldom/xmldom": ["@xmldom/xmldom@0.7.13", "", {}, "sha512-lm2GW5PkosIzccsaZIz7tp8cPADSIlIHWDFTR1N0SzfinhhYgeIQjFMz4rYzanCScr3DqQLeomUDArp6MWKm+g=="], + + "abbrev": ["abbrev@1.1.1", "", {}, "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="], + + "abort-controller": ["abort-controller@3.0.0", "", { "dependencies": { "event-target-shim": "^5.0.0" } }, "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg=="], + + "abs-svg-path": ["abs-svg-path@0.1.1", "", {}, "sha512-d8XPSGjfyzlXC3Xx891DJRyZfqk5JU0BJrDQcsWomFIV1/BIzPW5HDH5iDdWpqWaav0YVIEzT1RHTwWr0FFshA=="], + + "accepts": ["accepts@1.3.8", "", { "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" } }, "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw=="], + + "acorn": ["acorn@8.14.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA=="], + + "acorn-jsx": ["acorn-jsx@5.3.2", "", { "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ=="], + + "acorn-walk": ["acorn-walk@8.3.4", "", { "dependencies": { "acorn": "^8.11.0" } }, "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g=="], + + "agent-base": ["agent-base@7.1.3", "", {}, "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw=="], + + "agentkeepalive": ["agentkeepalive@4.6.0", "", { "dependencies": { "humanize-ms": "^1.2.1" } }, "sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ=="], + + "aggregate-error": ["aggregate-error@3.1.0", "", { "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" } }, "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA=="], + + "ajv": ["ajv@6.12.6", "", { "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g=="], + + "anser": ["anser@1.4.10", "", {}, "sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww=="], + + "ansi-escapes": ["ansi-escapes@6.2.1", "", {}, "sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig=="], + + "ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], + + "ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], + + "ansi-term": ["ansi-term@0.0.2", "", { "dependencies": { "x256": ">=0.0.1" } }, "sha512-jLnGE+n8uAjksTJxiWZf/kcUmXq+cRWSl550B9NmQ8YiqaTM+lILcSe5dHdp8QkJPhaOghDjnMKwyYSMjosgAA=="], + + "ansicolors": ["ansicolors@0.3.2", "", {}, "sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg=="], + + "any-promise": ["any-promise@1.3.0", "", {}, "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A=="], + + "anymatch": ["anymatch@3.1.3", "", { "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" } }, "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw=="], + + "app-root-path": ["app-root-path@3.1.0", "", {}, "sha512-biN3PwB2gUtjaYy/isrU3aNWI5w+fAfvHkSvCKeQGxhmYpwKFUxudR3Yya+KqVRHBmEDYh+/lTozYCFbmzX4nA=="], + + "application-config-path": ["application-config-path@0.1.1", "", {}, "sha512-zy9cHePtMP0YhwG+CfHm0bgwdnga2X3gZexpdCwEj//dpb+TKajtiC8REEUJUSq6Ab4f9cgNy2l8ObXzCXFkEw=="], + + "arg": ["arg@5.0.2", "", {}, "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg=="], + + "argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], + + "aria-hidden": ["aria-hidden@1.2.4", "", { "dependencies": { "tslib": "^2.0.0" } }, "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A=="], + + "aria-query": ["aria-query@5.3.2", "", {}, "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw=="], + + "arr-union": ["arr-union@3.1.0", "", {}, "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q=="], + + "array-buffer-byte-length": ["array-buffer-byte-length@1.0.2", "", { "dependencies": { "call-bound": "^1.0.3", "is-array-buffer": "^3.0.5" } }, "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw=="], + + "array-includes": ["array-includes@3.1.8", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-abstract": "^1.23.2", "es-object-atoms": "^1.0.0", "get-intrinsic": "^1.2.4", "is-string": "^1.0.7" } }, "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ=="], + + "array-parallel": ["array-parallel@0.1.3", "", {}, "sha512-TDPTwSWW5E4oiFiKmz6RGJ/a80Y91GuLgUYuLd49+XBS75tYo8PNgaT2K/OxuQYqkoI852MDGBorg9OcUSTQ8w=="], + + "array-series": ["array-series@0.1.5", "", {}, "sha512-L0XlBwfx9QetHOsbLDrE/vh2t018w9462HM3iaFfxRiK83aJjAt/Ja3NMkOW7FICwWTlQBa3ZbL5FKhuQWkDrg=="], + + "array-union": ["array-union@2.1.0", "", {}, "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw=="], + + "array.prototype.findlast": ["array.prototype.findlast@1.2.5", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-abstract": "^1.23.2", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "es-shim-unscopables": "^1.0.2" } }, "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ=="], + + "array.prototype.findlastindex": ["array.prototype.findlastindex@1.2.5", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-abstract": "^1.23.2", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "es-shim-unscopables": "^1.0.2" } }, "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ=="], + + "array.prototype.flat": ["array.prototype.flat@1.3.3", "", { "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-abstract": "^1.23.5", "es-shim-unscopables": "^1.0.2" } }, "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg=="], + + "array.prototype.flatmap": ["array.prototype.flatmap@1.3.3", "", { "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-abstract": "^1.23.5", "es-shim-unscopables": "^1.0.2" } }, "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg=="], + + "array.prototype.reduce": ["array.prototype.reduce@1.0.7", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-abstract": "^1.23.2", "es-array-method-boxes-properly": "^1.0.0", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "is-string": "^1.0.7" } }, "sha512-mzmiUCVwtiD4lgxYP8g7IYy8El8p2CSMePvIbTS7gchKir/L1fgJrk0yDKmAX6mnRQFKNADYIk8nNlTris5H1Q=="], + + "array.prototype.tosorted": ["array.prototype.tosorted@1.1.4", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-abstract": "^1.23.3", "es-errors": "^1.3.0", "es-shim-unscopables": "^1.0.2" } }, "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA=="], + + "arraybuffer.prototype.slice": ["arraybuffer.prototype.slice@1.0.4", "", { "dependencies": { "array-buffer-byte-length": "^1.0.1", "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-abstract": "^1.23.5", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6", "is-array-buffer": "^3.0.4" } }, "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ=="], + + "asap": ["asap@2.0.6", "", {}, "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA=="], + + "asn1.js": ["asn1.js@5.4.1", "", { "dependencies": { "bn.js": "^4.0.0", "inherits": "^2.0.1", "minimalistic-assert": "^1.0.0", "safer-buffer": "^2.1.0" } }, "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA=="], + + "asn1js": ["asn1js@3.0.5", "", { "dependencies": { "pvtsutils": "^1.3.2", "pvutils": "^1.1.3", "tslib": "^2.4.0" } }, "sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ=="], + + "assign-symbols": ["assign-symbols@1.0.0", "", {}, "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw=="], + + "ast-types": ["ast-types@0.16.1", "", { "dependencies": { "tslib": "^2.0.1" } }, "sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg=="], + + "ast-types-flow": ["ast-types-flow@0.0.8", "", {}, "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ=="], + + "async": ["async@3.2.6", "", {}, "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA=="], + + "async-function": ["async-function@1.0.0", "", {}, "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA=="], + + "async-limiter": ["async-limiter@1.0.1", "", {}, "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ=="], + + "asynckit": ["asynckit@0.4.0", "", {}, "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="], + + "at-least-node": ["at-least-node@1.0.0", "", {}, "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg=="], + + "autocannon": ["autocannon@7.15.0", "", { "dependencies": { "chalk": "^4.1.0", "char-spinner": "^1.0.1", "cli-table3": "^0.6.0", "color-support": "^1.1.1", "cross-argv": "^2.0.0", "form-data": "^4.0.0", "has-async-hooks": "^1.0.0", "hdr-histogram-js": "^3.0.0", "hdr-histogram-percentiles-obj": "^3.0.0", "http-parser-js": "^0.5.2", "hyperid": "^3.0.0", "lodash.chunk": "^4.2.0", "lodash.clonedeep": "^4.5.0", "lodash.flatten": "^4.4.0", "manage-path": "^2.0.0", "on-net-listen": "^1.1.1", "pretty-bytes": "^5.4.1", "progress": "^2.0.3", "reinterval": "^1.1.0", "retimer": "^3.0.0", "semver": "^7.3.2", "subarg": "^1.0.0", "timestring": "^6.0.0" }, "bin": { "autocannon": "autocannon.js" } }, "sha512-NaP2rQyA+tcubOJMFv2+oeW9jv2pq/t+LM6BL3cfJic0HEfscEcnWgAyU5YovE/oTHUzAgTliGdLPR+RQAWUbg=="], + + "autoprefixer": ["autoprefixer@10.4.14", "", { "dependencies": { "browserslist": "^4.21.5", "caniuse-lite": "^1.0.30001464", "fraction.js": "^4.2.0", "normalize-range": "^0.1.2", "picocolors": "^1.0.0", "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.1.0" }, "bin": { "autoprefixer": "bin/autoprefixer" } }, "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ=="], + + "available-typed-arrays": ["available-typed-arrays@1.0.7", "", { "dependencies": { "possible-typed-array-names": "^1.0.0" } }, "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ=="], + + "axe-core": ["axe-core@4.10.2", "", {}, "sha512-RE3mdQ7P3FRSe7eqCWoeQ/Z9QXrtniSjp1wUjt5nRC3WIpz5rSCve6o3fsZ2aCpJtrZjSZgjwXAoTO5k4tEI0w=="], + + "axios": ["axios@0.26.1", "", { "dependencies": { "follow-redirects": "^1.14.8" } }, "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA=="], + + "axobject-query": ["axobject-query@4.1.0", "", {}, "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ=="], + + "babel-core": ["babel-core@7.0.0-bridge.0", "", { "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg=="], + + "babel-jest": ["babel-jest@29.7.0", "", { "dependencies": { "@jest/transform": "^29.7.0", "@types/babel__core": "^7.1.14", "babel-plugin-istanbul": "^6.1.1", "babel-preset-jest": "^29.6.3", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "slash": "^3.0.0" }, "peerDependencies": { "@babel/core": "^7.8.0" } }, "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg=="], + + "babel-plugin-istanbul": ["babel-plugin-istanbul@6.1.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@istanbuljs/load-nyc-config": "^1.0.0", "@istanbuljs/schema": "^0.1.2", "istanbul-lib-instrument": "^5.0.4", "test-exclude": "^6.0.0" } }, "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA=="], + + "babel-plugin-jest-hoist": ["babel-plugin-jest-hoist@29.6.3", "", { "dependencies": { "@babel/template": "^7.3.3", "@babel/types": "^7.3.3", "@types/babel__core": "^7.1.14", "@types/babel__traverse": "^7.0.6" } }, "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg=="], + + "babel-plugin-macros": ["babel-plugin-macros@3.1.0", "", { "dependencies": { "@babel/runtime": "^7.12.5", "cosmiconfig": "^7.0.0", "resolve": "^1.19.0" } }, "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg=="], + + "babel-plugin-polyfill-corejs2": ["babel-plugin-polyfill-corejs2@0.4.12", "", { "dependencies": { "@babel/compat-data": "^7.22.6", "@babel/helper-define-polyfill-provider": "^0.6.3", "semver": "^6.3.1" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "sha512-CPWT6BwvhrTO2d8QVorhTCQw9Y43zOu7G9HigcfxvepOU6b8o3tcWad6oVgZIsZCTt42FFv97aA7ZJsbM4+8og=="], + + "babel-plugin-polyfill-corejs3": ["babel-plugin-polyfill-corejs3@0.11.1", "", { "dependencies": { "@babel/helper-define-polyfill-provider": "^0.6.3", "core-js-compat": "^3.40.0" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "sha512-yGCqvBT4rwMczo28xkH/noxJ6MZ4nJfkVYdoDaC/utLtWrXxv27HVrzAeSbqR8SxDsp46n0YF47EbHoixy6rXQ=="], + + "babel-plugin-polyfill-regenerator": ["babel-plugin-polyfill-regenerator@0.6.3", "", { "dependencies": { "@babel/helper-define-polyfill-provider": "^0.6.3" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "sha512-LiWSbl4CRSIa5x/JAU6jZiG9eit9w6mz+yVMFwDE83LAWvt0AfGBoZ7HS/mkhrKuh2ZlzfVZYKoLjXdqw6Yt7Q=="], + + "babel-plugin-react-native-web": ["babel-plugin-react-native-web@0.19.13", "", {}, "sha512-4hHoto6xaN23LCyZgL9LJZc3olmAxd7b6jDzlZnKXAh4rRAbZRKNBJoOOdp46OBqgy+K0t0guTj5/mhA8inymQ=="], + + "babel-plugin-syntax-hermes-parser": ["babel-plugin-syntax-hermes-parser@0.25.1", "", { "dependencies": { "hermes-parser": "0.25.1" } }, "sha512-IVNpGzboFLfXZUAwkLFcI/bnqVbwky0jP3eBno4HKtqvQJAHBLdgxiG6lQ4to0+Q/YCN3PO0od5NZwIKyY4REQ=="], + + "babel-plugin-transform-flow-enums": ["babel-plugin-transform-flow-enums@0.0.2", "", { "dependencies": { "@babel/plugin-syntax-flow": "^7.12.1" } }, "sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ=="], + + "babel-preset-current-node-syntax": ["babel-preset-current-node-syntax@1.1.0", "", { "dependencies": { "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-bigint": "^7.8.3", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-import-attributes": "^7.24.7", "@babel/plugin-syntax-import-meta": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", "@babel/plugin-syntax-numeric-separator": "^7.10.4", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", "@babel/plugin-syntax-optional-chaining": "^7.8.3", "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw=="], + + "babel-preset-expo": ["babel-preset-expo@12.0.9", "", { "dependencies": { "@babel/plugin-proposal-decorators": "^7.12.9", "@babel/plugin-transform-export-namespace-from": "^7.22.11", "@babel/plugin-transform-object-rest-spread": "^7.12.13", "@babel/plugin-transform-parameters": "^7.22.15", "@babel/preset-react": "^7.22.15", "@babel/preset-typescript": "^7.23.0", "@react-native/babel-preset": "0.76.7", "babel-plugin-react-native-web": "~0.19.13", "react-refresh": "^0.14.2" }, "peerDependencies": { "babel-plugin-react-compiler": "^19.0.0-beta-9ee70a1-20241017", "react-compiler-runtime": "^19.0.0-beta-8a03594-20241020" }, "optionalPeers": ["babel-plugin-react-compiler", "react-compiler-runtime"] }, "sha512-1c+ysrTavT49WgVAj0OX/TEzt1kU2mfPhDaDajstshNHXFKPenMPWSViA/DHrJKVIMwaqr+z3GbUOD9GtKgpdg=="], + + "babel-preset-jest": ["babel-preset-jest@29.6.3", "", { "dependencies": { "babel-plugin-jest-hoist": "^29.6.3", "babel-preset-current-node-syntax": "^1.0.0" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA=="], + + "balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], + + "base64-js": ["base64-js@1.5.1", "", {}, "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="], + + "before-after-hook": ["before-after-hook@3.0.2", "", {}, "sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A=="], + + "better-opn": ["better-opn@3.0.2", "", { "dependencies": { "open": "^8.0.4" } }, "sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ=="], + + "bidi-js": ["bidi-js@1.0.3", "", { "dependencies": { "require-from-string": "^2.0.2" } }, "sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw=="], + + "big-integer": ["big-integer@1.6.52", "", {}, "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg=="], + + "binary-extensions": ["binary-extensions@2.3.0", "", {}, "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw=="], + + "bl": ["bl@6.0.19", "", { "dependencies": { "@types/readable-stream": "^4.0.0", "buffer": "^6.0.3", "inherits": "^2.0.4", "readable-stream": "^4.2.0" } }, "sha512-4Ay3A3oDfGg3GGirhl4s62ebtnk0pJZA5mLp672MPKOQXsWvXjEF4dqdXySjJIs7b9OVr/O8aOo0Lm+xdjo2JA=="], + + "blessed": ["blessed@0.1.81", "", { "bin": { "blessed": "./bin/tput.js" } }, "sha512-LoF5gae+hlmfORcG1M5+5XZi4LBmvlXTzwJWzUlPryN/SJdSflZvROM2TwkT0GMpq7oqT48NRd4GS7BiVBc5OQ=="], + + "blessed-contrib": ["blessed-contrib@4.11.0", "", { "dependencies": { "ansi-term": ">=0.0.2", "chalk": "^1.1.0", "drawille-canvas-blessed-contrib": ">=0.1.3", "lodash": "~>=4.17.21", "map-canvas": ">=0.1.5", "marked": "^4.0.12", "marked-terminal": "^5.1.1", "memory-streams": "^0.1.0", "memorystream": "^0.3.1", "picture-tuber": "^1.0.1", "sparkline": "^0.1.1", "strip-ansi": "^3.0.0", "term-canvas": "0.0.5", "x256": ">=0.0.1" } }, "sha512-P00Xji3xPp53+FdU9f74WpvnOAn/SS0CKLy4vLAf5Ps7FGDOTY711ruJPZb3/7dpFuP+4i7f4a/ZTZdLlKG9WA=="], + + "bn.js": ["bn.js@4.12.1", "", {}, "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg=="], + + "bottleneck": ["bottleneck@2.19.5", "", {}, "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw=="], + + "bplist-creator": ["bplist-creator@0.0.7", "", { "dependencies": { "stream-buffers": "~2.2.0" } }, "sha512-xp/tcaV3T5PCiaY04mXga7o/TE+t95gqeLmADeBI1CvZtdWTbgBt3uLpvh4UWtenKeBhCV6oVxGk38yZr2uYEA=="], + + "bplist-parser": ["bplist-parser@0.3.2", "", { "dependencies": { "big-integer": "1.6.x" } }, "sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ=="], + + "brace-expansion": ["brace-expansion@1.1.11", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA=="], + + "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="], + + "bresenham": ["bresenham@0.0.3", "", {}, "sha512-wbMxoJJM1p3+6G7xEFXYNCJ30h2qkwmVxebkbwIl4OcnWtno5R3UT9VuYLfStlVNAQCmRjkGwjPFdfaPd4iNXw=="], + + "brotli": ["brotli@1.3.3", "", { "dependencies": { "base64-js": "^1.1.2" } }, "sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg=="], + + "browserify-zlib": ["browserify-zlib@0.2.0", "", { "dependencies": { "pako": "~1.0.5" } }, "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA=="], + + "browserslist": ["browserslist@4.24.4", "", { "dependencies": { "caniuse-lite": "^1.0.30001688", "electron-to-chromium": "^1.5.73", "node-releases": "^2.0.19", "update-browserslist-db": "^1.1.1" }, "bin": { "browserslist": "cli.js" } }, "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A=="], + + "bser": ["bser@2.1.1", "", { "dependencies": { "node-int64": "^0.4.0" } }, "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ=="], + + "buffer": ["buffer@6.0.3", "", { "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" } }, "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA=="], + + "buffer-alloc": ["buffer-alloc@1.2.0", "", { "dependencies": { "buffer-alloc-unsafe": "^1.1.0", "buffer-fill": "^1.0.0" } }, "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow=="], + + "buffer-alloc-unsafe": ["buffer-alloc-unsafe@1.1.0", "", {}, "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg=="], + + "buffer-equal-constant-time": ["buffer-equal-constant-time@1.0.1", "", {}, "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA=="], + + "buffer-fill": ["buffer-fill@1.0.0", "", {}, "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ=="], + + "buffer-from": ["buffer-from@0.1.2", "", {}, "sha512-RiWIenusJsmI2KcvqQABB83tLxCByE3upSP8QU3rJDMVFGPWLvPQJt/O1Su9moRWeH7d+Q2HYb68f6+v+tw2vg=="], + + "buffers": ["buffers@0.1.1", "", {}, "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ=="], + + "bufferutil": ["bufferutil@4.0.9", "", { "dependencies": { "node-gyp-build": "^4.3.0" } }, "sha512-WDtdLmJvAuNNPzByAYpRo2rF1Mmradw6gvWsQKf63476DDXmomT9zUiGypLcG4ibIM67vhAj8jJRdbmEws2Aqw=="], + + "bun": ["bun@1.2.4", "", { "optionalDependencies": { "@oven/bun-darwin-aarch64": "1.2.4", "@oven/bun-darwin-x64": "1.2.4", "@oven/bun-darwin-x64-baseline": "1.2.4", "@oven/bun-linux-aarch64": "1.2.4", "@oven/bun-linux-aarch64-musl": "1.2.4", "@oven/bun-linux-x64": "1.2.4", "@oven/bun-linux-x64-baseline": "1.2.4", "@oven/bun-linux-x64-musl": "1.2.4", "@oven/bun-linux-x64-musl-baseline": "1.2.4", "@oven/bun-windows-x64": "1.2.4", "@oven/bun-windows-x64-baseline": "1.2.4" }, "os": [ "linux", "win32", "darwin", ], "cpu": [ "x64", "arm64", ], "bin": { "bun": "bin/bun.exe", "bunx": "bin/bun.exe" } }, "sha512-ZY0EZ/UKqheaLeAtMsfJA6jWoWvV9HAtfFaOJSmS3LrNpFKs1Sg5fZLSsczN1h3a+Dtheo4O3p3ZYWrf40kRGw=="], + + "bun-types": ["bun-types@1.2.4", "", { "dependencies": { "@types/node": "*", "@types/ws": "~8.5.10" } }, "sha512-nDPymR207ZZEoWD4AavvEaa/KZe/qlrbMSchqpQwovPZCKc7pwMoENjEtHgMKaAjJhy+x6vfqSBA1QU3bJgs0Q=="], + + "busboy": ["busboy@1.6.0", "", { "dependencies": { "streamsearch": "^1.1.0" } }, "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA=="], + + "bytes": ["bytes@3.1.2", "", {}, "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="], + + "bytewise": ["bytewise@1.1.0", "", { "dependencies": { "bytewise-core": "^1.2.2", "typewise": "^1.0.3" } }, "sha512-rHuuseJ9iQ0na6UDhnrRVDh8YnWVlU6xM3VH6q/+yHDeUH2zIhUzP+2/h3LIrhLDBtTqzWpE3p3tP/boefskKQ=="], + + "bytewise-core": ["bytewise-core@1.2.3", "", { "dependencies": { "typewise-core": "^1.2" } }, "sha512-nZD//kc78OOxeYtRlVk8/zXqTB4gf/nlguL1ggWA8FuchMyOxcyHR4QPQZMUmA7czC+YnaBrPUCubqAWe50DaA=="], + + "cacache": ["cacache@18.0.4", "", { "dependencies": { "@npmcli/fs": "^3.1.0", "fs-minipass": "^3.0.0", "glob": "^10.2.2", "lru-cache": "^10.0.1", "minipass": "^7.0.3", "minipass-collect": "^2.0.1", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", "p-map": "^4.0.0", "ssri": "^10.0.0", "tar": "^6.1.11", "unique-filename": "^3.0.0" } }, "sha512-B+L5iIa9mgcjLbliir2th36yEwPftrzteHYujzsx3dFP/31GCHcIeS8f5MGd80odLOjaOvSpU3EEAmRQptkxLQ=="], + + "call-bind": ["call-bind@1.0.8", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.0", "es-define-property": "^1.0.0", "get-intrinsic": "^1.2.4", "set-function-length": "^1.2.2" } }, "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww=="], + + "call-bind-apply-helpers": ["call-bind-apply-helpers@1.0.2", "", { "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" } }, "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ=="], + + "call-bound": ["call-bound@1.0.3", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.1", "get-intrinsic": "^1.2.6" } }, "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA=="], + + "caller-callsite": ["caller-callsite@2.0.0", "", { "dependencies": { "callsites": "^2.0.0" } }, "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ=="], + + "caller-path": ["caller-path@2.0.0", "", { "dependencies": { "caller-callsite": "^2.0.0" } }, "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A=="], + + "callsites": ["callsites@3.1.0", "", {}, "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="], + + "camelcase": ["camelcase@6.3.0", "", {}, "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA=="], + + "camelcase-css": ["camelcase-css@2.0.1", "", {}, "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA=="], + + "camelize": ["camelize@1.0.1", "", {}, "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ=="], + + "caniuse-lite": ["caniuse-lite@1.0.30001701", "", {}, "sha512-faRs/AW3jA9nTwmJBSO1PQ6L/EOgsB5HMQQq4iCu5zhPgVVgO/pZRHlmatwijZKetFw8/Pr4q6dEN8sJuq8qTw=="], + + "canvas": ["canvas@3.1.0", "", { "dependencies": { "node-addon-api": "^7.0.0", "prebuild-install": "^7.1.1" } }, "sha512-tTj3CqqukVJ9NgSahykNwtGda7V33VLObwrHfzT0vqJXu7J4d4C/7kQQW3fOEGDfZZoILPut5H00gOjyttPGyg=="], + + "cardinal": ["cardinal@2.1.1", "", { "dependencies": { "ansicolors": "~0.3.2", "redeyed": "~2.1.0" }, "bin": { "cdl": "./bin/cdl.js" } }, "sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw=="], + + "chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], + + "char-spinner": ["char-spinner@1.0.1", "", {}, "sha512-acv43vqJ0+N0rD+Uw3pDHSxP30FHrywu2NO6/wBaHChJIizpDeBUd6NjqhNhy9LGaEAhZAXn46QzmlAvIWd16g=="], + + "charenc": ["charenc@0.0.2", "", {}, "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA=="], + + "charm": ["charm@0.1.2", "", {}, "sha512-syedaZ9cPe7r3hoQA9twWYKu5AIyCswN5+szkmPBe9ccdLrj4bYaCnLVPTLd2kgVRc7+zoX4tyPgRnFKCj5YjQ=="], + + "cheap-ruler": ["cheap-ruler@4.0.0", "", {}, "sha512-0BJa8f4t141BYKQyn9NSQt1PguFQXMXwZiA5shfoaBYHAb2fFk2RAX+tiWMoQU+Agtzt3mdt0JtuyshAXqZ+Vw=="], + + "chokidar": ["chokidar@3.6.0", "", { "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.6.0" }, "optionalDependencies": { "fsevents": "~2.3.2" } }, "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw=="], + + "chownr": ["chownr@2.0.0", "", {}, "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ=="], + + "chrome-launcher": ["chrome-launcher@0.15.2", "", { "dependencies": { "@types/node": "*", "escape-string-regexp": "^4.0.0", "is-wsl": "^2.2.0", "lighthouse-logger": "^1.0.0" }, "bin": { "print-chrome-path": "bin/print-chrome-path.js" } }, "sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ=="], + + "chromium-edge-launcher": ["chromium-edge-launcher@0.2.0", "", { "dependencies": { "@types/node": "*", "escape-string-regexp": "^4.0.0", "is-wsl": "^2.2.0", "lighthouse-logger": "^1.0.0", "mkdirp": "^1.0.4", "rimraf": "^3.0.2" } }, "sha512-JfJjUnq25y9yg4FABRRVPmBGWPZZi+AQXT4mxupb67766/0UlhG8PAZCz6xzEMXTbW3CsSoE8PcCWA49n35mKg=="], + + "ci-info": ["ci-info@3.9.0", "", {}, "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ=="], + + "classnames": ["classnames@2.5.1", "", {}, "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow=="], + + "clean-stack": ["clean-stack@2.2.0", "", {}, "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A=="], + + "cli-cursor": ["cli-cursor@2.1.0", "", { "dependencies": { "restore-cursor": "^2.0.0" } }, "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw=="], + + "cli-progress": ["cli-progress@3.12.0", "", { "dependencies": { "string-width": "^4.2.3" } }, "sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A=="], + + "cli-spinners": ["cli-spinners@2.9.2", "", {}, "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg=="], + + "cli-table3": ["cli-table3@0.6.5", "", { "dependencies": { "string-width": "^4.2.0" }, "optionalDependencies": { "@colors/colors": "1.5.0" } }, "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ=="], + + "client-only": ["client-only@0.0.1", "", {}, "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA=="], + + "cliui": ["cliui@8.0.1", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" } }, "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ=="], + + "clone": ["clone@2.1.2", "", {}, "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w=="], + + "clone-deep": ["clone-deep@4.0.1", "", { "dependencies": { "is-plain-object": "^2.0.4", "kind-of": "^6.0.2", "shallow-clone": "^3.0.0" } }, "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ=="], + + "clsx": ["clsx@2.1.1", "", {}, "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA=="], + + "color": ["color@4.2.3", "", { "dependencies": { "color-convert": "^2.0.1", "color-string": "^1.9.0" } }, "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A=="], + + "color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="], + + "color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="], + + "color-string": ["color-string@1.9.1", "", { "dependencies": { "color-name": "^1.0.0", "simple-swizzle": "^0.2.2" } }, "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg=="], + + "color-support": ["color-support@1.1.3", "", { "bin": { "color-support": "bin.js" } }, "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg=="], + + "colors": ["colors@1.4.0", "", {}, "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA=="], + + "colors-cli": ["colors-cli@1.0.33", "", { "bin": { "colors": "bin/colors" } }, "sha512-PWGsmoJFdOB0t+BeHgmtuoRZUQucOLl5ii81NBzOOGVxlgE04muFNHlR5j8i8MKbOPELBl3243AI6lGBTj5ICQ=="], + + "colorspace": ["colorspace@1.1.4", "", { "dependencies": { "color": "^3.1.3", "text-hex": "1.0.x" } }, "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w=="], + + "combined-stream": ["combined-stream@1.0.8", "", { "dependencies": { "delayed-stream": "~1.0.0" } }, "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg=="], + + "command-exists": ["command-exists@1.2.9", "", {}, "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w=="], + + "commander": ["commander@12.1.0", "", {}, "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA=="], + + "commist": ["commist@3.2.0", "", {}, "sha512-4PIMoPniho+LqXmpS5d3NuGYncG6XWlkBSVGiWycL22dd42OYdUGil2CWuzklaJoNxyxUSpO4MKIBU94viWNAw=="], + + "commondir": ["commondir@1.0.1", "", {}, "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg=="], + + "component-type": ["component-type@1.2.2", "", {}, "sha512-99VUHREHiN5cLeHm3YLq312p6v+HUEcwtLCAtelvUDI6+SH5g5Cr85oNR2S1o6ywzL0ykMbuwLzM2ANocjEOIA=="], + + "compressible": ["compressible@2.0.18", "", { "dependencies": { "mime-db": ">= 1.43.0 < 2" } }, "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg=="], + + "compression": ["compression@1.8.0", "", { "dependencies": { "bytes": "3.1.2", "compressible": "~2.0.18", "debug": "2.6.9", "negotiator": "~0.6.4", "on-headers": "~1.0.2", "safe-buffer": "5.2.1", "vary": "~1.1.2" } }, "sha512-k6WLKfunuqCYD3t6AsuPGvQWaKwuLLh2/xHNcX4qE+vIfDNXpSqnrhwA7O53R7WVQUnt8dVAIW+YHr7xTgOgGA=="], + + "concat-map": ["concat-map@0.0.1", "", {}, "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="], + + "concat-stream": ["concat-stream@2.0.0", "", { "dependencies": { "buffer-from": "^1.0.0", "inherits": "^2.0.3", "readable-stream": "^3.0.2", "typedarray": "^0.0.6" } }, "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A=="], + + "connect": ["connect@3.7.0", "", { "dependencies": { "debug": "2.6.9", "finalhandler": "1.1.2", "parseurl": "~1.3.3", "utils-merge": "1.0.1" } }, "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ=="], + + "convert-source-map": ["convert-source-map@1.9.0", "", {}, "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A=="], + + "cookie": ["cookie@0.5.0", "", {}, "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw=="], + + "core-js": ["core-js@3.40.0", "", {}, "sha512-7vsMc/Lty6AGnn7uFpYT56QesI5D2Y/UkgKounk87OP9Z2H9Z8kj6jzcSGAxFmUtDOS0ntK6lbQz+Nsa0Jj6mQ=="], + + "core-js-compat": ["core-js-compat@3.40.0", "", { "dependencies": { "browserslist": "^4.24.3" } }, "sha512-0XEDpr5y5mijvw8Lbc6E5AkjrHfp7eEoPlu36SWeAbcL8fn1G1ANe8DBlo2XoNN89oVpxWwOjYIPVzR4ZvsKCQ=="], + + "core-util-is": ["core-util-is@1.0.3", "", {}, "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="], + + "cosmiconfig": ["cosmiconfig@7.1.0", "", { "dependencies": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.2.1", "parse-json": "^5.0.0", "path-type": "^4.0.0", "yaml": "^1.10.0" } }, "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA=="], + + "create-require": ["create-require@1.1.1", "", {}, "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ=="], + + "crelt": ["crelt@1.0.6", "", {}, "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g=="], + + "cross-argv": ["cross-argv@2.0.0", "", {}, "sha512-YIaY9TR5Nxeb8SMdtrU8asWVM4jqJDNDYlKV21LxtYcfNJhp1kEsgSa6qXwXgzN0WQWGODps0+TlGp2xQSHwOg=="], + + "cross-fetch": ["cross-fetch@3.2.0", "", { "dependencies": { "node-fetch": "^2.7.0" } }, "sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q=="], + + "cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="], + + "crypt": ["crypt@0.0.2", "", {}, "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow=="], + + "crypto-js": ["crypto-js@4.2.0", "", {}, "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q=="], + + "crypto-random-string": ["crypto-random-string@2.0.0", "", {}, "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA=="], + + "css-color-keywords": ["css-color-keywords@1.0.0", "", {}, "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg=="], + + "css-in-js-utils": ["css-in-js-utils@3.1.0", "", { "dependencies": { "hyphenate-style-name": "^1.0.3" } }, "sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A=="], + + "css-to-react-native": ["css-to-react-native@3.2.0", "", { "dependencies": { "camelize": "^1.0.0", "css-color-keywords": "^1.0.0", "postcss-value-parser": "^4.0.2" } }, "sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ=="], + + "csscolorparser": ["csscolorparser@1.0.3", "", {}, "sha512-umPSgYwZkdFoUrH5hIq5kf0wPSXiro51nPw0j2K/c83KflkPSTBGMz6NJvMB+07VlL0y7VPo6QJcDjcgKTTm3w=="], + + "cssesc": ["cssesc@3.0.0", "", { "bin": { "cssesc": "bin/cssesc" } }, "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg=="], + + "csstype": ["csstype@3.1.3", "", {}, "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="], + + "damerau-levenshtein": ["damerau-levenshtein@1.0.8", "", {}, "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA=="], + + "data-uri-to-buffer": ["data-uri-to-buffer@4.0.1", "", {}, "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A=="], + + "data-view-buffer": ["data-view-buffer@1.0.2", "", { "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "is-data-view": "^1.0.2" } }, "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ=="], + + "data-view-byte-length": ["data-view-byte-length@1.0.2", "", { "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "is-data-view": "^1.0.2" } }, "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ=="], + + "data-view-byte-offset": ["data-view-byte-offset@1.0.1", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "is-data-view": "^1.0.1" } }, "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ=="], + + "date-fns": ["date-fns@4.1.0", "", {}, "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg=="], + + "dayjs": ["dayjs@1.11.13", "", {}, "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg=="], + + "debug": ["debug@4.4.0", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA=="], + + "decompress-response": ["decompress-response@6.0.0", "", { "dependencies": { "mimic-response": "^3.1.0" } }, "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ=="], + + "dedent": ["dedent@1.5.3", "", { "peerDependencies": { "babel-plugin-macros": "^3.1.0" }, "optionalPeers": ["babel-plugin-macros"] }, "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ=="], + + "deep-equal": ["deep-equal@1.1.2", "", { "dependencies": { "is-arguments": "^1.1.1", "is-date-object": "^1.0.5", "is-regex": "^1.1.4", "object-is": "^1.1.5", "object-keys": "^1.1.1", "regexp.prototype.flags": "^1.5.1" } }, "sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg=="], + + "deep-extend": ["deep-extend@0.6.0", "", {}, "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA=="], + + "deep-is": ["deep-is@0.1.4", "", {}, "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="], + + "deepmerge": ["deepmerge@4.3.1", "", {}, "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A=="], + + "default-gateway": ["default-gateway@4.2.0", "", { "dependencies": { "execa": "^1.0.0", "ip-regex": "^2.1.0" } }, "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA=="], + + "defaults": ["defaults@1.0.4", "", { "dependencies": { "clone": "^1.0.2" } }, "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A=="], + + "define-data-property": ["define-data-property@1.1.4", "", { "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", "gopd": "^1.0.1" } }, "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A=="], + + "define-lazy-prop": ["define-lazy-prop@2.0.0", "", {}, "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og=="], + + "define-properties": ["define-properties@1.2.1", "", { "dependencies": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" } }, "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg=="], + + "del": ["del@6.1.1", "", { "dependencies": { "globby": "^11.0.1", "graceful-fs": "^4.2.4", "is-glob": "^4.0.1", "is-path-cwd": "^2.2.0", "is-path-inside": "^3.0.2", "p-map": "^4.0.0", "rimraf": "^3.0.2", "slash": "^3.0.0" } }, "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg=="], + + "delayed-stream": ["delayed-stream@1.0.0", "", {}, "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="], + + "depd": ["depd@2.0.0", "", {}, "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="], + + "dequal": ["dequal@2.0.3", "", {}, "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA=="], + + "destroy": ["destroy@1.2.0", "", {}, "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg=="], + + "detect-libc": ["detect-libc@2.0.3", "", {}, "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw=="], + + "detect-node-es": ["detect-node-es@1.1.0", "", {}, "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ=="], + + "dfa": ["dfa@1.2.0", "", {}, "sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q=="], + + "didyoumean": ["didyoumean@1.2.2", "", {}, "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw=="], + + "diff": ["diff@4.0.2", "", {}, "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A=="], + + "dir-glob": ["dir-glob@3.0.1", "", { "dependencies": { "path-type": "^4.0.0" } }, "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA=="], + + "directory-import": ["directory-import@3.3.2", "", {}, "sha512-dSApZXgx29qO/6AVigdsoC6HSvaHWinJ4HTRPKrlMAxX71FgPzn/WEWbgM+aB1PlKD9IfSC3Ir2ouYYQR1uy+g=="], + + "dlv": ["dlv@1.1.3", "", {}, "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA=="], + + "doctrine": ["doctrine@3.0.0", "", { "dependencies": { "esutils": "^2.0.2" } }, "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w=="], + + "dom-helpers": ["dom-helpers@5.2.1", "", { "dependencies": { "@babel/runtime": "^7.8.7", "csstype": "^3.0.2" } }, "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA=="], + + "dom-serializer": ["dom-serializer@1.4.1", "", { "dependencies": { "domelementtype": "^2.0.1", "domhandler": "^4.2.0", "entities": "^2.0.0" } }, "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag=="], + + "domelementtype": ["domelementtype@2.3.0", "", {}, "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw=="], + + "domhandler": ["domhandler@4.3.1", "", { "dependencies": { "domelementtype": "^2.2.0" } }, "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ=="], + + "domutils": ["domutils@2.8.0", "", { "dependencies": { "dom-serializer": "^1.0.1", "domelementtype": "^2.2.0", "domhandler": "^4.2.0" } }, "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A=="], + + "dotenv": ["dotenv@16.4.7", "", {}, "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ=="], + + "dotenv-expand": ["dotenv-expand@11.0.7", "", { "dependencies": { "dotenv": "^16.4.5" } }, "sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA=="], + + "drawille-blessed-contrib": ["drawille-blessed-contrib@1.0.0", "", {}, "sha512-WnHMgf5en/hVOsFhxLI8ZX0qTJmerOsVjIMQmn4cR1eI8nLGu+L7w5ENbul+lZ6w827A3JakCuernES5xbHLzQ=="], + + "drawille-canvas-blessed-contrib": ["drawille-canvas-blessed-contrib@0.1.3", "", { "dependencies": { "ansi-term": ">=0.0.2", "bresenham": "0.0.3", "drawille-blessed-contrib": ">=0.0.1", "gl-matrix": "^2.1.0", "x256": ">=0.0.1" } }, "sha512-bdDvVJOxlrEoPLifGDPaxIzFh3cD7QH05ePoQ4fwnqfi08ZSxzEhOUpI5Z0/SQMlWgcCQOEtuw0zrwezacXglw=="], + + "dunder-proto": ["dunder-proto@1.0.1", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", "gopd": "^1.2.0" } }, "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A=="], + + "duplexer2": ["duplexer2@0.1.4", "", { "dependencies": { "readable-stream": "^2.0.2" } }, "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA=="], + + "earcut": ["earcut@3.0.1", "", {}, "sha512-0l1/0gOjESMeQyYaK5IDiPNvFeu93Z/cO0TjZh9eZ1vyCtZnA7KMZ8rQggpsJHIbGSdrqYq9OhuveadOVHCshw=="], + + "eastasianwidth": ["eastasianwidth@0.2.0", "", {}, "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="], + + "ecdsa-sig-formatter": ["ecdsa-sig-formatter@1.0.11", "", { "dependencies": { "safe-buffer": "^5.0.1" } }, "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ=="], + + "echarts": ["echarts@5.6.0", "", { "dependencies": { "tslib": "2.3.0", "zrender": "5.6.1" } }, "sha512-oTbVTsXfKuEhxftHqL5xprgLoc0k7uScAwtryCgWF6hPYFLRwOUHiFmHGCBKP5NPFNkDVopOieyUqYGH8Fa3kA=="], + + "echarts-for-react": ["echarts-for-react@3.0.2", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "size-sensor": "^1.0.1" }, "peerDependencies": { "echarts": "^3.0.0 || ^4.0.0 || ^5.0.0", "react": "^15.0.0 || >=16.0.0" } }, "sha512-DRwIiTzx8JfwPOVgGttDytBqdp5VzCSyMRIxubgU/g2n9y3VLUmF2FK7Icmg/sNVkv4+rktmrLN9w22U2yy3fA=="], + + "ee-first": ["ee-first@1.1.1", "", {}, "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="], + + "electron-to-chromium": ["electron-to-chromium@1.5.108", "", {}, "sha512-tiGxpQmvXBEzrfU5ertmbCV/nG5yqCkC1G4T1SIKP335Y5rjXzPWmijR6XcoGXZvVoo4dknfdNe4Tl7lcIROLg=="], + + "embla-carousel": ["embla-carousel@8.5.2", "", {}, "sha512-xQ9oVLrun/eCG/7ru3R+I5bJ7shsD8fFwLEY7yPe27/+fDHCNj0OT5EoG5ZbFyOxOcG6yTwW8oTz/dWyFnyGpg=="], + + "embla-carousel-react": ["embla-carousel-react@8.5.2", "", { "dependencies": { "embla-carousel": "8.5.2", "embla-carousel-reactive-utils": "8.5.2" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.1 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" } }, "sha512-Tmx+uY3MqseIGdwp0ScyUuxpBgx5jX1f7od4Cm5mDwg/dptEiTKf9xp6tw0lZN2VA9JbnVMl/aikmbc53c6QFA=="], + + "embla-carousel-reactive-utils": ["embla-carousel-reactive-utils@8.5.2", "", { "peerDependencies": { "embla-carousel": "8.5.2" } }, "sha512-QC8/hYSK/pEmqEdU1IO5O+XNc/Ptmmq7uCB44vKplgLKhB/l0+yvYx0+Cv0sF6Ena8Srld5vUErZkT+yTahtDg=="], + + "emoji-regex": ["emoji-regex@10.4.0", "", {}, "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw=="], + + "enabled": ["enabled@2.0.0", "", {}, "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ=="], + + "encodeurl": ["encodeurl@2.0.0", "", {}, "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg=="], + + "end-of-stream": ["end-of-stream@1.4.4", "", { "dependencies": { "once": "^1.4.0" } }, "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q=="], + + "engine.io-client": ["engine.io-client@6.6.3", "", { "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1", "engine.io-parser": "~5.2.1", "ws": "~8.17.1", "xmlhttprequest-ssl": "~2.1.1" } }, "sha512-T0iLjnyNWahNyv/lcjS2y4oE358tVS/SYQNxYXGAJ9/GLgH4VCvOQ/mhTjqU88mLZCQgiG8RIegFHYCdVC+j5w=="], + + "engine.io-parser": ["engine.io-parser@5.2.3", "", {}, "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q=="], + + "enhanced-resolve": ["enhanced-resolve@5.18.1", "", { "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" } }, "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg=="], + + "entities": ["entities@4.5.0", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="], + + "env-editor": ["env-editor@0.4.2", "", {}, "sha512-ObFo8v4rQJAE59M69QzwloxPZtd33TpYEIjtKD1rrFDcM1Gd7IkDxEBU+HriziN6HSHQnBJi8Dmy+JWkav5HKA=="], + + "eol": ["eol@0.9.1", "", {}, "sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg=="], + + "error-ex": ["error-ex@1.3.2", "", { "dependencies": { "is-arrayish": "^0.2.1" } }, "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g=="], + + "error-stack-parser": ["error-stack-parser@2.1.4", "", { "dependencies": { "stackframe": "^1.3.4" } }, "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ=="], + + "es-abstract": ["es-abstract@1.23.9", "", { "dependencies": { "array-buffer-byte-length": "^1.0.2", "arraybuffer.prototype.slice": "^1.0.4", "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", "call-bound": "^1.0.3", "data-view-buffer": "^1.0.2", "data-view-byte-length": "^1.0.2", "data-view-byte-offset": "^1.0.1", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "es-set-tostringtag": "^2.1.0", "es-to-primitive": "^1.3.0", "function.prototype.name": "^1.1.8", "get-intrinsic": "^1.2.7", "get-proto": "^1.0.0", "get-symbol-description": "^1.1.0", "globalthis": "^1.0.4", "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", "has-proto": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "internal-slot": "^1.1.0", "is-array-buffer": "^3.0.5", "is-callable": "^1.2.7", "is-data-view": "^1.0.2", "is-regex": "^1.2.1", "is-shared-array-buffer": "^1.0.4", "is-string": "^1.1.1", "is-typed-array": "^1.1.15", "is-weakref": "^1.1.0", "math-intrinsics": "^1.1.0", "object-inspect": "^1.13.3", "object-keys": "^1.1.1", "object.assign": "^4.1.7", "own-keys": "^1.0.1", "regexp.prototype.flags": "^1.5.3", "safe-array-concat": "^1.1.3", "safe-push-apply": "^1.0.0", "safe-regex-test": "^1.1.0", "set-proto": "^1.0.0", "string.prototype.trim": "^1.2.10", "string.prototype.trimend": "^1.0.9", "string.prototype.trimstart": "^1.0.8", "typed-array-buffer": "^1.0.3", "typed-array-byte-length": "^1.0.3", "typed-array-byte-offset": "^1.0.4", "typed-array-length": "^1.0.7", "unbox-primitive": "^1.1.0", "which-typed-array": "^1.1.18" } }, "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA=="], + + "es-array-method-boxes-properly": ["es-array-method-boxes-properly@1.0.0", "", {}, "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA=="], + + "es-define-property": ["es-define-property@1.0.1", "", {}, "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g=="], + + "es-errors": ["es-errors@1.3.0", "", {}, "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw=="], + + "es-iterator-helpers": ["es-iterator-helpers@1.2.1", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "es-abstract": "^1.23.6", "es-errors": "^1.3.0", "es-set-tostringtag": "^2.0.3", "function-bind": "^1.1.2", "get-intrinsic": "^1.2.6", "globalthis": "^1.0.4", "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", "has-proto": "^1.2.0", "has-symbols": "^1.1.0", "internal-slot": "^1.1.0", "iterator.prototype": "^1.1.4", "safe-array-concat": "^1.1.3" } }, "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w=="], + + "es-object-atoms": ["es-object-atoms@1.1.1", "", { "dependencies": { "es-errors": "^1.3.0" } }, "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA=="], + + "es-set-tostringtag": ["es-set-tostringtag@2.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6", "has-tostringtag": "^1.0.2", "hasown": "^2.0.2" } }, "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA=="], + + "es-shim-unscopables": ["es-shim-unscopables@1.1.0", "", { "dependencies": { "hasown": "^2.0.2" } }, "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw=="], + + "es-to-primitive": ["es-to-primitive@1.3.0", "", { "dependencies": { "is-callable": "^1.2.7", "is-date-object": "^1.0.5", "is-symbol": "^1.0.4" } }, "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g=="], + + "es7-shim": ["es7-shim@6.0.0", "", { "dependencies": { "array-includes": "^3.0.2", "object.entries": "^1.0.3", "object.getownpropertydescriptors": "^2.0.2", "object.values": "^1.0.3", "string-at": "^1.0.1", "string.prototype.padend": "^3.0.0", "string.prototype.padstart": "^3.0.0", "string.prototype.trimleft": "^2.0.0", "string.prototype.trimright": "^2.0.0" } }, "sha512-aiQ/QyJBVJbabtsSediM1S4qI+P3p8F5J5YR5o/bH003BCnnclzxK9pi5Qd2Hg01ktAtZCaQBdejHrkOBGwf5Q=="], + + "esbuild": ["esbuild@0.25.0", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.0", "@esbuild/android-arm": "0.25.0", "@esbuild/android-arm64": "0.25.0", "@esbuild/android-x64": "0.25.0", "@esbuild/darwin-arm64": "0.25.0", "@esbuild/darwin-x64": "0.25.0", "@esbuild/freebsd-arm64": "0.25.0", "@esbuild/freebsd-x64": "0.25.0", "@esbuild/linux-arm": "0.25.0", "@esbuild/linux-arm64": "0.25.0", "@esbuild/linux-ia32": "0.25.0", "@esbuild/linux-loong64": "0.25.0", "@esbuild/linux-mips64el": "0.25.0", "@esbuild/linux-ppc64": "0.25.0", "@esbuild/linux-riscv64": "0.25.0", "@esbuild/linux-s390x": "0.25.0", "@esbuild/linux-x64": "0.25.0", "@esbuild/netbsd-arm64": "0.25.0", "@esbuild/netbsd-x64": "0.25.0", "@esbuild/openbsd-arm64": "0.25.0", "@esbuild/openbsd-x64": "0.25.0", "@esbuild/sunos-x64": "0.25.0", "@esbuild/win32-arm64": "0.25.0", "@esbuild/win32-ia32": "0.25.0", "@esbuild/win32-x64": "0.25.0" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw=="], + + "esbuild-register": ["esbuild-register@3.6.0", "", { "dependencies": { "debug": "^4.3.4" }, "peerDependencies": { "esbuild": ">=0.12 <1" } }, "sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg=="], + + "escalade": ["escalade@3.2.0", "", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="], + + "escape-html": ["escape-html@1.0.3", "", {}, "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="], + + "escape-string-regexp": ["escape-string-regexp@4.0.0", "", {}, "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="], + + "eslint": ["eslint@8.57.1", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", "@eslint/eslintrc": "^2.1.4", "@eslint/js": "8.57.1", "@humanwhocodes/config-array": "^0.13.0", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", "@ungap/structured-clone": "^1.2.0", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", "eslint-scope": "^7.2.2", "eslint-visitor-keys": "^3.4.3", "espree": "^9.6.1", "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "find-up": "^5.0.0", "glob-parent": "^6.0.2", "globals": "^13.19.0", "graphemer": "^1.4.0", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "is-path-inside": "^3.0.3", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.3", "strip-ansi": "^6.0.1", "text-table": "^0.2.0" }, "bin": { "eslint": "bin/eslint.js" } }, "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA=="], + + "eslint-config-next": ["eslint-config-next@13.5.8", "", { "dependencies": { "@next/eslint-plugin-next": "13.5.8", "@rushstack/eslint-patch": "^1.3.3", "@typescript-eslint/parser": "^5.4.2 || ^6.0.0", "eslint-import-resolver-node": "^0.3.6", "eslint-import-resolver-typescript": "^3.5.2", "eslint-plugin-import": "^2.28.1", "eslint-plugin-jsx-a11y": "^6.7.1", "eslint-plugin-react": "^7.33.2", "eslint-plugin-react-hooks": "^4.5.0 || 5.0.0-canary-7118f5dd7-20230705" }, "peerDependencies": { "eslint": "^7.23.0 || ^8.0.0", "typescript": ">=3.3.1" }, "optionalPeers": ["typescript"] }, "sha512-EpNu08GB4KT377oDOQ6bi6icQFBgXcynqCE2neCu138k2Hsfr2i+5goUrRhz3YReDXB3YhelvQJLxm2apr3Gdw=="], + + "eslint-import-resolver-node": ["eslint-import-resolver-node@0.3.9", "", { "dependencies": { "debug": "^3.2.7", "is-core-module": "^2.13.0", "resolve": "^1.22.4" } }, "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g=="], + + "eslint-import-resolver-typescript": ["eslint-import-resolver-typescript@3.8.3", "", { "dependencies": { "@nolyfill/is-core-module": "1.0.39", "debug": "^4.3.7", "enhanced-resolve": "^5.15.0", "get-tsconfig": "^4.10.0", "is-bun-module": "^1.0.2", "stable-hash": "^0.0.4", "tinyglobby": "^0.2.12" }, "peerDependencies": { "eslint": "*", "eslint-plugin-import": "*", "eslint-plugin-import-x": "*" }, "optionalPeers": ["eslint-plugin-import", "eslint-plugin-import-x"] }, "sha512-A0bu4Ks2QqDWNpeEgTQMPTngaMhuDu4yv6xpftBMAf+1ziXnpx+eSR1WRfoPTe2BAiAjHFZ7kSNx1fvr5g5pmQ=="], + + "eslint-module-utils": ["eslint-module-utils@2.12.0", "", { "dependencies": { "debug": "^3.2.7" } }, "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg=="], + + "eslint-plugin-import": ["eslint-plugin-import@2.31.0", "", { "dependencies": { "@rtsao/scc": "^1.1.0", "array-includes": "^3.1.8", "array.prototype.findlastindex": "^1.2.5", "array.prototype.flat": "^1.3.2", "array.prototype.flatmap": "^1.3.2", "debug": "^3.2.7", "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.9", "eslint-module-utils": "^2.12.0", "hasown": "^2.0.2", "is-core-module": "^2.15.1", "is-glob": "^4.0.3", "minimatch": "^3.1.2", "object.fromentries": "^2.0.8", "object.groupby": "^1.0.3", "object.values": "^1.2.0", "semver": "^6.3.1", "string.prototype.trimend": "^1.0.8", "tsconfig-paths": "^3.15.0" }, "peerDependencies": { "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" } }, "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A=="], + + "eslint-plugin-jsx-a11y": ["eslint-plugin-jsx-a11y@6.10.2", "", { "dependencies": { "aria-query": "^5.3.2", "array-includes": "^3.1.8", "array.prototype.flatmap": "^1.3.2", "ast-types-flow": "^0.0.8", "axe-core": "^4.10.0", "axobject-query": "^4.1.0", "damerau-levenshtein": "^1.0.8", "emoji-regex": "^9.2.2", "hasown": "^2.0.2", "jsx-ast-utils": "^3.3.5", "language-tags": "^1.0.9", "minimatch": "^3.1.2", "object.fromentries": "^2.0.8", "safe-regex-test": "^1.0.3", "string.prototype.includes": "^2.0.1" }, "peerDependencies": { "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" } }, "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q=="], + + "eslint-plugin-react": ["eslint-plugin-react@7.37.4", "", { "dependencies": { "array-includes": "^3.1.8", "array.prototype.findlast": "^1.2.5", "array.prototype.flatmap": "^1.3.3", "array.prototype.tosorted": "^1.1.4", "doctrine": "^2.1.0", "es-iterator-helpers": "^1.2.1", "estraverse": "^5.3.0", "hasown": "^2.0.2", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.1.2", "object.entries": "^1.1.8", "object.fromentries": "^2.0.8", "object.values": "^1.2.1", "prop-types": "^15.8.1", "resolve": "^2.0.0-next.5", "semver": "^6.3.1", "string.prototype.matchall": "^4.0.12", "string.prototype.repeat": "^1.0.0" }, "peerDependencies": { "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" } }, "sha512-BGP0jRmfYyvOyvMoRX/uoUeW+GqNj9y16bPQzqAHf3AYII/tDs+jMN0dBVkl88/OZwNGwrVFxE7riHsXVfy/LQ=="], + + "eslint-plugin-react-hooks": ["eslint-plugin-react-hooks@4.6.2", "", { "peerDependencies": { "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" } }, "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ=="], + + "eslint-scope": ["eslint-scope@7.2.2", "", { "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" } }, "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg=="], + + "eslint-visitor-keys": ["eslint-visitor-keys@3.4.3", "", {}, "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="], + + "espree": ["espree@9.6.1", "", { "dependencies": { "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^3.4.1" } }, "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ=="], + + "esprima": ["esprima@4.0.1", "", { "bin": { "esparse": "./bin/esparse.js", "esvalidate": "./bin/esvalidate.js" } }, "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="], + + "esquery": ["esquery@1.6.0", "", { "dependencies": { "estraverse": "^5.1.0" } }, "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg=="], + + "esrecurse": ["esrecurse@4.3.0", "", { "dependencies": { "estraverse": "^5.2.0" } }, "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag=="], + + "estraverse": ["estraverse@5.3.0", "", {}, "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA=="], + + "esutils": ["esutils@2.0.3", "", {}, "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="], + + "etag": ["etag@1.8.1", "", {}, "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg=="], + + "event-stream": ["event-stream@0.9.8", "", { "dependencies": { "optimist": "0.2" } }, "sha512-o5h0Mp1bkoR6B0i7pTCAzRy+VzdsRWH997KQD4Psb0EOPoKEIiaRx/EsOdUl7p1Ktjw7aIWvweI/OY1R9XrlUg=="], + + "event-target-shim": ["event-target-shim@5.0.1", "", {}, "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ=="], + + "eventemitter3": ["eventemitter3@2.0.3", "", {}, "sha512-jLN68Dx5kyFHaePoXWPsCGW5qdyZQtLYHkxkg02/Mz6g0kYpDx4FyP6XfArhQdlOC4b8Mv+EMxPo/8La7Tzghg=="], + + "events": ["events@3.3.0", "", {}, "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q=="], + + "exec-async": ["exec-async@2.2.0", "", {}, "sha512-87OpwcEiMia/DeiKFzaQNBNFeN3XkkpYIh9FyOqq5mS2oKv3CBE67PXoEKcr6nodWdXNogTiQ0jE2NGuoffXPw=="], + + "execa": ["execa@1.0.0", "", { "dependencies": { "cross-spawn": "^6.0.0", "get-stream": "^4.0.0", "is-stream": "^1.1.0", "npm-run-path": "^2.0.0", "p-finally": "^1.0.0", "signal-exit": "^3.0.0", "strip-eof": "^1.0.0" } }, "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA=="], + + "expand-template": ["expand-template@2.0.3", "", {}, "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg=="], + + "expo": ["expo@52.0.37", "", { "dependencies": { "@babel/runtime": "^7.20.0", "@expo/cli": "0.22.18", "@expo/config": "~10.0.10", "@expo/config-plugins": "~9.0.15", "@expo/fingerprint": "0.11.11", "@expo/metro-config": "0.19.11", "@expo/vector-icons": "^14.0.0", "babel-preset-expo": "~12.0.9", "expo-asset": "~11.0.4", "expo-constants": "~17.0.7", "expo-file-system": "~18.0.11", "expo-font": "~13.0.4", "expo-keep-awake": "~14.0.3", "expo-modules-autolinking": "2.0.8", "expo-modules-core": "2.2.2", "fbemitter": "^3.0.0", "web-streams-polyfill": "^3.3.2", "whatwg-url-without-unicode": "8.0.0-3" }, "peerDependencies": { "@expo/dom-webview": "*", "@expo/metro-runtime": "*", "react": "*", "react-native": "*", "react-native-webview": "*" }, "optionalPeers": ["@expo/dom-webview", "@expo/metro-runtime", "react-native-webview"], "bin": { "expo": "bin/cli" } }, "sha512-fo37ClqjNLOVInerm7BU27H8lfPfeTC7Pmu72roPzq46DnJfs+KzTxTzE34GcJ0b6hMUx9FRSSGyTQqxzo2TVQ=="], + + "expo-asset": ["expo-asset@11.0.4", "", { "dependencies": { "@expo/image-utils": "^0.6.5", "expo-constants": "~17.0.7", "invariant": "^2.2.4", "md5-file": "^3.2.3" }, "peerDependencies": { "expo": "*", "react": "*", "react-native": "*" } }, "sha512-CdIywU0HrR3wsW5c3n0cT3jW9hccZdnqGsRqY+EY/RWzJbDXtDfAQVEiFHO3mDK7oveUwrP2jK/6ZRNek41/sg=="], + + "expo-constants": ["expo-constants@17.0.7", "", { "dependencies": { "@expo/config": "~10.0.10", "@expo/env": "~0.4.2" }, "peerDependencies": { "expo": "*", "react-native": "*" } }, "sha512-sp5NUiV17I3JblVPIBDgoxgt7JIZS30vcyydCYHxsEoo+aKaeRYXxGYilCvb9lgI6BBwSL24sQ6ZjWsCWoF1VA=="], + + "expo-file-system": ["expo-file-system@18.0.11", "", { "dependencies": { "web-streams-polyfill": "^3.3.2" }, "peerDependencies": { "expo": "*", "react-native": "*" } }, "sha512-yDwYfEzWgPXsBZHJW2RJ8Q66ceiFN9Wa5D20pp3fjXVkzPBDwxnYwiPWk4pVmCa5g4X5KYMoMne1pUrsL4OEpg=="], + + "expo-font": ["expo-font@13.0.4", "", { "dependencies": { "fontfaceobserver": "^2.1.0" }, "peerDependencies": { "expo": "*", "react": "*" } }, "sha512-eAP5hyBgC8gafFtprsz0HMaB795qZfgJWqTmU0NfbSin1wUuVySFMEPMOrTkTgmazU73v4Cb4x7p86jY1XXYUw=="], + + "expo-keep-awake": ["expo-keep-awake@14.0.3", "", { "peerDependencies": { "expo": "*", "react": "*" } }, "sha512-6Jh94G6NvTZfuLnm2vwIpKe3GdOiVBuISl7FI8GqN0/9UOg9E0WXXp5cDcfAG8bn80RfgLJS8P7EPUGTZyOvhg=="], + + "expo-modules-autolinking": ["expo-modules-autolinking@2.0.8", "", { "dependencies": { "@expo/spawn-async": "^1.7.2", "chalk": "^4.1.0", "commander": "^7.2.0", "fast-glob": "^3.2.5", "find-up": "^5.0.0", "fs-extra": "^9.1.0", "require-from-string": "^2.0.2", "resolve-from": "^5.0.0" }, "bin": { "expo-modules-autolinking": "bin/expo-modules-autolinking.js" } }, "sha512-DezgnEYFQYic8hKGhkbztBA3QUmSftjaNDIKNAtS2iGJmzCcNIkatjN2slFDSWjSTNo8gOvPQyMKfyHWFvLpOQ=="], + + "expo-modules-core": ["expo-modules-core@2.2.2", "", { "dependencies": { "invariant": "^2.2.4" } }, "sha512-SgjK86UD89gKAscRK3bdpn6Ojfs/KU4GujtuFx1wm4JaBjmXH4aakWkItkPlAV2pjIiHJHWQbENL9xjbw/Qr/g=="], + + "exponential-backoff": ["exponential-backoff@3.1.2", "", {}, "sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA=="], + + "extend": ["extend@3.0.2", "", {}, "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="], + + "extend-shallow": ["extend-shallow@2.0.1", "", { "dependencies": { "is-extendable": "^0.1.0" } }, "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug=="], + + "fast-content-type-parse": ["fast-content-type-parse@2.0.1", "", {}, "sha512-nGqtvLrj5w0naR6tDPfB4cUmYCqouzyQiz6C5y/LtcDllJdrcc6WaWW6iXyIIOErTa/XRybj28aasdn4LkVk6Q=="], + + "fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="], + + "fast-diff": ["fast-diff@1.1.2", "", {}, "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig=="], + + "fast-glob": ["fast-glob@3.3.3", "", { "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", "micromatch": "^4.0.8" } }, "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg=="], + + "fast-json-stable-stringify": ["fast-json-stable-stringify@2.1.0", "", {}, "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="], + + "fast-levenshtein": ["fast-levenshtein@2.0.6", "", {}, "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw=="], + + "fast-loops": ["fast-loops@1.1.4", "", {}, "sha512-8dbd3XWoKCTms18ize6JmQF1SFnnfj5s0B7rRry22EofgMu7B6LKHVh+XfFqFGsqnbH54xgeO83PzpKI+ODhlg=="], + + "fast-unique-numbers": ["fast-unique-numbers@8.0.13", "", { "dependencies": { "@babel/runtime": "^7.23.8", "tslib": "^2.6.2" } }, "sha512-7OnTFAVPefgw2eBJ1xj2PGGR9FwYzSUso9decayHgCDX4sJkHLdcsYTytTg+tYv+wKF3U8gJuSBz2jJpQV4u/g=="], + + "fastq": ["fastq@1.19.1", "", { "dependencies": { "reusify": "^1.0.4" } }, "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ=="], + + "fb-watchman": ["fb-watchman@2.0.2", "", { "dependencies": { "bser": "2.1.1" } }, "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA=="], + + "fbemitter": ["fbemitter@3.0.0", "", { "dependencies": { "fbjs": "^3.0.0" } }, "sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw=="], + + "fbjs": ["fbjs@3.0.5", "", { "dependencies": { "cross-fetch": "^3.1.5", "fbjs-css-vars": "^1.0.0", "loose-envify": "^1.0.0", "object-assign": "^4.1.0", "promise": "^7.1.1", "setimmediate": "^1.0.5", "ua-parser-js": "^1.0.35" } }, "sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg=="], + + "fbjs-css-vars": ["fbjs-css-vars@1.0.2", "", {}, "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ=="], + + "fdir": ["fdir@6.4.3", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw=="], + + "fecha": ["fecha@4.2.3", "", {}, "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw=="], + + "fetch-blob": ["fetch-blob@3.2.0", "", { "dependencies": { "node-domexception": "^1.0.0", "web-streams-polyfill": "^3.0.3" } }, "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ=="], + + "fetch-retry": ["fetch-retry@4.1.1", "", {}, "sha512-e6eB7zN6UBSwGVwrbWVH+gdLnkW9WwHhmq2YDK1Sh30pzx1onRVGBvogTlUeWxwTa+L86NYdo4hFkh7O8ZjSnA=="], + + "file-entry-cache": ["file-entry-cache@6.0.1", "", { "dependencies": { "flat-cache": "^3.0.4" } }, "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg=="], + + "file-stream-rotator": ["file-stream-rotator@0.6.1", "", { "dependencies": { "moment": "^2.29.1" } }, "sha512-u+dBid4PvZw17PmDeRcNOtCP9CCK/9lRN2w+r1xIS7yOL9JFrIBKTvrYsxT4P0pGtThYTn++QS5ChHaUov3+zQ=="], + + "fill-range": ["fill-range@7.1.1", "", { "dependencies": { "to-regex-range": "^5.0.1" } }, "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg=="], + + "finalhandler": ["finalhandler@1.1.2", "", { "dependencies": { "debug": "2.6.9", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "on-finished": "~2.3.0", "parseurl": "~1.3.3", "statuses": "~1.5.0", "unpipe": "~1.0.0" } }, "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA=="], + + "find-cache-dir": ["find-cache-dir@2.1.0", "", { "dependencies": { "commondir": "^1.0.1", "make-dir": "^2.0.0", "pkg-dir": "^3.0.0" } }, "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ=="], + + "find-root": ["find-root@1.1.0", "", {}, "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng=="], + + "find-up": ["find-up@5.0.0", "", { "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" } }, "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng=="], + + "flat-cache": ["flat-cache@3.2.0", "", { "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.3", "rimraf": "^3.0.2" } }, "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw=="], + + "flatbuffers": ["flatbuffers@25.2.10", "", {}, "sha512-7JlN9ZvLDG1McO3kbX0k4v+SUAg48L1rIwEvN6ZQl/eCtgJz9UylTMzE9wrmYrcorgxm3CX/3T/w5VAub99UUw=="], + + "flatted": ["flatted@3.3.3", "", {}, "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg=="], + + "flow-enums-runtime": ["flow-enums-runtime@0.0.6", "", {}, "sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw=="], + + "flow-parser": ["flow-parser@0.262.0", "", {}, "sha512-K3asSw4s2/sRoUC4xD2OfGi04gdYCCFRgkcwEXi5JyfFhS0HrFWLcDPp55ttv95OY5970WKl4T+7hWrnuOAUMQ=="], + + "fn.name": ["fn.name@1.1.0", "", {}, "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw=="], + + "follow-redirects": ["follow-redirects@1.15.9", "", {}, "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ=="], + + "fontfaceobserver": ["fontfaceobserver@2.3.0", "", {}, "sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg=="], + + "fontkit": ["fontkit@2.0.4", "", { "dependencies": { "@swc/helpers": "^0.5.12", "brotli": "^1.3.2", "clone": "^2.1.2", "dfa": "^1.2.0", "fast-deep-equal": "^3.1.3", "restructure": "^3.0.0", "tiny-inflate": "^1.0.3", "unicode-properties": "^1.4.0", "unicode-trie": "^2.0.0" } }, "sha512-syetQadaUEDNdxdugga9CpEYVaQIxOwk7GlwZWWZ19//qW4zE5bknOKeMBDYAASwnpaSHKJITRLMF9m1fp3s6g=="], + + "for-each": ["for-each@0.3.5", "", { "dependencies": { "is-callable": "^1.2.7" } }, "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg=="], + + "foreground-child": ["foreground-child@3.3.1", "", { "dependencies": { "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" } }, "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw=="], + + "form-data": ["form-data@4.0.2", "", { "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", "mime-types": "^2.1.12" } }, "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w=="], + + "form-data-encoder": ["form-data-encoder@1.7.2", "", {}, "sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A=="], + + "formdata-node": ["formdata-node@4.4.1", "", { "dependencies": { "node-domexception": "1.0.0", "web-streams-polyfill": "4.0.0-beta.3" } }, "sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ=="], + + "formdata-polyfill": ["formdata-polyfill@4.0.10", "", { "dependencies": { "fetch-blob": "^3.1.2" } }, "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g=="], + + "fraction.js": ["fraction.js@4.3.7", "", {}, "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew=="], + + "freeport-async": ["freeport-async@2.0.0", "", {}, "sha512-K7od3Uw45AJg00XUmy15+Hae2hOcgKcmN3/EF6Y7i01O0gaqiRx8sUSpsb9+BRNL8RPBrhzPsVfy8q9ADlJuWQ=="], + + "fresh": ["fresh@0.5.2", "", {}, "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q=="], + + "fs-constants": ["fs-constants@1.0.0", "", {}, "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow=="], + + "fs-extra": ["fs-extra@8.1.0", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", "universalify": "^0.1.0" } }, "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g=="], + + "fs-minipass": ["fs-minipass@3.0.3", "", { "dependencies": { "minipass": "^7.0.3" } }, "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw=="], + + "fs.realpath": ["fs.realpath@1.0.0", "", {}, "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="], + + "fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="], + + "function-bind": ["function-bind@1.1.2", "", {}, "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="], + + "function.prototype.name": ["function.prototype.name@1.1.8", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "functions-have-names": "^1.2.3", "hasown": "^2.0.2", "is-callable": "^1.2.7" } }, "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q=="], + + "functions-have-names": ["functions-have-names@1.2.3", "", {}, "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ=="], + + "gensync": ["gensync@1.0.0-beta.2", "", {}, "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg=="], + + "geojson-vt": ["geojson-vt@4.0.2", "", {}, "sha512-AV9ROqlNqoZEIJGfm1ncNjEXfkz2hdFlZf0qkVfmkwdKa8vj7H16YUOT81rJw1rdFhyEDlN2Tds91p/glzbl5A=="], + + "get-caller-file": ["get-caller-file@2.0.5", "", {}, "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="], + + "get-intrinsic": ["get-intrinsic@1.3.0", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "math-intrinsics": "^1.1.0" } }, "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ=="], + + "get-nonce": ["get-nonce@1.0.1", "", {}, "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q=="], + + "get-package-type": ["get-package-type@0.1.0", "", {}, "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q=="], + + "get-port": ["get-port@3.2.0", "", {}, "sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg=="], + + "get-proto": ["get-proto@1.0.1", "", { "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" } }, "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g=="], + + "get-stream": ["get-stream@4.1.0", "", { "dependencies": { "pump": "^3.0.0" } }, "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w=="], + + "get-symbol-description": ["get-symbol-description@1.1.0", "", { "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6" } }, "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg=="], + + "get-tsconfig": ["get-tsconfig@4.10.0", "", { "dependencies": { "resolve-pkg-maps": "^1.0.0" } }, "sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A=="], + + "get-value": ["get-value@2.0.6", "", {}, "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA=="], + + "getenv": ["getenv@1.0.0", "", {}, "sha512-7yetJWqbS9sbn0vIfliPsFgoXMKn/YMF+Wuiog97x+urnSRRRZ7xB+uVkwGKzRgq9CDFfMQnE9ruL5DHv9c6Xg=="], + + "github-from-package": ["github-from-package@0.0.0", "", {}, "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw=="], + + "gl-matrix": ["gl-matrix@3.4.3", "", {}, "sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA=="], + + "glob": ["glob@7.1.7", "", { "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", "minimatch": "^3.0.4", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } }, "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ=="], + + "glob-parent": ["glob-parent@6.0.2", "", { "dependencies": { "is-glob": "^4.0.3" } }, "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A=="], + + "glob-to-regexp": ["glob-to-regexp@0.4.1", "", {}, "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw=="], + + "globals": ["globals@13.24.0", "", { "dependencies": { "type-fest": "^0.20.2" } }, "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ=="], + + "globalthis": ["globalthis@1.0.4", "", { "dependencies": { "define-properties": "^1.2.1", "gopd": "^1.0.1" } }, "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ=="], + + "globby": ["globby@11.1.0", "", { "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", "fast-glob": "^3.2.9", "ignore": "^5.2.0", "merge2": "^1.4.1", "slash": "^3.0.0" } }, "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g=="], + + "gm": ["gm@1.25.1", "", { "dependencies": { "array-parallel": "~0.1.3", "array-series": "~0.1.5", "cross-spawn": "^7.0.5", "debug": "^3.1.0" } }, "sha512-jgcs2vKir9hFogGhXIfs0ODhJTfIrbECCehg38tqFgHm8zqXx7kAJyCYAFK4jTjx71AxrkFtkJBawbAxYUPX9A=="], + + "gopd": ["gopd@1.2.0", "", {}, "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg=="], + + "gpt-3-encoder": ["gpt-3-encoder@1.1.4", "", {}, "sha512-fSQRePV+HUAhCn7+7HL7lNIXNm6eaFWFbNLOOGtmSJ0qJycyQvj60OvRlH7mee8xAMjBDNRdMXlMwjAbMTDjkg=="], + + "graceful-fs": ["graceful-fs@4.2.11", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="], + + "graphemer": ["graphemer@1.4.0", "", {}, "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag=="], + + "grid-index": ["grid-index@1.1.0", "", {}, "sha512-HZRwumpOGUrHyxO5bqKZL0B0GlUpwtCAzZ42sgxUPniu33R1LSFH5yrIcBCHjkctCAh3mtWKcKd9J4vDDdeVHA=="], + + "guid-typescript": ["guid-typescript@1.0.9", "", {}, "sha512-Y8T4vYhEfwJOTbouREvG+3XDsjr8E3kIr7uf+JZ0BYloFsttiHU0WfvANVsR7TxNUJa/WpCnw/Ino/p+DeBhBQ=="], + + "has-ansi": ["has-ansi@2.0.0", "", { "dependencies": { "ansi-regex": "^2.0.0" } }, "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg=="], + + "has-async-hooks": ["has-async-hooks@1.0.0", "", {}, "sha512-YF0VPGjkxr7AyyQQNykX8zK4PvtEDsUJAPqwu06UFz1lb6EvI53sPh5H1kWxg8NXI5LsfRCZ8uX9NkYDZBb/mw=="], + + "has-bigints": ["has-bigints@1.1.0", "", {}, "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg=="], + + "has-flag": ["has-flag@4.0.0", "", {}, "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="], + + "has-property-descriptors": ["has-property-descriptors@1.0.2", "", { "dependencies": { "es-define-property": "^1.0.0" } }, "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg=="], + + "has-proto": ["has-proto@1.2.0", "", { "dependencies": { "dunder-proto": "^1.0.0" } }, "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ=="], + + "has-symbols": ["has-symbols@1.1.0", "", {}, "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ=="], + + "has-tostringtag": ["has-tostringtag@1.0.2", "", { "dependencies": { "has-symbols": "^1.0.3" } }, "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw=="], + + "hash.js": ["hash.js@1.1.7", "", { "dependencies": { "inherits": "^2.0.3", "minimalistic-assert": "^1.0.1" } }, "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA=="], + + "hasown": ["hasown@2.0.2", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ=="], + + "hdr-histogram-js": ["hdr-histogram-js@3.0.0", "", { "dependencies": { "@assemblyscript/loader": "^0.19.21", "base64-js": "^1.2.0", "pako": "^1.0.3" } }, "sha512-/EpvQI2/Z98mNFYEnlqJ8Ogful8OpArLG/6Tf2bPnkutBVLIeMVNHjk1ZDfshF2BUweipzbk+dB1hgSB7SIakw=="], + + "hdr-histogram-percentiles-obj": ["hdr-histogram-percentiles-obj@3.0.0", "", {}, "sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw=="], + + "help-me": ["help-me@5.0.0", "", {}, "sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg=="], + + "here": ["here@0.0.2", "", {}, "sha512-U7VYImCTcPoY27TSmzoiFsmWLEqQFaYNdpsPb9K0dXJhE6kufUqycaz51oR09CW85dDU9iWyy7At8M+p7hb3NQ=="], + + "hermes-estree": ["hermes-estree@0.25.1", "", {}, "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw=="], + + "hermes-parser": ["hermes-parser@0.25.1", "", { "dependencies": { "hermes-estree": "0.25.1" } }, "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA=="], + + "hoist-non-react-statics": ["hoist-non-react-statics@3.3.2", "", { "dependencies": { "react-is": "^16.7.0" } }, "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw=="], + + "hosted-git-info": ["hosted-git-info@7.0.2", "", { "dependencies": { "lru-cache": "^10.0.1" } }, "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w=="], + + "hsl-to-hex": ["hsl-to-hex@1.0.0", "", { "dependencies": { "hsl-to-rgb-for-reals": "^1.1.0" } }, "sha512-K6GVpucS5wFf44X0h2bLVRDsycgJmf9FF2elg+CrqD8GcFU8c6vYhgXn8NjUkFCwj+xDFb70qgLbTUm6sxwPmA=="], + + "hsl-to-rgb-for-reals": ["hsl-to-rgb-for-reals@1.1.1", "", {}, "sha512-LgOWAkrN0rFaQpfdWBQlv/VhkOxb5AsBjk6NQVx4yEzWS923T07X0M1Y0VNko2H52HeSpZrZNNMJ0aFqsdVzQg=="], + + "html-dom-parser": ["html-dom-parser@1.2.0", "", { "dependencies": { "domhandler": "4.3.1", "htmlparser2": "7.2.0" } }, "sha512-2HIpFMvvffsXHFUFjso0M9LqM+1Lm22BF+Df2ba+7QHJXjk63pWChEnI6YG27eaWqUdfnh5/Vy+OXrNTtepRsg=="], + + "html-react-parser": ["html-react-parser@1.4.12", "", { "dependencies": { "domhandler": "4.3.1", "html-dom-parser": "1.2.0", "react-property": "2.0.0", "style-to-js": "1.1.0" }, "peerDependencies": { "react": "0.14 || 15 || 16 || 17 || 18" } }, "sha512-nqYQzr4uXh67G9ejAG7djupTHmQvSTgjY83zbXLRfKHJ0F06751jXx6WKSFARDdXxCngo2/7H4Rwtfeowql4gQ=="], + + "html-tokenize": ["html-tokenize@2.0.1", "", { "dependencies": { "buffer-from": "~0.1.1", "inherits": "~2.0.1", "minimist": "~1.2.5", "readable-stream": "~1.0.27-1", "through2": "~0.4.1" }, "bin": { "html-tokenize": "bin/cmd.js" } }, "sha512-QY6S+hZ0f5m1WT8WffYN+Hg+xm/w5I8XeUcAq/ZYP5wVC8xbKi4Whhru3FtrAebD5EhBW8rmFzkDI6eCAuFe2w=="], + + "htmlparser2": ["htmlparser2@7.2.0", "", { "dependencies": { "domelementtype": "^2.0.1", "domhandler": "^4.2.2", "domutils": "^2.8.0", "entities": "^3.0.1" } }, "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog=="], + + "http-errors": ["http-errors@2.0.0", "", { "dependencies": { "depd": "2.0.0", "inherits": "2.0.4", "setprototypeof": "1.2.0", "statuses": "2.0.1", "toidentifier": "1.0.1" } }, "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ=="], + + "http-parser-js": ["http-parser-js@0.5.9", "", {}, "sha512-n1XsPy3rXVxlqxVioEWdC+0+M+SQw0DpJynwtOPo1X+ZlvdzTLtDBIJJlDQTnwZIFJrZSzSGmIOUdP8tu+SgLw=="], + + "http_ece": ["http_ece@1.2.0", "", {}, "sha512-JrF8SSLVmcvc5NducxgyOrKXe3EsyHMgBFgSaIUGmArKe+rwr0uphRkRXvwiom3I+fpIfoItveHrfudL8/rxuA=="], + + "https-proxy-agent": ["https-proxy-agent@7.0.6", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "4" } }, "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw=="], + + "humanize-ms": ["humanize-ms@1.2.1", "", { "dependencies": { "ms": "^2.0.0" } }, "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ=="], + + "hyperid": ["hyperid@3.3.0", "", { "dependencies": { "buffer": "^5.2.1", "uuid": "^8.3.2", "uuid-parse": "^1.1.0" } }, "sha512-7qhCVT4MJIoEsNcbhglhdmBKb09QtcmJNiIQGq7js/Khf5FtQQ9bzcAuloeqBeee7XD7JqDeve9KNlQya5tSGQ=="], + + "hyphen": ["hyphen@1.10.6", "", {}, "sha512-fXHXcGFTXOvZTSkPJuGOQf5Lv5T/R2itiiCVPg9LxAje5D00O0pP83yJShFq5V89Ly//Gt6acj7z8pbBr34stw=="], + + "hyphenate-style-name": ["hyphenate-style-name@1.1.0", "", {}, "sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw=="], + + "ieee754": ["ieee754@1.2.1", "", {}, "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="], + + "ignore": ["ignore@5.3.2", "", {}, "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="], + + "image-size": ["image-size@1.2.0", "", { "dependencies": { "queue": "6.0.2" }, "bin": { "image-size": "bin/image-size.js" } }, "sha512-4S8fwbO6w3GeCVN6OPtA9I5IGKkcDMPcKndtUlpJuCwu7JLjtj7JZpwqLuyY2nrmQT3AWsCJLSKPsc2mPBSl3w=="], + + "import-fresh": ["import-fresh@3.3.1", "", { "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" } }, "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ=="], + + "imurmurhash": ["imurmurhash@0.1.4", "", {}, "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA=="], + + "indent-string": ["indent-string@4.0.0", "", {}, "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg=="], + + "inflight": ["inflight@1.0.6", "", { "dependencies": { "once": "^1.3.0", "wrappy": "1" } }, "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA=="], + + "inherits": ["inherits@2.0.4", "", {}, "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="], + + "ini": ["ini@1.3.8", "", {}, "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="], + + "inline-style-parser": ["inline-style-parser@0.1.1", "", {}, "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q=="], + + "inline-style-prefixer": ["inline-style-prefixer@6.0.4", "", { "dependencies": { "css-in-js-utils": "^3.1.0", "fast-loops": "^1.1.3" } }, "sha512-FwXmZC2zbeeS7NzGjJ6pAiqRhXR0ugUShSNb6GApMl6da0/XGc4MOJsoWAywia52EEWbXNSy0pzkwz/+Y+swSg=="], + + "internal-ip": ["internal-ip@4.3.0", "", { "dependencies": { "default-gateway": "^4.2.0", "ipaddr.js": "^1.9.0" } }, "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg=="], + + "internal-slot": ["internal-slot@1.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "hasown": "^2.0.2", "side-channel": "^1.1.0" } }, "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw=="], + + "invariant": ["invariant@2.2.4", "", { "dependencies": { "loose-envify": "^1.0.0" } }, "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA=="], + + "ip-regex": ["ip-regex@2.1.0", "", {}, "sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw=="], + + "ipaddr.js": ["ipaddr.js@1.9.1", "", {}, "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="], + + "iron-session": ["iron-session@6.3.1", "", { "dependencies": { "@peculiar/webcrypto": "^1.4.0", "@types/cookie": "^0.5.1", "@types/express": "^4.17.13", "@types/koa": "^2.13.5", "@types/node": "^17.0.41", "cookie": "^0.5.0", "iron-webcrypto": "^0.2.5" }, "peerDependencies": { "express": ">=4", "koa": ">=2", "next": ">=10" }, "optionalPeers": ["express", "koa", "next"] }, "sha512-3UJ7y2vk/WomAtEySmPgM6qtYF1cZ3tXuWX5GsVX4PJXAcs5y/sV9HuSfpjKS6HkTL/OhZcTDWJNLZ7w+Erx3A=="], + + "iron-webcrypto": ["iron-webcrypto@0.2.8", "", { "dependencies": { "buffer": "^6" } }, "sha512-YPdCvjFMOBjXaYuDj5tiHst5CEk6Xw84Jo8Y2+jzhMceclAnb3+vNPP/CTtb5fO2ZEuXEaO4N+w62Vfko757KA=="], + + "is-arguments": ["is-arguments@1.2.0", "", { "dependencies": { "call-bound": "^1.0.2", "has-tostringtag": "^1.0.2" } }, "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA=="], + + "is-array-buffer": ["is-array-buffer@3.0.5", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "get-intrinsic": "^1.2.6" } }, "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A=="], + + "is-arrayish": ["is-arrayish@0.3.2", "", {}, "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ=="], + + "is-async-function": ["is-async-function@2.1.1", "", { "dependencies": { "async-function": "^1.0.0", "call-bound": "^1.0.3", "get-proto": "^1.0.1", "has-tostringtag": "^1.0.2", "safe-regex-test": "^1.1.0" } }, "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ=="], + + "is-bigint": ["is-bigint@1.1.0", "", { "dependencies": { "has-bigints": "^1.0.2" } }, "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ=="], + + "is-binary-path": ["is-binary-path@2.1.0", "", { "dependencies": { "binary-extensions": "^2.0.0" } }, "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw=="], + + "is-boolean-object": ["is-boolean-object@1.2.2", "", { "dependencies": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" } }, "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A=="], + + "is-buffer": ["is-buffer@1.1.6", "", {}, "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="], + + "is-bun-module": ["is-bun-module@1.3.0", "", { "dependencies": { "semver": "^7.6.3" } }, "sha512-DgXeu5UWI0IsMQundYb5UAOzm6G2eVnarJ0byP6Tm55iZNKceD59LNPA2L4VvsScTtHcw0yEkVwSf7PC+QoLSA=="], + + "is-callable": ["is-callable@1.2.7", "", {}, "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA=="], + + "is-core-module": ["is-core-module@2.16.1", "", { "dependencies": { "hasown": "^2.0.2" } }, "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w=="], + + "is-data-view": ["is-data-view@1.0.2", "", { "dependencies": { "call-bound": "^1.0.2", "get-intrinsic": "^1.2.6", "is-typed-array": "^1.1.13" } }, "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw=="], + + "is-date-object": ["is-date-object@1.1.0", "", { "dependencies": { "call-bound": "^1.0.2", "has-tostringtag": "^1.0.2" } }, "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg=="], + + "is-directory": ["is-directory@0.3.1", "", {}, "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw=="], + + "is-docker": ["is-docker@2.2.1", "", { "bin": { "is-docker": "cli.js" } }, "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ=="], + + "is-extendable": ["is-extendable@0.1.1", "", {}, "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw=="], + + "is-extglob": ["is-extglob@2.1.1", "", {}, "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="], + + "is-finalizationregistry": ["is-finalizationregistry@1.1.1", "", { "dependencies": { "call-bound": "^1.0.3" } }, "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg=="], + + "is-fullwidth-code-point": ["is-fullwidth-code-point@3.0.0", "", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="], + + "is-generator-function": ["is-generator-function@1.1.0", "", { "dependencies": { "call-bound": "^1.0.3", "get-proto": "^1.0.0", "has-tostringtag": "^1.0.2", "safe-regex-test": "^1.1.0" } }, "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ=="], + + "is-glob": ["is-glob@4.0.3", "", { "dependencies": { "is-extglob": "^2.1.1" } }, "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="], + + "is-map": ["is-map@2.0.3", "", {}, "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw=="], + + "is-number": ["is-number@7.0.0", "", {}, "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="], + + "is-number-object": ["is-number-object@1.1.1", "", { "dependencies": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" } }, "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw=="], + + "is-path-cwd": ["is-path-cwd@2.2.0", "", {}, "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ=="], + + "is-path-inside": ["is-path-inside@3.0.3", "", {}, "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ=="], + + "is-plain-object": ["is-plain-object@2.0.4", "", { "dependencies": { "isobject": "^3.0.1" } }, "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og=="], + + "is-regex": ["is-regex@1.2.1", "", { "dependencies": { "call-bound": "^1.0.2", "gopd": "^1.2.0", "has-tostringtag": "^1.0.2", "hasown": "^2.0.2" } }, "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g=="], + + "is-set": ["is-set@2.0.3", "", {}, "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg=="], + + "is-shared-array-buffer": ["is-shared-array-buffer@1.0.4", "", { "dependencies": { "call-bound": "^1.0.3" } }, "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A=="], + + "is-stream": ["is-stream@2.0.1", "", {}, "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg=="], + + "is-string": ["is-string@1.1.1", "", { "dependencies": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" } }, "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA=="], + + "is-symbol": ["is-symbol@1.1.1", "", { "dependencies": { "call-bound": "^1.0.2", "has-symbols": "^1.1.0", "safe-regex-test": "^1.1.0" } }, "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w=="], + + "is-typed-array": ["is-typed-array@1.1.15", "", { "dependencies": { "which-typed-array": "^1.1.16" } }, "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ=="], + + "is-url": ["is-url@1.2.4", "", {}, "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww=="], + + "is-weakmap": ["is-weakmap@2.0.2", "", {}, "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w=="], + + "is-weakref": ["is-weakref@1.1.1", "", { "dependencies": { "call-bound": "^1.0.3" } }, "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew=="], + + "is-weakset": ["is-weakset@2.0.4", "", { "dependencies": { "call-bound": "^1.0.3", "get-intrinsic": "^1.2.6" } }, "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ=="], + + "is-wsl": ["is-wsl@2.2.0", "", { "dependencies": { "is-docker": "^2.0.0" } }, "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww=="], + + "isarray": ["isarray@0.0.1", "", {}, "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ=="], + + "isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="], + + "isobject": ["isobject@3.0.1", "", {}, "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg=="], + + "istanbul-lib-coverage": ["istanbul-lib-coverage@3.2.2", "", {}, "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg=="], + + "istanbul-lib-instrument": ["istanbul-lib-instrument@5.2.1", "", { "dependencies": { "@babel/core": "^7.12.3", "@babel/parser": "^7.14.7", "@istanbuljs/schema": "^0.1.2", "istanbul-lib-coverage": "^3.2.0", "semver": "^6.3.0" } }, "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg=="], + + "iterator.prototype": ["iterator.prototype@1.1.5", "", { "dependencies": { "define-data-property": "^1.1.4", "es-object-atoms": "^1.0.0", "get-intrinsic": "^1.2.6", "get-proto": "^1.0.0", "has-symbols": "^1.1.0", "set-function-name": "^2.0.2" } }, "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g=="], + + "jackspeak": ["jackspeak@3.4.3", "", { "dependencies": { "@isaacs/cliui": "^8.0.2" }, "optionalDependencies": { "@pkgjs/parseargs": "^0.11.0" } }, "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw=="], + + "jay-peg": ["jay-peg@1.1.1", "", { "dependencies": { "restructure": "^3.0.0" } }, "sha512-D62KEuBxz/ip2gQKOEhk/mx14o7eiFRaU+VNNSP4MOiIkwb/D6B3G1Mfas7C/Fit8EsSV2/IWjZElx/Gs6A4ww=="], + + "jest-environment-node": ["jest-environment-node@29.7.0", "", { "dependencies": { "@jest/environment": "^29.7.0", "@jest/fake-timers": "^29.7.0", "@jest/types": "^29.6.3", "@types/node": "*", "jest-mock": "^29.7.0", "jest-util": "^29.7.0" } }, "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw=="], + + "jest-get-type": ["jest-get-type@29.6.3", "", {}, "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw=="], + + "jest-haste-map": ["jest-haste-map@29.7.0", "", { "dependencies": { "@jest/types": "^29.6.3", "@types/graceful-fs": "^4.1.3", "@types/node": "*", "anymatch": "^3.0.3", "fb-watchman": "^2.0.0", "graceful-fs": "^4.2.9", "jest-regex-util": "^29.6.3", "jest-util": "^29.7.0", "jest-worker": "^29.7.0", "micromatch": "^4.0.4", "walker": "^1.0.8" }, "optionalDependencies": { "fsevents": "^2.3.2" } }, "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA=="], + + "jest-message-util": ["jest-message-util@29.7.0", "", { "dependencies": { "@babel/code-frame": "^7.12.13", "@jest/types": "^29.6.3", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", "pretty-format": "^29.7.0", "slash": "^3.0.0", "stack-utils": "^2.0.3" } }, "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w=="], + + "jest-mock": ["jest-mock@29.7.0", "", { "dependencies": { "@jest/types": "^29.6.3", "@types/node": "*", "jest-util": "^29.7.0" } }, "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw=="], + + "jest-regex-util": ["jest-regex-util@29.6.3", "", {}, "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg=="], + + "jest-util": ["jest-util@29.7.0", "", { "dependencies": { "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", "graceful-fs": "^4.2.9", "picomatch": "^2.2.3" } }, "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA=="], + + "jest-validate": ["jest-validate@29.7.0", "", { "dependencies": { "@jest/types": "^29.6.3", "camelcase": "^6.2.0", "chalk": "^4.0.0", "jest-get-type": "^29.6.3", "leven": "^3.1.0", "pretty-format": "^29.7.0" } }, "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw=="], + + "jest-worker": ["jest-worker@29.7.0", "", { "dependencies": { "@types/node": "*", "jest-util": "^29.7.0", "merge-stream": "^2.0.0", "supports-color": "^8.0.0" } }, "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw=="], + + "jimp-compact": ["jimp-compact@0.16.1", "", {}, "sha512-dZ6Ra7u1G8c4Letq/B5EzAxj4tLFHL+cGtdpR+PVm4yzPDj+lCk+AbivWt1eOM+ikzkowtyV7qSqX6qr3t71Ww=="], + + "jiti": ["jiti@1.21.7", "", { "bin": { "jiti": "bin/jiti.js" } }, "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A=="], + + "join-component": ["join-component@1.1.0", "", {}, "sha512-bF7vcQxbODoGK1imE2P9GS9aw4zD0Sd+Hni68IMZLj7zRnquH7dXUmMw9hDI5S/Jzt7q+IyTXN0rSg2GI0IKhQ=="], + + "jose": ["jose@5.10.0", "", {}, "sha512-s+3Al/p9g32Iq+oqXxkW//7jk2Vig6FF1CFqzVXoTUXt2qz89YWbL+OwS17NFYEvxC35n0FKeGO2LGYSxeM2Gg=="], + + "jotai": ["jotai@2.12.1", "", { "peerDependencies": { "@types/react": ">=17.0.0", "react": ">=17.0.0" }, "optionalPeers": ["@types/react", "react"] }, "sha512-VUW0nMPYIru5g89tdxwr9ftiVdc/nGV9jvHISN8Ucx+m1vI9dBeHemfqYzEuw5XSkmYjD/MEyApN9k6yrATsZQ=="], + + "js-sdsl": ["js-sdsl@4.3.0", "", {}, "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ=="], + + "js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], + + "js-yaml": ["js-yaml@4.1.0", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA=="], + + "jsc-safe-url": ["jsc-safe-url@0.2.4", "", {}, "sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q=="], + + "jscodeshift": ["jscodeshift@17.1.2", "", { "dependencies": { "@babel/core": "^7.24.7", "@babel/parser": "^7.24.7", "@babel/plugin-transform-class-properties": "^7.24.7", "@babel/plugin-transform-modules-commonjs": "^7.24.7", "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", "@babel/plugin-transform-optional-chaining": "^7.24.7", "@babel/plugin-transform-private-methods": "^7.24.7", "@babel/preset-flow": "^7.24.7", "@babel/preset-typescript": "^7.24.7", "@babel/register": "^7.24.6", "flow-parser": "0.*", "graceful-fs": "^4.2.4", "micromatch": "^4.0.7", "neo-async": "^2.5.0", "picocolors": "^1.0.1", "recast": "^0.23.9", "tmp": "^0.2.3", "write-file-atomic": "^5.0.1" }, "peerDependencies": { "@babel/preset-env": "^7.1.6" }, "optionalPeers": ["@babel/preset-env"], "bin": { "jscodeshift": "bin/jscodeshift.js" } }, "sha512-uime4vFOiZ1o3ICT4Sm/AbItHEVw2oCxQ3a0egYVy3JMMOctxe07H3SKL1v175YqjMt27jn1N+3+Bj9SKDNgdQ=="], + + "jsesc": ["jsesc@3.1.0", "", { "bin": { "jsesc": "bin/jsesc" } }, "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA=="], + + "json-buffer": ["json-buffer@3.0.1", "", {}, "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ=="], + + "json-parse-better-errors": ["json-parse-better-errors@1.0.2", "", {}, "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw=="], + + "json-parse-even-better-errors": ["json-parse-even-better-errors@2.3.1", "", {}, "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="], + + "json-schema-traverse": ["json-schema-traverse@0.4.1", "", {}, "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="], + + "json-stable-stringify-without-jsonify": ["json-stable-stringify-without-jsonify@1.0.1", "", {}, "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw=="], + + "json-stringify-pretty-compact": ["json-stringify-pretty-compact@3.0.0", "", {}, "sha512-Rc2suX5meI0S3bfdZuA7JMFBGkJ875ApfVyq2WHELjBiiG22My/l7/8zPpH/CfFVQHuVLd8NLR0nv6vi0BYYKA=="], + + "json-to-ts": ["json-to-ts@2.1.0", "", { "dependencies": { "es7-shim": "^6.0.0", "hash.js": "^1.0.3", "pluralize": "^3.1.0" } }, "sha512-JeScjtIGYAxQVxEYgQUKROU0329eS+rsTSviGtuKiwKuXpcIU7DxhDYm2tey0vcBetwc9kD0+YHDI5KvEexMew=="], + + "json5": ["json5@2.2.3", "", { "bin": { "json5": "lib/cli.js" } }, "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="], + + "jsonfile": ["jsonfile@4.0.0", "", { "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg=="], + + "jsx-ast-utils": ["jsx-ast-utils@3.3.5", "", { "dependencies": { "array-includes": "^3.1.6", "array.prototype.flat": "^1.3.1", "object.assign": "^4.1.4", "object.values": "^1.1.6" } }, "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ=="], + + "jwa": ["jwa@2.0.0", "", { "dependencies": { "buffer-equal-constant-time": "1.0.1", "ecdsa-sig-formatter": "1.0.11", "safe-buffer": "^5.0.1" } }, "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA=="], + + "jws": ["jws@4.0.0", "", { "dependencies": { "jwa": "^2.0.0", "safe-buffer": "^5.0.1" } }, "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg=="], + + "kdbush": ["kdbush@4.0.2", "", {}, "sha512-WbCVYJ27Sz8zi9Q7Q0xHC+05iwkm3Znipc2XTlrnJbsHMYktW4hPhXUE8Ys1engBrvffoSCqbil1JQAa7clRpA=="], + + "keyv": ["keyv@4.5.4", "", { "dependencies": { "json-buffer": "3.0.1" } }, "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw=="], + + "kind-of": ["kind-of@6.0.3", "", {}, "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw=="], + + "kleur": ["kleur@3.0.3", "", {}, "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w=="], + + "klona": ["klona@2.0.6", "", {}, "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA=="], + + "kuler": ["kuler@2.0.0", "", {}, "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A=="], + + "language-subtag-registry": ["language-subtag-registry@0.3.23", "", {}, "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ=="], + + "language-tags": ["language-tags@1.0.9", "", { "dependencies": { "language-subtag-registry": "^0.3.20" } }, "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA=="], + + "leven": ["leven@3.1.0", "", {}, "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A=="], + + "levn": ["levn@0.4.1", "", { "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" } }, "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ=="], + + "lighthouse-logger": ["lighthouse-logger@1.4.2", "", { "dependencies": { "debug": "^2.6.9", "marky": "^1.2.2" } }, "sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g=="], + + "lightningcss": ["lightningcss@1.27.0", "", { "dependencies": { "detect-libc": "^1.0.3" }, "optionalDependencies": { "lightningcss-darwin-arm64": "1.27.0", "lightningcss-darwin-x64": "1.27.0", "lightningcss-freebsd-x64": "1.27.0", "lightningcss-linux-arm-gnueabihf": "1.27.0", "lightningcss-linux-arm64-gnu": "1.27.0", "lightningcss-linux-arm64-musl": "1.27.0", "lightningcss-linux-x64-gnu": "1.27.0", "lightningcss-linux-x64-musl": "1.27.0", "lightningcss-win32-arm64-msvc": "1.27.0", "lightningcss-win32-x64-msvc": "1.27.0" } }, "sha512-8f7aNmS1+etYSLHht0fQApPc2kNO8qGRutifN5rVIc6Xo6ABsEbqOr758UwI7ALVbTt4x1fllKt0PYgzD9S3yQ=="], + + "lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.27.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-Gl/lqIXY+d+ySmMbgDf0pgaWSqrWYxVHoc88q+Vhf2YNzZ8DwoRzGt5NZDVqqIW5ScpSnmmjcgXP87Dn2ylSSQ=="], + + "lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.27.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-0+mZa54IlcNAoQS9E0+niovhyjjQWEMrwW0p2sSdLRhLDc8LMQ/b67z7+B5q4VmjYCMSfnFi3djAAQFIDuj/Tg=="], + + "lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.27.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-n1sEf85fePoU2aDN2PzYjoI8gbBqnmLGEhKq7q0DKLj0UTVmOTwDC7PtLcy/zFxzASTSBlVQYJUhwIStQMIpRA=="], + + "lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.27.0", "", { "os": "linux", "cpu": "arm" }, "sha512-MUMRmtdRkOkd5z3h986HOuNBD1c2lq2BSQA1Jg88d9I7bmPGx08bwGcnB75dvr17CwxjxD6XPi3Qh8ArmKFqCA=="], + + "lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.27.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-cPsxo1QEWq2sfKkSq2Bq5feQDHdUEwgtA9KaB27J5AX22+l4l0ptgjMZZtYtUnteBofjee+0oW1wQ1guv04a7A=="], + + "lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.27.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-rCGBm2ax7kQ9pBSeITfCW9XSVF69VX+fm5DIpvDZQl4NnQoMQyRwhZQm9pd59m8leZ1IesRqWk2v/DntMo26lg=="], + + "lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.27.0", "", { "os": "linux", "cpu": "x64" }, "sha512-Dk/jovSI7qqhJDiUibvaikNKI2x6kWPN79AQiD/E/KeQWMjdGe9kw51RAgoWFDi0coP4jinaH14Nrt/J8z3U4A=="], + + "lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.27.0", "", { "os": "linux", "cpu": "x64" }, "sha512-QKjTxXm8A9s6v9Tg3Fk0gscCQA1t/HMoF7Woy1u68wCk5kS4fR+q3vXa1p3++REW784cRAtkYKrPy6JKibrEZA=="], + + "lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.27.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-/wXegPS1hnhkeG4OXQKEMQeJd48RDC3qdh+OA8pCuOPCyvnm/yEayrJdJVqzBsqpy1aJklRCVxscpFur80o6iQ=="], + + "lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.27.0", "", { "os": "win32", "cpu": "x64" }, "sha512-/OJLj94Zm/waZShL8nB5jsNj3CfNATLCTyFxZyouilfTmSoLDX7VlVAmhPHoZWVFp4vdmoiEbPEYC8HID3m6yw=="], + + "lilconfig": ["lilconfig@2.1.0", "", {}, "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ=="], + + "lines-and-columns": ["lines-and-columns@1.2.4", "", {}, "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="], + + "linkify-it": ["linkify-it@5.0.0", "", { "dependencies": { "uc.micro": "^2.0.0" } }, "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ=="], + + "linkifyjs": ["linkifyjs@4.2.0", "", {}, "sha512-pCj3PrQyATaoTYKHrgWRF3SJwsm61udVh+vuls/Rl6SptiDhgE7ziUIudAedRY9QEfynmM7/RmLEfPUyw1HPCw=="], + + "loading-cli": ["loading-cli@1.1.2", "", { "dependencies": { "colors-cli": "^1.0.26" } }, "sha512-M1ntfXHpdGoQxfaqKBOQPwSrTr9EIoTgj664Q9UVSbSnJvAFdribo+Ij//1jvACgrGHaTvfKoD9PG3NOxGj44g=="], + + "loadsh": ["loadsh@0.0.4", "", {}, "sha512-U+wLL8InpfRalWrr+0SuhWgGt10M4OyAk6G8xCYo2rwpiHtxZkWiFpjei0vO463ghW8LPCdhqQxXlMy2qicAEw=="], + + "locate-path": ["locate-path@6.0.0", "", { "dependencies": { "p-locate": "^5.0.0" } }, "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw=="], + + "lodash": ["lodash@4.17.21", "", {}, "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="], + + "lodash.chunk": ["lodash.chunk@4.2.0", "", {}, "sha512-ZzydJKfUHJwHa+hF5X66zLFCBrWn5GeF28OHEr4WVWtNDXlQ/IjWKPBiikqKo2ne0+v6JgCgJ0GzJp8k8bHC7w=="], + + "lodash.clonedeep": ["lodash.clonedeep@4.5.0", "", {}, "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ=="], + + "lodash.debounce": ["lodash.debounce@4.0.8", "", {}, "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow=="], + + "lodash.flatten": ["lodash.flatten@4.4.0", "", {}, "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g=="], + + "lodash.merge": ["lodash.merge@4.6.2", "", {}, "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="], + + "lodash.throttle": ["lodash.throttle@4.1.1", "", {}, "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ=="], + + "log-symbols": ["log-symbols@2.2.0", "", { "dependencies": { "chalk": "^2.0.1" } }, "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg=="], + + "logform": ["logform@2.7.0", "", { "dependencies": { "@colors/colors": "1.6.0", "@types/triple-beam": "^1.3.2", "fecha": "^4.2.0", "ms": "^2.1.1", "safe-stable-stringify": "^2.3.1", "triple-beam": "^1.3.0" } }, "sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ=="], + + "long": ["long@5.3.1", "", {}, "sha512-ka87Jz3gcx/I7Hal94xaN2tZEOPoUOEVftkQqZx2EeQRN7LGdfLlI3FvZ+7WDplm+vK2Urx9ULrvSowtdCieng=="], + + "loose-envify": ["loose-envify@1.4.0", "", { "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, "bin": { "loose-envify": "cli.js" } }, "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q=="], + + "lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="], + + "make-cancellable-promise": ["make-cancellable-promise@1.3.2", "", {}, "sha512-GCXh3bq/WuMbS+Ky4JBPW1hYTOU+znU+Q5m9Pu+pI8EoUqIHk9+tviOKC6/qhHh8C4/As3tzJ69IF32kdz85ww=="], + + "make-dir": ["make-dir@2.1.0", "", { "dependencies": { "pify": "^4.0.1", "semver": "^5.6.0" } }, "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA=="], + + "make-error": ["make-error@1.3.6", "", {}, "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw=="], + + "make-event-props": ["make-event-props@1.6.2", "", {}, "sha512-iDwf7mA03WPiR8QxvcVHmVWEPfMY1RZXerDVNCRYW7dUr2ppH3J58Rwb39/WG39yTZdRSxr3x+2v22tvI0VEvA=="], + + "makeerror": ["makeerror@1.0.12", "", { "dependencies": { "tmpl": "1.0.5" } }, "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg=="], + + "manage-path": ["manage-path@2.0.0", "", {}, "sha512-NJhyB+PJYTpxhxZJ3lecIGgh4kwIY2RAh44XvAz9UlqthlQwtPBf62uBVR8XaD8CRuSjQ6TnZH2lNJkbLPZM2A=="], + + "map-canvas": ["map-canvas@0.1.5", "", { "dependencies": { "drawille-canvas-blessed-contrib": ">=0.0.1", "xml2js": "^0.4.5" } }, "sha512-f7M3sOuL9+up0NCOZbb1rQpWDLZwR/ftCiNbyscjl9LUUEwrRaoumH4sz6swgs58lF21DQ0hsYOCw5C6Zz7hbg=="], + + "mapbox-gl": ["mapbox-gl@3.10.0", "", { "dependencies": { "@mapbox/jsonlint-lines-primitives": "^2.0.2", "@mapbox/mapbox-gl-supported": "^3.0.0", "@mapbox/point-geometry": "^0.1.0", "@mapbox/tiny-sdf": "^2.0.6", "@mapbox/unitbezier": "^0.0.1", "@mapbox/vector-tile": "^1.3.1", "@mapbox/whoots-js": "^3.1.0", "@types/geojson": "^7946.0.16", "@types/geojson-vt": "^3.2.5", "@types/mapbox__point-geometry": "^0.1.4", "@types/mapbox__vector-tile": "^1.3.4", "@types/pbf": "^3.0.5", "@types/supercluster": "^7.1.3", "cheap-ruler": "^4.0.0", "csscolorparser": "~1.0.3", "earcut": "^3.0.0", "geojson-vt": "^4.0.2", "gl-matrix": "^3.4.3", "grid-index": "^1.1.0", "kdbush": "^4.0.2", "murmurhash-js": "^1.0.0", "pbf": "^3.2.1", "potpack": "^2.0.0", "quickselect": "^3.0.0", "serialize-to-js": "^3.1.2", "supercluster": "^8.0.1", "tinyqueue": "^3.0.0", "vt-pbf": "^3.1.3" } }, "sha512-YnQxjlthuv/tidcxGYU2C8nRDVXMlAHa3qFhuOJeX4AfRP72OMRBf9ApL+M+k5VWcAXi2fcNOUVgphknjLumjA=="], + + "markdown-it": ["markdown-it@14.1.0", "", { "dependencies": { "argparse": "^2.0.1", "entities": "^4.4.0", "linkify-it": "^5.0.0", "mdurl": "^2.0.0", "punycode.js": "^2.3.1", "uc.micro": "^2.1.0" }, "bin": { "markdown-it": "bin/markdown-it.mjs" } }, "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg=="], + + "marked": ["marked@4.3.0", "", { "bin": { "marked": "bin/marked.js" } }, "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A=="], + + "marked-terminal": ["marked-terminal@5.2.0", "", { "dependencies": { "ansi-escapes": "^6.2.0", "cardinal": "^2.1.1", "chalk": "^5.2.0", "cli-table3": "^0.6.3", "node-emoji": "^1.11.0", "supports-hyperlinks": "^2.3.0" }, "peerDependencies": { "marked": "^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0" } }, "sha512-Piv6yNwAQXGFjZSaiNljyNFw7jKDdGrw70FSbtxEyldLsyeuV5ZHm/1wW++kWbrOF1VPnUgYOhB2oLL0ZpnekA=="], + + "marky": ["marky@1.2.5", "", {}, "sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q=="], + + "math-intrinsics": ["math-intrinsics@1.1.0", "", {}, "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g=="], + + "md5": ["md5@2.3.0", "", { "dependencies": { "charenc": "0.0.2", "crypt": "0.0.2", "is-buffer": "~1.1.6" } }, "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g=="], + + "md5-file": ["md5-file@3.2.3", "", { "dependencies": { "buffer-alloc": "^1.1.0" }, "bin": { "md5-file": "cli.js" } }, "sha512-3Tkp1piAHaworfcCgH0jKbTvj1jWWFgbvh2cXaNCgHwyTCBxxvD1Y04rmfpvdPm1P4oXMOpm6+2H7sr7v9v8Fw=="], + + "mdurl": ["mdurl@2.0.0", "", {}, "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w=="], + + "media-engine": ["media-engine@1.0.3", "", {}, "sha512-aa5tG6sDoK+k70B9iEX1NeyfT8ObCKhNDs6lJVpwF6r8vhUfuKMslIcirq6HIUYuuUYLefcEQOn9bSBOvawtwg=="], + + "memoize-one": ["memoize-one@5.2.1", "", {}, "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q=="], + + "memory-streams": ["memory-streams@0.1.3", "", { "dependencies": { "readable-stream": "~1.0.2" } }, "sha512-qVQ/CjkMyMInPaaRMrwWNDvf6boRZXaT/DbQeMYcCWuXPEBf1v8qChOc9OlEVQp2uOvRXa1Qu30fLmKhY6NipA=="], + + "memorystream": ["memorystream@0.3.1", "", {}, "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw=="], + + "merge-refs": ["merge-refs@1.3.0", "", { "peerDependencies": { "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" }, "optionalPeers": ["@types/react"] }, "sha512-nqXPXbso+1dcKDpPCXvwZyJILz+vSLqGGOnDrYHQYE+B8n9JTCekVLC65AfCpR4ggVyA/45Y0iR9LDyS2iI+zA=="], + + "merge-stream": ["merge-stream@2.0.0", "", {}, "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="], + + "merge2": ["merge2@1.4.1", "", {}, "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="], + + "metro": ["metro@0.81.2", "", { "dependencies": { "@babel/code-frame": "^7.24.7", "@babel/core": "^7.25.2", "@babel/generator": "^7.25.0", "@babel/parser": "^7.25.3", "@babel/template": "^7.25.0", "@babel/traverse": "^7.25.3", "@babel/types": "^7.25.2", "accepts": "^1.3.7", "chalk": "^4.0.0", "ci-info": "^2.0.0", "connect": "^3.6.5", "debug": "^2.2.0", "error-stack-parser": "^2.0.6", "flow-enums-runtime": "^0.0.6", "graceful-fs": "^4.2.4", "hermes-parser": "0.25.1", "image-size": "^1.0.2", "invariant": "^2.2.4", "jest-worker": "^29.7.0", "jsc-safe-url": "^0.2.2", "lodash.throttle": "^4.1.1", "metro-babel-transformer": "0.81.2", "metro-cache": "0.81.2", "metro-cache-key": "0.81.2", "metro-config": "0.81.2", "metro-core": "0.81.2", "metro-file-map": "0.81.2", "metro-resolver": "0.81.2", "metro-runtime": "0.81.2", "metro-source-map": "0.81.2", "metro-symbolicate": "0.81.2", "metro-transform-plugins": "0.81.2", "metro-transform-worker": "0.81.2", "mime-types": "^2.1.27", "nullthrows": "^1.1.1", "serialize-error": "^2.1.0", "source-map": "^0.5.6", "throat": "^5.0.0", "ws": "^7.5.10", "yargs": "^17.6.2" }, "bin": { "metro": "src/cli.js" } }, "sha512-3jvcYBmSEFWtXJC3BX9/pKyme0gEyrZfHuDvuZiS46+3u8rcNlk0bjnGS/qxIW/h8icyVuQRaoH/Q1VdQJHvuQ=="], + + "metro-babel-transformer": ["metro-babel-transformer@0.81.2", "", { "dependencies": { "@babel/core": "^7.25.2", "flow-enums-runtime": "^0.0.6", "hermes-parser": "0.25.1", "nullthrows": "^1.1.1" } }, "sha512-Xn9JgF+CghIcDI6VTtGZFIxl7fPifePIX7mAkJ4/h8wtD9VAJsja6ymXgQ4Mftei2JOMEfCog0MYs4Us43/v8Q=="], + + "metro-cache": ["metro-cache@0.81.2", "", { "dependencies": { "exponential-backoff": "^3.1.1", "flow-enums-runtime": "^0.0.6", "metro-core": "0.81.2" } }, "sha512-z07UNa4UjJ35LnQhDGrGk/qryRY3ERkYwvzkzYUpwpKZUGqWI5HnOurYzSuQSSxADV+s/NSLSFAB1yzdK8tluQ=="], + + "metro-cache-key": ["metro-cache-key@0.81.2", "", { "dependencies": { "flow-enums-runtime": "^0.0.6" } }, "sha512-+D5ySTFvvtWp1Med1ZWnEFqi8/nl8piFkTk6NFZbtCLGmNJIQhUtIW+i5foQ4YN9Mz1XARFn89652+jkRkXKhA=="], + + "metro-config": ["metro-config@0.81.2", "", { "dependencies": { "connect": "^3.6.5", "cosmiconfig": "^5.0.5", "flow-enums-runtime": "^0.0.6", "jest-validate": "^29.7.0", "metro": "0.81.2", "metro-cache": "0.81.2", "metro-core": "0.81.2", "metro-runtime": "0.81.2" } }, "sha512-CzRiGh0XNANORfGB9REZ0PcpLxehWLmDgSE7XN59uAxhY0qOXccGG81J1WfkeT2zO1B/UoDWHDT5cPP1w7E3cQ=="], + + "metro-core": ["metro-core@0.81.2", "", { "dependencies": { "flow-enums-runtime": "^0.0.6", "lodash.throttle": "^4.1.1", "metro-resolver": "0.81.2" } }, "sha512-OHWL/NiILmsuAkj90GNIJBMbcRCIcJ7piyT17B2EFWR2F/L1Jny7Dq7NCgWeqqRueLH7ystXUdrfcM8bKeMp8Q=="], + + "metro-file-map": ["metro-file-map@0.81.2", "", { "dependencies": { "debug": "^2.2.0", "fb-watchman": "^2.0.0", "flow-enums-runtime": "^0.0.6", "graceful-fs": "^4.2.4", "invariant": "^2.2.4", "jest-worker": "^29.7.0", "micromatch": "^4.0.4", "nullthrows": "^1.1.1", "walker": "^1.0.7" } }, "sha512-k8binQShV1vzMB2rIPMlnf267ZSq78+L42vH9Y3YzmhIfumAz8Noy3ndG7zKdvOLcMjlOxzBChu1Laz3s5cgIw=="], + + "metro-minify-terser": ["metro-minify-terser@0.81.2", "", { "dependencies": { "flow-enums-runtime": "^0.0.6", "terser": "^5.15.0" } }, "sha512-GWjm6ZcNMnOFyh7hjzNfAEnOqZiHYTVIKGmB/zDNMf/Eq89w6rxHXZRM41iu1YyP2IhdqrqnhwHA+Ze8v6CMtg=="], + + "metro-resolver": ["metro-resolver@0.81.2", "", { "dependencies": { "flow-enums-runtime": "^0.0.6" } }, "sha512-bu4Esd90SWkOhDADQsQTxIOG85sZnvAXtk51hT0aovN66M4x3rQmGPBRokfJpgAd3/XOZCu0KPbjoB5etyqT0Q=="], + + "metro-runtime": ["metro-runtime@0.81.2", "", { "dependencies": { "@babel/runtime": "^7.25.0", "flow-enums-runtime": "^0.0.6" } }, "sha512-xk3rU6yKaa2b8B/Hk/ZhPtNzW4H07h/yq9iKBCof0F68CaN+qncdVOOIz2NGqEH7V3wAqDv4xoOfbgtbFO5rxA=="], + + "metro-source-map": ["metro-source-map@0.81.2", "", { "dependencies": { "@babel/traverse": "^7.25.3", "@babel/traverse--for-generate-function-map": "npm:@babel/traverse@^7.25.3", "@babel/types": "^7.25.2", "flow-enums-runtime": "^0.0.6", "invariant": "^2.2.4", "metro-symbolicate": "0.81.2", "nullthrows": "^1.1.1", "ob1": "0.81.2", "source-map": "^0.5.6", "vlq": "^1.0.0" } }, "sha512-/mJYbZIGswFbfxt0ouaBYw22YvqQiaCB+ql8reeA37bNjd4lHvozND7/w8NO2x7FjTfsmPBh50Iqi/mTuZFiZA=="], + + "metro-symbolicate": ["metro-symbolicate@0.81.2", "", { "dependencies": { "flow-enums-runtime": "^0.0.6", "invariant": "^2.2.4", "metro-source-map": "0.81.2", "nullthrows": "^1.1.1", "source-map": "^0.5.6", "vlq": "^1.0.0" }, "bin": { "metro-symbolicate": "src/index.js" } }, "sha512-jEZoh3XldJazigetID+4Sy41OszGdixEOvB8zI0v2k7sXgHh+Rw8J/R7UuYCxQp+f89MqCjeGLLN7qNHuvRSCQ=="], + + "metro-transform-plugins": ["metro-transform-plugins@0.81.2", "", { "dependencies": { "@babel/core": "^7.25.2", "@babel/generator": "^7.25.0", "@babel/template": "^7.25.0", "@babel/traverse": "^7.25.3", "flow-enums-runtime": "^0.0.6", "nullthrows": "^1.1.1" } }, "sha512-St1zsbZ4SWA48yJBIqUuMFR4GROyu7A8auhJl/5km/Pj09vGXEri2CgOD0ReuXa/P1X9/jrOU5cIafi5csjwvw=="], + + "metro-transform-worker": ["metro-transform-worker@0.81.2", "", { "dependencies": { "@babel/core": "^7.25.2", "@babel/generator": "^7.25.0", "@babel/parser": "^7.25.3", "@babel/types": "^7.25.2", "flow-enums-runtime": "^0.0.6", "metro": "0.81.2", "metro-babel-transformer": "0.81.2", "metro-cache": "0.81.2", "metro-cache-key": "0.81.2", "metro-minify-terser": "0.81.2", "metro-source-map": "0.81.2", "metro-transform-plugins": "0.81.2", "nullthrows": "^1.1.1" } }, "sha512-U1kmzJEExrB6SZN9TLxuFCZPdCq5+ofkWBiVn6U/9YxTft6HzXGNN0ebdL2Yut5ry3oaYmOtR26faKAOGiiG0Q=="], + + "micromatch": ["micromatch@4.0.8", "", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="], + + "midtrans-client": ["midtrans-client@1.4.2", "", { "dependencies": { "axios": "^0.26.0", "lodash": "^4.17.21" } }, "sha512-hGT6UDF6WsmOprJYdgxReT5qxOPj+9VGVbJTe6txYICkadI01yC1ApBlkf+5AH/2v4fWNo03421VVpNfJDFAyg=="], + + "mime": ["mime@1.6.0", "", { "bin": { "mime": "cli.js" } }, "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="], + + "mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="], + + "mime-types": ["mime-types@2.1.35", "", { "dependencies": { "mime-db": "1.52.0" } }, "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="], + + "mimic-fn": ["mimic-fn@1.2.0", "", {}, "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ=="], + + "mimic-response": ["mimic-response@3.1.0", "", {}, "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ=="], + + "minimalistic-assert": ["minimalistic-assert@1.0.1", "", {}, "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A=="], + + "minimatch": ["minimatch@3.1.2", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="], + + "minimist": ["minimist@1.2.8", "", {}, "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="], + + "minipass": ["minipass@7.1.2", "", {}, "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw=="], + + "minipass-collect": ["minipass-collect@2.0.1", "", { "dependencies": { "minipass": "^7.0.3" } }, "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw=="], + + "minipass-flush": ["minipass-flush@1.0.5", "", { "dependencies": { "minipass": "^3.0.0" } }, "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw=="], + + "minipass-pipeline": ["minipass-pipeline@1.2.4", "", { "dependencies": { "minipass": "^3.0.0" } }, "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A=="], + + "minizlib": ["minizlib@2.1.2", "", { "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" } }, "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg=="], + + "mkdirp": ["mkdirp@0.5.6", "", { "dependencies": { "minimist": "^1.2.6" }, "bin": { "mkdirp": "bin/cmd.js" } }, "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw=="], + + "mkdirp-classic": ["mkdirp-classic@0.5.3", "", {}, "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A=="], + + "moment": ["moment@2.30.1", "", {}, "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how=="], + + "mqtt": ["mqtt@5.10.4", "", { "dependencies": { "@types/readable-stream": "^4.0.18", "@types/ws": "^8.5.14", "commist": "^3.2.0", "concat-stream": "^2.0.0", "debug": "^4.4.0", "help-me": "^5.0.0", "lru-cache": "^10.4.3", "minimist": "^1.2.8", "mqtt-packet": "^9.0.1", "number-allocator": "^1.0.14", "readable-stream": "^4.7.0", "reinterval": "^1.1.0", "rfdc": "^1.4.1", "split2": "^4.2.0", "worker-timers": "^7.1.8", "ws": "^8.18.0" }, "bin": { "mqtt_pub": "build/bin/pub.js", "mqtt_sub": "build/bin/sub.js", "mqtt": "build/bin/mqtt.js" } }, "sha512-wN+SuhT2/ZaG6NPxca0N6YtRivnMxk6VflxQUEeqDH4erKdj+wPAGhHmcTLzvqfE4sJRxrEJ+XJxUc0No0E7eQ=="], + + "mqtt-packet": ["mqtt-packet@9.0.1", "", { "dependencies": { "bl": "^6.0.8", "debug": "^4.3.4", "process-nextick-args": "^2.0.1" } }, "sha512-koZF1V/X2RZUI6uD9wN5OK1JxxcG1ofAR4H3LjCw1FkeKzruZQ26aAA6v2m1lZyWONZIR5wMMJFrZJDRNzbiQw=="], + + "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], + + "multipipe": ["multipipe@1.0.2", "", { "dependencies": { "duplexer2": "^0.1.2", "object-assign": "^4.1.0" } }, "sha512-6uiC9OvY71vzSGX8lZvSqscE7ft9nPupJ8fMjrCNRAUy2LREUW42UL+V/NTrogr6rFgRydUrCX4ZitfpSNkSCQ=="], + + "murmurhash-js": ["murmurhash-js@1.0.0", "", {}, "sha512-TvmkNhkv8yct0SVBSy+o8wYzXjE4Zz3PCesbfs8HiCXXdcTuocApFv11UWlNFWKYsP2okqrhb7JNlSm9InBhIw=="], + + "mustache": ["mustache@4.2.0", "", { "bin": { "mustache": "bin/mustache" } }, "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ=="], + + "mz": ["mz@2.7.0", "", { "dependencies": { "any-promise": "^1.0.0", "object-assign": "^4.0.1", "thenify-all": "^1.0.0" } }, "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q=="], + + "nanoid": ["nanoid@3.3.8", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w=="], + + "napi-build-utils": ["napi-build-utils@2.0.0", "", {}, "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA=="], + + "natural-compare": ["natural-compare@1.4.0", "", {}, "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw=="], + + "negotiator": ["negotiator@0.6.3", "", {}, "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="], + + "neo-async": ["neo-async@2.6.2", "", {}, "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="], + + "nested-error-stacks": ["nested-error-stacks@2.0.1", "", {}, "sha512-SrQrok4CATudVzBS7coSz26QRSmlK9TzzoFbeKfcPBUFPjcQM9Rqvr/DlJkOrwI/0KcgvMub1n1g5Jt9EgRn4A=="], + + "net": ["net@1.0.2", "", {}, "sha512-kbhcj2SVVR4caaVnGLJKmlk2+f+oLkjqdKeQlmUtz6nGzOpbcobwVIeSURNgraV/v3tlmGIX82OcPCl0K6RbHQ=="], + + "next": ["next@13.5.8", "", { "dependencies": { "@next/env": "13.5.8", "@swc/helpers": "0.5.2", "busboy": "1.6.0", "caniuse-lite": "^1.0.30001406", "postcss": "8.4.31", "styled-jsx": "5.1.1", "watchpack": "2.4.0" }, "optionalDependencies": { "@next/swc-darwin-arm64": "13.5.8", "@next/swc-darwin-x64": "13.5.8", "@next/swc-linux-arm64-gnu": "13.5.8", "@next/swc-linux-arm64-musl": "13.5.8", "@next/swc-linux-x64-gnu": "13.5.8", "@next/swc-linux-x64-musl": "13.5.8", "@next/swc-win32-arm64-msvc": "13.5.8", "@next/swc-win32-ia32-msvc": "13.5.8", "@next/swc-win32-x64-msvc": "13.5.8" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", "sass": "^1.3.0" }, "optionalPeers": ["@opentelemetry/api", "sass"], "bin": { "next": "dist/bin/next" } }, "sha512-VlR7FaXpSibCs7ujOqStaDFTGSdX/NvWgLDcd47oiHUe8i63ZtNkX9intgcYAu/MxpaeEGinHaMB5mwxuzglKw=="], + + "next-dev": ["next-dev@1.2.8", "", { "dependencies": { "@babel/core": "^7.24.6", "@babel/parser": "^7.24.6", "@babel/preset-react": "^7.24.6", "@babel/traverse": "^7.24.6", "@mantine/hooks": "^7.10.1", "@types/autocannon": "^7.12.5", "@types/babel__traverse": "^7.20.6", "@types/blessed": "^0.1.25", "@types/cli-progress": "^3.11.5", "@types/lodash": "^4.17.4", "@types/yargs": "^17.0.32", "autocannon": "^7.15.0", "axios": "^1.7.2", "blessed": "^0.1.81", "blessed-contrib": "^4.11.0", "cli-progress": "^3.12.0", "colors": "^1.4.0", "lodash": "^4.17.21", "node-fetch": "^3.3.2", "prettier": "^3.3.0", "react": "^18.3.1", "react-dom": "^18.3.1", "react-icons": "^5.2.1", "readdirp": "^3.6.0", "yargs": "^17.7.2" }, "bin": { "next-dev": "dist/bin/next-dev.js" } }, "sha512-WF8QghYmtYnR2JDOJQ8z06GO38h8Xx7JuQp61oTCYEzVdBhLkPok3n2pCsBcrF3dsFnA4J40TN6dIpyXAuXcmQ=="], + + "next-scroll-loader": ["next-scroll-loader@1.0.9", "", { "dependencies": { "react": "^18.3.1", "react-dom": "^18.3.1" } }, "sha512-TezMxzzgJ1XP7rk+dFbAgIpWtvTPUx1KnE8o19Rr/rxT5WnHZ67HBzP9KXAM1t4MAao+HT9OwG1KDSCi0GL8lg=="], + + "nice-try": ["nice-try@1.0.5", "", {}, "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ=="], + + "node-abi": ["node-abi@3.74.0", "", { "dependencies": { "semver": "^7.3.5" } }, "sha512-c5XK0MjkGBrQPGYG24GBADZud0NCbznxNx0ZkS+ebUTrmV1qTDxPxSL8zEAPURXSbLRWVexxmP4986BziahL5w=="], + + "node-addon-api": ["node-addon-api@7.1.1", "", {}, "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ=="], + + "node-dir": ["node-dir@0.1.17", "", { "dependencies": { "minimatch": "^3.0.2" } }, "sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg=="], + + "node-domexception": ["node-domexception@1.0.0", "", {}, "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ=="], + + "node-emoji": ["node-emoji@1.11.0", "", { "dependencies": { "lodash": "^4.17.21" } }, "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A=="], + + "node-fetch": ["node-fetch@3.3.2", "", { "dependencies": { "data-uri-to-buffer": "^4.0.0", "fetch-blob": "^3.1.4", "formdata-polyfill": "^4.0.10" } }, "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA=="], + + "node-forge": ["node-forge@1.3.1", "", {}, "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA=="], + + "node-gyp-build": ["node-gyp-build@4.8.4", "", { "bin": { "node-gyp-build": "bin.js", "node-gyp-build-optional": "optional.js", "node-gyp-build-test": "build-test.js" } }, "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ=="], + + "node-int64": ["node-int64@0.4.0", "", {}, "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw=="], + + "node-releases": ["node-releases@2.0.19", "", {}, "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw=="], + + "nopt": ["nopt@2.1.2", "", { "dependencies": { "abbrev": "1" }, "bin": { "nopt": "./bin/nopt.js" } }, "sha512-x8vXm7BZ2jE1Txrxh/hO74HTuYZQEbo8edoRcANgdZ4+PCV+pbjd/xdummkmjjC7LU5EjPzlu8zEq/oxWylnKA=="], + + "normalize-path": ["normalize-path@3.0.0", "", {}, "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="], + + "normalize-range": ["normalize-range@0.1.2", "", {}, "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA=="], + + "normalize-svg-path": ["normalize-svg-path@1.1.0", "", { "dependencies": { "svg-arc-to-cubic-bezier": "^3.0.0" } }, "sha512-r9KHKG2UUeB5LoTouwDzBy2VxXlHsiM6fyLQvnJa0S5hrhzqElH/CH7TUGhT1fVvIYBIKf3OpY4YJ4CK+iaqHg=="], + + "npm-package-arg": ["npm-package-arg@11.0.3", "", { "dependencies": { "hosted-git-info": "^7.0.0", "proc-log": "^4.0.0", "semver": "^7.3.5", "validate-npm-package-name": "^5.0.0" } }, "sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw=="], + + "npm-run-path": ["npm-run-path@2.0.2", "", { "dependencies": { "path-key": "^2.0.0" } }, "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw=="], + + "nullthrows": ["nullthrows@1.1.1", "", {}, "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw=="], + + "number-allocator": ["number-allocator@1.0.14", "", { "dependencies": { "debug": "^4.3.1", "js-sdsl": "4.3.0" } }, "sha512-OrL44UTVAvkKdOdRQZIJpLkAdjXGTRda052sN4sO77bKEzYYqWKMBjQvrJFzqygI99gL6Z4u2xctPW1tB8ErvA=="], + + "ob1": ["ob1@0.81.2", "", { "dependencies": { "flow-enums-runtime": "^0.0.6" } }, "sha512-K0hJXOlU4j7c4chNLaDDzVyg5yjYjbmDSQbVMXdAcTtqZndwYHfmBIO06riFMgpg2KOevxeB1pIwzqJuES2SuA=="], + + "object-assign": ["object-assign@4.1.1", "", {}, "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="], + + "object-hash": ["object-hash@3.0.0", "", {}, "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw=="], + + "object-inspect": ["object-inspect@1.13.4", "", {}, "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew=="], + + "object-is": ["object-is@1.1.6", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1" } }, "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q=="], + + "object-keys": ["object-keys@1.1.1", "", {}, "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="], + + "object.assign": ["object.assign@4.1.7", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0", "has-symbols": "^1.1.0", "object-keys": "^1.1.1" } }, "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw=="], + + "object.entries": ["object.entries@1.1.8", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" } }, "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ=="], + + "object.fromentries": ["object.fromentries@2.0.8", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-abstract": "^1.23.2", "es-object-atoms": "^1.0.0" } }, "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ=="], + + "object.getownpropertydescriptors": ["object.getownpropertydescriptors@2.1.8", "", { "dependencies": { "array.prototype.reduce": "^1.0.6", "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-abstract": "^1.23.2", "es-object-atoms": "^1.0.0", "gopd": "^1.0.1", "safe-array-concat": "^1.1.2" } }, "sha512-qkHIGe4q0lSYMv0XI4SsBTJz3WaURhLvd0lKSgtVuOsJ2krg4SgMw3PIRQFMp07yi++UR3se2mkcLqsBNpBb/A=="], + + "object.groupby": ["object.groupby@1.0.3", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-abstract": "^1.23.2" } }, "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ=="], + + "object.values": ["object.values@1.2.1", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" } }, "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA=="], + + "octokit": ["octokit@4.1.2", "", { "dependencies": { "@octokit/app": "^15.1.4", "@octokit/core": "^6.1.4", "@octokit/oauth-app": "^7.1.6", "@octokit/plugin-paginate-graphql": "^5.2.4", "@octokit/plugin-paginate-rest": "^11.4.2", "@octokit/plugin-rest-endpoint-methods": "^13.3.1", "@octokit/plugin-retry": "^7.1.4", "@octokit/plugin-throttling": "^9.4.0", "@octokit/request-error": "^6.1.7", "@octokit/types": "^13.7.0" } }, "sha512-0kcTxJOK3yQrJsRb8wKa28hlTze4QOz4sLuUnfXXnhboDhFKgv8LxS86tFwbsafDW9JZ08ByuVAE8kQbYJIZkA=="], + + "on-finished": ["on-finished@2.4.1", "", { "dependencies": { "ee-first": "1.1.1" } }, "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg=="], + + "on-headers": ["on-headers@1.0.2", "", {}, "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA=="], + + "on-net-listen": ["on-net-listen@1.1.2", "", {}, "sha512-y1HRYy8s/RlcBvDUwKXSmkODMdx4KSuIvloCnQYJ2LdBBC1asY4HtfhXwe3UWknLakATZDnbzht2Ijw3M1EqFg=="], + + "once": ["once@1.4.0", "", { "dependencies": { "wrappy": "1" } }, "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w=="], + + "one-time": ["one-time@1.0.0", "", { "dependencies": { "fn.name": "1.x.x" } }, "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g=="], + + "onetime": ["onetime@2.0.1", "", { "dependencies": { "mimic-fn": "^1.0.0" } }, "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ=="], + + "onnxruntime-common": ["onnxruntime-common@1.20.1", "", {}, "sha512-YiU0s0IzYYC+gWvqD1HzLc46Du1sXpSiwzKb63PACIJr6LfL27VsXSXQvt68EzD3V0D5Bc0vyJTjmMxp0ylQiw=="], + + "onnxruntime-node": ["onnxruntime-node@1.20.1", "", { "dependencies": { "onnxruntime-common": "1.20.1", "tar": "^7.0.1" }, "os": [ "linux", "win32", "darwin", ] }, "sha512-di/I4HDXRw+FLgq+TyHmQEDd3cEp9iFFZm0r4uJ1Wd7b/WE1VXtKWo8yemex347c6GNF/3Pv86ZfPhIWxORr0w=="], + + "onnxruntime-web": ["onnxruntime-web@1.21.0-dev.20250206-d981b153d3", "", { "dependencies": { "flatbuffers": "^25.1.24", "guid-typescript": "^1.0.9", "long": "^5.2.3", "onnxruntime-common": "1.21.0-dev.20250206-d981b153d3", "platform": "^1.3.6", "protobufjs": "^7.2.4" } }, "sha512-esDVQdRic6J44VBMFLumYvcGfioMh80ceLmzF1yheJyuLKq/Th8VT2aj42XWQst+2bcWnAhw4IKmRQaqzU8ugg=="], + + "open": ["open@7.4.2", "", { "dependencies": { "is-docker": "^2.0.0", "is-wsl": "^2.1.1" } }, "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q=="], + + "openai": ["openai@4.86.1", "", { "dependencies": { "@types/node": "^18.11.18", "@types/node-fetch": "^2.6.4", "abort-controller": "^3.0.0", "agentkeepalive": "^4.2.1", "form-data-encoder": "1.7.2", "formdata-node": "^4.3.2", "node-fetch": "^2.6.7" }, "peerDependencies": { "ws": "^8.18.0", "zod": "^3.23.8" }, "optionalPeers": ["ws", "zod"], "bin": { "openai": "bin/cli" } }, "sha512-x3iCLyaC3yegFVZaxOmrYJjitKxZ9hpVbLi+ZlT5UHuHTMlEQEbKXkGOM78z9qm2T5GF+XRUZCP2/aV4UPFPJQ=="], + + "optimist": ["optimist@0.3.7", "", { "dependencies": { "wordwrap": "~0.0.2" } }, "sha512-TCx0dXQzVtSCg2OgY/bO9hjM9cV4XYx09TVK+s3+FhkjT6LovsLe+pPMzpWf+6yXK/hUizs2gUoTw3jHM0VaTQ=="], + + "optionator": ["optionator@0.9.4", "", { "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", "type-check": "^0.4.0", "word-wrap": "^1.2.5" } }, "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g=="], + + "ora": ["ora@3.4.0", "", { "dependencies": { "chalk": "^2.4.2", "cli-cursor": "^2.1.0", "cli-spinners": "^2.0.0", "log-symbols": "^2.2.0", "strip-ansi": "^5.2.0", "wcwidth": "^1.0.1" } }, "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg=="], + + "orderedmap": ["orderedmap@2.1.1", "", {}, "sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g=="], + + "os-tmpdir": ["os-tmpdir@1.0.2", "", {}, "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g=="], + + "own-keys": ["own-keys@1.0.1", "", { "dependencies": { "get-intrinsic": "^1.2.6", "object-keys": "^1.1.1", "safe-push-apply": "^1.0.0" } }, "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg=="], + + "p-finally": ["p-finally@1.0.0", "", {}, "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow=="], + + "p-limit": ["p-limit@6.2.0", "", { "dependencies": { "yocto-queue": "^1.1.1" } }, "sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA=="], + + "p-locate": ["p-locate@5.0.0", "", { "dependencies": { "p-limit": "^3.0.2" } }, "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw=="], + + "p-map": ["p-map@4.0.0", "", { "dependencies": { "aggregate-error": "^3.0.0" } }, "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ=="], + + "p-try": ["p-try@2.2.0", "", {}, "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="], + + "package-json-from-dist": ["package-json-from-dist@1.0.1", "", {}, "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw=="], + + "pako": ["pako@1.0.11", "", {}, "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="], + + "papaparse": ["papaparse@5.5.2", "", {}, "sha512-PZXg8UuAc4PcVwLosEEDYjPyfWnTEhOrUfdv+3Bx+NuAb+5NhDmXzg5fHWmdCh1mP5p7JAZfFr3IMQfcntNAdA=="], + + "parchment": ["parchment@1.1.4", "", {}, "sha512-J5FBQt/pM2inLzg4hEWmzQx/8h8D0CiDxaG3vyp9rKrQRSDgBlhjdP5jQGgosEajXPSQouXGHOmVdgo7QmJuOg=="], + + "parent-module": ["parent-module@1.0.1", "", { "dependencies": { "callsites": "^3.0.0" } }, "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g=="], + + "parse-json": ["parse-json@5.2.0", "", { "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", "json-parse-even-better-errors": "^2.3.0", "lines-and-columns": "^1.1.6" } }, "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg=="], + + "parse-png": ["parse-png@2.1.0", "", { "dependencies": { "pngjs": "^3.3.0" } }, "sha512-Nt/a5SfCLiTnQAjx3fHlqp8hRgTL3z7kTQZzvIMS9uCAepnCyjpdEc6M/sz69WqMBdaDBw9sF1F1UaHROYzGkQ=="], + + "parse-svg-path": ["parse-svg-path@0.1.2", "", {}, "sha512-JyPSBnkTJ0AI8GGJLfMXvKq42cj5c006fnLz6fXy6zfoVjJizi8BNTpu8on8ziI1cKy9d9DGNuY17Ce7wuejpQ=="], + + "parseurl": ["parseurl@1.3.3", "", {}, "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="], + + "password-prompt": ["password-prompt@1.1.3", "", { "dependencies": { "ansi-escapes": "^4.3.2", "cross-spawn": "^7.0.3" } }, "sha512-HkrjG2aJlvF0t2BMH0e2LB/EHf3Lcq3fNMzy4GYHcQblAvOl+QQji1Lx7WRBMqpVK8p+KR7bCg7oqAMXtdgqyw=="], + + "path-exists": ["path-exists@4.0.0", "", {}, "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="], + + "path-is-absolute": ["path-is-absolute@1.0.1", "", {}, "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg=="], + + "path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="], + + "path-parse": ["path-parse@1.0.7", "", {}, "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="], + + "path-scurry": ["path-scurry@1.11.1", "", { "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" } }, "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA=="], + + "path-type": ["path-type@4.0.0", "", {}, "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw=="], + + "path2d": ["path2d@0.2.2", "", {}, "sha512-+vnG6S4dYcYxZd+CZxzXCNKdELYZSKfohrk98yajCo1PtRoDgCTrrwOvK1GT0UoAdVszagDVllQc0U1vaX4NUQ=="], + + "pbf": ["pbf@3.3.0", "", { "dependencies": { "ieee754": "^1.1.12", "resolve-protobuf-schema": "^2.1.0" }, "bin": { "pbf": "bin/pbf" } }, "sha512-XDF38WCH3z5OV/OVa8GKUNtLAyneuzbCisx7QUCF8Q6Nutx0WnJrQe5O+kOtBlLfRNUws98Y58Lblp+NJG5T4Q=="], + + "pdf-lib": ["pdf-lib@1.17.1", "", { "dependencies": { "@pdf-lib/standard-fonts": "^1.0.0", "@pdf-lib/upng": "^1.0.1", "pako": "^1.0.11", "tslib": "^1.11.1" } }, "sha512-V/mpyJAoTsN4cnP31vc0wfNA1+p20evqqnap0KLoRUN0Yk/p3wN52DOEsL4oBFcLdb76hlpKPtzJIgo67j/XLw=="], + + "pdf2pic": ["pdf2pic@3.1.4", "", { "dependencies": { "gm": "^1.25.1" } }, "sha512-oDvsd/fSlICZgYK/lkyrocFTp7D7CrRFJVp3mU3O7a0MmdqByhiU54cHk3ne3HA4EnFuMbpA/NxzN5zo0jLh+A=="], + + "pdfjs-dist": ["pdfjs-dist@4.10.38", "", { "optionalDependencies": { "@napi-rs/canvas": "^0.1.65" } }, "sha512-/Y3fcFrXEAsMjJXeL9J8+ZG9U01LbuWaYypvDW2ycW1jL269L3js3DVBjDJ0Up9Np1uqDXsDrRihHANhZOlwdQ=="], + + "peerjs": ["peerjs@1.5.4", "", { "dependencies": { "@msgpack/msgpack": "^2.8.0", "eventemitter3": "^4.0.7", "peerjs-js-binarypack": "^2.1.0", "webrtc-adapter": "^9.0.0" } }, "sha512-yFsoLMnurJKlQbx6kVSBpOp+AlNldY1JQS2BrSsHLKCZnq6t7saHleuHM5svuLNbQkUJXHLF3sKOJB1K0xulOw=="], + + "peerjs-js-binarypack": ["peerjs-js-binarypack@2.1.0", "", {}, "sha512-YIwCC+pTzp3Bi8jPI9UFKO0t0SLo6xALnHkiNt/iUFmUUZG0fEEmEyFKvjsDKweiFitzHRyhuh6NvyJZ4nNxMg=="], + + "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], + + "picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + + "picture-tuber": ["picture-tuber@1.0.2", "", { "dependencies": { "buffers": "~0.1.1", "charm": "~0.1.0", "event-stream": "~0.9.8", "optimist": "~0.3.4", "png-js": "~0.1.0", "x256": "~0.0.1" }, "bin": { "picture-tube": "bin/tube.js" } }, "sha512-49/xq+wzbwDeI32aPvwQJldM8pr7dKDRuR76IjztrkmiCkAQDaWFJzkmfVqCHmt/iFoPFhHmI9L0oKhthrTOQw=="], + + "pify": ["pify@2.3.0", "", {}, "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog=="], + + "pirates": ["pirates@4.0.6", "", {}, "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg=="], + + "pkg-dir": ["pkg-dir@3.0.0", "", { "dependencies": { "find-up": "^3.0.0" } }, "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw=="], + + "platform": ["platform@1.3.6", "", {}, "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg=="], + + "plist": ["plist@3.1.0", "", { "dependencies": { "@xmldom/xmldom": "^0.8.8", "base64-js": "^1.5.1", "xmlbuilder": "^15.1.1" } }, "sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ=="], + + "pluralize": ["pluralize@3.1.0", "", {}, "sha512-2wcybwjwXOzGI1rlxWtlcs0/nSYK0OzNPqsg35TKxJFQlGhFu3cZ1x7EHS4r4bubQlhzyF4YxxlJqQnIhkUQCw=="], + + "png-js": ["png-js@0.1.1", "", {}, "sha512-NTtk2SyfjBm+xYl2/VZJBhFnTQ4kU5qWC7VC4/iGbrgiU4FuB4xC+74erxADYJIqZICOR1HCvRA7EBHkpjTg9g=="], + + "pngjs": ["pngjs@3.4.0", "", {}, "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w=="], + + "possible-typed-array-names": ["possible-typed-array-names@1.1.0", "", {}, "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg=="], + + "postcss": ["postcss@8.4.27", "", { "dependencies": { "nanoid": "^3.3.6", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" } }, "sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ=="], + + "postcss-import": ["postcss-import@15.1.0", "", { "dependencies": { "postcss-value-parser": "^4.0.0", "read-cache": "^1.0.0", "resolve": "^1.1.7" }, "peerDependencies": { "postcss": "^8.0.0" } }, "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew=="], + + "postcss-js": ["postcss-js@4.0.1", "", { "dependencies": { "camelcase-css": "^2.0.1" }, "peerDependencies": { "postcss": "^8.4.21" } }, "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw=="], + + "postcss-load-config": ["postcss-load-config@4.0.2", "", { "dependencies": { "lilconfig": "^3.0.0", "yaml": "^2.3.4" }, "peerDependencies": { "postcss": ">=8.0.9", "ts-node": ">=9.0.0" }, "optionalPeers": ["postcss", "ts-node"] }, "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ=="], + + "postcss-nested": ["postcss-nested@6.2.0", "", { "dependencies": { "postcss-selector-parser": "^6.1.1" }, "peerDependencies": { "postcss": "^8.2.14" } }, "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ=="], + + "postcss-selector-parser": ["postcss-selector-parser@6.1.2", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg=="], + + "postcss-value-parser": ["postcss-value-parser@4.2.0", "", {}, "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="], + + "potpack": ["potpack@2.0.0", "", {}, "sha512-Q+/tYsFU9r7xoOJ+y/ZTtdVQwTWfzjbiXBDMM/JKUux3+QPP02iUuIoeBQ+Ot6oEDlC+/PGjB/5A3K7KKb7hcw=="], + + "prebuild-install": ["prebuild-install@7.1.3", "", { "dependencies": { "detect-libc": "^2.0.0", "expand-template": "^2.0.3", "github-from-package": "0.0.0", "minimist": "^1.2.3", "mkdirp-classic": "^0.5.3", "napi-build-utils": "^2.0.0", "node-abi": "^3.3.0", "pump": "^3.0.0", "rc": "^1.2.7", "simple-get": "^4.0.0", "tar-fs": "^2.0.0", "tunnel-agent": "^0.6.0" }, "bin": { "prebuild-install": "bin.js" } }, "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug=="], + + "prelude-ls": ["prelude-ls@1.2.1", "", {}, "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g=="], + + "prettier": ["prettier@3.5.2", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-lc6npv5PH7hVqozBR7lkBNOGXV9vMwROAPlumdBkX0wTbbzPu/U1hk5yL8p2pt4Xoc+2mkT8t/sow2YrV/M5qg=="], + + "pretty-bytes": ["pretty-bytes@5.6.0", "", {}, "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg=="], + + "pretty-format": ["pretty-format@29.7.0", "", { "dependencies": { "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", "react-is": "^18.0.0" } }, "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ=="], + + "prisma": ["prisma@6.4.1", "", { "dependencies": { "@prisma/engines": "6.4.1", "esbuild": ">=0.12 <1", "esbuild-register": "3.6.0" }, "optionalDependencies": { "fsevents": "2.3.3" }, "peerDependencies": { "typescript": ">=5.1.0" }, "optionalPeers": ["typescript"], "bin": { "prisma": "build/index.js" } }, "sha512-q2uJkgXnua/jj66mk6P9bX/zgYJFI/jn4Yp0aS6SPRrjH/n6VyOV7RDe1vHD0DX8Aanx4MvgmUPPoYnR6MJnPg=="], + + "proc-log": ["proc-log@4.2.0", "", {}, "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA=="], + + "process": ["process@0.11.10", "", {}, "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A=="], + + "process-nextick-args": ["process-nextick-args@2.0.1", "", {}, "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="], + + "progress": ["progress@2.0.3", "", {}, "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA=="], + + "promise": ["promise@8.3.0", "", { "dependencies": { "asap": "~2.0.6" } }, "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg=="], + + "prompts": ["prompts@2.4.2", "", { "dependencies": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" } }, "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q=="], + + "prop-types": ["prop-types@15.8.1", "", { "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", "react-is": "^16.13.1" } }, "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg=="], + + "prosemirror-changeset": ["prosemirror-changeset@2.2.1", "", { "dependencies": { "prosemirror-transform": "^1.0.0" } }, "sha512-J7msc6wbxB4ekDFj+n9gTW/jav/p53kdlivvuppHsrZXCaQdVgRghoZbSS3kwrRyAstRVQ4/+u5k7YfLgkkQvQ=="], + + "prosemirror-collab": ["prosemirror-collab@1.3.1", "", { "dependencies": { "prosemirror-state": "^1.0.0" } }, "sha512-4SnynYR9TTYaQVXd/ieUvsVV4PDMBzrq2xPUWutHivDuOshZXqQ5rGbZM84HEaXKbLdItse7weMGOUdDVcLKEQ=="], + + "prosemirror-commands": ["prosemirror-commands@1.7.0", "", { "dependencies": { "prosemirror-model": "^1.0.0", "prosemirror-state": "^1.0.0", "prosemirror-transform": "^1.10.2" } }, "sha512-6toodS4R/Aah5pdsrIwnTYPEjW70SlO5a66oo5Kk+CIrgJz3ukOoS+FYDGqvQlAX5PxoGWDX1oD++tn5X3pyRA=="], + + "prosemirror-dropcursor": ["prosemirror-dropcursor@1.8.1", "", { "dependencies": { "prosemirror-state": "^1.0.0", "prosemirror-transform": "^1.1.0", "prosemirror-view": "^1.1.0" } }, "sha512-M30WJdJZLyXHi3N8vxN6Zh5O8ZBbQCz0gURTfPmTIBNQ5pxrdU7A58QkNqfa98YEjSAL1HUyyU34f6Pm5xBSGw=="], + + "prosemirror-gapcursor": ["prosemirror-gapcursor@1.3.2", "", { "dependencies": { "prosemirror-keymap": "^1.0.0", "prosemirror-model": "^1.0.0", "prosemirror-state": "^1.0.0", "prosemirror-view": "^1.0.0" } }, "sha512-wtjswVBd2vaQRrnYZaBCbyDqr232Ed4p2QPtRIUK5FuqHYKGWkEwl08oQM4Tw7DOR0FsasARV5uJFvMZWxdNxQ=="], + + "prosemirror-history": ["prosemirror-history@1.4.1", "", { "dependencies": { "prosemirror-state": "^1.2.2", "prosemirror-transform": "^1.0.0", "prosemirror-view": "^1.31.0", "rope-sequence": "^1.3.0" } }, "sha512-2JZD8z2JviJrboD9cPuX/Sv/1ChFng+xh2tChQ2X4bB2HeK+rra/bmJ3xGntCcjhOqIzSDG6Id7e8RJ9QPXLEQ=="], + + "prosemirror-inputrules": ["prosemirror-inputrules@1.4.0", "", { "dependencies": { "prosemirror-state": "^1.0.0", "prosemirror-transform": "^1.0.0" } }, "sha512-6ygpPRuTJ2lcOXs9JkefieMst63wVJBgHZGl5QOytN7oSZs3Co/BYbc3Yx9zm9H37Bxw8kVzCnDsihsVsL4yEg=="], + + "prosemirror-keymap": ["prosemirror-keymap@1.2.2", "", { "dependencies": { "prosemirror-state": "^1.0.0", "w3c-keyname": "^2.2.0" } }, "sha512-EAlXoksqC6Vbocqc0GtzCruZEzYgrn+iiGnNjsJsH4mrnIGex4qbLdWWNza3AW5W36ZRrlBID0eM6bdKH4OStQ=="], + + "prosemirror-markdown": ["prosemirror-markdown@1.13.1", "", { "dependencies": { "@types/markdown-it": "^14.0.0", "markdown-it": "^14.0.0", "prosemirror-model": "^1.20.0" } }, "sha512-Sl+oMfMtAjWtlcZoj/5L/Q39MpEnVZ840Xo330WJWUvgyhNmLBLN7MsHn07s53nG/KImevWHSE6fEj4q/GihHw=="], + + "prosemirror-menu": ["prosemirror-menu@1.2.4", "", { "dependencies": { "crelt": "^1.0.0", "prosemirror-commands": "^1.0.0", "prosemirror-history": "^1.0.0", "prosemirror-state": "^1.0.0" } }, "sha512-S/bXlc0ODQup6aiBbWVsX/eM+xJgCTAfMq/nLqaO5ID/am4wS0tTCIkzwytmao7ypEtjj39i7YbJjAgO20mIqA=="], + + "prosemirror-model": ["prosemirror-model@1.24.1", "", { "dependencies": { "orderedmap": "^2.0.0" } }, "sha512-YM053N+vTThzlWJ/AtPtF1j0ebO36nvbmDy4U7qA2XQB8JVaQp1FmB9Jhrps8s+z+uxhhVTny4m20ptUvhk0Mg=="], + + "prosemirror-schema-basic": ["prosemirror-schema-basic@1.2.3", "", { "dependencies": { "prosemirror-model": "^1.19.0" } }, "sha512-h+H0OQwZVqMon1PNn0AG9cTfx513zgIG2DY00eJ00Yvgb3UD+GQ/VlWW5rcaxacpCGT1Yx8nuhwXk4+QbXUfJA=="], + + "prosemirror-schema-list": ["prosemirror-schema-list@1.5.0", "", { "dependencies": { "prosemirror-model": "^1.0.0", "prosemirror-state": "^1.0.0", "prosemirror-transform": "^1.7.3" } }, "sha512-gg1tAfH1sqpECdhIHOA/aLg2VH3ROKBWQ4m8Qp9mBKrOxQRW61zc+gMCI8nh22gnBzd1t2u1/NPLmO3nAa3ssg=="], + + "prosemirror-state": ["prosemirror-state@1.4.3", "", { "dependencies": { "prosemirror-model": "^1.0.0", "prosemirror-transform": "^1.0.0", "prosemirror-view": "^1.27.0" } }, "sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q=="], + + "prosemirror-tables": ["prosemirror-tables@1.6.4", "", { "dependencies": { "prosemirror-keymap": "^1.2.2", "prosemirror-model": "^1.24.1", "prosemirror-state": "^1.4.3", "prosemirror-transform": "^1.10.2", "prosemirror-view": "^1.37.2" } }, "sha512-TkDY3Gw52gRFRfRn2f4wJv5WOgAOXLJA2CQJYIJ5+kdFbfj3acR4JUW6LX2e1hiEBiUwvEhzH5a3cZ5YSztpIA=="], + + "prosemirror-trailing-node": ["prosemirror-trailing-node@3.0.0", "", { "dependencies": { "@remirror/core-constants": "3.0.0", "escape-string-regexp": "^4.0.0" }, "peerDependencies": { "prosemirror-model": "^1.22.1", "prosemirror-state": "^1.4.2", "prosemirror-view": "^1.33.8" } }, "sha512-xiun5/3q0w5eRnGYfNlW1uU9W6x5MoFKWwq/0TIRgt09lv7Hcser2QYV8t4muXbEr+Fwo0geYn79Xs4GKywrRQ=="], + + "prosemirror-transform": ["prosemirror-transform@1.10.2", "", { "dependencies": { "prosemirror-model": "^1.21.0" } }, "sha512-2iUq0wv2iRoJO/zj5mv8uDUriOHWzXRnOTVgCzSXnktS/2iQRa3UUQwVlkBlYZFtygw6Nh1+X4mGqoYBINn5KQ=="], + + "prosemirror-view": ["prosemirror-view@1.38.0", "", { "dependencies": { "prosemirror-model": "^1.20.0", "prosemirror-state": "^1.0.0", "prosemirror-transform": "^1.1.0" } }, "sha512-O45kxXQTaP9wPdXhp8TKqCR+/unS/gnfg9Q93svQcB3j0mlp2XSPAmsPefxHADwzC+fbNS404jqRxm3UQaGvgw=="], + + "protobufjs": ["protobufjs@7.4.0", "", { "dependencies": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", "@protobufjs/codegen": "^2.0.4", "@protobufjs/eventemitter": "^1.1.0", "@protobufjs/fetch": "^1.1.0", "@protobufjs/float": "^1.0.2", "@protobufjs/inquire": "^1.1.0", "@protobufjs/path": "^1.1.2", "@protobufjs/pool": "^1.1.0", "@protobufjs/utf8": "^1.1.0", "@types/node": ">=13.7.0", "long": "^5.0.0" } }, "sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw=="], + + "protocol-buffers-schema": ["protocol-buffers-schema@3.6.0", "", {}, "sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw=="], + + "proxy-from-env": ["proxy-from-env@1.1.0", "", {}, "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="], + + "pump": ["pump@3.0.2", "", { "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" } }, "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw=="], + + "punycode": ["punycode@2.3.1", "", {}, "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="], + + "punycode.js": ["punycode.js@2.3.1", "", {}, "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA=="], + + "pvtsutils": ["pvtsutils@1.3.6", "", { "dependencies": { "tslib": "^2.8.1" } }, "sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg=="], + + "pvutils": ["pvutils@1.1.3", "", {}, "sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ=="], + + "qr.js": ["qr.js@0.0.0", "", {}, "sha512-c4iYnWb+k2E+vYpRimHqSu575b1/wKl4XFeJGpFmrJQz5I88v9aY2czh7s0w36srfCM1sXgC/xpoJz5dJfq+OQ=="], + + "qrcode-terminal": ["qrcode-terminal@0.11.0", "", { "bin": { "qrcode-terminal": "./bin/qrcode-terminal.js" } }, "sha512-Uu7ii+FQy4Qf82G4xu7ShHhjhGahEpCWc3x8UavY3CTcWV+ufmmCtwkr7ZKsX42jdL0kr1B5FKUeqJvAn51jzQ=="], + + "queue": ["queue@6.0.2", "", { "dependencies": { "inherits": "~2.0.3" } }, "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA=="], + + "queue-microtask": ["queue-microtask@1.2.3", "", {}, "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="], + + "quickselect": ["quickselect@3.0.0", "", {}, "sha512-XdjUArbK4Bm5fLLvlm5KpTFOiOThgfWWI4axAZDWg4E/0mKdZyI9tNEfds27qCi1ze/vwTR16kvmmGhRra3c2g=="], + + "quill": ["quill@1.3.7", "", { "dependencies": { "clone": "^2.1.1", "deep-equal": "^1.0.1", "eventemitter3": "^2.0.3", "extend": "^3.0.2", "parchment": "^1.1.4", "quill-delta": "^3.6.2" } }, "sha512-hG/DVzh/TiknWtE6QmWAF/pxoZKYxfe3J/d/+ShUWkDvvkZQVTPeVmUJVu1uE6DDooC4fWTiCLh84ul89oNz5g=="], + + "quill-delta": ["quill-delta@3.6.3", "", { "dependencies": { "deep-equal": "^1.0.1", "extend": "^3.0.2", "fast-diff": "1.1.2" } }, "sha512-wdIGBlcX13tCHOXGMVnnTVFtGRLoP0imqxM696fIPwIf5ODIYUHIvHbZcyvGlZFiFhK5XzDC2lpjbxRhnM05Tg=="], + + "range-parser": ["range-parser@1.2.1", "", {}, "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="], + + "rc": ["rc@1.2.8", "", { "dependencies": { "deep-extend": "^0.6.0", "ini": "~1.3.0", "minimist": "^1.2.0", "strip-json-comments": "~2.0.1" }, "bin": { "rc": "./cli.js" } }, "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw=="], + + "react": ["react@18.2.0", "", { "dependencies": { "loose-envify": "^1.1.0" } }, "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ=="], + + "react-countdown": ["react-countdown@2.3.6", "", { "dependencies": { "prop-types": "^15.7.2" }, "peerDependencies": { "react": ">= 15", "react-dom": ">= 15" } }, "sha512-ZfX6S08Hb6x6W6eCn1hMDvxPICI/T30fd+gaeVTCR/2cGZ2WJ3f26e4ImNIMX1fHkopJrUdnRpWXP13/D39+gg=="], + + "react-devtools-core": ["react-devtools-core@6.1.1", "", { "dependencies": { "shell-quote": "^1.6.1", "ws": "^7" } }, "sha512-TFo1MEnkqE6hzAbaztnyR5uLTMoz6wnEWwWBsCUzNt+sVXJycuRJdDqvL078M4/h65BI/YO5XWTaxZDWVsW0fw=="], + + "react-dom": ["react-dom@18.2.0", "", { "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.0" }, "peerDependencies": { "react": "^18.2.0" } }, "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g=="], + + "react-dropzone-esm": ["react-dropzone-esm@15.2.0", "", { "dependencies": { "prop-types": "^15.8.1" }, "peerDependencies": { "react": ">= 16.8 || 18.0.0" } }, "sha512-pPwR8xWVL+tFLnbAb8KVH5f6Vtl397tck8dINkZ1cPMxHWH+l9dFmIgRWgbh7V7jbjIcuKXCsVrXbhQz68+dVA=="], + + "react-easy-infinite-scroll-hook": ["react-easy-infinite-scroll-hook@2.1.4", "", { "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, "sha512-sRbQGWh4BjSvCHTUGQwqf6PtMsOJWYl+RQ7h7BagmNpoWRi+Q/X8qwMZJ5WyzZS6U5vi3OrSGAfjLFPKp73jrg=="], + + "react-easy-swipe": ["react-easy-swipe@0.0.21", "", { "dependencies": { "prop-types": "^15.5.8" } }, "sha512-OeR2jAxdoqUMHIn/nS9fgreI5hSpgGoL5ezdal4+oO7YSSgJR8ga+PkYGJrSrJ9MKlPcQjMQXnketrD7WNmNsg=="], + + "react-fast-marquee": ["react-fast-marquee@1.6.5", "", { "peerDependencies": { "react": ">= 16.8.0 || ^18.0.0", "react-dom": ">= 16.8.0 || ^18.0.0" } }, "sha512-swDnPqrT2XISAih0o74zQVE2wQJFMvkx+9VZXYYNSLb/CUcAzU9pNj637Ar2+hyRw6b4tP6xh4GQZip2ZCpQpg=="], + + "react-icons": ["react-icons@5.5.0", "", { "peerDependencies": { "react": "*" } }, "sha512-MEFcXdkP3dLo8uumGI5xN3lDFNsRtrjbOEKDLD7yv76v4wpnEq2Lt2qeHaQOr34I/wPN3s3+N08WkQ+CW37Xiw=="], + + "react-iframe": ["react-iframe@1.8.5", "", { "dependencies": { "object-assign": "^4.1.1" }, "peerDependencies": { "react": ">=16.x.x" } }, "sha512-F4cQJGs3ydaG6fJWfuz9yLwOU0Trzl6kttXuUG+vYwosH8enOOFxZWEDQCSbNVO8ayjfYZeqLxEvdvcsSy4GvA=="], + + "react-infinite-scroll-component": ["react-infinite-scroll-component@6.1.0", "", { "dependencies": { "throttle-debounce": "^2.1.0" }, "peerDependencies": { "react": ">=16.0.0" } }, "sha512-SQu5nCqy8DxQWpnUVLx7V7b7LcA37aM7tvoWjTLZp1dk6EJibM5/4EJKzOnl07/BsM1Y40sKLuqjCwwH/xV0TQ=="], + + "react-international-phone": ["react-international-phone@4.5.0", "", { "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-wjwHv+VfiwM49B5/6El4Z5vZKmf3ILpUeiOCI9X+b0Dq4g5nL8gROcwCdVcTXywxznbDSoxSassBX3i9tPZX6g=="], + + "react-is": ["react-is@16.13.1", "", {}, "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="], + + "react-map-gl": ["react-map-gl@7.1.9", "", { "dependencies": { "@maplibre/maplibre-gl-style-spec": "^19.2.1", "@types/mapbox-gl": ">=1.0.0" }, "peerDependencies": { "mapbox-gl": ">=1.13.0", "maplibre-gl": ">=1.13.0 <5.0.0", "react": ">=16.3.0", "react-dom": ">=16.3.0" }, "optionalPeers": ["mapbox-gl", "maplibre-gl"] }, "sha512-KsCc8Gyn05wVGlHZoopaiiCr0RCAQ6LDISo5sEy1/pV/d7RlozkF946tiX7IgyijJQMRujHol5QdwUPESjh73w=="], + + "react-native": ["react-native@0.78.0", "", { "dependencies": { "@jest/create-cache-key-function": "^29.6.3", "@react-native/assets-registry": "0.78.0", "@react-native/codegen": "0.78.0", "@react-native/community-cli-plugin": "0.78.0", "@react-native/gradle-plugin": "0.78.0", "@react-native/js-polyfills": "0.78.0", "@react-native/normalize-colors": "0.78.0", "@react-native/virtualized-lists": "0.78.0", "abort-controller": "^3.0.0", "anser": "^1.4.9", "ansi-regex": "^5.0.0", "babel-jest": "^29.7.0", "babel-plugin-syntax-hermes-parser": "0.25.1", "base64-js": "^1.5.1", "chalk": "^4.0.0", "commander": "^12.0.0", "event-target-shim": "^5.0.1", "flow-enums-runtime": "^0.0.6", "glob": "^7.1.1", "invariant": "^2.2.4", "jest-environment-node": "^29.6.3", "memoize-one": "^5.0.0", "metro-runtime": "^0.81.0", "metro-source-map": "^0.81.0", "nullthrows": "^1.1.1", "pretty-format": "^29.7.0", "promise": "^8.3.0", "react-devtools-core": "^6.0.1", "react-refresh": "^0.14.0", "regenerator-runtime": "^0.13.2", "scheduler": "0.25.0", "semver": "^7.1.3", "stacktrace-parser": "^0.1.10", "whatwg-fetch": "^3.0.0", "ws": "^6.2.3", "yargs": "^17.6.2" }, "peerDependencies": { "@types/react": "^19.0.0", "react": "^19.0.0" }, "optionalPeers": ["@types/react"], "bin": { "react-native": "cli.js" } }, "sha512-3PO4tNvCN6BdAKcoY70v1sLfxYCmDR4KS1VTY+kIBKy5Qznp27QNxL7zBQjvS6Jp91gc8N82QbysQrfBlwg9gQ=="], + + "react-native-web": ["react-native-web@0.19.13", "", { "dependencies": { "@babel/runtime": "^7.18.6", "@react-native/normalize-colors": "^0.74.1", "fbjs": "^3.0.4", "inline-style-prefixer": "^6.0.1", "memoize-one": "^6.0.0", "nullthrows": "^1.1.1", "postcss-value-parser": "^4.2.0", "styleq": "^0.1.3" }, "peerDependencies": { "react": "^18.0.0", "react-dom": "^18.0.0" } }, "sha512-etv3bN8rJglrRCp/uL4p7l8QvUNUC++QwDbdZ8CB7BvZiMvsxfFIRM1j04vxNldG3uo2puRd6OSWR3ibtmc29A=="], + + "react-native-webview": ["react-native-webview@13.13.2", "", { "dependencies": { "escape-string-regexp": "^4.0.0", "invariant": "2.2.4" }, "peerDependencies": { "react": "*", "react-native": "*" } }, "sha512-zACPDTF0WnaEnKZ9mA/r/UpcOpV2gQM06AAIrOOexnO8UJvXL8Pjso0b/wTqKFxUZZnmjKuwd8gHVUosVOdVrw=="], + + "react-number-format": ["react-number-format@5.4.3", "", { "peerDependencies": { "react": "^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-VCY5hFg/soBighAoGcdE+GagkJq0230qN6jcS5sp8wQX1qy1fYN/RX7/BXkrs0oyzzwqR8/+eSUrqXbGeywdUQ=="], + + "react-pdf": ["react-pdf@9.2.1", "", { "dependencies": { "clsx": "^2.0.0", "dequal": "^2.0.3", "make-cancellable-promise": "^1.3.1", "make-event-props": "^1.6.0", "merge-refs": "^1.3.0", "pdfjs-dist": "4.8.69", "tiny-invariant": "^1.0.0", "warning": "^4.0.0" }, "peerDependencies": { "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" }, "optionalPeers": ["@types/react"] }, "sha512-AJt0lAIkItWEZRA5d/mO+Om4nPCuTiQ0saA+qItO967DTjmGjnhmF+Bi2tL286mOTfBlF5CyLzJ35KTMaDoH+A=="], + + "react-property": ["react-property@2.0.0", "", {}, "sha512-kzmNjIgU32mO4mmH5+iUyrqlpFQhF8K2k7eZ4fdLSOPFrD1XgEuSBv9LDEgxRXTMBqMd8ppT0x6TIzqE5pdGdw=="], + + "react-qr-code": ["react-qr-code@2.0.15", "", { "dependencies": { "prop-types": "^15.8.1", "qr.js": "0.0.0" }, "peerDependencies": { "react": "*" } }, "sha512-MkZcjEXqVKqXEIMVE0mbcGgDpkfSdd8zhuzXEl9QzYeNcw8Hq2oVIzDLWuZN2PQBwM5PWjc2S31K8Q1UbcFMfw=="], + + "react-quill": ["react-quill@2.0.0", "", { "dependencies": { "@types/quill": "^1.3.10", "lodash": "^4.17.4", "quill": "^1.3.7" }, "peerDependencies": { "react": "^16 || ^17 || ^18", "react-dom": "^16 || ^17 || ^18" } }, "sha512-4qQtv1FtCfLgoD3PXAur5RyxuUbPXQGOHgTlFie3jtxp43mXDtzCKaOgQ3mLyZfi1PUlyjycfivKelFhy13QUg=="], + + "react-refresh": ["react-refresh@0.14.2", "", {}, "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA=="], + + "react-remove-scroll": ["react-remove-scroll@2.6.3", "", { "dependencies": { "react-remove-scroll-bar": "^2.3.7", "react-style-singleton": "^2.2.3", "tslib": "^2.1.0", "use-callback-ref": "^1.3.3", "use-sidecar": "^1.1.3" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-pnAi91oOk8g8ABQKGF5/M9qxmmOPxaAnopyTHYfqYEwJhyFrbbBtHuSgtKEoH0jpcxx5o3hXqH1mNd9/Oi+8iQ=="], + + "react-remove-scroll-bar": ["react-remove-scroll-bar@2.3.8", "", { "dependencies": { "react-style-singleton": "^2.2.2", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" }, "optionalPeers": ["@types/react"] }, "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q=="], + + "react-responsive-carousel": ["react-responsive-carousel@3.2.23", "", { "dependencies": { "classnames": "^2.2.5", "prop-types": "^15.5.8", "react-easy-swipe": "^0.0.21" } }, "sha512-pqJLsBaKHWJhw/ItODgbVoziR2z4lpcJg+YwmRlSk4rKH32VE633mAtZZ9kDXjy4wFO+pgUZmDKPsPe1fPmHCg=="], + + "react-style-singleton": ["react-style-singleton@2.2.3", "", { "dependencies": { "get-nonce": "^1.0.0", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ=="], + + "react-textarea-autosize": ["react-textarea-autosize@8.3.4", "", { "dependencies": { "@babel/runtime": "^7.10.2", "use-composed-ref": "^1.3.0", "use-latest": "^1.2.1" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, "sha512-CdtmP8Dc19xL8/R6sWvtknD/eCXkQr30dtvC4VmGInhRsfF8X/ihXCq6+9l9qbxmKRiq407/7z5fxE7cVWQNgQ=="], + + "react-toastify": ["react-toastify@9.1.3", "", { "dependencies": { "clsx": "^1.1.1" }, "peerDependencies": { "react": ">=16", "react-dom": ">=16" } }, "sha512-fPfb8ghtn/XMxw3LkxQBk3IyagNpF/LIKjOBflbexr2AWxAH1MJgvnESwEwBn9liLFXgTKWgBSdZpw9m4OTHTg=="], + + "react-transition-group": ["react-transition-group@4.4.2", "", { "dependencies": { "@babel/runtime": "^7.5.5", "dom-helpers": "^5.0.1", "loose-envify": "^1.4.0", "prop-types": "^15.6.2" }, "peerDependencies": { "react": ">=16.6.0", "react-dom": ">=16.6.0" } }, "sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg=="], + + "read-cache": ["read-cache@1.0.0", "", { "dependencies": { "pify": "^2.3.0" } }, "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA=="], + + "readable-stream": ["readable-stream@4.7.0", "", { "dependencies": { "abort-controller": "^3.0.0", "buffer": "^6.0.3", "events": "^3.3.0", "process": "^0.11.10", "string_decoder": "^1.3.0" } }, "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg=="], + + "readdirp": ["readdirp@3.6.0", "", { "dependencies": { "picomatch": "^2.2.1" } }, "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA=="], + + "readline": ["readline@1.3.0", "", {}, "sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg=="], + + "recast": ["recast@0.23.10", "", { "dependencies": { "ast-types": "^0.16.1", "esprima": "~4.0.0", "source-map": "~0.6.1", "tiny-invariant": "^1.3.3", "tslib": "^2.0.1" } }, "sha512-mbCmRMJUKCJ1h41V0cu2C26ULBURwuoZ34C9rChjcDaeJ/4Kv5al3O2HPwTs2m0wQ1vGhMY+tguhzU1aE8md1A=="], + + "redeyed": ["redeyed@2.1.1", "", { "dependencies": { "esprima": "~4.0.0" } }, "sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ=="], + + "reflect.getprototypeof": ["reflect.getprototypeof@1.0.10", "", { "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-abstract": "^1.23.9", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "get-intrinsic": "^1.2.7", "get-proto": "^1.0.1", "which-builtin-type": "^1.2.1" } }, "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw=="], + + "regenerate": ["regenerate@1.4.2", "", {}, "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A=="], + + "regenerate-unicode-properties": ["regenerate-unicode-properties@10.2.0", "", { "dependencies": { "regenerate": "^1.4.2" } }, "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA=="], + + "regenerator-runtime": ["regenerator-runtime@0.13.11", "", {}, "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg=="], + + "regenerator-transform": ["regenerator-transform@0.15.2", "", { "dependencies": { "@babel/runtime": "^7.8.4" } }, "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg=="], + + "regexp.prototype.flags": ["regexp.prototype.flags@1.5.4", "", { "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-errors": "^1.3.0", "get-proto": "^1.0.1", "gopd": "^1.2.0", "set-function-name": "^2.0.2" } }, "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA=="], + + "regexpu-core": ["regexpu-core@6.2.0", "", { "dependencies": { "regenerate": "^1.4.2", "regenerate-unicode-properties": "^10.2.0", "regjsgen": "^0.8.0", "regjsparser": "^0.12.0", "unicode-match-property-ecmascript": "^2.0.0", "unicode-match-property-value-ecmascript": "^2.1.0" } }, "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA=="], + + "regjsgen": ["regjsgen@0.8.0", "", {}, "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q=="], + + "regjsparser": ["regjsparser@0.12.0", "", { "dependencies": { "jsesc": "~3.0.2" }, "bin": { "regjsparser": "bin/parser" } }, "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ=="], + + "reinterval": ["reinterval@1.1.0", "", {}, "sha512-QIRet3SYrGp0HUHO88jVskiG6seqUGC5iAG7AwI/BV4ypGcuqk9Du6YQBUOUqm9c8pw1eyLoIaONifRua1lsEQ=="], + + "remove-trailing-slash": ["remove-trailing-slash@0.1.1", "", {}, "sha512-o4S4Qh6L2jpnCy83ysZDau+VORNvnFw07CKSAymkd6ICNVEPisMyzlc00KlvvicsxKck94SEwhDnMNdICzO+tA=="], + + "require-directory": ["require-directory@2.1.1", "", {}, "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q=="], + + "require-from-string": ["require-from-string@2.0.2", "", {}, "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="], + + "requireg": ["requireg@0.2.2", "", { "dependencies": { "nested-error-stacks": "~2.0.1", "rc": "~1.2.7", "resolve": "~1.7.1" } }, "sha512-nYzyjnFcPNGR3lx9lwPPPnuQxv6JWEZd2Ci0u9opN7N5zUEPIhY/GbL3vMGOr2UXwEg9WwSyV9X9Y/kLFgPsOg=="], + + "resolve": ["resolve@1.22.10", "", { "dependencies": { "is-core-module": "^2.16.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" } }, "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w=="], + + "resolve-from": ["resolve-from@4.0.0", "", {}, "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="], + + "resolve-pkg-maps": ["resolve-pkg-maps@1.0.0", "", {}, "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw=="], + + "resolve-protobuf-schema": ["resolve-protobuf-schema@2.1.0", "", { "dependencies": { "protocol-buffers-schema": "^3.3.1" } }, "sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ=="], + + "resolve-workspace-root": ["resolve-workspace-root@2.0.0", "", {}, "sha512-IsaBUZETJD5WsI11Wt8PKHwaIe45or6pwNc8yflvLJ4DWtImK9kuLoH5kUva/2Mmx/RdIyr4aONNSa2v9LTJsw=="], + + "resolve.exports": ["resolve.exports@2.0.3", "", {}, "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A=="], + + "restore-cursor": ["restore-cursor@2.0.0", "", { "dependencies": { "onetime": "^2.0.0", "signal-exit": "^3.0.2" } }, "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q=="], + + "restructure": ["restructure@3.0.2", "", {}, "sha512-gSfoiOEA0VPE6Tukkrr7I0RBdE0s7H1eFCDBk05l1KIQT1UIKNc5JZy6jdyW6eYH3aR3g5b3PuL77rq0hvwtAw=="], + + "retimer": ["retimer@3.0.0", "", {}, "sha512-WKE0j11Pa0ZJI5YIk0nflGI7SQsfl2ljihVy7ogh7DeQSeYAUi0ubZ/yEueGtDfUPk6GH5LRw1hBdLq4IwUBWA=="], + + "reusify": ["reusify@1.1.0", "", {}, "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw=="], + + "rfdc": ["rfdc@1.4.1", "", {}, "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA=="], + + "rimraf": ["rimraf@3.0.2", "", { "dependencies": { "glob": "^7.1.3" }, "bin": { "rimraf": "bin.js" } }, "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA=="], + + "rope-sequence": ["rope-sequence@1.3.4", "", {}, "sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ=="], + + "run-parallel": ["run-parallel@1.2.0", "", { "dependencies": { "queue-microtask": "^1.2.2" } }, "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA=="], + + "rw": ["rw@1.3.3", "", {}, "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ=="], + + "safe-array-concat": ["safe-array-concat@1.1.3", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.2", "get-intrinsic": "^1.2.6", "has-symbols": "^1.1.0", "isarray": "^2.0.5" } }, "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q=="], + + "safe-buffer": ["safe-buffer@5.1.2", "", {}, "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="], + + "safe-push-apply": ["safe-push-apply@1.0.0", "", { "dependencies": { "es-errors": "^1.3.0", "isarray": "^2.0.5" } }, "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA=="], + + "safe-regex-test": ["safe-regex-test@1.1.0", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "is-regex": "^1.2.1" } }, "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw=="], + + "safe-stable-stringify": ["safe-stable-stringify@2.5.0", "", {}, "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA=="], + + "safer-buffer": ["safer-buffer@2.1.2", "", {}, "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="], + + "sax": ["sax@1.4.1", "", {}, "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg=="], + + "scheduler": ["scheduler@0.17.0", "", { "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1" } }, "sha512-7rro8Io3tnCPuY4la/NuI5F2yfESpnfZyT6TtkXnSWVkcu0BCDJ+8gk5ozUaFaxpIyNuWAPXrH0yFcSi28fnDA=="], + + "sdp": ["sdp@3.2.0", "", {}, "sha512-d7wDPgDV3DDiqulJjKiV2865wKsJ34YI+NDREbm+FySq6WuKOikwyNQcm+doLAZ1O6ltdO0SeKle2xMpN3Brgw=="], + + "selfsigned": ["selfsigned@2.4.1", "", { "dependencies": { "@types/node-forge": "^1.3.0", "node-forge": "^1" } }, "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q=="], + + "semver": ["semver@7.7.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA=="], + + "send": ["send@0.19.1", "", { "dependencies": { "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "0.5.2", "http-errors": "2.0.0", "mime": "1.6.0", "ms": "2.1.3", "on-finished": "2.4.1", "range-parser": "~1.2.1", "statuses": "2.0.1" } }, "sha512-p4rRk4f23ynFEfcD9LA0xRYngj+IyGiEYyqqOak8kaN0TvNmuxC2dcVeBn62GpCeR2CpWqyHCNScTP91QbAVFg=="], + + "serialize-error": ["serialize-error@2.1.0", "", {}, "sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw=="], + + "serialize-to-js": ["serialize-to-js@3.1.2", "", {}, "sha512-owllqNuDDEimQat7EPG0tH7JjO090xKNzUtYz6X+Sk2BXDnOCilDdNLwjWeFywG9xkJul1ULvtUQa9O4pUaY0w=="], + + "serve-static": ["serve-static@1.16.2", "", { "dependencies": { "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", "send": "0.19.0" } }, "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw=="], + + "set-function-length": ["set-function-length@1.2.2", "", { "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", "function-bind": "^1.1.2", "get-intrinsic": "^1.2.4", "gopd": "^1.0.1", "has-property-descriptors": "^1.0.2" } }, "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg=="], + + "set-function-name": ["set-function-name@2.0.2", "", { "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", "functions-have-names": "^1.2.3", "has-property-descriptors": "^1.0.2" } }, "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ=="], + + "set-proto": ["set-proto@1.0.0", "", { "dependencies": { "dunder-proto": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0" } }, "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw=="], + + "set-value": ["set-value@2.0.1", "", { "dependencies": { "extend-shallow": "^2.0.1", "is-extendable": "^0.1.1", "is-plain-object": "^2.0.3", "split-string": "^3.0.1" } }, "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw=="], + + "setimmediate": ["setimmediate@1.0.5", "", {}, "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA=="], + + "setprototypeof": ["setprototypeof@1.2.0", "", {}, "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="], + + "shallow-clone": ["shallow-clone@3.0.1", "", { "dependencies": { "kind-of": "^6.0.2" } }, "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA=="], + + "shallowequal": ["shallowequal@1.1.0", "", {}, "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ=="], + + "sharp": ["sharp@0.33.5", "", { "dependencies": { "color": "^4.2.3", "detect-libc": "^2.0.3", "semver": "^7.6.3" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.33.5", "@img/sharp-darwin-x64": "0.33.5", "@img/sharp-libvips-darwin-arm64": "1.0.4", "@img/sharp-libvips-darwin-x64": "1.0.4", "@img/sharp-libvips-linux-arm": "1.0.5", "@img/sharp-libvips-linux-arm64": "1.0.4", "@img/sharp-libvips-linux-s390x": "1.0.4", "@img/sharp-libvips-linux-x64": "1.0.4", "@img/sharp-libvips-linuxmusl-arm64": "1.0.4", "@img/sharp-libvips-linuxmusl-x64": "1.0.4", "@img/sharp-linux-arm": "0.33.5", "@img/sharp-linux-arm64": "0.33.5", "@img/sharp-linux-s390x": "0.33.5", "@img/sharp-linux-x64": "0.33.5", "@img/sharp-linuxmusl-arm64": "0.33.5", "@img/sharp-linuxmusl-x64": "0.33.5", "@img/sharp-wasm32": "0.33.5", "@img/sharp-win32-ia32": "0.33.5", "@img/sharp-win32-x64": "0.33.5" } }, "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw=="], + + "shebang-command": ["shebang-command@2.0.0", "", { "dependencies": { "shebang-regex": "^3.0.0" } }, "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="], + + "shebang-regex": ["shebang-regex@3.0.0", "", {}, "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="], + + "shell-quote": ["shell-quote@1.8.2", "", {}, "sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA=="], + + "side-channel": ["side-channel@1.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3", "side-channel-list": "^1.0.0", "side-channel-map": "^1.0.1", "side-channel-weakmap": "^1.0.2" } }, "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw=="], + + "side-channel-list": ["side-channel-list@1.0.0", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3" } }, "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA=="], + + "side-channel-map": ["side-channel-map@1.0.1", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.5", "object-inspect": "^1.13.3" } }, "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA=="], + + "side-channel-weakmap": ["side-channel-weakmap@1.0.2", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.5", "object-inspect": "^1.13.3", "side-channel-map": "^1.0.1" } }, "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A=="], + + "signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="], + + "simple-concat": ["simple-concat@1.0.1", "", {}, "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q=="], + + "simple-get": ["simple-get@4.0.1", "", { "dependencies": { "decompress-response": "^6.0.0", "once": "^1.3.1", "simple-concat": "^1.0.0" } }, "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA=="], + + "simple-plist": ["simple-plist@1.3.1", "", { "dependencies": { "bplist-creator": "0.1.0", "bplist-parser": "0.3.1", "plist": "^3.0.5" } }, "sha512-iMSw5i0XseMnrhtIzRb7XpQEXepa9xhWxGUojHBL43SIpQuDQkh3Wpy67ZbDzZVr6EKxvwVChnVpdl8hEVLDiw=="], + + "simple-swizzle": ["simple-swizzle@0.2.2", "", { "dependencies": { "is-arrayish": "^0.3.1" } }, "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg=="], + + "sisteransi": ["sisteransi@1.0.5", "", {}, "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg=="], + + "size-sensor": ["size-sensor@1.0.2", "", {}, "sha512-2NCmWxY7A9pYKGXNBfteo4hy14gWu47rg5692peVMst6lQLPKrVjhY+UTEsPI5ceFRJSl3gVgMYaUi/hKuaiKw=="], + + "slash": ["slash@3.0.0", "", {}, "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q=="], + + "slugify": ["slugify@1.6.6", "", {}, "sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw=="], + + "socket.io-client": ["socket.io-client@4.8.1", "", { "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.2", "engine.io-client": "~6.6.1", "socket.io-parser": "~4.2.4" } }, "sha512-hJVXfu3E28NmzGk8o1sHhN3om52tRvwYeidbj7xKy2eIIse5IoKX3USlS6Tqt3BHAtflLIkCQBkzVrEEfWUyYQ=="], + + "socket.io-parser": ["socket.io-parser@4.2.4", "", { "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1" } }, "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew=="], + + "sort-asc": ["sort-asc@0.2.0", "", {}, "sha512-umMGhjPeHAI6YjABoSTrFp2zaBtXBej1a0yKkuMUyjjqu6FJsTF+JYwCswWDg+zJfk/5npWUUbd33HH/WLzpaA=="], + + "sort-desc": ["sort-desc@0.2.0", "", {}, "sha512-NqZqyvL4VPW+RAxxXnB8gvE1kyikh8+pR+T+CXLksVRN9eiQqkQlPwqWYU0mF9Jm7UnctShlxLyAt1CaBOTL1w=="], + + "sort-object": ["sort-object@3.0.3", "", { "dependencies": { "bytewise": "^1.1.0", "get-value": "^2.0.2", "is-extendable": "^0.1.1", "sort-asc": "^0.2.0", "sort-desc": "^0.2.0", "union-value": "^1.0.1" } }, "sha512-nK7WOY8jik6zaG9CRwZTaD5O7ETWDLZYMM12pqY8htll+7dYeqGfEUPcUBHOpSJg2vJOrvFIY2Dl5cX2ih1hAQ=="], + + "source-map": ["source-map@0.5.7", "", {}, "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ=="], + + "source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="], + + "source-map-support": ["source-map-support@0.5.21", "", { "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" } }, "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w=="], + + "sparkline": ["sparkline@0.1.2", "", { "dependencies": { "here": "0.0.2", "nopt": "~2.1.2" }, "bin": { "sparkline": "bin/sparkline" } }, "sha512-t//aVOiWt9fi/e22ea1vXVWBDX+gp18y+Ch9sKqmHl828bRfvP2VtfTJVEcgWFBQHd0yDPNQRiHdqzCvbcYSDA=="], + + "split": ["split@1.0.1", "", { "dependencies": { "through": "2" } }, "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg=="], + + "split-string": ["split-string@3.1.0", "", { "dependencies": { "extend-shallow": "^3.0.0" } }, "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw=="], + + "split2": ["split2@4.2.0", "", {}, "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg=="], + + "sprintf-js": ["sprintf-js@1.0.3", "", {}, "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g=="], + + "ssri": ["ssri@10.0.6", "", { "dependencies": { "minipass": "^7.0.3" } }, "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ=="], + + "stable-hash": ["stable-hash@0.0.4", "", {}, "sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g=="], + + "stack-trace": ["stack-trace@0.0.10", "", {}, "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg=="], + + "stack-utils": ["stack-utils@2.0.6", "", { "dependencies": { "escape-string-regexp": "^2.0.0" } }, "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ=="], + + "stackframe": ["stackframe@1.3.4", "", {}, "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw=="], + + "stacktrace-parser": ["stacktrace-parser@0.1.11", "", { "dependencies": { "type-fest": "^0.7.1" } }, "sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg=="], + + "statuses": ["statuses@2.0.1", "", {}, "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ=="], + + "stream-buffers": ["stream-buffers@2.2.0", "", {}, "sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg=="], + + "streamsearch": ["streamsearch@1.1.0", "", {}, "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg=="], + + "string-at": ["string-at@1.1.0", "", { "dependencies": { "define-properties": "^1.1.3", "es-abstract": "^1.17.0-next.1" } }, "sha512-jCpPowWKBn0NFdvtmK2qxK40Ol4jPcgCt8qYnKpPx6B5eDwHMDhRvq9MCsDEgsOTNtbXY6beAMHMRT2qPJXllA=="], + + "string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], + + "string-width-cjs": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], + + "string.prototype.includes": ["string.prototype.includes@2.0.1", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-abstract": "^1.23.3" } }, "sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg=="], + + "string.prototype.matchall": ["string.prototype.matchall@4.0.12", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "es-abstract": "^1.23.6", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "get-intrinsic": "^1.2.6", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "internal-slot": "^1.1.0", "regexp.prototype.flags": "^1.5.3", "set-function-name": "^2.0.2", "side-channel": "^1.1.0" } }, "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA=="], + + "string.prototype.padend": ["string.prototype.padend@3.1.6", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-abstract": "^1.23.2", "es-object-atoms": "^1.0.0" } }, "sha512-XZpspuSB7vJWhvJc9DLSlrXl1mcA2BdoY5jjnS135ydXqLoqhs96JjDtCkjJEQHvfqZIp9hBuBMgI589peyx9Q=="], + + "string.prototype.padstart": ["string.prototype.padstart@3.1.6", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-abstract": "^1.23.0", "es-object-atoms": "^1.0.0" } }, "sha512-1y15lz7otgfRTAVK5qbp3eHIga+w8j7+jIH+7HpUrOfnLVl6n0hbspi4EXf4tR+PNOpBjPstltemkx0SvViOCg=="], + + "string.prototype.repeat": ["string.prototype.repeat@1.0.0", "", { "dependencies": { "define-properties": "^1.1.3", "es-abstract": "^1.17.5" } }, "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w=="], + + "string.prototype.trim": ["string.prototype.trim@1.2.10", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.2", "define-data-property": "^1.1.4", "define-properties": "^1.2.1", "es-abstract": "^1.23.5", "es-object-atoms": "^1.0.0", "has-property-descriptors": "^1.0.2" } }, "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA=="], + + "string.prototype.trimend": ["string.prototype.trimend@1.0.9", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.2", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" } }, "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ=="], + + "string.prototype.trimleft": ["string.prototype.trimleft@2.1.3", "", { "dependencies": { "call-bind": "^1.0.0", "define-properties": "^1.1.3", "string.prototype.trimstart": "^1.0.3" } }, "sha512-699Ibssmj/awVzvdNk4g83/Iu8U9vDohzmA/ly2BrQWGhamuY4Tlvs5XKmKliDt3ky6SKbE1bzPhASKCFlx9Sg=="], + + "string.prototype.trimright": ["string.prototype.trimright@2.1.3", "", { "dependencies": { "call-bind": "^1.0.0", "define-properties": "^1.1.3", "string.prototype.trimend": "^1.0.3" } }, "sha512-hoOq56oRFnnfDuXNy2lGHiwT77MehHv9d0zGfRZ8QdC+4zjrkFB9vd5i/zYTd/ymFBd4YxtbdgHt3U6ksGeuBw=="], + + "string.prototype.trimstart": ["string.prototype.trimstart@1.0.8", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" } }, "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg=="], + + "string_decoder": ["string_decoder@1.3.0", "", { "dependencies": { "safe-buffer": "~5.2.0" } }, "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA=="], + + "strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], + + "strip-ansi-cjs": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], + + "strip-bom": ["strip-bom@3.0.0", "", {}, "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA=="], + + "strip-eof": ["strip-eof@1.0.0", "", {}, "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q=="], + + "strip-json-comments": ["strip-json-comments@3.1.1", "", {}, "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="], + + "structured-headers": ["structured-headers@0.4.1", "", {}, "sha512-0MP/Cxx5SzeeZ10p/bZI0S6MpgD+yxAhi1BOQ34jgnMXsCq3j1t6tQnZu+KdlL7dvJTLT3g9xN8tl10TqgFMcg=="], + + "style-to-js": ["style-to-js@1.1.0", "", { "dependencies": { "style-to-object": "0.3.0" } }, "sha512-1OqefPDxGrlMwcbfpsTVRyzwdhr4W0uxYQzeA2F1CBc8WG04udg2+ybRnvh3XYL4TdHQrCahLtax2jc8xaE6rA=="], + + "style-to-object": ["style-to-object@0.3.0", "", { "dependencies": { "inline-style-parser": "0.1.1" } }, "sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA=="], + + "styled-components": ["styled-components@6.1.15", "", { "dependencies": { "@emotion/is-prop-valid": "1.2.2", "@emotion/unitless": "0.8.1", "@types/stylis": "4.2.5", "css-to-react-native": "3.2.0", "csstype": "3.1.3", "postcss": "8.4.49", "shallowequal": "1.1.0", "stylis": "4.3.2", "tslib": "2.6.2" }, "peerDependencies": { "react": ">= 16.8.0", "react-dom": ">= 16.8.0" } }, "sha512-PpOTEztW87Ua2xbmLa7yssjNyUF9vE7wdldRfn1I2E6RTkqknkBYpj771OxM/xrvRGinLy2oysa7GOd7NcZZIA=="], + + "styled-jsx": ["styled-jsx@5.1.1", "", { "dependencies": { "client-only": "0.0.1" }, "peerDependencies": { "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0" } }, "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw=="], + + "styleq": ["styleq@0.1.3", "", {}, "sha512-3ZUifmCDCQanjeej1f6kyl/BeP/Vae5EYkQ9iJfUm/QwZvlgnZzyflqAsAWYURdtea8Vkvswu2GrC57h3qffcA=="], + + "stylis": ["stylis@4.3.2", "", {}, "sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg=="], + + "subarg": ["subarg@1.0.0", "", { "dependencies": { "minimist": "^1.1.0" } }, "sha512-RIrIdRY0X1xojthNcVtgT9sjpOGagEUKpZdgBUi054OEPFo282yg+zE+t1Rj3+RqKq2xStL7uUHhY+AjbC4BXg=="], + + "sucrase": ["sucrase@3.35.0", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.2", "commander": "^4.0.0", "glob": "^10.3.10", "lines-and-columns": "^1.1.6", "mz": "^2.7.0", "pirates": "^4.0.1", "ts-interface-checker": "^0.1.9" }, "bin": { "sucrase": "bin/sucrase", "sucrase-node": "bin/sucrase-node" } }, "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA=="], + + "sudo-prompt": ["sudo-prompt@8.2.5", "", {}, "sha512-rlBo3HU/1zAJUrkY6jNxDOC9eVYliG6nS4JA8u8KAshITd07tafMc/Br7xQwCSseXwJ2iCcHCE8SNWX3q8Z+kw=="], + + "supercluster": ["supercluster@8.0.1", "", { "dependencies": { "kdbush": "^4.0.2" } }, "sha512-IiOea5kJ9iqzD2t7QJq/cREyLHTtSmUT6gQsweojg9WH2sYJqZK9SswTu6jrscO6D1G5v5vYZ9ru/eq85lXeZQ=="], + + "supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="], + + "supports-hyperlinks": ["supports-hyperlinks@2.3.0", "", { "dependencies": { "has-flag": "^4.0.0", "supports-color": "^7.0.0" } }, "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA=="], + + "supports-preserve-symlinks-flag": ["supports-preserve-symlinks-flag@1.0.0", "", {}, "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="], + + "svg-arc-to-cubic-bezier": ["svg-arc-to-cubic-bezier@3.2.0", "", {}, "sha512-djbJ/vZKZO+gPoSDThGNpKDO+o+bAeA4XQKovvkNCqnIS2t+S4qnLAGQhyyrulhCFRl1WWzAp0wUDV8PpTVU3g=="], + + "swr": ["swr@2.3.2", "", { "dependencies": { "dequal": "^2.0.3", "use-sync-external-store": "^1.4.0" }, "peerDependencies": { "react": "^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-RosxFpiabojs75IwQ316DGoDRmOqtiAj0tg8wCcbEu4CiLZBs/a9QNtHV7TUfDXmmlgqij/NqzKq/eLelyv9xA=="], + + "tabbable": ["tabbable@6.2.0", "", {}, "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew=="], + + "tailwindcss": ["tailwindcss@3.3.3", "", { "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", "chokidar": "^3.5.3", "didyoumean": "^1.2.2", "dlv": "^1.1.3", "fast-glob": "^3.2.12", "glob-parent": "^6.0.2", "is-glob": "^4.0.3", "jiti": "^1.18.2", "lilconfig": "^2.1.0", "micromatch": "^4.0.5", "normalize-path": "^3.0.0", "object-hash": "^3.0.0", "picocolors": "^1.0.0", "postcss": "^8.4.23", "postcss-import": "^15.1.0", "postcss-js": "^4.0.1", "postcss-load-config": "^4.0.1", "postcss-nested": "^6.0.1", "postcss-selector-parser": "^6.0.11", "resolve": "^1.22.2", "sucrase": "^3.32.0" }, "bin": { "tailwind": "lib/cli.js", "tailwindcss": "lib/cli.js" } }, "sha512-A0KgSkef7eE4Mf+nKJ83i75TMyq8HqY3qmFIJSWy8bNt0v1lG7jUcpGpoTFxAwYcWOphcTBLPPJg+bDfhDf52w=="], + + "tapable": ["tapable@2.2.1", "", {}, "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ=="], + + "tar": ["tar@6.2.1", "", { "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", "minipass": "^5.0.0", "minizlib": "^2.1.1", "mkdirp": "^1.0.3", "yallist": "^4.0.0" } }, "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A=="], + + "tar-fs": ["tar-fs@2.1.2", "", { "dependencies": { "chownr": "^1.1.1", "mkdirp-classic": "^0.5.2", "pump": "^3.0.0", "tar-stream": "^2.1.4" } }, "sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA=="], + + "tar-stream": ["tar-stream@2.2.0", "", { "dependencies": { "bl": "^4.0.3", "end-of-stream": "^1.4.1", "fs-constants": "^1.0.0", "inherits": "^2.0.3", "readable-stream": "^3.1.1" } }, "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ=="], + + "temp": ["temp@0.8.4", "", { "dependencies": { "rimraf": "~2.6.2" } }, "sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg=="], + + "temp-dir": ["temp-dir@2.0.0", "", {}, "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg=="], + + "tempy": ["tempy@0.7.1", "", { "dependencies": { "del": "^6.0.0", "is-stream": "^2.0.0", "temp-dir": "^2.0.0", "type-fest": "^0.16.0", "unique-string": "^2.0.0" } }, "sha512-vXPxwOyaNVi9nyczO16mxmHGpl6ASC5/TVhRRHpqeYHvKQm58EaWNvZXxAhR0lYYnBOQFjXjhzeLsaXdjxLjRg=="], + + "term-canvas": ["term-canvas@0.0.5", "", {}, "sha512-eZ3rIWi5yLnKiUcsW8P79fKyooaLmyLWAGqBhFspqMxRNUiB4GmHHk5AzQ4LxvFbJILaXqQZLwbbATLOhCFwkw=="], + + "terminal-link": ["terminal-link@2.1.1", "", { "dependencies": { "ansi-escapes": "^4.2.1", "supports-hyperlinks": "^2.0.0" } }, "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ=="], + + "terser": ["terser@5.39.0", "", { "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.8.2", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, "bin": { "terser": "bin/terser" } }, "sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw=="], + + "test-exclude": ["test-exclude@6.0.0", "", { "dependencies": { "@istanbuljs/schema": "^0.1.2", "glob": "^7.1.4", "minimatch": "^3.0.4" } }, "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w=="], + + "text-hex": ["text-hex@1.0.0", "", {}, "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg=="], + + "text-table": ["text-table@0.2.0", "", {}, "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw=="], + + "thenify": ["thenify@3.3.1", "", { "dependencies": { "any-promise": "^1.0.0" } }, "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw=="], + + "thenify-all": ["thenify-all@1.6.0", "", { "dependencies": { "thenify": ">= 3.1.0 < 4" } }, "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA=="], + + "throat": ["throat@5.0.0", "", {}, "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA=="], + + "throttle-debounce": ["throttle-debounce@2.3.0", "", {}, "sha512-H7oLPV0P7+jgvrk+6mwwwBDmxTaxnu9HMXmloNLXwnNO0ZxZ31Orah2n8lU1eMPvsaowP2CX+USCgyovXfdOFQ=="], + + "through": ["through@2.3.8", "", {}, "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg=="], + + "through2": ["through2@0.4.2", "", { "dependencies": { "readable-stream": "~1.0.17", "xtend": "~2.1.1" } }, "sha512-45Llu+EwHKtAZYTPPVn3XZHBgakWMN3rokhEv5hu596XP+cNgplMg+Gj+1nmAvj+L0K7+N49zBKx5rah5u0QIQ=="], + + "timestring": ["timestring@6.0.0", "", {}, "sha512-wMctrWD2HZZLuIlchlkE2dfXJh7J2KDI9Dwl+2abPYg0mswQHfOAyQW3jJg1pY5VfttSINZuKcXoB3FGypVklA=="], + + "tiny-inflate": ["tiny-inflate@1.0.3", "", {}, "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw=="], + + "tiny-invariant": ["tiny-invariant@1.3.3", "", {}, "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg=="], + + "tinyglobby": ["tinyglobby@0.2.12", "", { "dependencies": { "fdir": "^6.4.3", "picomatch": "^4.0.2" } }, "sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww=="], + + "tinyqueue": ["tinyqueue@3.0.0", "", {}, "sha512-gRa9gwYU3ECmQYv3lslts5hxuIa90veaEcxDYuu3QGOIAEM2mOZkVHp48ANJuu1CURtRdHKUBY5Lm1tHV+sD4g=="], + + "tippy.js": ["tippy.js@6.3.7", "", { "dependencies": { "@popperjs/core": "^2.9.0" } }, "sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ=="], + + "tls": ["tls@0.0.1", "", {}, "sha512-GzHpG+hwupY8VMR6rYsnAhTHqT/97zT45PG8WD5eTT1lq+dFE0nN+1PYpsoBcHJgSmTz5ceK2Cv88IkPmIPOtQ=="], + + "tmp": ["tmp@0.0.33", "", { "dependencies": { "os-tmpdir": "~1.0.2" } }, "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw=="], + + "tmpl": ["tmpl@1.0.5", "", {}, "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw=="], + + "to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="], + + "toad-cache": ["toad-cache@3.7.0", "", {}, "sha512-/m8M+2BJUpoJdgAHoG+baCwBT+tf2VraSfkBgl0Y00qIWt41DJ8R5B8nsEw0I58YwF5IZH6z24/2TobDKnqSWw=="], + + "toidentifier": ["toidentifier@1.0.1", "", {}, "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="], + + "tr46": ["tr46@0.0.3", "", {}, "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="], + + "triple-beam": ["triple-beam@1.4.1", "", {}, "sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg=="], + + "ts-api-utils": ["ts-api-utils@1.4.3", "", { "peerDependencies": { "typescript": ">=4.2.0" } }, "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw=="], + + "ts-interface-checker": ["ts-interface-checker@0.1.13", "", {}, "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA=="], + + "ts-node": ["ts-node@10.9.2", "", { "dependencies": { "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", "@tsconfig/node12": "^1.0.7", "@tsconfig/node14": "^1.0.0", "@tsconfig/node16": "^1.0.2", "acorn": "^8.4.1", "acorn-walk": "^8.1.1", "arg": "^4.1.0", "create-require": "^1.1.0", "diff": "^4.0.1", "make-error": "^1.1.1", "v8-compile-cache-lib": "^3.0.1", "yn": "3.1.1" }, "peerDependencies": { "@swc/core": ">=1.2.50", "@swc/wasm": ">=1.2.50", "@types/node": "*", "typescript": ">=2.7" }, "optionalPeers": ["@swc/core", "@swc/wasm"], "bin": { "ts-node": "dist/bin.js", "ts-script": "dist/bin-script-deprecated.js", "ts-node-cwd": "dist/bin-cwd.js", "ts-node-esm": "dist/bin-esm.js", "ts-node-script": "dist/bin-script.js", "ts-node-transpile-only": "dist/bin-transpile.js" } }, "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ=="], + + "tsconfig-paths": ["tsconfig-paths@3.15.0", "", { "dependencies": { "@types/json5": "^0.0.29", "json5": "^1.0.2", "minimist": "^1.2.6", "strip-bom": "^3.0.0" } }, "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg=="], + + "tslib": ["tslib@2.3.0", "", {}, "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="], + + "tunnel-agent": ["tunnel-agent@0.6.0", "", { "dependencies": { "safe-buffer": "^5.0.1" } }, "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w=="], + + "type-check": ["type-check@0.4.0", "", { "dependencies": { "prelude-ls": "^1.2.1" } }, "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew=="], + + "type-detect": ["type-detect@4.0.8", "", {}, "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g=="], + + "type-fest": ["type-fest@0.20.2", "", {}, "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ=="], + + "typed-array-buffer": ["typed-array-buffer@1.0.3", "", { "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "is-typed-array": "^1.1.14" } }, "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw=="], + + "typed-array-byte-length": ["typed-array-byte-length@1.0.3", "", { "dependencies": { "call-bind": "^1.0.8", "for-each": "^0.3.3", "gopd": "^1.2.0", "has-proto": "^1.2.0", "is-typed-array": "^1.1.14" } }, "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg=="], + + "typed-array-byte-offset": ["typed-array-byte-offset@1.0.4", "", { "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", "for-each": "^0.3.3", "gopd": "^1.2.0", "has-proto": "^1.2.0", "is-typed-array": "^1.1.15", "reflect.getprototypeof": "^1.0.9" } }, "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ=="], + + "typed-array-length": ["typed-array-length@1.0.7", "", { "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", "is-typed-array": "^1.1.13", "possible-typed-array-names": "^1.0.0", "reflect.getprototypeof": "^1.0.6" } }, "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg=="], + + "typedarray": ["typedarray@0.0.6", "", {}, "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA=="], + + "typescript": ["typescript@5.1.6", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA=="], + + "typewise": ["typewise@1.0.3", "", { "dependencies": { "typewise-core": "^1.2.0" } }, "sha512-aXofE06xGhaQSPzt8hlTY+/YWQhm9P0jYUp1f2XtmW/3Bk0qzXcyFWAtPoo2uTGQj1ZwbDuSyuxicq+aDo8lCQ=="], + + "typewise-core": ["typewise-core@1.2.0", "", {}, "sha512-2SCC/WLzj2SbUwzFOzqMCkz5amXLlxtJqDKTICqg30x+2DZxcfZN2MvQZmGfXWKNWaKK9pBPsvkcwv8bF/gxKg=="], + + "ua-parser-js": ["ua-parser-js@1.0.40", "", { "bin": { "ua-parser-js": "script/cli.js" } }, "sha512-z6PJ8Lml+v3ichVojCiB8toQJBuwR42ySM4ezjXIqXK3M0HczmKQ3LF4rhU55PfD99KEEXQG6yb7iOMyvYuHew=="], + + "uc.micro": ["uc.micro@2.1.0", "", {}, "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A=="], + + "unbox-primitive": ["unbox-primitive@1.1.0", "", { "dependencies": { "call-bound": "^1.0.3", "has-bigints": "^1.0.2", "has-symbols": "^1.1.0", "which-boxed-primitive": "^1.1.1" } }, "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw=="], + + "undici": ["undici@6.21.1", "", {}, "sha512-q/1rj5D0/zayJB2FraXdaWxbhWiNKDvu8naDT2dl1yTlvJp4BLtOcp2a5BvgGNQpYYJzau7tf1WgKv3b+7mqpQ=="], + + "undici-types": ["undici-types@5.26.5", "", {}, "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="], + + "unicode-canonical-property-names-ecmascript": ["unicode-canonical-property-names-ecmascript@2.0.1", "", {}, "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg=="], + + "unicode-match-property-ecmascript": ["unicode-match-property-ecmascript@2.0.0", "", { "dependencies": { "unicode-canonical-property-names-ecmascript": "^2.0.0", "unicode-property-aliases-ecmascript": "^2.0.0" } }, "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q=="], + + "unicode-match-property-value-ecmascript": ["unicode-match-property-value-ecmascript@2.2.0", "", {}, "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg=="], + + "unicode-properties": ["unicode-properties@1.4.1", "", { "dependencies": { "base64-js": "^1.3.0", "unicode-trie": "^2.0.0" } }, "sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg=="], + + "unicode-property-aliases-ecmascript": ["unicode-property-aliases-ecmascript@2.1.0", "", {}, "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w=="], + + "unicode-trie": ["unicode-trie@2.0.0", "", { "dependencies": { "pako": "^0.2.5", "tiny-inflate": "^1.0.0" } }, "sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ=="], + + "union-value": ["union-value@1.0.1", "", { "dependencies": { "arr-union": "^3.1.0", "get-value": "^2.0.6", "is-extendable": "^0.1.1", "set-value": "^2.0.1" } }, "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg=="], + + "unique-filename": ["unique-filename@3.0.0", "", { "dependencies": { "unique-slug": "^4.0.0" } }, "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g=="], + + "unique-slug": ["unique-slug@4.0.0", "", { "dependencies": { "imurmurhash": "^0.1.4" } }, "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ=="], + + "unique-string": ["unique-string@2.0.0", "", { "dependencies": { "crypto-random-string": "^2.0.0" } }, "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg=="], + + "universal-github-app-jwt": ["universal-github-app-jwt@2.2.0", "", {}, "sha512-G5o6f95b5BggDGuUfKDApKaCgNYy2x7OdHY0zSMF081O0EJobw+1130VONhrA7ezGSV2FNOGyM+KQpQZAr9bIQ=="], + + "universal-user-agent": ["universal-user-agent@7.0.2", "", {}, "sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q=="], + + "universalify": ["universalify@0.1.2", "", {}, "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="], + + "unpipe": ["unpipe@1.0.0", "", {}, "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ=="], + + "update-browserslist-db": ["update-browserslist-db@1.1.3", "", { "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" }, "peerDependencies": { "browserslist": ">= 4.21.0" }, "bin": { "update-browserslist-db": "cli.js" } }, "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw=="], + + "uri-js": ["uri-js@4.4.1", "", { "dependencies": { "punycode": "^2.1.0" } }, "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg=="], + + "use-callback-ref": ["use-callback-ref@1.3.3", "", { "dependencies": { "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg=="], + + "use-composed-ref": ["use-composed-ref@1.4.0", "", { "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-djviaxuOOh7wkj0paeO1Q/4wMZ8Zrnag5H6yBvzN7AKKe8beOaED9SF5/ByLqsku8NP4zQqsvM2u3ew/tJK8/w=="], + + "use-isomorphic-layout-effect": ["use-isomorphic-layout-effect@1.2.0", "", { "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-q6ayo8DWoPZT0VdG4u3D3uxcgONP3Mevx2i2b0434cwWBoL+aelL1DzkXI6w3PhTZzUeR2kaVlZn70iCiseP6w=="], + + "use-latest": ["use-latest@1.3.0", "", { "dependencies": { "use-isomorphic-layout-effect": "^1.1.1" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-mhg3xdm9NaM8q+gLT8KryJPnRFOz1/5XPBhmDEVZK1webPzDjrPk7f/mbpeLqTgB9msytYWANxgALOCJKnLvcQ=="], + + "use-sidecar": ["use-sidecar@1.1.3", "", { "dependencies": { "detect-node-es": "^1.1.0", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ=="], + + "use-sync-external-store": ["use-sync-external-store@1.4.0", "", { "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-9WXSPC5fMv61vaupRkCKCxsPxBocVnwakBEkMIHHpkTTg6icbJtg6jzgtLDm4bl3cSHAca52rYWih0k4K3PfHw=="], + + "utf-8-validate": ["utf-8-validate@6.0.5", "", { "dependencies": { "node-gyp-build": "^4.3.0" } }, "sha512-EYZR+OpIXp9Y1eG1iueg8KRsY8TuT8VNgnanZ0uA3STqhHQTLwbl+WX76/9X5OY12yQubymBpaBSmMPkSTQcKA=="], + + "util-deprecate": ["util-deprecate@1.0.2", "", {}, "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="], + + "utils-merge": ["utils-merge@1.0.1", "", {}, "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA=="], + + "uuid": ["uuid@9.0.1", "", { "bin": { "uuid": "dist/bin/uuid" } }, "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA=="], + + "uuid-parse": ["uuid-parse@1.1.0", "", {}, "sha512-OdmXxA8rDsQ7YpNVbKSJkNzTw2I+S5WsbMDnCtIWSQaosNAcWtFuI/YK1TjzUI6nbkgiqEyh8gWngfcv8Asd9A=="], + + "v8-compile-cache-lib": ["v8-compile-cache-lib@3.0.1", "", {}, "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg=="], + + "validate-npm-package-name": ["validate-npm-package-name@5.0.1", "", {}, "sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ=="], + + "vary": ["vary@1.1.2", "", {}, "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg=="], + + "vite-compatible-readable-stream": ["vite-compatible-readable-stream@3.6.1", "", { "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } }, "sha512-t20zYkrSf868+j/p31cRIGN28Phrjm3nRSLR2fyc2tiWi4cZGVdv68yNlwnIINTkMTmPoMiSlc0OadaO7DXZaQ=="], + + "vlq": ["vlq@1.0.1", "", {}, "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w=="], + + "vt-pbf": ["vt-pbf@3.1.3", "", { "dependencies": { "@mapbox/point-geometry": "0.1.0", "@mapbox/vector-tile": "^1.3.1", "pbf": "^3.2.1" } }, "sha512-2LzDFzt0mZKZ9IpVF2r69G9bXaP2Q2sArJCmcCgvfTdCCZzSyz4aCLoQyUilu37Ll56tCblIZrXFIjNUpGIlmA=="], + + "w3c-keyname": ["w3c-keyname@2.2.8", "", {}, "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ=="], + + "walker": ["walker@1.0.8", "", { "dependencies": { "makeerror": "1.0.12" } }, "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ=="], + + "warning": ["warning@4.0.3", "", { "dependencies": { "loose-envify": "^1.0.0" } }, "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w=="], + + "watchpack": ["watchpack@2.4.0", "", { "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" } }, "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg=="], + + "wcwidth": ["wcwidth@1.0.1", "", { "dependencies": { "defaults": "^1.0.3" } }, "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg=="], + + "web-push": ["web-push@3.6.7", "", { "dependencies": { "asn1.js": "^5.3.0", "http_ece": "1.2.0", "https-proxy-agent": "^7.0.0", "jws": "^4.0.0", "minimist": "^1.2.5" }, "bin": { "web-push": "src/cli.js" } }, "sha512-OpiIUe8cuGjrj3mMBFWY+e4MMIkW3SVT+7vEIjvD9kejGUypv8GPDf84JdPWskK8zMRIJ6xYGm+Kxr8YkPyA0A=="], + + "web-streams-polyfill": ["web-streams-polyfill@3.3.3", "", {}, "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw=="], + + "webcrypto-core": ["webcrypto-core@1.8.1", "", { "dependencies": { "@peculiar/asn1-schema": "^2.3.13", "@peculiar/json-schema": "^1.1.12", "asn1js": "^3.0.5", "pvtsutils": "^1.3.5", "tslib": "^2.7.0" } }, "sha512-P+x1MvlNCXlKbLSOY4cYrdreqPG5hbzkmawbcXLKN/mf6DZW0SdNNkZ+sjwsqVkI4A4Ko2sPZmkZtCKY58w83A=="], + + "webidl-conversions": ["webidl-conversions@5.0.0", "", {}, "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA=="], + + "webrtc-adapter": ["webrtc-adapter@9.0.1", "", { "dependencies": { "sdp": "^3.2.0" } }, "sha512-1AQO+d4ElfVSXyzNVTOewgGT/tAomwwztX/6e3totvyyzXPvXIIuUUjAmyZGbKBKbZOXauuJooZm3g6IuFuiNQ=="], + + "whatwg-fetch": ["whatwg-fetch@3.6.20", "", {}, "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg=="], + + "whatwg-url": ["whatwg-url@5.0.0", "", { "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" } }, "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw=="], + + "whatwg-url-without-unicode": ["whatwg-url-without-unicode@8.0.0-3", "", { "dependencies": { "buffer": "^5.4.3", "punycode": "^2.1.1", "webidl-conversions": "^5.0.0" } }, "sha512-HoKuzZrUlgpz35YO27XgD28uh/WJH4B0+3ttFqRo//lmq+9T/mIOJ6kqmINI9HpUpz1imRC/nR/lxKpJiv0uig=="], + + "which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="], + + "which-boxed-primitive": ["which-boxed-primitive@1.1.1", "", { "dependencies": { "is-bigint": "^1.1.0", "is-boolean-object": "^1.2.1", "is-number-object": "^1.1.1", "is-string": "^1.1.1", "is-symbol": "^1.1.1" } }, "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA=="], + + "which-builtin-type": ["which-builtin-type@1.2.1", "", { "dependencies": { "call-bound": "^1.0.2", "function.prototype.name": "^1.1.6", "has-tostringtag": "^1.0.2", "is-async-function": "^2.0.0", "is-date-object": "^1.1.0", "is-finalizationregistry": "^1.1.0", "is-generator-function": "^1.0.10", "is-regex": "^1.2.1", "is-weakref": "^1.0.2", "isarray": "^2.0.5", "which-boxed-primitive": "^1.1.0", "which-collection": "^1.0.2", "which-typed-array": "^1.1.16" } }, "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q=="], + + "which-collection": ["which-collection@1.0.2", "", { "dependencies": { "is-map": "^2.0.3", "is-set": "^2.0.3", "is-weakmap": "^2.0.2", "is-weakset": "^2.0.3" } }, "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw=="], + + "which-typed-array": ["which-typed-array@1.1.18", "", { "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", "call-bound": "^1.0.3", "for-each": "^0.3.3", "gopd": "^1.2.0", "has-tostringtag": "^1.0.2" } }, "sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA=="], + + "wibu": ["wibu@github:bipproduction/wibu#bb8dcee", { "dependencies": { "@google/generative-ai": "^0.19.0", "@hookstate/core": "^4.0.1", "@mantine/core": "^7.13.3", "@mantine/hooks": "^7.13.3", "@octokit/core": "^6.1.2", "@supabase/supabase-js": "^2.45.4", "@types/crypto-js": "^4.2.2", "@types/lodash": "^4.17.7", "@types/web-push": "^3.6.3", "app-root-path": "^3.1.0", "colors": "^1.4.0", "crypto-js": "^4.2.0", "dedent": "^1.5.3", "dotenv": "^16.4.5", "gpt-3-encoder": "^1.1.4", "jose": "^5.9.2", "json-to-ts": "^2.1.0", "loading-cli": "^1.1.2", "lodash": "^4.17.21", "net": "^1.0.2", "next": "^14.2.13", "octokit": "^4.0.2", "openai": "^4.60.0", "react": "^18.3.1", "react-dom": "^18.3.1", "readdirp": "^4.0.1", "tls": "^0.0.1", "typescript": "^5.6.2", "web-push": "^3.6.7" }, "bin": { "wibu": "dist/bin/index.js" } }, "bipproduction-wibu-bb8dcee"], + + "wibu-cli": ["wibu-cli@1.0.91", "", { "dependencies": { "@huggingface/transformers": "^3.0.2", "@types/lodash": "^4.17.13", "@types/web-push": "^3.6.4", "app-root-path": "^3.1.0", "commander": "^12.1.0", "dedent": "^1.5.3", "directory-import": "^3.3.1", "dotenv": "^16.4.5", "json-to-ts": "^2.1.0", "loading-cli": "^1.1.2", "lodash": "^4.17.21", "readdirp": "^4.0.2", "web-push": "^3.6.7" }, "bin": { "wibu-cli": "bin/wibu-cli.js" } }, "sha512-FR7nkbfcb4aqu9lAcW6xZWTIpTKvVXlXDMrg8hSlMLsR+Xen5nhVSp73H7h15c9N2GGxejGEgHIE/1yRCdWygw=="], + + "wibu-pkg": ["wibu-pkg@1.0.67", "", { "dependencies": { "@mantine/core": "^7.13.5", "@mantine/hooks": "^7.13.5", "@supabase/supabase-js": "^2.46.1", "@types/lodash": "^4.17.13", "@types/uuid": "^10.0.0", "@types/web-push": "^3.6.4", "colors": "^1.4.0", "loadsh": "^0.0.4", "net": "^1.0.2", "peerjs": "^1.5.4", "tls": "^0.0.1", "uuid": "^11.0.3", "web-push": "^3.6.7" } }, "sha512-R4dLT1oJ9RNeNh4pktgBQBlQ+0JzmWPBycWEnUco/lFJllIL/q4/3sITQdQpV2YXkn9+BoodctdhGHBa9zHv8A=="], + + "winston": ["winston@3.17.0", "", { "dependencies": { "@colors/colors": "^1.6.0", "@dabh/diagnostics": "^2.0.2", "async": "^3.2.3", "is-stream": "^2.0.0", "logform": "^2.7.0", "one-time": "^1.0.0", "readable-stream": "^3.4.0", "safe-stable-stringify": "^2.3.1", "stack-trace": "0.0.x", "triple-beam": "^1.3.0", "winston-transport": "^4.9.0" } }, "sha512-DLiFIXYC5fMPxaRg832S6F5mJYvePtmO5G9v9IgUFPhXm9/GkXarH/TUrBAVzhTCzAj9anE/+GjrgXp/54nOgw=="], + + "winston-daily-rotate-file": ["winston-daily-rotate-file@5.0.0", "", { "dependencies": { "file-stream-rotator": "^0.6.1", "object-hash": "^3.0.0", "triple-beam": "^1.4.1", "winston-transport": "^4.7.0" }, "peerDependencies": { "winston": "^3" } }, "sha512-JDjiXXkM5qvwY06733vf09I2wnMXpZEhxEVOSPenZMii+g7pcDcTBt2MRugnoi8BwVSuCT2jfRXBUy+n1Zz/Yw=="], + + "winston-transport": ["winston-transport@4.9.0", "", { "dependencies": { "logform": "^2.7.0", "readable-stream": "^3.6.2", "triple-beam": "^1.3.0" } }, "sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A=="], + + "wonka": ["wonka@6.3.4", "", {}, "sha512-CjpbqNtBGNAeyNS/9W6q3kSkKE52+FjIj7AkFlLr11s/VWGUu6a2CdYSdGxocIhIVjaW/zchesBQUKPVU69Cqg=="], + + "word-wrap": ["word-wrap@1.2.5", "", {}, "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA=="], + + "wordwrap": ["wordwrap@0.0.3", "", {}, "sha512-1tMA907+V4QmxV7dbRvb4/8MaRALK6q9Abid3ndMYnbyo8piisCmeONVqVSXqQA3KaP4SLt5b7ud6E2sqP8TFw=="], + + "worker-timers": ["worker-timers@7.1.8", "", { "dependencies": { "@babel/runtime": "^7.24.5", "tslib": "^2.6.2", "worker-timers-broker": "^6.1.8", "worker-timers-worker": "^7.0.71" } }, "sha512-R54psRKYVLuzff7c1OTFcq/4Hue5Vlz4bFtNEIarpSiCYhpifHU3aIQI29S84o1j87ePCYqbmEJPqwBTf+3sfw=="], + + "worker-timers-broker": ["worker-timers-broker@6.1.8", "", { "dependencies": { "@babel/runtime": "^7.24.5", "fast-unique-numbers": "^8.0.13", "tslib": "^2.6.2", "worker-timers-worker": "^7.0.71" } }, "sha512-FUCJu9jlK3A8WqLTKXM9E6kAmI/dR1vAJ8dHYLMisLNB/n3GuaFIjJ7pn16ZcD1zCOf7P6H62lWIEBi+yz/zQQ=="], + + "worker-timers-worker": ["worker-timers-worker@7.0.71", "", { "dependencies": { "@babel/runtime": "^7.24.5", "tslib": "^2.6.2" } }, "sha512-ks/5YKwZsto1c2vmljroppOKCivB/ma97g9y77MAAz2TBBjPPgpoOiS1qYQKIgvGTr2QYPT3XhJWIB6Rj2MVPQ=="], + + "wrap-ansi": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="], + + "wrap-ansi-cjs": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="], + + "wrappy": ["wrappy@1.0.2", "", {}, "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="], + + "write-file-atomic": ["write-file-atomic@2.4.3", "", { "dependencies": { "graceful-fs": "^4.1.11", "imurmurhash": "^0.1.4", "signal-exit": "^3.0.2" } }, "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ=="], + + "ws": ["ws@8.18.1", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w=="], + + "x256": ["x256@0.0.2", "", {}, "sha512-ZsIH+sheoF8YG9YG+QKEEIdtqpHRA9FYuD7MqhfyB1kayXU43RUNBFSxBEnF8ywSUxdg+8no4+bPr5qLbyxKgA=="], + + "xcode": ["xcode@3.0.1", "", { "dependencies": { "simple-plist": "^1.1.0", "uuid": "^7.0.3" } }, "sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA=="], + + "xml2js": ["xml2js@0.6.0", "", { "dependencies": { "sax": ">=0.6.0", "xmlbuilder": "~11.0.0" } }, "sha512-eLTh0kA8uHceqesPqSE+VvO1CDDJWMwlQfB6LuN6T8w6MaDJ8Txm8P7s5cHD0miF0V+GGTZrDQfxPZQVsur33w=="], + + "xmlbuilder": ["xmlbuilder@14.0.0", "", {}, "sha512-ts+B2rSe4fIckR6iquDjsKbQFK2NlUk6iG5nf14mDEyldgoc2nEKZ3jZWMPTxGQwVgToSjt6VGIho1H8/fNFTg=="], + + "xmlhttprequest-ssl": ["xmlhttprequest-ssl@2.1.2", "", {}, "sha512-TEU+nJVUUnA4CYJFLvK5X9AOeH4KvDvhIfm0vV1GaQRtchnG0hgK5p8hw/xjv8cunWYCsiPCSDzObPyhEwq3KQ=="], + + "xtend": ["xtend@2.1.2", "", { "dependencies": { "object-keys": "~0.4.0" } }, "sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ=="], + + "y18n": ["y18n@5.0.8", "", {}, "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="], + + "yallist": ["yallist@4.0.0", "", {}, "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="], + + "yaml": ["yaml@2.7.0", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA=="], + + "yargs": ["yargs@17.7.2", "", { "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", "yargs-parser": "^21.1.1" } }, "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w=="], + + "yargs-parser": ["yargs-parser@21.1.1", "", {}, "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="], + + "yn": ["yn@3.1.1", "", {}, "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q=="], + + "yocto-queue": ["yocto-queue@1.1.1", "", {}, "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g=="], + + "yoga-layout": ["yoga-layout@2.0.1", "", {}, "sha512-tT/oChyDXelLo2A+UVnlW9GU7CsvFMaEnd9kVFsaiCQonFAXd3xrHhkLYu+suwwosrAEQ746xBU+HvYtm1Zs2Q=="], + + "zrender": ["zrender@5.6.1", "", { "dependencies": { "tslib": "2.3.0" } }, "sha512-OFXkDJKcrlx5su2XbzJvj/34Q3m6PvyCZkVPHGYpcCJ52ek4U/ymZyfuV1nKE23AyBJ51E/6Yr0mhZ7xGTO4ag=="], + + "@ampproject/remapping/@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.25", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ=="], + + "@babel/core/convert-source-map": ["convert-source-map@2.0.0", "", {}, "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="], + + "@babel/core/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], + + "@babel/generator/@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.25", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ=="], + + "@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], + + "@babel/helper-compilation-targets/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], + + "@babel/helper-create-class-features-plugin/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], + + "@babel/helper-create-regexp-features-plugin/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], + + "@babel/highlight/chalk": ["chalk@2.4.2", "", { "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" } }, "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ=="], + + "@babel/plugin-transform-classes/globals": ["globals@11.12.0", "", {}, "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA=="], + + "@babel/plugin-transform-runtime/babel-plugin-polyfill-corejs3": ["babel-plugin-polyfill-corejs3@0.10.6", "", { "dependencies": { "@babel/helper-define-polyfill-provider": "^0.6.2", "core-js-compat": "^3.38.0" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA=="], + + "@babel/plugin-transform-runtime/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], + + "@babel/preset-env/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], + + "@babel/runtime/regenerator-runtime": ["regenerator-runtime@0.14.1", "", {}, "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="], + + "@babel/traverse/globals": ["globals@11.12.0", "", {}, "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA=="], + + "@babel/traverse--for-generate-function-map/globals": ["globals@11.12.0", "", {}, "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA=="], + + "@cyntler/react-doc-viewer/ajv": ["ajv@7.2.4", "", { "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2", "uri-js": "^4.2.2" } }, "sha512-nBeQgg/ZZA3u3SYxyaDvpvDtgZ/EZPF547ARgZBrG9Bhu1vKDwAIjtIf+sDtJUKa2zOcEbmRLBRSyMraS/Oy1A=="], + + "@emnapi/runtime/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "@emotion/babel-plugin/stylis": ["stylis@4.2.0", "", {}, "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw=="], + + "@emotion/cache/stylis": ["stylis@4.2.0", "", {}, "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw=="], + + "@emotion/is-prop-valid/@emotion/memoize": ["@emotion/memoize@0.8.1", "", {}, "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA=="], + + "@emotion/serialize/@emotion/unitless": ["@emotion/unitless@0.10.0", "", {}, "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg=="], + + "@expo/bunyan/uuid": ["uuid@8.3.2", "", { "bin": { "uuid": "dist/bin/uuid" } }, "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg=="], + + "@expo/cli/form-data": ["form-data@3.0.3", "", { "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", "mime-types": "^2.1.35" } }, "sha512-q5YBMeWy6E2Un0nMGWMgI65MAKtaylxfNJGJxpGh45YDciZB4epbWpaAfImil6CPAPTYB4sh0URQNDRIZG5F2w=="], + + "@expo/cli/glob": ["glob@10.4.5", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", "minimatch": "^9.0.4", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg=="], + + "@expo/cli/picomatch": ["picomatch@3.0.1", "", {}, "sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag=="], + + "@expo/cli/resolve-from": ["resolve-from@5.0.0", "", {}, "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw=="], + + "@expo/config/@babel/code-frame": ["@babel/code-frame@7.10.4", "", { "dependencies": { "@babel/highlight": "^7.10.4" } }, "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg=="], + + "@expo/config/glob": ["glob@10.4.5", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", "minimatch": "^9.0.4", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg=="], + + "@expo/config/resolve-from": ["resolve-from@5.0.0", "", {}, "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw=="], + + "@expo/config-plugins/glob": ["glob@10.4.5", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", "minimatch": "^9.0.4", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg=="], + + "@expo/config-plugins/resolve-from": ["resolve-from@5.0.0", "", {}, "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw=="], + + "@expo/devcert/debug": ["debug@3.2.7", "", { "dependencies": { "ms": "^2.1.1" } }, "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ=="], + + "@expo/devcert/glob": ["glob@10.4.5", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", "minimatch": "^9.0.4", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg=="], + + "@expo/devcert/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "@expo/fingerprint/p-limit": ["p-limit@3.1.0", "", { "dependencies": { "yocto-queue": "^0.1.0" } }, "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ=="], + + "@expo/fingerprint/resolve-from": ["resolve-from@5.0.0", "", {}, "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw=="], + + "@expo/image-utils/fs-extra": ["fs-extra@9.0.0", "", { "dependencies": { "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^1.0.0" } }, "sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g=="], + + "@expo/image-utils/resolve-from": ["resolve-from@5.0.0", "", {}, "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw=="], + + "@expo/json-file/@babel/code-frame": ["@babel/code-frame@7.10.4", "", { "dependencies": { "@babel/highlight": "^7.10.4" } }, "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg=="], + + "@expo/metro-config/fs-extra": ["fs-extra@9.1.0", "", { "dependencies": { "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ=="], + + "@expo/metro-config/glob": ["glob@10.4.5", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", "minimatch": "^9.0.4", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg=="], + + "@expo/metro-config/postcss": ["postcss@8.4.49", "", { "dependencies": { "nanoid": "^3.3.7", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA=="], + + "@expo/metro-config/resolve-from": ["resolve-from@5.0.0", "", {}, "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw=="], + + "@expo/package-manager/js-yaml": ["js-yaml@3.14.1", "", { "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g=="], + + "@expo/package-manager/sudo-prompt": ["sudo-prompt@9.1.1", "", {}, "sha512-es33J1g2HjMpyAhz8lOR+ICmXXAqTuKbuXuUWLhOLew20oN9oUCgCJx615U/v7aioZg7IX5lIh9x34vwneu4pA=="], + + "@expo/prebuild-config/@react-native/normalize-colors": ["@react-native/normalize-colors@0.76.7", "", {}, "sha512-ST1xxBuYVIXPdD81dR6+tzIgso7m3pa9+6rOBXTh5Xm7KEEFik7tnQX+GydXYMp3wr1gagJjragdXkPnxK6WNg=="], + + "@expo/prebuild-config/fs-extra": ["fs-extra@9.1.0", "", { "dependencies": { "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ=="], + + "@expo/prebuild-config/resolve-from": ["resolve-from@5.0.0", "", {}, "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw=="], + + "@expo/rudder-sdk-node/node-fetch": ["node-fetch@2.7.0", "", { "dependencies": { "whatwg-url": "^5.0.0" }, "peerDependencies": { "encoding": "^0.1.0" }, "optionalPeers": ["encoding"] }, "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A=="], + + "@expo/rudder-sdk-node/uuid": ["uuid@8.3.2", "", { "bin": { "uuid": "dist/bin/uuid" } }, "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg=="], + + "@expo/xcpretty/@babel/code-frame": ["@babel/code-frame@7.10.4", "", { "dependencies": { "@babel/highlight": "^7.10.4" } }, "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg=="], + + "@isaacs/cliui/string-width": ["string-width@5.1.2", "", { "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", "strip-ansi": "^7.0.1" } }, "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA=="], + + "@isaacs/cliui/strip-ansi": ["strip-ansi@7.1.0", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ=="], + + "@isaacs/cliui/wrap-ansi": ["wrap-ansi@8.1.0", "", { "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", "strip-ansi": "^7.0.1" } }, "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ=="], + + "@istanbuljs/load-nyc-config/camelcase": ["camelcase@5.3.1", "", {}, "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="], + + "@istanbuljs/load-nyc-config/find-up": ["find-up@4.1.0", "", { "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" } }, "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw=="], + + "@istanbuljs/load-nyc-config/js-yaml": ["js-yaml@3.14.1", "", { "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g=="], + + "@istanbuljs/load-nyc-config/resolve-from": ["resolve-from@5.0.0", "", {}, "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw=="], + + "@jest/transform/@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.25", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ=="], + + "@jest/transform/convert-source-map": ["convert-source-map@2.0.0", "", {}, "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="], + + "@jest/transform/write-file-atomic": ["write-file-atomic@4.0.2", "", { "dependencies": { "imurmurhash": "^0.1.4", "signal-exit": "^3.0.7" } }, "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg=="], + + "@jridgewell/gen-mapping/@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.25", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ=="], + + "@jridgewell/source-map/@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.25", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ=="], + + "@mantine/styles/clsx": ["clsx@1.1.1", "", {}, "sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA=="], + + "@mantine/styles/csstype": ["csstype@3.0.9", "", {}, "sha512-rpw6JPxK6Rfg1zLOYCSwle2GFOOsnjmDYDaBwEcwoOg4qlsIVCN789VkBZDJAGi4T07gI4YSutR43t9Zz4Lzuw=="], + + "@peculiar/asn1-schema/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "@peculiar/json-schema/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "@peculiar/webcrypto/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "@react-native/babel-plugin-codegen/@react-native/codegen": ["@react-native/codegen@0.76.7", "", { "dependencies": { "@babel/parser": "^7.25.3", "glob": "^7.1.1", "hermes-parser": "0.23.1", "invariant": "^2.2.4", "jscodeshift": "^0.14.0", "mkdirp": "^0.5.1", "nullthrows": "^1.1.1", "yargs": "^17.6.2" }, "peerDependencies": { "@babel/preset-env": "^7.1.6" } }, "sha512-FAn585Ll65YvkSrKDyAcsdjHhhAGiMlSTUpHh0x7J5ntudUns+voYms0xMP+pEPt0XuLdjhD7zLIIlAWP407+g=="], + + "@react-native/community-cli-plugin/@react-native/dev-middleware": ["@react-native/dev-middleware@0.78.0", "", { "dependencies": { "@isaacs/ttlcache": "^1.4.1", "@react-native/debugger-frontend": "0.78.0", "chrome-launcher": "^0.15.2", "chromium-edge-launcher": "^0.2.0", "connect": "^3.6.5", "debug": "^2.2.0", "invariant": "^2.2.4", "nullthrows": "^1.1.1", "open": "^7.0.3", "selfsigned": "^2.4.1", "serve-static": "^1.16.2", "ws": "^6.2.3" } }, "sha512-zEafAZdOz4s37Jh5Xcv4hJE5qZ6uNxgrTLcpjDOJnQG6dO34/BoZeXvDrjomQFNn6ogdysR51mKJStaQ3ixp5A=="], + + "@react-native/community-cli-plugin/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], + + "@react-native/dev-middleware/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], + + "@react-native/dev-middleware/ws": ["ws@6.2.3", "", { "dependencies": { "async-limiter": "~1.0.0" } }, "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA=="], + + "@react-native/metro-babel-transformer/@react-native/babel-preset": ["@react-native/babel-preset@0.78.0", "", { "dependencies": { "@babel/core": "^7.25.2", "@babel/plugin-proposal-export-default-from": "^7.24.7", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-default-from": "^7.24.7", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", "@babel/plugin-syntax-optional-chaining": "^7.8.3", "@babel/plugin-transform-arrow-functions": "^7.24.7", "@babel/plugin-transform-async-generator-functions": "^7.25.4", "@babel/plugin-transform-async-to-generator": "^7.24.7", "@babel/plugin-transform-block-scoping": "^7.25.0", "@babel/plugin-transform-class-properties": "^7.25.4", "@babel/plugin-transform-classes": "^7.25.4", "@babel/plugin-transform-computed-properties": "^7.24.7", "@babel/plugin-transform-destructuring": "^7.24.8", "@babel/plugin-transform-flow-strip-types": "^7.25.2", "@babel/plugin-transform-for-of": "^7.24.7", "@babel/plugin-transform-function-name": "^7.25.1", "@babel/plugin-transform-literals": "^7.25.2", "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", "@babel/plugin-transform-modules-commonjs": "^7.24.8", "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", "@babel/plugin-transform-numeric-separator": "^7.24.7", "@babel/plugin-transform-object-rest-spread": "^7.24.7", "@babel/plugin-transform-optional-catch-binding": "^7.24.7", "@babel/plugin-transform-optional-chaining": "^7.24.8", "@babel/plugin-transform-parameters": "^7.24.7", "@babel/plugin-transform-private-methods": "^7.24.7", "@babel/plugin-transform-private-property-in-object": "^7.24.7", "@babel/plugin-transform-react-display-name": "^7.24.7", "@babel/plugin-transform-react-jsx": "^7.25.2", "@babel/plugin-transform-react-jsx-self": "^7.24.7", "@babel/plugin-transform-react-jsx-source": "^7.24.7", "@babel/plugin-transform-regenerator": "^7.24.7", "@babel/plugin-transform-runtime": "^7.24.7", "@babel/plugin-transform-shorthand-properties": "^7.24.7", "@babel/plugin-transform-spread": "^7.24.7", "@babel/plugin-transform-sticky-regex": "^7.24.7", "@babel/plugin-transform-typescript": "^7.25.2", "@babel/plugin-transform-unicode-regex": "^7.24.7", "@babel/template": "^7.25.0", "@react-native/babel-plugin-codegen": "0.78.0", "babel-plugin-syntax-hermes-parser": "0.25.1", "babel-plugin-transform-flow-enums": "^0.0.2", "react-refresh": "^0.14.0" } }, "sha512-q44ZbR0JXdPvNrjNw75VmiVXXoJhZIx8dTUBVgnZx/UHBQuhPu0e8pAuo56E2mZVkF7FK0s087/Zji8n5OSxbQ=="], + + "@react-pdf/types/@react-pdf/font": ["@react-pdf/font@3.1.0", "", { "dependencies": { "@react-pdf/types": "^2.8.0", "fontkit": "^2.0.2", "is-url": "^1.2.4" } }, "sha512-5q+r3DhZK41gVZp2Uw5M69FEVWeoasnM/HscW3kdpYnwjcB2bhCRWmBGCjm8fmuwQstwNPM1ZxyCWZRTRchwnA=="], + + "@react-pdf/types/@react-pdf/primitives": ["@react-pdf/primitives@4.1.1", "", {}, "sha512-IuhxYls1luJb7NUWy6q5avb1XrNaVj9bTNI40U9qGRuS6n7Hje/8H8Qi99Z9UKFV74bBP3DOf3L1wV2qZVgVrQ=="], + + "@react-pdf/types/@react-pdf/stylesheet": ["@react-pdf/stylesheet@6.0.0", "", { "dependencies": { "@react-pdf/fns": "3.1.1", "@react-pdf/types": "^2.8.0", "color-string": "^1.9.1", "hsl-to-hex": "^1.0.0", "media-engine": "^1.0.3", "postcss-value-parser": "^4.1.0" } }, "sha512-uAwuMjbcEaxhRl7tGlqxAbLzo/KoYr6v9JksUJwgzd+rkvAp8jDq8NcG3sUp88tzgIyyRjBGl4FewgdxbAa2uw=="], + + "@swc/helpers/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "@typescript-eslint/typescript-estree/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="], + + "aria-hidden/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "asn1js/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "ast-types/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "babel-plugin-polyfill-corejs2/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], + + "better-opn/open": ["open@8.4.2", "", { "dependencies": { "define-lazy-prop": "^2.0.0", "is-docker": "^2.1.1", "is-wsl": "^2.2.0" } }, "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ=="], + + "blessed-contrib/chalk": ["chalk@1.1.3", "", { "dependencies": { "ansi-styles": "^2.2.1", "escape-string-regexp": "^1.0.2", "has-ansi": "^2.0.0", "strip-ansi": "^3.0.0", "supports-color": "^2.0.0" } }, "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A=="], + + "blessed-contrib/strip-ansi": ["strip-ansi@3.0.1", "", { "dependencies": { "ansi-regex": "^2.0.0" } }, "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg=="], + + "cacache/glob": ["glob@10.4.5", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", "minimatch": "^9.0.4", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg=="], + + "caller-callsite/callsites": ["callsites@2.0.0", "", {}, "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ=="], + + "chokidar/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], + + "chromium-edge-launcher/mkdirp": ["mkdirp@1.0.4", "", { "bin": { "mkdirp": "bin/cmd.js" } }, "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw=="], + + "cli-table3/@colors/colors": ["@colors/colors@1.5.0", "", {}, "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ=="], + + "colorspace/color": ["color@3.2.1", "", { "dependencies": { "color-convert": "^1.9.3", "color-string": "^1.6.0" } }, "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA=="], + + "compression/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], + + "compression/negotiator": ["negotiator@0.6.4", "", {}, "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w=="], + + "compression/safe-buffer": ["safe-buffer@5.2.1", "", {}, "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="], + + "concat-stream/buffer-from": ["buffer-from@1.1.2", "", {}, "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="], + + "concat-stream/readable-stream": ["readable-stream@3.6.2", "", { "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } }, "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA=="], + + "connect/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], + + "cosmiconfig/yaml": ["yaml@1.10.2", "", {}, "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg=="], + + "cross-fetch/node-fetch": ["node-fetch@2.7.0", "", { "dependencies": { "whatwg-url": "^5.0.0" }, "peerDependencies": { "encoding": "^0.1.0" }, "optionalPeers": ["encoding"] }, "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A=="], + + "defaults/clone": ["clone@1.0.4", "", {}, "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg=="], + + "dom-serializer/entities": ["entities@2.2.0", "", {}, "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A=="], + + "drawille-canvas-blessed-contrib/gl-matrix": ["gl-matrix@2.8.1", "", {}, "sha512-0YCjVpE3pS5XWlN3J4X7AiAx65+nqAI54LndtVFnQZB6G/FVLkZH8y8V6R3cIoOQR4pUdfwQGd1iwyoXHJ4Qfw=="], + + "duplexer2/readable-stream": ["readable-stream@2.3.8", "", { "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", "isarray": "~1.0.0", "process-nextick-args": "~2.0.0", "safe-buffer": "~5.1.1", "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA=="], + + "ecdsa-sig-formatter/safe-buffer": ["safe-buffer@5.2.1", "", {}, "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="], + + "engine.io-client/debug": ["debug@4.3.7", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ=="], + + "engine.io-client/ws": ["ws@8.17.1", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ=="], + + "error-ex/is-arrayish": ["is-arrayish@0.2.1", "", {}, "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="], + + "eslint-config-next/@typescript-eslint/parser": ["@typescript-eslint/parser@6.21.0", "", { "dependencies": { "@typescript-eslint/scope-manager": "6.21.0", "@typescript-eslint/types": "6.21.0", "@typescript-eslint/typescript-estree": "6.21.0", "@typescript-eslint/visitor-keys": "6.21.0", "debug": "^4.3.4" }, "peerDependencies": { "eslint": "^7.0.0 || ^8.0.0" } }, "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ=="], + + "eslint-import-resolver-node/debug": ["debug@3.2.7", "", { "dependencies": { "ms": "^2.1.1" } }, "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ=="], + + "eslint-module-utils/debug": ["debug@3.2.7", "", { "dependencies": { "ms": "^2.1.1" } }, "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ=="], + + "eslint-plugin-import/debug": ["debug@3.2.7", "", { "dependencies": { "ms": "^2.1.1" } }, "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ=="], + + "eslint-plugin-import/doctrine": ["doctrine@2.1.0", "", { "dependencies": { "esutils": "^2.0.2" } }, "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw=="], + + "eslint-plugin-import/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], + + "eslint-plugin-jsx-a11y/emoji-regex": ["emoji-regex@9.2.2", "", {}, "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="], + + "eslint-plugin-react/doctrine": ["doctrine@2.1.0", "", { "dependencies": { "esutils": "^2.0.2" } }, "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw=="], + + "eslint-plugin-react/resolve": ["resolve@2.0.0-next.5", "", { "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" } }, "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA=="], + + "eslint-plugin-react/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], + + "event-stream/optimist": ["optimist@0.2.8", "", { "dependencies": { "wordwrap": ">=0.0.1 <0.1.0" } }, "sha512-Wy7E3cQDpqsTIFyW7m22hSevyTLxw850ahYv7FWsw4G6MIKVTZ8NSA95KBrQ95a4SMsMr1UGUUnwEFKhVaSzIg=="], + + "execa/cross-spawn": ["cross-spawn@6.0.6", "", { "dependencies": { "nice-try": "^1.0.4", "path-key": "^2.0.1", "semver": "^5.5.0", "shebang-command": "^1.2.0", "which": "^1.2.9" } }, "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw=="], + + "execa/is-stream": ["is-stream@1.1.0", "", {}, "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ=="], + + "execa/signal-exit": ["signal-exit@3.0.7", "", {}, "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="], + + "expo-modules-autolinking/commander": ["commander@7.2.0", "", {}, "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw=="], + + "expo-modules-autolinking/fs-extra": ["fs-extra@9.1.0", "", { "dependencies": { "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ=="], + + "expo-modules-autolinking/resolve-from": ["resolve-from@5.0.0", "", {}, "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw=="], + + "fast-glob/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], + + "fast-unique-numbers/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "fbjs/promise": ["promise@7.3.1", "", { "dependencies": { "asap": "~2.0.3" } }, "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg=="], + + "finalhandler/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], + + "finalhandler/encodeurl": ["encodeurl@1.0.2", "", {}, "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w=="], + + "finalhandler/on-finished": ["on-finished@2.3.0", "", { "dependencies": { "ee-first": "1.1.1" } }, "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww=="], + + "finalhandler/statuses": ["statuses@1.5.0", "", {}, "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA=="], + + "fontkit/@swc/helpers": ["@swc/helpers@0.5.15", "", { "dependencies": { "tslib": "^2.8.0" } }, "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g=="], + + "formdata-node/web-streams-polyfill": ["web-streams-polyfill@4.0.0-beta.3", "", {}, "sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug=="], + + "gm/debug": ["debug@3.2.7", "", { "dependencies": { "ms": "^2.1.1" } }, "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ=="], + + "has-ansi/ansi-regex": ["ansi-regex@2.1.1", "", {}, "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA=="], + + "html-tokenize/readable-stream": ["readable-stream@1.0.34", "", { "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.1", "isarray": "0.0.1", "string_decoder": "~0.10.x" } }, "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg=="], + + "htmlparser2/entities": ["entities@3.0.1", "", {}, "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q=="], + + "hyperid/buffer": ["buffer@5.7.1", "", { "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" } }, "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ=="], + + "hyperid/uuid": ["uuid@8.3.2", "", { "bin": { "uuid": "dist/bin/uuid" } }, "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg=="], + + "iron-session/@types/node": ["@types/node@17.0.45", "", {}, "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw=="], + + "istanbul-lib-instrument/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], + + "jest-worker/supports-color": ["supports-color@8.1.1", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q=="], + + "jscodeshift/tmp": ["tmp@0.2.3", "", {}, "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w=="], + + "jscodeshift/write-file-atomic": ["write-file-atomic@5.0.1", "", { "dependencies": { "imurmurhash": "^0.1.4", "signal-exit": "^4.0.1" } }, "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw=="], + + "jwa/safe-buffer": ["safe-buffer@5.2.1", "", {}, "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="], + + "jws/safe-buffer": ["safe-buffer@5.2.1", "", {}, "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="], + + "lighthouse-logger/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], + + "lightningcss/detect-libc": ["detect-libc@1.0.3", "", { "bin": { "detect-libc": "./bin/detect-libc.js" } }, "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg=="], + + "log-symbols/chalk": ["chalk@2.4.2", "", { "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" } }, "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ=="], + + "make-dir/pify": ["pify@4.0.1", "", {}, "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g=="], + + "make-dir/semver": ["semver@5.7.2", "", { "bin": { "semver": "bin/semver" } }, "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g=="], + + "map-canvas/xml2js": ["xml2js@0.4.23", "", { "dependencies": { "sax": ">=0.6.0", "xmlbuilder": "~11.0.0" } }, "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug=="], + + "marked-terminal/chalk": ["chalk@5.4.1", "", {}, "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w=="], + + "memory-streams/readable-stream": ["readable-stream@1.0.34", "", { "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.1", "isarray": "0.0.1", "string_decoder": "~0.10.x" } }, "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg=="], + + "metro/ci-info": ["ci-info@2.0.0", "", {}, "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ=="], + + "metro/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], + + "metro/ws": ["ws@7.5.10", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": "^5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ=="], + + "metro-config/cosmiconfig": ["cosmiconfig@5.2.1", "", { "dependencies": { "import-fresh": "^2.0.0", "is-directory": "^0.3.1", "js-yaml": "^3.13.1", "parse-json": "^4.0.0" } }, "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA=="], + + "metro-file-map/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], + + "minipass-flush/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="], + + "minipass-pipeline/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="], + + "minizlib/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="], + + "next/postcss": ["postcss@8.4.31", "", { "dependencies": { "nanoid": "^3.3.6", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" } }, "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ=="], + + "next-dev/@mantine/hooks": ["@mantine/hooks@7.17.0", "", { "peerDependencies": { "react": "^18.x || ^19.x" } }, "sha512-vo3K49mLy1nJ8LQNb5KDbJgnX0xwt3Y8JOF3ythjB5LEFMptdLSSgulu64zj+QHtzvffFCsMb05DbTLLpVP/JQ=="], + + "next-dev/axios": ["axios@1.8.1", "", { "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.0", "proxy-from-env": "^1.1.0" } }, "sha512-NN+fvwH/kV01dYUQ3PTOZns4LWtWhOFCAhQ/pHb88WQ1hNe5V/dvFwc4VJcDL11LT9xSX0QtsR8sWUuyOuOq7g=="], + + "next-dev/react": ["react@18.3.1", "", { "dependencies": { "loose-envify": "^1.1.0" } }, "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ=="], + + "next-dev/react-dom": ["react-dom@18.3.1", "", { "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.2" }, "peerDependencies": { "react": "^18.3.1" } }, "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw=="], + + "next-scroll-loader/react": ["react@18.3.1", "", { "dependencies": { "loose-envify": "^1.1.0" } }, "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ=="], + + "next-scroll-loader/react-dom": ["react-dom@18.3.1", "", { "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.2" }, "peerDependencies": { "react": "^18.3.1" } }, "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw=="], + + "npm-run-path/path-key": ["path-key@2.0.1", "", {}, "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw=="], + + "onnxruntime-node/tar": ["tar@7.4.3", "", { "dependencies": { "@isaacs/fs-minipass": "^4.0.0", "chownr": "^3.0.0", "minipass": "^7.1.2", "minizlib": "^3.0.1", "mkdirp": "^3.0.1", "yallist": "^5.0.0" } }, "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw=="], + + "onnxruntime-web/onnxruntime-common": ["onnxruntime-common@1.21.0-dev.20250206-d981b153d3", "", {}, "sha512-TwaE51xV9q2y8pM61q73rbywJnusw9ivTEHAJ39GVWNZqxCoDBpe/tQkh/w9S+o/g+zS7YeeL0I/2mEWd+dgyA=="], + + "openai/@types/node": ["@types/node@18.19.76", "", { "dependencies": { "undici-types": "~5.26.4" } }, "sha512-yvR7Q9LdPz2vGpmpJX5LolrgRdWvB67MJKDPSgIIzpFbaf9a1j/f5DnLp5VDyHGMR0QZHlTr1afsD87QCXFHKw=="], + + "openai/node-fetch": ["node-fetch@2.7.0", "", { "dependencies": { "whatwg-url": "^5.0.0" }, "peerDependencies": { "encoding": "^0.1.0" }, "optionalPeers": ["encoding"] }, "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A=="], + + "ora/chalk": ["chalk@2.4.2", "", { "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" } }, "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ=="], + + "ora/strip-ansi": ["strip-ansi@5.2.0", "", { "dependencies": { "ansi-regex": "^4.1.0" } }, "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA=="], + + "p-locate/p-limit": ["p-limit@3.1.0", "", { "dependencies": { "yocto-queue": "^0.1.0" } }, "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ=="], + + "password-prompt/ansi-escapes": ["ansi-escapes@4.3.2", "", { "dependencies": { "type-fest": "^0.21.3" } }, "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ=="], + + "pdf-lib/tslib": ["tslib@1.14.1", "", {}, "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="], + + "peerjs/eventemitter3": ["eventemitter3@4.0.7", "", {}, "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw=="], + + "pkg-dir/find-up": ["find-up@3.0.0", "", { "dependencies": { "locate-path": "^3.0.0" } }, "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg=="], + + "plist/@xmldom/xmldom": ["@xmldom/xmldom@0.8.10", "", {}, "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw=="], + + "plist/xmlbuilder": ["xmlbuilder@15.1.1", "", {}, "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg=="], + + "postcss-load-config/lilconfig": ["lilconfig@3.1.3", "", {}, "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw=="], + + "pretty-format/ansi-styles": ["ansi-styles@5.2.0", "", {}, "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA=="], + + "pretty-format/react-is": ["react-is@18.3.1", "", {}, "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg=="], + + "pvtsutils/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "rc/strip-json-comments": ["strip-json-comments@2.0.1", "", {}, "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ=="], + + "react-devtools-core/ws": ["ws@7.5.10", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": "^5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ=="], + + "react-dom/scheduler": ["scheduler@0.23.2", "", { "dependencies": { "loose-envify": "^1.1.0" } }, "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ=="], + + "react-native/scheduler": ["scheduler@0.25.0", "", {}, "sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA=="], + + "react-native/ws": ["ws@6.2.3", "", { "dependencies": { "async-limiter": "~1.0.0" } }, "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA=="], + + "react-native-web/@react-native/normalize-colors": ["@react-native/normalize-colors@0.74.89", "", {}, "sha512-qoMMXddVKVhZ8PA1AbUCk83trpd6N+1nF2A6k1i6LsQObyS92fELuk8kU/lQs6M7BsMHwqyLCpQJ1uFgNvIQXg=="], + + "react-native-web/memoize-one": ["memoize-one@6.0.0", "", {}, "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw=="], + + "react-pdf/pdfjs-dist": ["pdfjs-dist@4.8.69", "", { "optionalDependencies": { "canvas": "^3.0.0-rc2", "path2d": "^0.2.1" } }, "sha512-IHZsA4T7YElCKNNXtiLgqScw4zPd3pG9do8UrznC757gMd7UPeHSL2qwNNMJo4r79fl8oj1Xx+1nh2YkzdMpLQ=="], + + "react-remove-scroll/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "react-remove-scroll-bar/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "react-style-singleton/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "react-toastify/clsx": ["clsx@1.2.1", "", {}, "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg=="], + + "recast/source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="], + + "recast/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "regjsparser/jsesc": ["jsesc@3.0.2", "", { "bin": { "jsesc": "bin/jsesc" } }, "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g=="], + + "requireg/resolve": ["resolve@1.7.1", "", { "dependencies": { "path-parse": "^1.0.5" } }, "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw=="], + + "restore-cursor/signal-exit": ["signal-exit@3.0.7", "", {}, "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="], + + "safe-array-concat/isarray": ["isarray@2.0.5", "", {}, "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="], + + "safe-push-apply/isarray": ["isarray@2.0.5", "", {}, "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="], + + "send/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], + + "serve-static/send": ["send@0.19.0", "", { "dependencies": { "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "0.5.2", "http-errors": "2.0.0", "mime": "1.6.0", "ms": "2.1.3", "on-finished": "2.4.1", "range-parser": "~1.2.1", "statuses": "2.0.1" } }, "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw=="], + + "simple-plist/bplist-creator": ["bplist-creator@0.1.0", "", { "dependencies": { "stream-buffers": "2.2.x" } }, "sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg=="], + + "simple-plist/bplist-parser": ["bplist-parser@0.3.1", "", { "dependencies": { "big-integer": "1.6.x" } }, "sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA=="], + + "socket.io-client/debug": ["debug@4.3.7", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ=="], + + "socket.io-parser/debug": ["debug@4.3.7", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ=="], + + "source-map-support/buffer-from": ["buffer-from@1.1.2", "", {}, "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="], + + "source-map-support/source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="], + + "split-string/extend-shallow": ["extend-shallow@3.0.2", "", { "dependencies": { "assign-symbols": "^1.0.0", "is-extendable": "^1.0.1" } }, "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q=="], + + "stack-utils/escape-string-regexp": ["escape-string-regexp@2.0.0", "", {}, "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w=="], + + "stacktrace-parser/type-fest": ["type-fest@0.7.1", "", {}, "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg=="], + + "string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], + + "string-width-cjs/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], + + "string_decoder/safe-buffer": ["safe-buffer@5.2.1", "", {}, "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="], + + "styled-components/postcss": ["postcss@8.4.49", "", { "dependencies": { "nanoid": "^3.3.7", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA=="], + + "styled-components/tslib": ["tslib@2.6.2", "", {}, "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="], + + "sucrase/commander": ["commander@4.1.1", "", {}, "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA=="], + + "sucrase/glob": ["glob@10.4.5", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", "minimatch": "^9.0.4", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg=="], + + "tar/fs-minipass": ["fs-minipass@2.1.0", "", { "dependencies": { "minipass": "^3.0.0" } }, "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg=="], + + "tar/minipass": ["minipass@5.0.0", "", {}, "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ=="], + + "tar/mkdirp": ["mkdirp@1.0.4", "", { "bin": { "mkdirp": "bin/cmd.js" } }, "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw=="], + + "tar-fs/chownr": ["chownr@1.1.4", "", {}, "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg=="], + + "tar-stream/bl": ["bl@4.1.0", "", { "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", "readable-stream": "^3.4.0" } }, "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w=="], + + "tar-stream/readable-stream": ["readable-stream@3.6.2", "", { "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } }, "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA=="], + + "temp/rimraf": ["rimraf@2.6.3", "", { "dependencies": { "glob": "^7.1.3" }, "bin": { "rimraf": "./bin.js" } }, "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA=="], + + "tempy/type-fest": ["type-fest@0.16.0", "", {}, "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg=="], + + "terminal-link/ansi-escapes": ["ansi-escapes@4.3.2", "", { "dependencies": { "type-fest": "^0.21.3" } }, "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ=="], + + "terser/commander": ["commander@2.20.3", "", {}, "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="], + + "through2/readable-stream": ["readable-stream@1.0.34", "", { "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.1", "isarray": "0.0.1", "string_decoder": "~0.10.x" } }, "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg=="], + + "tinyglobby/picomatch": ["picomatch@4.0.2", "", {}, "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg=="], + + "ts-node/arg": ["arg@4.1.3", "", {}, "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA=="], + + "tsconfig-paths/json5": ["json5@1.0.2", "", { "dependencies": { "minimist": "^1.2.0" }, "bin": { "json5": "lib/cli.js" } }, "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA=="], + + "tunnel-agent/safe-buffer": ["safe-buffer@5.2.1", "", {}, "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="], + + "unicode-trie/pako": ["pako@0.2.9", "", {}, "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA=="], + + "use-callback-ref/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "use-sidecar/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "webcrypto-core/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "whatwg-url/webidl-conversions": ["webidl-conversions@3.0.1", "", {}, "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="], + + "whatwg-url-without-unicode/buffer": ["buffer@5.7.1", "", { "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" } }, "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ=="], + + "which-builtin-type/isarray": ["isarray@2.0.5", "", {}, "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="], + + "wibu/@mantine/core": ["@mantine/core@7.17.0", "", { "dependencies": { "@floating-ui/react": "^0.26.28", "clsx": "^2.1.1", "react-number-format": "^5.4.3", "react-remove-scroll": "^2.6.2", "react-textarea-autosize": "8.5.6", "type-fest": "^4.27.0" }, "peerDependencies": { "@mantine/hooks": "7.17.0", "react": "^18.x || ^19.x", "react-dom": "^18.x || ^19.x" } }, "sha512-AU5UFewUNzBCUXIq5Jk6q402TEri7atZW61qHW6P0GufJ2W/JxGHRvgmHOVHTVIcuWQRCt9SBSqZoZ/vHs9LhA=="], + + "wibu/@mantine/hooks": ["@mantine/hooks@7.17.0", "", { "peerDependencies": { "react": "^18.x || ^19.x" } }, "sha512-vo3K49mLy1nJ8LQNb5KDbJgnX0xwt3Y8JOF3ythjB5LEFMptdLSSgulu64zj+QHtzvffFCsMb05DbTLLpVP/JQ=="], + + "wibu/next": ["next@14.2.24", "", { "dependencies": { "@next/env": "14.2.24", "@swc/helpers": "0.5.5", "busboy": "1.6.0", "caniuse-lite": "^1.0.30001579", "graceful-fs": "^4.2.11", "postcss": "8.4.31", "styled-jsx": "5.1.1" }, "optionalDependencies": { "@next/swc-darwin-arm64": "14.2.24", "@next/swc-darwin-x64": "14.2.24", "@next/swc-linux-arm64-gnu": "14.2.24", "@next/swc-linux-arm64-musl": "14.2.24", "@next/swc-linux-x64-gnu": "14.2.24", "@next/swc-linux-x64-musl": "14.2.24", "@next/swc-win32-arm64-msvc": "14.2.24", "@next/swc-win32-ia32-msvc": "14.2.24", "@next/swc-win32-x64-msvc": "14.2.24" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", "@playwright/test": "^1.41.2", "react": "^18.2.0", "react-dom": "^18.2.0", "sass": "^1.3.0" }, "optionalPeers": ["@opentelemetry/api", "@playwright/test", "sass"], "bin": { "next": "dist/bin/next" } }, "sha512-En8VEexSJ0Py2FfVnRRh8gtERwDRaJGNvsvad47ShkC2Yi8AXQPXEA2vKoDJlGFSj5WE5SyF21zNi4M5gyi+SQ=="], + + "wibu/react": ["react@18.3.1", "", { "dependencies": { "loose-envify": "^1.1.0" } }, "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ=="], + + "wibu/react-dom": ["react-dom@18.3.1", "", { "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.2" }, "peerDependencies": { "react": "^18.3.1" } }, "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw=="], + + "wibu/readdirp": ["readdirp@4.1.2", "", {}, "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg=="], + + "wibu/typescript": ["typescript@5.7.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw=="], + + "wibu-cli/readdirp": ["readdirp@4.1.2", "", {}, "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg=="], + + "wibu-pkg/@mantine/core": ["@mantine/core@7.17.0", "", { "dependencies": { "@floating-ui/react": "^0.26.28", "clsx": "^2.1.1", "react-number-format": "^5.4.3", "react-remove-scroll": "^2.6.2", "react-textarea-autosize": "8.5.6", "type-fest": "^4.27.0" }, "peerDependencies": { "@mantine/hooks": "7.17.0", "react": "^18.x || ^19.x", "react-dom": "^18.x || ^19.x" } }, "sha512-AU5UFewUNzBCUXIq5Jk6q402TEri7atZW61qHW6P0GufJ2W/JxGHRvgmHOVHTVIcuWQRCt9SBSqZoZ/vHs9LhA=="], + + "wibu-pkg/@mantine/hooks": ["@mantine/hooks@7.17.0", "", { "peerDependencies": { "react": "^18.x || ^19.x" } }, "sha512-vo3K49mLy1nJ8LQNb5KDbJgnX0xwt3Y8JOF3ythjB5LEFMptdLSSgulu64zj+QHtzvffFCsMb05DbTLLpVP/JQ=="], + + "wibu-pkg/@types/uuid": ["@types/uuid@10.0.0", "", {}, "sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ=="], + + "wibu-pkg/uuid": ["uuid@11.1.0", "", { "bin": { "uuid": "dist/esm/bin/uuid" } }, "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A=="], + + "winston/readable-stream": ["readable-stream@3.6.2", "", { "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } }, "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA=="], + + "winston-transport/readable-stream": ["readable-stream@3.6.2", "", { "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } }, "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA=="], + + "worker-timers/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "worker-timers-broker/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "worker-timers-worker/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "write-file-atomic/signal-exit": ["signal-exit@3.0.7", "", {}, "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="], + + "xcode/uuid": ["uuid@7.0.3", "", { "bin": { "uuid": "dist/bin/uuid" } }, "sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg=="], + + "xml2js/xmlbuilder": ["xmlbuilder@11.0.1", "", {}, "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA=="], + + "xtend/object-keys": ["object-keys@0.4.0", "", {}, "sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw=="], + + "@babel/helper-compilation-targets/lru-cache/yallist": ["yallist@3.1.1", "", {}, "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="], + + "@babel/highlight/chalk/ansi-styles": ["ansi-styles@3.2.1", "", { "dependencies": { "color-convert": "^1.9.0" } }, "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA=="], + + "@babel/highlight/chalk/escape-string-regexp": ["escape-string-regexp@1.0.5", "", {}, "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg=="], + + "@babel/highlight/chalk/supports-color": ["supports-color@5.5.0", "", { "dependencies": { "has-flag": "^3.0.0" } }, "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow=="], + + "@cyntler/react-doc-viewer/ajv/json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="], + + "@expo/cli/glob/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="], + + "@expo/config-plugins/glob/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="], + + "@expo/config/glob/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="], + + "@expo/devcert/glob/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="], + + "@expo/fingerprint/p-limit/yocto-queue": ["yocto-queue@0.1.0", "", {}, "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="], + + "@expo/image-utils/fs-extra/jsonfile": ["jsonfile@6.1.0", "", { "dependencies": { "universalify": "^2.0.0" }, "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ=="], + + "@expo/image-utils/fs-extra/universalify": ["universalify@1.0.0", "", {}, "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug=="], + + "@expo/metro-config/fs-extra/jsonfile": ["jsonfile@6.1.0", "", { "dependencies": { "universalify": "^2.0.0" }, "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ=="], + + "@expo/metro-config/fs-extra/universalify": ["universalify@2.0.1", "", {}, "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw=="], + + "@expo/metro-config/glob/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="], + + "@expo/package-manager/js-yaml/argparse": ["argparse@1.0.10", "", { "dependencies": { "sprintf-js": "~1.0.2" } }, "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg=="], + + "@expo/prebuild-config/fs-extra/jsonfile": ["jsonfile@6.1.0", "", { "dependencies": { "universalify": "^2.0.0" }, "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ=="], + + "@expo/prebuild-config/fs-extra/universalify": ["universalify@2.0.1", "", {}, "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw=="], + + "@isaacs/cliui/string-width/emoji-regex": ["emoji-regex@9.2.2", "", {}, "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="], + + "@isaacs/cliui/strip-ansi/ansi-regex": ["ansi-regex@6.1.0", "", {}, "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA=="], + + "@isaacs/cliui/wrap-ansi/ansi-styles": ["ansi-styles@6.2.1", "", {}, "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug=="], + + "@istanbuljs/load-nyc-config/find-up/locate-path": ["locate-path@5.0.0", "", { "dependencies": { "p-locate": "^4.1.0" } }, "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g=="], + + "@istanbuljs/load-nyc-config/js-yaml/argparse": ["argparse@1.0.10", "", { "dependencies": { "sprintf-js": "~1.0.2" } }, "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg=="], + + "@jest/transform/write-file-atomic/signal-exit": ["signal-exit@3.0.7", "", {}, "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="], + + "@react-native/babel-plugin-codegen/@react-native/codegen/hermes-parser": ["hermes-parser@0.23.1", "", { "dependencies": { "hermes-estree": "0.23.1" } }, "sha512-oxl5h2DkFW83hT4DAUJorpah8ou4yvmweUzLJmmr6YV2cezduCdlil1AvU/a/xSsAFo4WUcNA4GoV5Bvq6JffA=="], + + "@react-native/babel-plugin-codegen/@react-native/codegen/jscodeshift": ["jscodeshift@0.14.0", "", { "dependencies": { "@babel/core": "^7.13.16", "@babel/parser": "^7.13.16", "@babel/plugin-proposal-class-properties": "^7.13.0", "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", "@babel/plugin-proposal-optional-chaining": "^7.13.12", "@babel/plugin-transform-modules-commonjs": "^7.13.8", "@babel/preset-flow": "^7.13.13", "@babel/preset-typescript": "^7.13.0", "@babel/register": "^7.13.16", "babel-core": "^7.0.0-bridge.0", "chalk": "^4.1.2", "flow-parser": "0.*", "graceful-fs": "^4.2.4", "micromatch": "^4.0.4", "neo-async": "^2.5.0", "node-dir": "^0.1.17", "recast": "^0.21.0", "temp": "^0.8.4", "write-file-atomic": "^2.3.0" }, "peerDependencies": { "@babel/preset-env": "^7.1.6" }, "bin": { "jscodeshift": "bin/jscodeshift.js" } }, "sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA=="], + + "@react-native/community-cli-plugin/@react-native/dev-middleware/@react-native/debugger-frontend": ["@react-native/debugger-frontend@0.78.0", "", {}, "sha512-KQYD9QlxES/VdmXh9EEvtZCJK1KAemLlszQq4dpLU1stnue5N8dnCY6A7PpStMf5UtAMk7tiniQhaicw0uVHgQ=="], + + "@react-native/community-cli-plugin/@react-native/dev-middleware/ws": ["ws@6.2.3", "", { "dependencies": { "async-limiter": "~1.0.0" } }, "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA=="], + + "@react-native/community-cli-plugin/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], + + "@react-native/dev-middleware/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], + + "@react-native/metro-babel-transformer/@react-native/babel-preset/@react-native/babel-plugin-codegen": ["@react-native/babel-plugin-codegen@0.78.0", "", { "dependencies": { "@babel/traverse": "^7.25.3", "@react-native/codegen": "0.78.0" } }, "sha512-+Sy9Uine0QAbQRxMl6kBlkzKW0qHQk8hghCoKswRWt1ZfxaMA3rezobD5mtSwt/Yhadds9cGbMFWfFJM3Tynsg=="], + + "@react-pdf/types/@react-pdf/stylesheet/@react-pdf/fns": ["@react-pdf/fns@3.1.1", "", {}, "sha512-fYvgOWWRxTdkCciLSla2iek8W/oDLhExPTLPw3aArGPJHgVUc86V2c3YLULNHIBuy/64QVpPLB7gwNkTEW5m/A=="], + + "@typescript-eslint/typescript-estree/minimatch/brace-expansion": ["brace-expansion@2.0.1", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA=="], + + "blessed-contrib/chalk/ansi-styles": ["ansi-styles@2.2.1", "", {}, "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA=="], + + "blessed-contrib/chalk/escape-string-regexp": ["escape-string-regexp@1.0.5", "", {}, "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg=="], + + "blessed-contrib/chalk/supports-color": ["supports-color@2.0.0", "", {}, "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g=="], + + "blessed-contrib/strip-ansi/ansi-regex": ["ansi-regex@2.1.1", "", {}, "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA=="], + + "cacache/glob/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="], + + "colorspace/color/color-convert": ["color-convert@1.9.3", "", { "dependencies": { "color-name": "1.1.3" } }, "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg=="], + + "compression/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], + + "connect/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], + + "duplexer2/readable-stream/isarray": ["isarray@1.0.0", "", {}, "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="], + + "duplexer2/readable-stream/string_decoder": ["string_decoder@1.1.1", "", { "dependencies": { "safe-buffer": "~5.1.0" } }, "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg=="], + + "eslint-config-next/@typescript-eslint/parser/@typescript-eslint/scope-manager": ["@typescript-eslint/scope-manager@6.21.0", "", { "dependencies": { "@typescript-eslint/types": "6.21.0", "@typescript-eslint/visitor-keys": "6.21.0" } }, "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg=="], + + "eslint-config-next/@typescript-eslint/parser/@typescript-eslint/types": ["@typescript-eslint/types@6.21.0", "", {}, "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg=="], + + "eslint-config-next/@typescript-eslint/parser/@typescript-eslint/typescript-estree": ["@typescript-eslint/typescript-estree@6.21.0", "", { "dependencies": { "@typescript-eslint/types": "6.21.0", "@typescript-eslint/visitor-keys": "6.21.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", "minimatch": "9.0.3", "semver": "^7.5.4", "ts-api-utils": "^1.0.1" } }, "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ=="], + + "eslint-config-next/@typescript-eslint/parser/@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@6.21.0", "", { "dependencies": { "@typescript-eslint/types": "6.21.0", "eslint-visitor-keys": "^3.4.1" } }, "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A=="], + + "execa/cross-spawn/path-key": ["path-key@2.0.1", "", {}, "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw=="], + + "execa/cross-spawn/semver": ["semver@5.7.2", "", { "bin": { "semver": "bin/semver" } }, "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g=="], + + "execa/cross-spawn/shebang-command": ["shebang-command@1.2.0", "", { "dependencies": { "shebang-regex": "^1.0.0" } }, "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg=="], + + "execa/cross-spawn/which": ["which@1.3.1", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "which": "./bin/which" } }, "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ=="], + + "expo-modules-autolinking/fs-extra/jsonfile": ["jsonfile@6.1.0", "", { "dependencies": { "universalify": "^2.0.0" }, "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ=="], + + "expo-modules-autolinking/fs-extra/universalify": ["universalify@2.0.1", "", {}, "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw=="], + + "finalhandler/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], + + "fontkit/@swc/helpers/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "html-tokenize/readable-stream/string_decoder": ["string_decoder@0.10.31", "", {}, "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ=="], + + "lighthouse-logger/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], + + "log-symbols/chalk/ansi-styles": ["ansi-styles@3.2.1", "", { "dependencies": { "color-convert": "^1.9.0" } }, "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA=="], + + "log-symbols/chalk/escape-string-regexp": ["escape-string-regexp@1.0.5", "", {}, "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg=="], + + "log-symbols/chalk/supports-color": ["supports-color@5.5.0", "", { "dependencies": { "has-flag": "^3.0.0" } }, "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow=="], + + "map-canvas/xml2js/xmlbuilder": ["xmlbuilder@11.0.1", "", {}, "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA=="], + + "memory-streams/readable-stream/string_decoder": ["string_decoder@0.10.31", "", {}, "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ=="], + + "metro-config/cosmiconfig/import-fresh": ["import-fresh@2.0.0", "", { "dependencies": { "caller-path": "^2.0.0", "resolve-from": "^3.0.0" } }, "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg=="], + + "metro-config/cosmiconfig/js-yaml": ["js-yaml@3.14.1", "", { "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g=="], + + "metro-config/cosmiconfig/parse-json": ["parse-json@4.0.0", "", { "dependencies": { "error-ex": "^1.3.1", "json-parse-better-errors": "^1.0.1" } }, "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw=="], + + "metro-file-map/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], + + "metro/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], + + "next-dev/react-dom/scheduler": ["scheduler@0.23.2", "", { "dependencies": { "loose-envify": "^1.1.0" } }, "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ=="], + + "next-scroll-loader/react-dom/scheduler": ["scheduler@0.23.2", "", { "dependencies": { "loose-envify": "^1.1.0" } }, "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ=="], + + "onnxruntime-node/tar/chownr": ["chownr@3.0.0", "", {}, "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g=="], + + "onnxruntime-node/tar/minizlib": ["minizlib@3.0.1", "", { "dependencies": { "minipass": "^7.0.4", "rimraf": "^5.0.5" } }, "sha512-umcy022ILvb5/3Djuu8LWeqUa8D68JaBzlttKeMWen48SjabqS3iY5w/vzeMzMUNhLDifyhbOwKDSznB1vvrwg=="], + + "onnxruntime-node/tar/mkdirp": ["mkdirp@3.0.1", "", { "bin": { "mkdirp": "dist/cjs/src/bin.js" } }, "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg=="], + + "onnxruntime-node/tar/yallist": ["yallist@5.0.0", "", {}, "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw=="], + + "ora/chalk/ansi-styles": ["ansi-styles@3.2.1", "", { "dependencies": { "color-convert": "^1.9.0" } }, "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA=="], + + "ora/chalk/escape-string-regexp": ["escape-string-regexp@1.0.5", "", {}, "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg=="], + + "ora/chalk/supports-color": ["supports-color@5.5.0", "", { "dependencies": { "has-flag": "^3.0.0" } }, "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow=="], + + "ora/strip-ansi/ansi-regex": ["ansi-regex@4.1.1", "", {}, "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g=="], + + "p-locate/p-limit/yocto-queue": ["yocto-queue@0.1.0", "", {}, "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="], + + "password-prompt/ansi-escapes/type-fest": ["type-fest@0.21.3", "", {}, "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w=="], + + "pkg-dir/find-up/locate-path": ["locate-path@3.0.0", "", { "dependencies": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" } }, "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A=="], + + "send/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], + + "serve-static/send/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], + + "serve-static/send/encodeurl": ["encodeurl@1.0.2", "", {}, "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w=="], + + "split-string/extend-shallow/is-extendable": ["is-extendable@1.0.1", "", { "dependencies": { "is-plain-object": "^2.0.4" } }, "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA=="], + + "sucrase/glob/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="], + + "tar-stream/bl/buffer": ["buffer@5.7.1", "", { "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" } }, "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ=="], + + "tar/fs-minipass/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="], + + "terminal-link/ansi-escapes/type-fest": ["type-fest@0.21.3", "", {}, "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w=="], + + "through2/readable-stream/string_decoder": ["string_decoder@0.10.31", "", {}, "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ=="], + + "wibu-pkg/@mantine/core/@floating-ui/react": ["@floating-ui/react@0.26.28", "", { "dependencies": { "@floating-ui/react-dom": "^2.1.2", "@floating-ui/utils": "^0.2.8", "tabbable": "^6.0.0" }, "peerDependencies": { "react": ">=16.8.0", "react-dom": ">=16.8.0" } }, "sha512-yORQuuAtVpiRjpMhdc0wJj06b9JFjrYF4qp96j++v2NBpbi6SEGF7donUJ3TMieerQ6qVkAv1tgr7L4r5roTqw=="], + + "wibu-pkg/@mantine/core/react-textarea-autosize": ["react-textarea-autosize@8.5.6", "", { "dependencies": { "@babel/runtime": "^7.20.13", "use-composed-ref": "^1.3.0", "use-latest": "^1.2.1" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-aT3ioKXMa8f6zHYGebhbdMD2L00tKeRX1zuVuDx9YQK/JLLRSaSxq3ugECEmUB9z2kvk6bFSIoRHLkkUv0RJiw=="], + + "wibu-pkg/@mantine/core/type-fest": ["type-fest@4.35.0", "", {}, "sha512-2/AwEFQDFEy30iOLjrvHDIH7e4HEWH+f1Yl1bI5XMqzuoCUqwYCdxachgsgv0og/JdVZUhbfjcJAoHj5L1753A=="], + + "wibu/@mantine/core/@floating-ui/react": ["@floating-ui/react@0.26.28", "", { "dependencies": { "@floating-ui/react-dom": "^2.1.2", "@floating-ui/utils": "^0.2.8", "tabbable": "^6.0.0" }, "peerDependencies": { "react": ">=16.8.0", "react-dom": ">=16.8.0" } }, "sha512-yORQuuAtVpiRjpMhdc0wJj06b9JFjrYF4qp96j++v2NBpbi6SEGF7donUJ3TMieerQ6qVkAv1tgr7L4r5roTqw=="], + + "wibu/@mantine/core/react-textarea-autosize": ["react-textarea-autosize@8.5.6", "", { "dependencies": { "@babel/runtime": "^7.20.13", "use-composed-ref": "^1.3.0", "use-latest": "^1.2.1" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-aT3ioKXMa8f6zHYGebhbdMD2L00tKeRX1zuVuDx9YQK/JLLRSaSxq3ugECEmUB9z2kvk6bFSIoRHLkkUv0RJiw=="], + + "wibu/@mantine/core/type-fest": ["type-fest@4.35.0", "", {}, "sha512-2/AwEFQDFEy30iOLjrvHDIH7e4HEWH+f1Yl1bI5XMqzuoCUqwYCdxachgsgv0og/JdVZUhbfjcJAoHj5L1753A=="], + + "wibu/next/@next/env": ["@next/env@14.2.24", "", {}, "sha512-LAm0Is2KHTNT6IT16lxT+suD0u+VVfYNQqM+EJTKuFRRuY2z+zj01kueWXPCxbMBDt0B5vONYzabHGUNbZYAhA=="], + + "wibu/next/@next/swc-darwin-arm64": ["@next/swc-darwin-arm64@14.2.24", "", { "os": "darwin", "cpu": "arm64" }, "sha512-7Tdi13aojnAZGpapVU6meVSpNzgrFwZ8joDcNS8cJVNuP3zqqrLqeory9Xec5TJZR/stsGJdfwo8KeyloT3+rQ=="], + + "wibu/next/@next/swc-darwin-x64": ["@next/swc-darwin-x64@14.2.24", "", { "os": "darwin", "cpu": "x64" }, "sha512-lXR2WQqUtu69l5JMdTwSvQUkdqAhEWOqJEYUQ21QczQsAlNOW2kWZCucA6b3EXmPbcvmHB1kSZDua/713d52xg=="], + + "wibu/next/@next/swc-linux-arm64-gnu": ["@next/swc-linux-arm64-gnu@14.2.24", "", { "os": "linux", "cpu": "arm64" }, "sha512-nxvJgWOpSNmzidYvvGDfXwxkijb6hL9+cjZx1PVG6urr2h2jUqBALkKjT7kpfurRWicK6hFOvarmaWsINT1hnA=="], + + "wibu/next/@next/swc-linux-arm64-musl": ["@next/swc-linux-arm64-musl@14.2.24", "", { "os": "linux", "cpu": "arm64" }, "sha512-PaBgOPhqa4Abxa3y/P92F3kklNPsiFjcjldQGT7kFmiY5nuFn8ClBEoX8GIpqU1ODP2y8P6hio6vTomx2Vy0UQ=="], + + "wibu/next/@next/swc-linux-x64-gnu": ["@next/swc-linux-x64-gnu@14.2.24", "", { "os": "linux", "cpu": "x64" }, "sha512-vEbyadiRI7GOr94hd2AB15LFVgcJZQWu7Cdi9cWjCMeCiUsHWA0U5BkGPuoYRnTxTn0HacuMb9NeAmStfBCLoQ=="], + + "wibu/next/@next/swc-linux-x64-musl": ["@next/swc-linux-x64-musl@14.2.24", "", { "os": "linux", "cpu": "x64" }, "sha512-df0FC9ptaYsd8nQCINCzFtDWtko8PNRTAU0/+d7hy47E0oC17tI54U/0NdGk7l/76jz1J377dvRjmt6IUdkpzQ=="], + + "wibu/next/@next/swc-win32-arm64-msvc": ["@next/swc-win32-arm64-msvc@14.2.24", "", { "os": "win32", "cpu": "arm64" }, "sha512-ZEntbLjeYAJ286eAqbxpZHhDFYpYjArotQ+/TW9j7UROh0DUmX7wYDGtsTPpfCV8V+UoqHBPU7q9D4nDNH014Q=="], + + "wibu/next/@next/swc-win32-ia32-msvc": ["@next/swc-win32-ia32-msvc@14.2.24", "", { "os": "win32", "cpu": "ia32" }, "sha512-9KuS+XUXM3T6v7leeWU0erpJ6NsFIwiTFD5nzNg8J5uo/DMIPvCp3L1Ao5HjbHX0gkWPB1VrKoo/Il4F0cGK2Q=="], + + "wibu/next/@next/swc-win32-x64-msvc": ["@next/swc-win32-x64-msvc@14.2.24", "", { "os": "win32", "cpu": "x64" }, "sha512-cXcJ2+x0fXQ2CntaE00d7uUH+u1Bfp/E0HsNQH79YiLaZE5Rbm7dZzyAYccn3uICM7mw+DxoMqEfGXZtF4Fgaw=="], + + "wibu/next/@swc/helpers": ["@swc/helpers@0.5.5", "", { "dependencies": { "@swc/counter": "^0.1.3", "tslib": "^2.4.0" } }, "sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A=="], + + "wibu/next/postcss": ["postcss@8.4.31", "", { "dependencies": { "nanoid": "^3.3.6", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" } }, "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ=="], + + "wibu/react-dom/scheduler": ["scheduler@0.23.2", "", { "dependencies": { "loose-envify": "^1.1.0" } }, "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ=="], + + "@babel/highlight/chalk/ansi-styles/color-convert": ["color-convert@1.9.3", "", { "dependencies": { "color-name": "1.1.3" } }, "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg=="], + + "@babel/highlight/chalk/supports-color/has-flag": ["has-flag@3.0.0", "", {}, "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw=="], + + "@expo/cli/glob/minimatch/brace-expansion": ["brace-expansion@2.0.1", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA=="], + + "@expo/config-plugins/glob/minimatch/brace-expansion": ["brace-expansion@2.0.1", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA=="], + + "@expo/config/glob/minimatch/brace-expansion": ["brace-expansion@2.0.1", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA=="], + + "@expo/devcert/glob/minimatch/brace-expansion": ["brace-expansion@2.0.1", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA=="], + + "@expo/image-utils/fs-extra/jsonfile/universalify": ["universalify@2.0.1", "", {}, "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw=="], + + "@expo/metro-config/glob/minimatch/brace-expansion": ["brace-expansion@2.0.1", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA=="], + + "@istanbuljs/load-nyc-config/find-up/locate-path/p-locate": ["p-locate@4.1.0", "", { "dependencies": { "p-limit": "^2.2.0" } }, "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A=="], + + "@react-native/babel-plugin-codegen/@react-native/codegen/hermes-parser/hermes-estree": ["hermes-estree@0.23.1", "", {}, "sha512-eT5MU3f5aVhTqsfIReZ6n41X5sYn4IdQL0nvz6yO+MMlPxw49aSARHLg/MSehQftyjnrE8X6bYregzSumqc6cg=="], + + "@react-native/babel-plugin-codegen/@react-native/codegen/jscodeshift/recast": ["recast@0.21.5", "", { "dependencies": { "ast-types": "0.15.2", "esprima": "~4.0.0", "source-map": "~0.6.1", "tslib": "^2.0.1" } }, "sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg=="], + + "cacache/glob/minimatch/brace-expansion": ["brace-expansion@2.0.1", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA=="], + + "colorspace/color/color-convert/color-name": ["color-name@1.1.3", "", {}, "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="], + + "eslint-config-next/@typescript-eslint/parser/@typescript-eslint/typescript-estree/minimatch": ["minimatch@9.0.3", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg=="], + + "execa/cross-spawn/shebang-command/shebang-regex": ["shebang-regex@1.0.0", "", {}, "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ=="], + + "log-symbols/chalk/ansi-styles/color-convert": ["color-convert@1.9.3", "", { "dependencies": { "color-name": "1.1.3" } }, "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg=="], + + "log-symbols/chalk/supports-color/has-flag": ["has-flag@3.0.0", "", {}, "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw=="], + + "metro-config/cosmiconfig/import-fresh/resolve-from": ["resolve-from@3.0.0", "", {}, "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw=="], + + "metro-config/cosmiconfig/js-yaml/argparse": ["argparse@1.0.10", "", { "dependencies": { "sprintf-js": "~1.0.2" } }, "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg=="], + + "onnxruntime-node/tar/minizlib/rimraf": ["rimraf@5.0.10", "", { "dependencies": { "glob": "^10.3.7" }, "bin": { "rimraf": "dist/esm/bin.mjs" } }, "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ=="], + + "ora/chalk/ansi-styles/color-convert": ["color-convert@1.9.3", "", { "dependencies": { "color-name": "1.1.3" } }, "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg=="], + + "ora/chalk/supports-color/has-flag": ["has-flag@3.0.0", "", {}, "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw=="], + + "pkg-dir/find-up/locate-path/p-locate": ["p-locate@3.0.0", "", { "dependencies": { "p-limit": "^2.0.0" } }, "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ=="], + + "pkg-dir/find-up/locate-path/path-exists": ["path-exists@3.0.0", "", {}, "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ=="], + + "serve-static/send/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], + + "sucrase/glob/minimatch/brace-expansion": ["brace-expansion@2.0.1", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA=="], + + "wibu-pkg/@mantine/core/@floating-ui/react/@floating-ui/react-dom": ["@floating-ui/react-dom@2.1.2", "", { "dependencies": { "@floating-ui/dom": "^1.0.0" }, "peerDependencies": { "react": ">=16.8.0", "react-dom": ">=16.8.0" } }, "sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A=="], + + "wibu/@mantine/core/@floating-ui/react/@floating-ui/react-dom": ["@floating-ui/react-dom@2.1.2", "", { "dependencies": { "@floating-ui/dom": "^1.0.0" }, "peerDependencies": { "react": ">=16.8.0", "react-dom": ">=16.8.0" } }, "sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A=="], + + "wibu/next/@swc/helpers/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "@babel/highlight/chalk/ansi-styles/color-convert/color-name": ["color-name@1.1.3", "", {}, "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="], + + "@istanbuljs/load-nyc-config/find-up/locate-path/p-locate/p-limit": ["p-limit@2.3.0", "", { "dependencies": { "p-try": "^2.0.0" } }, "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w=="], + + "@react-native/babel-plugin-codegen/@react-native/codegen/jscodeshift/recast/ast-types": ["ast-types@0.15.2", "", { "dependencies": { "tslib": "^2.0.1" } }, "sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg=="], + + "@react-native/babel-plugin-codegen/@react-native/codegen/jscodeshift/recast/source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="], + + "@react-native/babel-plugin-codegen/@react-native/codegen/jscodeshift/recast/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "eslint-config-next/@typescript-eslint/parser/@typescript-eslint/typescript-estree/minimatch/brace-expansion": ["brace-expansion@2.0.1", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA=="], + + "log-symbols/chalk/ansi-styles/color-convert/color-name": ["color-name@1.1.3", "", {}, "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="], + + "onnxruntime-node/tar/minizlib/rimraf/glob": ["glob@10.4.5", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", "minimatch": "^9.0.4", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg=="], + + "ora/chalk/ansi-styles/color-convert/color-name": ["color-name@1.1.3", "", {}, "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="], + + "pkg-dir/find-up/locate-path/p-locate/p-limit": ["p-limit@2.3.0", "", { "dependencies": { "p-try": "^2.0.0" } }, "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w=="], + + "onnxruntime-node/tar/minizlib/rimraf/glob/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="], + + "onnxruntime-node/tar/minizlib/rimraf/glob/minimatch/brace-expansion": ["brace-expansion@2.0.1", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA=="], + } +} diff --git a/bun.lockb b/bun.lockb deleted file mode 100755 index 03d96215..00000000 Binary files a/bun.lockb and /dev/null differ diff --git a/eslint.config.mjs.back.txt b/eslint.config.mjs.back.txt new file mode 100644 index 00000000..882f628d --- /dev/null +++ b/eslint.config.mjs.back.txt @@ -0,0 +1,16 @@ +import { fileURLToPath } from "url"; +import { dirname } from "path"; // Pastikan `dirname` diimpor +import { FlatCompat } from "@eslint/eslintrc"; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); + +const compat = new FlatCompat({ + baseDirectory: __dirname, +}); + +const eslintConfig = [ + ...compat.extends("next/core-web-vitals", "next/typescript"), +]; + +export default eslintConfig; diff --git a/logs/.gitkeep b/logs/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/logs/backend/.gitkeep b/logs/backend/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/logs/frontend/.gitkeep b/logs/frontend/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/next.config.js b/next.config.js index 5c728631..438386a8 100644 --- a/next.config.js +++ b/next.config.js @@ -1,10 +1,27 @@ /** @type {import('next').NextConfig} */ const nextConfig = { - reactStrictMode: false, - experimental: { - serverActions: true - }, - -} + reactStrictMode: false, + experimental: { + serverActions: true, + }, + output: "standalone", + staticPageGenerationTimeout: 180, // tingkatkan menjadi 3 menit + eslint: { + ignoreDuringBuilds: true, + }, + // async headers() { + // return [ + // { + // source: "/(.*)", + // headers: [ + // { + // key: "Cache-Control", + // value: "no-store, max-age=0", + // }, + // ], + // }, + // ]; + // }, +}; -module.exports = nextConfig +module.exports = nextConfig; diff --git a/package.json b/package.json index 3b1dba92..d7e768e6 100644 --- a/package.json +++ b/package.json @@ -1,15 +1,16 @@ { "name": "hipmi", - "version": "1.2.12", + "version": "1.4.28", "private": true, "prisma": { - "seed": "npx tsx prisma/seed.ts --yes" + "seed": "bun prisma/seed.ts" }, - "scripts": { - "dev": "bun --bun run next dev --experimental-https", - "build": "bun --bun run next build", - "start": "bun --bun run next start", - "lint": "bun --bun run next lint", + "scripts": { + "dev": "next dev --experimental-https", + "build": "next build", + "build:dev": "next build", + "start": "next start", + "lint": "next lint", "ver": "bunx commit-and-tag-version -- --prerelease" }, "dependencies": { @@ -27,18 +28,20 @@ "@mantine/next": "^6.0.17", "@mantine/notifications": "^6.0.17", "@mantine/tiptap": "^7.5.3", - "@prisma/client": "^5.0.0", + "@prisma/client": "^6.3.0", "@react-pdf/renderer": "^3.4.4", - "@tabler/icons-react": "^2.38.0", + "@tabler/icons-react": "^3.31.0", "@tiptap/extension-highlight": "^2.2.3", + "@tiptap/extension-image": "^2.11.7", "@tiptap/extension-link": "^2.2.3", "@tiptap/extension-subscript": "^2.2.3", "@tiptap/extension-superscript": "^2.2.3", "@tiptap/extension-text-align": "^2.2.3", - "@tiptap/extension-underline": "^2.2.3", + "@tiptap/extension-underline": "^2.11.7", "@tiptap/pm": "^2.2.3", "@tiptap/react": "^2.2.3", "@tiptap/starter-kit": "^2.2.3", + "@types/bun": "^1.1.14", "@types/lodash": "^4.17.4", "@types/mapbox-gl": "^3.4.0", "@types/node": "20.4.5", @@ -47,13 +50,15 @@ "@types/uuid": "^9.0.4", "autoprefixer": "10.4.14", "bufferutil": "^4.0.8", + "bun": "^1.1.38", + "colors": "^1.4.0", + "date-fns": "^4.1.0", "dayjs": "^1.11.10", "dotenv": "^16.4.5", "echarts": "^5.4.3", "echarts-for-react": "^3.0.2", "embla-carousel-react": "^8.0.0-rc14", - "eslint": "8.45.0", - "eslint-config-next": "13.4.12", + "eslint-config-next": "^13.5.4", "iron-session": "^6.3.1", "jose": "^5.9.2", "jotai": "^2.4.3", @@ -62,18 +67,20 @@ "midtrans-client": "^1.3.1", "moment": "^2.29.4", "mqtt": "^5.5.0", - "next": "^13.5.4-canary.8", + "next": "^13.5.4", "next-dev": "^1.1.9", "next-scroll-loader": "^1.0.9", + "p-limit": "^6.2.0", + "pdf-lib": "^1.17.1", + "pdf2pic": "^3.1.3", "pdfjs-dist": "^4.6.82", "postcss": "8.4.27", - "prisma": "^5.19.1", + "prisma": "^6.3.0", "react": "18.2.0", "react-countdown": "^2.3.5", "react-dom": "18.2.0", "react-easy-infinite-scroll-hook": "^2.1.4", "react-fast-marquee": "^1.6.4", - "react-icons": "^5.0.1", "react-iframe": "^1.8.5", "react-infinite-scroll-component": "^6.1.0", "react-international-phone": "^4.2.6", @@ -83,7 +90,9 @@ "react-quill": "^2.0.0", "react-responsive-carousel": "^3.2.23", "react-toastify": "^9.1.3", + "sharp": "^0.33.5", "socket.io-client": "^4.7.2", + "swr": "^2.3.0", "tailwindcss": "3.3.3", "ts-node": "^10.9.2", "typescript": "5.1.6", @@ -92,6 +101,13 @@ "wibu": "bipproduction/wibu", "wibu-cli": "^1.0.91", "wibu-pkg": "^1.0.3", + "winston": "^3.17.0", + "winston-daily-rotate-file": "^5.0.0", "yaml": "^2.3.2" + }, + "devDependencies": { + "eslint": "^8.56.0", + "@typescript-eslint/eslint-plugin": "^7.0.0", + "@typescript-eslint/parser": "^7.0.0" } } diff --git a/prisma/migrations/20250108154615_new_database/migration.sql b/prisma/migrations/20250108154615_new_database/migration.sql new file mode 100644 index 00000000..3476e5af --- /dev/null +++ b/prisma/migrations/20250108154615_new_database/migration.sql @@ -0,0 +1,198 @@ +/* + Warnings: + + - You are about to drop the column `imagesId` on the `Job` table. All the data in the column will be lost. + - You are about to drop the column `active` on the `MasterBank` table. All the data in the column will be lost. + - You are about to drop the column `name` on the `MasterBank` table. All the data in the column will be lost. + - You are about to drop the column `imagesBackgroundId` on the `Profile` table. All the data in the column will be lost. + - You are about to drop the column `imagesId` on the `Profile` table. All the data in the column will be lost. + - You are about to drop the `ImagesBackground` table. If the table is not empty, all the data it contains will be lost. + - Added the required column `namaAkun` to the `MasterBank` table without a default value. This is not possible if the table is not empty. + - Added the required column `namaBank` to the `MasterBank` table without a default value. This is not possible if the table is not empty. + +*/ +-- DropForeignKey +ALTER TABLE "Job" DROP CONSTRAINT "Job_imagesId_fkey"; + +-- DropForeignKey +ALTER TABLE "Notifikasi" DROP CONSTRAINT "NotifikasiAdmin"; + +-- DropForeignKey +ALTER TABLE "Notifikasi" DROP CONSTRAINT "NotifikasiUser"; + +-- DropForeignKey +ALTER TABLE "Portofolio" DROP CONSTRAINT "Portofolio_logoId_fkey"; + +-- DropForeignKey +ALTER TABLE "Profile" DROP CONSTRAINT "Profile_imagesBackgroundId_fkey"; + +-- DropForeignKey +ALTER TABLE "Profile" DROP CONSTRAINT "Profile_imagesId_fkey"; + +-- DropIndex +DROP INDEX "Profile_imagesBackgroundId_key"; + +-- DropIndex +DROP INDEX "Profile_imagesId_key"; + +-- AlterTable +ALTER TABLE "BeritaInvestasi" ADD COLUMN "imageId" TEXT; + +-- AlterTable +ALTER TABLE "DokumenInvestasi" ADD COLUMN "fileId" TEXT, +ALTER COLUMN "url" DROP NOT NULL; + +-- AlterTable +ALTER TABLE "Donasi" ADD COLUMN "imageId" TEXT; + +-- AlterTable +ALTER TABLE "Donasi_Cerita" ADD COLUMN "imageId" TEXT; + +-- AlterTable +ALTER TABLE "Donasi_Invoice" ADD COLUMN "imageId" TEXT; + +-- AlterTable +ALTER TABLE "Donasi_Kabar" ADD COLUMN "imageId" TEXT; + +-- AlterTable +ALTER TABLE "Donasi_PencairanDana" ADD COLUMN "imageId" TEXT; + +-- AlterTable +ALTER TABLE "Donasi_TemporaryCreate" ADD COLUMN "imageId" TEXT; + +-- AlterTable +ALTER TABLE "Event" ADD COLUMN "isArsip" BOOLEAN DEFAULT false, +ADD COLUMN "tanggalSelesai" TIMESTAMP(3), +ALTER COLUMN "tanggal" DROP NOT NULL; + +-- AlterTable +ALTER TABLE "Event_Peserta" ADD COLUMN "isPresent" BOOLEAN NOT NULL DEFAULT false; + +-- AlterTable +ALTER TABLE "Investasi" ADD COLUMN "imageId" TEXT, +ADD COLUMN "prospektusFileId" TEXT; + +-- AlterTable +ALTER TABLE "Job" DROP COLUMN "imagesId", +ADD COLUMN "imageId" TEXT; + +-- AlterTable +ALTER TABLE "MasterBank" DROP COLUMN "active", +DROP COLUMN "name", +ADD COLUMN "isActive" BOOLEAN NOT NULL DEFAULT true, +ADD COLUMN "namaAkun" TEXT NOT NULL, +ADD COLUMN "namaBank" TEXT NOT NULL; + +-- AlterTable +ALTER TABLE "Notifikasi" ALTER COLUMN "userId" DROP NOT NULL, +ALTER COLUMN "adminId" DROP NOT NULL; + +-- AlterTable +ALTER TABLE "Profile" DROP COLUMN "imagesBackgroundId", +DROP COLUMN "imagesId", +ADD COLUMN "imageBackgroundId" TEXT, +ADD COLUMN "imageId" TEXT; + +-- AlterTable +ALTER TABLE "ProspektusInvestasi" ADD COLUMN "fileId" TEXT, +ADD COLUMN "title" TEXT; + +-- AlterTable +ALTER TABLE "User" ALTER COLUMN "active" SET DEFAULT false; + +-- AlterTable +ALTER TABLE "UserSession" ALTER COLUMN "expires" DROP NOT NULL; + +-- AlterTable +ALTER TABLE "Voting" ADD COLUMN "isArsip" BOOLEAN NOT NULL DEFAULT false; + +-- DropTable +DROP TABLE "ImagesBackground"; + +-- CreateTable +CREATE TABLE "Investasi_Invoice" ( + "id" TEXT NOT NULL, + "isActive" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "nominal" TEXT NOT NULL, + "lembarTerbeli" TEXT NOT NULL, + "investasiId" TEXT, + "masterBankId" TEXT, + "statusInvoiceId" TEXT, + "authorId" TEXT, + "imagesId" TEXT, + "imageId" TEXT, + + CONSTRAINT "Investasi_Invoice_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "InvestasiMaster_StatusInvoice" ( + "id" TEXT NOT NULL, + "name" TEXT NOT NULL, + "isActive" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "InvestasiMaster_StatusInvoice_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "BusinessMaps" ( + "id" TEXT NOT NULL, + "isActive" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "namePin" TEXT NOT NULL, + "latitude" DOUBLE PRECISION NOT NULL, + "longitude" DOUBLE PRECISION NOT NULL, + "authorId" TEXT, + "portofolioId" TEXT, + "imageId" TEXT, + "pinId" TEXT, + + CONSTRAINT "BusinessMaps_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "MasterKategoriApp" ( + "id" TEXT NOT NULL, + "isActive" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "name" TEXT NOT NULL, + "value" TEXT, + + CONSTRAINT "MasterKategoriApp_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE UNIQUE INDEX "BusinessMaps_portofolioId_key" ON "BusinessMaps"("portofolioId"); + +-- AddForeignKey +ALTER TABLE "Investasi_Invoice" ADD CONSTRAINT "Investasi_Invoice_investasiId_fkey" FOREIGN KEY ("investasiId") REFERENCES "Investasi"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Investasi_Invoice" ADD CONSTRAINT "Investasi_Invoice_masterBankId_fkey" FOREIGN KEY ("masterBankId") REFERENCES "MasterBank"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Investasi_Invoice" ADD CONSTRAINT "Investasi_Invoice_statusInvoiceId_fkey" FOREIGN KEY ("statusInvoiceId") REFERENCES "InvestasiMaster_StatusInvoice"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Investasi_Invoice" ADD CONSTRAINT "Investasi_Invoice_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Investasi_Invoice" ADD CONSTRAINT "Investasi_Invoice_imagesId_fkey" FOREIGN KEY ("imagesId") REFERENCES "Images"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Notifikasi" ADD CONSTRAINT "NotifikasiUser" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Notifikasi" ADD CONSTRAINT "NotifikasiAdmin" FOREIGN KEY ("adminId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "BusinessMaps" ADD CONSTRAINT "BusinessMaps_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "BusinessMaps" ADD CONSTRAINT "BusinessMaps_portofolioId_fkey" FOREIGN KEY ("portofolioId") REFERENCES "Portofolio"("id") ON DELETE SET NULL ON UPDATE CASCADE; diff --git a/prisma/migrations/20250514090639_add_unique_to_master_emotions/migration.sql b/prisma/migrations/20250514090639_add_unique_to_master_emotions/migration.sql new file mode 100644 index 00000000..7a576b49 --- /dev/null +++ b/prisma/migrations/20250514090639_add_unique_to_master_emotions/migration.sql @@ -0,0 +1,125 @@ +-- AlterTable +ALTER TABLE "MasterBidangBisnis" ADD COLUMN "slug" TEXT NOT NULL DEFAULT 'NULL'; + +-- CreateTable +CREATE TABLE "Portofolio_BidangDanSubBidangBisnis" ( + "id" TEXT NOT NULL, + "isActive" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "portofolioId" TEXT, + "masterBidangBisnisId" TEXT, + "masterSubBidangBisnisId" TEXT, + + CONSTRAINT "Portofolio_BidangDanSubBidangBisnis_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "MasterSubBidangBisnis" ( + "id" TEXT NOT NULL, + "name" TEXT NOT NULL, + "slug" TEXT NOT NULL DEFAULT 'NULL', + "isActive" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "masterBidangBisnisId" TEXT, + + CONSTRAINT "MasterSubBidangBisnis_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "MasterStatusTransaksi" ( + "id" TEXT NOT NULL, + "name" TEXT NOT NULL, + "isActive" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "MasterStatusTransaksi_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "MasterEmotions" ( + "id" SERIAL NOT NULL, + "label" TEXT NOT NULL, + "value" TEXT NOT NULL, + "isActive" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "MasterEmotions_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "EventSponsor" ( + "id" TEXT NOT NULL, + "isActive" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "name" TEXT NOT NULL, + "isTransfer" BOOLEAN DEFAULT false, + "fileName" TEXT NOT NULL, + "fileExt" TEXT, + "fileId" TEXT NOT NULL, + "authorId" TEXT, + "eventId" TEXT, + + CONSTRAINT "EventSponsor_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "EventTransaksi" ( + "id" TEXT NOT NULL, + "isActive" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "nominal" INTEGER NOT NULL, + "status" TEXT NOT NULL, + "transferImageId" TEXT, + "masterBankId" TEXT, + "authorId" TEXT, + "eventId" TEXT, + "eventSponsorId" TEXT, + "masterStatusTransaksiId" TEXT, + + CONSTRAINT "EventTransaksi_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE UNIQUE INDEX "MasterEmotions_value_key" ON "MasterEmotions"("value"); + +-- CreateIndex +CREATE UNIQUE INDEX "EventTransaksi_eventSponsorId_key" ON "EventTransaksi"("eventSponsorId"); + +-- AddForeignKey +ALTER TABLE "Portofolio_BidangDanSubBidangBisnis" ADD CONSTRAINT "Portofolio_BidangDanSubBidangBisnis_portofolioId_fkey" FOREIGN KEY ("portofolioId") REFERENCES "Portofolio"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Portofolio_BidangDanSubBidangBisnis" ADD CONSTRAINT "Portofolio_BidangDanSubBidangBisnis_masterBidangBisnisId_fkey" FOREIGN KEY ("masterBidangBisnisId") REFERENCES "MasterBidangBisnis"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Portofolio_BidangDanSubBidangBisnis" ADD CONSTRAINT "Portofolio_BidangDanSubBidangBisnis_masterSubBidangBisnisI_fkey" FOREIGN KEY ("masterSubBidangBisnisId") REFERENCES "MasterSubBidangBisnis"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "MasterSubBidangBisnis" ADD CONSTRAINT "MasterSubBidangBisnis_masterBidangBisnisId_fkey" FOREIGN KEY ("masterBidangBisnisId") REFERENCES "MasterBidangBisnis"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "EventSponsor" ADD CONSTRAINT "EventSponsor_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "EventSponsor" ADD CONSTRAINT "EventSponsor_eventId_fkey" FOREIGN KEY ("eventId") REFERENCES "Event"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "EventTransaksi" ADD CONSTRAINT "EventTransaksi_masterBankId_fkey" FOREIGN KEY ("masterBankId") REFERENCES "MasterBank"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "EventTransaksi" ADD CONSTRAINT "EventTransaksi_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "EventTransaksi" ADD CONSTRAINT "EventTransaksi_eventId_fkey" FOREIGN KEY ("eventId") REFERENCES "Event"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "EventTransaksi" ADD CONSTRAINT "EventTransaksi_eventSponsorId_fkey" FOREIGN KEY ("eventSponsorId") REFERENCES "EventSponsor"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "EventTransaksi" ADD CONSTRAINT "EventTransaksi_masterStatusTransaksiId_fkey" FOREIGN KEY ("masterStatusTransaksiId") REFERENCES "MasterStatusTransaksi"("id") ON DELETE SET NULL ON UPDATE CASCADE; diff --git a/prisma/migrations/20250515060811_relasi/migration.sql b/prisma/migrations/20250515060811_relasi/migration.sql new file mode 100644 index 00000000..7099dfb1 --- /dev/null +++ b/prisma/migrations/20250515060811_relasi/migration.sql @@ -0,0 +1,30 @@ +-- CreateTable +CREATE TABLE "Stiker" ( + "id" TEXT NOT NULL, + "isActive" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "name" TEXT, + "fileName" TEXT, + "fileExt" TEXT, + "fileId" TEXT NOT NULL, + + CONSTRAINT "Stiker_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "_StikerEmotions" ( + "A" INTEGER NOT NULL, + "B" TEXT NOT NULL, + + CONSTRAINT "_StikerEmotions_AB_pkey" PRIMARY KEY ("A","B") +); + +-- CreateIndex +CREATE INDEX "_StikerEmotions_B_index" ON "_StikerEmotions"("B"); + +-- AddForeignKey +ALTER TABLE "_StikerEmotions" ADD CONSTRAINT "_StikerEmotions_A_fkey" FOREIGN KEY ("A") REFERENCES "MasterEmotions"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "_StikerEmotions" ADD CONSTRAINT "_StikerEmotions_B_fkey" FOREIGN KEY ("B") REFERENCES "Stiker"("id") ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/prisma/migrations/20250515062136_ganti/migration.sql b/prisma/migrations/20250515062136_ganti/migration.sql new file mode 100644 index 00000000..caf9b319 --- /dev/null +++ b/prisma/migrations/20250515062136_ganti/migration.sql @@ -0,0 +1,28 @@ +/* + Warnings: + + - You are about to drop the `Stiker` table. If the table is not empty, all the data it contains will be lost. + +*/ +-- DropForeignKey +ALTER TABLE "_StikerEmotions" DROP CONSTRAINT "_StikerEmotions_B_fkey"; + +-- DropTable +DROP TABLE "Stiker"; + +-- CreateTable +CREATE TABLE "Sticker" ( + "id" TEXT NOT NULL, + "isActive" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "name" TEXT, + "fileName" TEXT, + "fileExt" TEXT, + "fileId" TEXT NOT NULL, + + CONSTRAINT "Sticker_pkey" PRIMARY KEY ("id") +); + +-- AddForeignKey +ALTER TABLE "_StikerEmotions" ADD CONSTRAINT "_StikerEmotions_B_fkey" FOREIGN KEY ("B") REFERENCES "Sticker"("id") ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/prisma/migrations/migration_lock.toml b/prisma/migrations/migration_lock.toml index fbffa92c..648c57fd 100644 --- a/prisma/migrations/migration_lock.toml +++ b/prisma/migrations/migration_lock.toml @@ -1,3 +1,3 @@ # Please do not edit this file manually -# It should be added in your version-control system (i.e. Git) +# It should be added in your version-control system (e.g., Git) provider = "postgresql" \ No newline at end of file diff --git a/prisma/schema.prisma b/prisma/schema.prisma index faebf9e8..72dd8579 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -2,8 +2,9 @@ // learn more about it in the docs: https://pris.ly/d/prisma-schema generator client { - provider = "prisma-client-js" - engineType = "binary" + provider = "prisma-client-js" + engineType = "binary" + binaryTargets = ["native"] } datasource db { @@ -47,6 +48,9 @@ model User { User_Notifikasi Notifikasi[] @relation("UserNotifikasi") BusinessMaps BusinessMaps[] Investasi_Invoice Investasi_Invoice[] + + EventSponsor EventSponsor[] + EventTransaksi EventTransaksi[] } model MasterUserRole { @@ -125,11 +129,13 @@ model Portofolio { updatedAt DateTime @default(now()) @updatedAt Profile Profile? @relation(fields: [profileId], references: [id]) profileId String? - MasterBidangBisnis MasterBidangBisnis @relation(fields: [masterBidangBisnisId], references: [id]) - masterBidangBisnisId String Portofolio_MediaSosial Portofolio_MediaSosial? BusinessMaps BusinessMaps? logoId String? + + MasterBidangBisnis MasterBidangBisnis @relation(fields: [masterBidangBisnisId], references: [id]) + masterBidangBisnisId String + Portofolio_BidangDanSubBidangBisnis Portofolio_BidangDanSubBidangBisnis[] } model Portofolio_MediaSosial { @@ -146,17 +152,46 @@ model Portofolio_MediaSosial { portofolioId String? @unique } -model MasterBidangBisnis { - id String @id - name String - active Boolean @default(true) - createdAt DateTime @default(now()) - updatedAt DateTime @default(now()) @updatedAt - Portofolio Portofolio[] +model Portofolio_BidangDanSubBidangBisnis { + id String @id @default(cuid()) + isActive Boolean @default(true) + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + + Portofolio Portofolio? @relation(fields: [portofolioId], references: [id]) + portofolioId String? + MasterBidangBisnis MasterBidangBisnis? @relation(fields: [masterBidangBisnisId], references: [id]) + masterBidangBisnisId String? + MasterSubBidangBisnis MasterSubBidangBisnis? @relation(fields: [masterSubBidangBisnisId], references: [id]) + masterSubBidangBisnisId String? } // ------------------- MASTER -------------------------- // +model MasterBidangBisnis { + id String @id @default(uuid()) + name String + slug String @default("NULL") + active Boolean @default(true) + createdAt DateTime @default(now()) + updatedAt DateTime @default(now()) @updatedAt + Portofolio Portofolio[] + MasterSubBidangBisnis MasterSubBidangBisnis[] + Portofolio_BidangDanSubBidangBisnis Portofolio_BidangDanSubBidangBisnis[] +} + +model MasterSubBidangBisnis { + id String @id @default(cuid()) + name String + slug String @default("NULL") + isActive Boolean @default(true) + createdAt DateTime @default(now()) + updatedAt DateTime @default(now()) @updatedAt + MasterBidangBisnis MasterBidangBisnis? @relation(fields: [masterBidangBisnisId], references: [id]) + masterBidangBisnisId String? + Portofolio_BidangDanSubBidangBisnis Portofolio_BidangDanSubBidangBisnis[] +} + model MasterBank { id String @id @default(cuid()) namaBank String @@ -166,6 +201,7 @@ model MasterBank { createdAt DateTime @default(now()) updatedAt DateTime @updatedAt Investasi_Invoice Investasi_Invoice[] + EventTransaksi EventTransaksi[] } model MasterStatus { @@ -177,6 +213,25 @@ model MasterStatus { Job Job[] } +model MasterStatusTransaksi { + id String @id @default(cuid()) + name String + isActive Boolean @default(true) + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + EventTransaksi EventTransaksi[] +} + +model MasterEmotions { + id Int @id @default(autoincrement()) + label String + value String @unique + isActive Boolean @default(true) + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + Sticker Sticker[] @relation("StikerEmotions") +} + // -------------------- INVESTASI --------------------- // // Table investasi / saham model Investasi { @@ -593,6 +648,8 @@ model Event { Event_Peserta Event_Peserta[] EventMaster_TipeAcara EventMaster_TipeAcara? @relation(fields: [eventMaster_TipeAcaraId], references: [id]) eventMaster_TipeAcaraId Int? + EventSponsor EventSponsor[] + EventTransaksi EventTransaksi[] } model EventMaster_TipeAcara { @@ -618,6 +675,7 @@ model Event_Peserta { active Boolean @default(true) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt + isPresent Boolean @default(false) Event Event? @relation(fields: [eventId], references: [id]) eventId String? @@ -951,3 +1009,64 @@ model MasterKategoriApp { name String value String? } + +// ======================= EVENT ======================= // + +model EventSponsor { + id String @id @default(cuid()) + isActive Boolean @default(true) + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + name String + isTransfer Boolean? @default(false) + fileName String + fileExt String? + fileId String + + Author User? @relation(fields: [authorId], references: [id]) + authorId String? + + Event Event? @relation(fields: [eventId], references: [id]) + eventId String? + + EventTransaksi EventTransaksi? +} + +model EventTransaksi { + id String @id @default(cuid()) + isActive Boolean @default(true) + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + nominal Int + status String + transferImageId String? + + MasterBank MasterBank? @relation(fields: [masterBankId], references: [id]) + masterBankId String? + + AuthorId User? @relation(fields: [authorId], references: [id]) + authorId String? + + Event Event? @relation(fields: [eventId], references: [id]) + eventId String? + + EventSponsor EventSponsor? @relation(fields: [eventSponsorId], references: [id]) + eventSponsorId String? @unique + + MasterStatusTransaksi MasterStatusTransaksi? @relation(fields: [masterStatusTransaksiId], references: [id]) + masterStatusTransaksiId String? +} + +model Sticker { + id String @id @default(cuid()) + isActive Boolean @default(true) + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + name String? + fileName String? + fileExt String? + fileId String + jenisKelamin String? + + MasterEmotions MasterEmotions[] @relation("StikerEmotions") +} diff --git a/prisma/seed.ts b/prisma/seed.ts index b4eb2917..6d08e31a 100644 --- a/prisma/seed.ts +++ b/prisma/seed.ts @@ -1,16 +1,16 @@ -import prisma from "./../src/app/lib/prisma"; +import prisma from "../src/lib/prisma"; import { generate_seeder } from "./../src/app_modules/_global/fun/generate_seeder"; (async () => { - console.log("start"); + console.log("start seeder >>"); await generate_seeder(); })() .then(() => { - console.log("success"); + console.log("<< success seeder"); process.exit(0); }) .catch((e) => { - console.error(e); + console.error("<< error seeder", e); process.exit(1); }) .finally(async () => { diff --git a/public/aset/global/dummy-image.jpg b/public/aset/global/dummy-image.jpg new file mode 100644 index 00000000..49a81447 Binary files /dev/null and b/public/aset/global/dummy-image.jpg differ diff --git a/public/aset/home/home-hipmi-new.png b/public/aset/home/home-hipmi-new.png new file mode 100644 index 00000000..968807de Binary files /dev/null and b/public/aset/home/home-hipmi-new.png differ diff --git a/public/aset/investasi/logo-crowd-panjang-new.png b/public/aset/investasi/logo-crowd-panjang-new.png new file mode 100644 index 00000000..5e17ee4e Binary files /dev/null and b/public/aset/investasi/logo-crowd-panjang-new.png differ diff --git a/run.env.build.dev b/run.env.build.dev new file mode 100644 index 00000000..f8351819 --- /dev/null +++ b/run.env.build.dev @@ -0,0 +1 @@ +nice -n 19 bun --env-file=.env run --bun build diff --git a/run.env.build.local b/run.env.build.local new file mode 100644 index 00000000..fd2f18a1 --- /dev/null +++ b/run.env.build.local @@ -0,0 +1 @@ +bun --env-file=.env.local run --bun build \ No newline at end of file diff --git a/run.env.dev b/run.env.dev new file mode 100644 index 00000000..f7b13b98 --- /dev/null +++ b/run.env.dev @@ -0,0 +1 @@ +bun --env-file=.env run --bun dev -p 3000 \ No newline at end of file diff --git a/run.env.local.dev b/run.env.local.dev new file mode 100644 index 00000000..c23c65af --- /dev/null +++ b/run.env.local.dev @@ -0,0 +1 @@ +bun --env-file=.env.local run --bun dev -p 3005 \ No newline at end of file diff --git a/run.env.start.dev b/run.env.start.dev new file mode 100644 index 00000000..9dacda79 --- /dev/null +++ b/run.env.start.dev @@ -0,0 +1 @@ +bun --env-file=.env run --bun start -p 3000 \ No newline at end of file diff --git a/run.env.start.local b/run.env.start.local new file mode 100644 index 00000000..1fc5c96b --- /dev/null +++ b/run.env.start.local @@ -0,0 +1 @@ +bun --env-file=.env-local run --bun start -p 3000 \ No newline at end of file diff --git a/run.prisma.env.local b/run.prisma.env.local new file mode 100644 index 00000000..57a64842 --- /dev/null +++ b/run.prisma.env.local @@ -0,0 +1,3 @@ +bun --env-file=.env.local prisma db push +bun --env-file=.env.local prisma db seed +bun --env-file=.env.local run --bun build \ No newline at end of file diff --git a/src/app/(admin)/logs/logs.module.css b/src/app/(admin)/logs/logs.module.css new file mode 100644 index 00000000..42dadbaa --- /dev/null +++ b/src/app/(admin)/logs/logs.module.css @@ -0,0 +1,138 @@ +/* app/admin/logs/logs.module.css */ +.container { + padding: 24px; + max-width: 1200px; + margin: 0 auto; + } + + .title { + font-size: 24px; + font-weight: bold; + margin-bottom: 16px; + } + + .filterContainer { + margin-bottom: 16px; + } + + .select { + padding: 8px; + border: 1px solid #ddd; + border-radius: 4px; + min-width: 200px; + } + + .logsContainer { + display: flex; + flex-direction: column; + gap: 8px; + } + + .logItem { + padding: 16px; + border-radius: 4px; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); + } + + .errorLog { + background-color: #fef2f2; + } + + .warnLog { + background-color: #fefce8; + } + + .infoLog { + background-color: #ffffff; + } + + .logHeader { + display: flex; + align-items: center; + gap: 8px; + } + + .timestamp { + font-size: 14px; + color: #666; + } + + .level { + padding: 4px 8px; + border-radius: 4px; + font-size: 12px; + font-weight: 500; + } + + .errorLevel { + background-color: #fee2e2; + color: #991b1b; + } + + .warnLevel { + background-color: #fef3c7; + color: #92400e; + } + + .infoLevel { + background-color: #dbeafe; + color: #1e40af; + } + + .message { + margin-top: 8px; + } + + .metadata { + margin-top: 8px; + padding: 8px; + background-color: #f9fafb; + border-radius: 4px; + font-size: 14px; + overflow-x: auto; + white-space: pre-wrap; + } + + .loading { + text-align: center; + padding: 24px; + color: #666; + } + + .error { + color: #dc2626; + text-align: center; + padding: 24px; + } + + /* Hover effects */ + .logItem:hover { + box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); + } + + .select:hover { + border-color: #999; + } + + /* Focus states */ + .select:focus { + outline: none; + border-color: #2563eb; + box-shadow: 0 0 0 2px rgba(37, 99, 235, 0.2); + } + + /* Responsive adjustments */ + @media (max-width: 768px) { + .container { + padding: 16px; + } + + .logHeader { + flex-direction: column; + align-items: flex-start; + } + + .metadata { + font-size: 12px; + } + } \ No newline at end of file diff --git a/src/app/(admin)/logs/page.tsx b/src/app/(admin)/logs/page.tsx new file mode 100644 index 00000000..2ac03d42 --- /dev/null +++ b/src/app/(admin)/logs/page.tsx @@ -0,0 +1,106 @@ +// app/admin/logs/page.tsx +"use client"; + +import { useEffect, useState } from "react"; +import { format } from "date-fns"; +import styles from "./logs.module.css"; + +interface LogEntry { + timestamp: string; + level: string; + message: string; + metadata?: any; +} + +export default function LogsPage() { + const [logs, setLogs] = useState([]); + const [loading, setLoading] = useState(true); + const [error, setError] = useState(null); + const [filter, setFilter] = useState<"all" | "error" | "info" | "warn">( + "all" + ); + + useEffect(() => { + fetchLogs(); + }, []); + + async function fetchLogs() { + try { + const response = await fetch("/api/logs/view"); + if (!response.ok) throw new Error("Failed to fetch logs"); + + const data = await response.json(); + setLogs(data.logs); + } catch (err) { + setError(err instanceof Error ? err.message : "Error fetching logs"); + } finally { + setLoading(false); + } + } + + const filteredLogs = logs.filter((log) => + filter === "all" ? true : log.level === filter + ); + + if (loading) return
Loading logs...
; + if (error) return
Error: {error}
; + + return ( +
+

System Logs

+ +
+ +
+ +
+ {filteredLogs.map((log, index) => ( +
+
+ + {format(new Date(log.timestamp), "yyyy-MM-dd HH:mm:ss")} + + + {log.level.toUpperCase()} + +
+ +
{log.message}
+ + {log.metadata && ( +
+                {JSON.stringify(log.metadata, null, 2)}
+              
+ )} +
+ ))} +
+
+ ); +} diff --git a/src/app/auth/_lib/decrypt.ts b/src/app/(auth)/_lib/decrypt.back.txt similarity index 100% rename from src/app/auth/_lib/decrypt.ts rename to src/app/(auth)/_lib/decrypt.back.txt diff --git a/src/app/(auth)/_lib/decrypt.ts b/src/app/(auth)/_lib/decrypt.ts new file mode 100644 index 00000000..0883f2b3 --- /dev/null +++ b/src/app/(auth)/_lib/decrypt.ts @@ -0,0 +1,49 @@ +import { jwtVerify } from "jose"; + +export async function decrypt({ + token, + encodedKey, +}: { + token: string; + encodedKey: string; +}): Promise | null> { + if (!token || !encodedKey) { + console.error("Missing required parameters:", { + hasToken: !!token, + hasEncodedKey: !!encodedKey, + }); + return null; + } + + try { + const enc = new TextEncoder().encode(encodedKey); + const { payload } = await jwtVerify(token, enc, { + algorithms: ["HS256"], + }); + + if (!payload || !payload.user) { + console.error("Invalid payload structure:", { + hasPayload: !!payload, + hasUser: payload ? !!payload.user : false, + }); + return null; + } + + // Logging untuk debug + // console.log("Decrypt successful:", { + // payloadExists: !!payload, + // userExists: !!payload.user, + // tokenPreview: token.substring(0, 10) + "...", + // }); + + return payload.user as Record; + } catch (error) { + console.error("Token verification failed:", { + error, + tokenLength: token?.length, + errorName: error instanceof Error ? error.name : "Unknown error", + errorMessage: error instanceof Error ? error.message : String(error), + }); + return null; + } +} diff --git a/src/app/auth/_lib/encrypt.ts b/src/app/(auth)/_lib/encrypt.ts similarity index 100% rename from src/app/auth/_lib/encrypt.ts rename to src/app/(auth)/_lib/encrypt.ts diff --git a/src/app/auth/_lib/session_create.ts b/src/app/(auth)/_lib/session_create.ts similarity index 100% rename from src/app/auth/_lib/session_create.ts rename to src/app/(auth)/_lib/session_create.ts diff --git a/src/app/(auth)/invalid-user/page.tsx b/src/app/(auth)/invalid-user/page.tsx new file mode 100644 index 00000000..d214ac50 --- /dev/null +++ b/src/app/(auth)/invalid-user/page.tsx @@ -0,0 +1,9 @@ +import { InvalidUser } from "@/app_modules/auth"; + +export default function Page() { + return ( + <> + + + ); +} diff --git a/src/app/(user)/login/page.tsx b/src/app/(auth)/login/page.tsx similarity index 100% rename from src/app/(user)/login/page.tsx rename to src/app/(auth)/login/page.tsx diff --git a/src/app/(user)/register/page.tsx b/src/app/(auth)/register/page.tsx similarity index 100% rename from src/app/(user)/register/page.tsx rename to src/app/(auth)/register/page.tsx diff --git a/src/app/(user)/splash/page.tsx b/src/app/(auth)/splash/page.tsx similarity index 100% rename from src/app/(user)/splash/page.tsx rename to src/app/(auth)/splash/page.tsx diff --git a/src/app/(user)/validasi/page.tsx b/src/app/(auth)/validasi/page.tsx similarity index 100% rename from src/app/(user)/validasi/page.tsx rename to src/app/(auth)/validasi/page.tsx diff --git a/src/app/(auth)/waiting-room/page.tsx b/src/app/(auth)/waiting-room/page.tsx new file mode 100644 index 00000000..4a1d4032 --- /dev/null +++ b/src/app/(auth)/waiting-room/page.tsx @@ -0,0 +1,14 @@ +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; +import WaitingRoom_View from "@/app_modules/waiting_room/view"; + +export const dynamic = "force-dynamic"; + +export default async function Page() { + const userLoginId = await funGetUserIdByToken(); + + return ( + <> + + + ); +} diff --git a/src/app/(not-user)/job-vacancy/[id]/page.tsx b/src/app/(not-user)/job-vacancy/[id]/page.tsx index 33425748..13ecbc48 100644 --- a/src/app/(not-user)/job-vacancy/[id]/page.tsx +++ b/src/app/(not-user)/job-vacancy/[id]/page.tsx @@ -1,13 +1,10 @@ import { Job_UiNotUserView } from "@/app_modules/job/_ui"; -import { job_getOneById } from "@/app_modules/job/fun/get/get_one_by_id"; -export default async function Page({ params }: { params: { id: string } }) { - const jobId = params.id; - const dataJob = await job_getOneById(jobId); +export default async function Page() { return ( <> - + ); } diff --git a/src/app/(user)/waiting-room/page.tsx b/src/app/(user)/waiting-room/page.tsx deleted file mode 100644 index abb6e4d0..00000000 --- a/src/app/(user)/waiting-room/page.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; -import { funGlobal_checkActivationUseById } from "@/app_modules/_global/fun/get/fun_check_activation_use_by_id"; -import WaitingRoom_View from "@/app_modules/waiting_room/view"; - -export default async function Page() { - const userLoginId = await funGetUserIdByToken(); - const activationUser = await funGlobal_checkActivationUseById({ - userId: userLoginId as string, - }); - - return ( - <> - - - ); -} diff --git a/src/app/api/admin/collaboration/[id]/route.ts b/src/app/api/admin/collaboration/[id]/route.ts new file mode 100644 index 00000000..47fb3f77 --- /dev/null +++ b/src/app/api/admin/collaboration/[id]/route.ts @@ -0,0 +1,72 @@ +import prisma from "@/lib/prisma"; +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; + +export async function GET( + req: Request, + { params }: { params: { id: string } } +) { + try { + const { id } = params; + const data = await prisma.projectCollaboration.findUnique({ + where: { + id: id, + }, + select: { + id: true, + isActive: true, + title: true, + lokasi: true, + purpose: true, + benefit: true, + createdAt: true, + report: true, + Author: { + select: { + id: true, + username: true, + }, + }, + ProjectCollaborationMaster_Industri: true, + ProjectCollaboration_Partisipasi: { + where: { + User: { + active: true, + }, + }, + select: { + id: true, + User: { + select: { + id: true, + Profile: { + select: { + name: true, + }, + }, + }, + }, + }, + }, + }, + }); + return NextResponse.json( + { + success: true, + message: "Success get collaboration", + data: data, + }, + { status: 200 } + ); + } catch (error) { + backendLogger.error("Error get collaboration >>", error); + return NextResponse.json( + { + success: false, + message: "Error get collaboration", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/admin/collaboration/dashboard/[name]/route.ts b/src/app/api/admin/collaboration/dashboard/[name]/route.ts new file mode 100644 index 00000000..0e1dda84 --- /dev/null +++ b/src/app/api/admin/collaboration/dashboard/[name]/route.ts @@ -0,0 +1,58 @@ +import { prisma } from "@/lib"; +import backendLogger from "@/util/backendLogger"; +import _ from "lodash"; +import { NextResponse } from "next/server"; + +export async function GET(request: Request, { params }: { + params: { name: string } +}) { + const { name } = params; + try { + let fixData; + const fixStatus = _.startCase(name); + + if (fixStatus === "Publish") { + fixData = await prisma.projectCollaboration.count({ + where: { + isActive: true, + isReject: false, + Author: { + active: true, + }, + }, + }); + + } else if (fixStatus === "Reject") { + fixData = await prisma.projectCollaboration.count({ + where: { + isReject: true, + }, + }); + + } else if (fixStatus === "Room") { + fixData = await prisma.projectCollaboration_RoomChat.count({ + where: { + isActive: true, + }, + }); + + } + return NextResponse.json({ + success: true, + message: `Success Get Data ${fixStatus}`, + data: fixData, + + }, + { status: 200 } + ) + } catch (error) { + backendLogger.error("Error get count group chat", error); + return NextResponse.json({ + success: false, + message: "Error get data count group chat ", + reason: (error as Error).message + }, + { status: 500 } + ) + } +} \ No newline at end of file diff --git a/src/app/api/admin/collaboration/group/[id]/route.ts b/src/app/api/admin/collaboration/group/[id]/route.ts new file mode 100644 index 00000000..9d84ddc5 --- /dev/null +++ b/src/app/api/admin/collaboration/group/[id]/route.ts @@ -0,0 +1,74 @@ +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; +import { prisma } from "@/lib"; + +export async function GET( + request: Request, + { params }: { params: { id: string } } +) { + try { + const { id } = params; + + const data = await prisma.projectCollaboration_RoomChat.findUnique({ + where: { + id: id, + }, + select: { + id: true, + name: true, + ProjectCollaboration: { + select: { + id: true, + isActive: true, + title: true, + lokasi: true, + purpose: true, + benefit: true, + createdAt: true, + ProjectCollaborationMaster_Industri: true, + Author: true + }, + }, + ProjectCollaboration_AnggotaRoomChat: { + select: { + User: { + select: { + username: true, + id: true, + Profile: { + select: { + id: true, + name: true, + }, + }, + }, + }, + }, + }, + }, + }); + + return NextResponse.json( + { + success: true, + message: "Success get data collaboration group", + data: data, + }, + { + status: 200, + } + ); + } catch (error) { + backendLogger.error("Error get data collaboration group", error); + return NextResponse.json( + { + success: false, + message: "Error get data collaboration group", + error: (error as Error).message, + }, + { + status: 500, + } + ); + } +} diff --git a/src/app/api/admin/collaboration/group/route.ts b/src/app/api/admin/collaboration/group/route.ts new file mode 100644 index 00000000..bbec0db0 --- /dev/null +++ b/src/app/api/admin/collaboration/group/route.ts @@ -0,0 +1,146 @@ +import { prisma } from "@/lib"; +import backendLogger from "@/util/backendLogger"; +import _ from "lodash"; +import { NextResponse } from "next/server"; + +export async function GET(request: Request) { + const { searchParams } = new URL(request.url); + const search = searchParams.get("search"); + const page = searchParams.get("page"); + const takeData = 10; + const skipData = Number(page) * takeData - takeData; + + try { + let fixData; + + if (!page) { + fixData = await prisma.projectCollaboration_RoomChat.findMany({ + orderBy: { + createdAt: "desc", + }, + where: { + isActive: true, + }, + select: { + id: true, + createdAt: true, + isActive: true, + name: true, + ProjectCollaboration_AnggotaRoomChat: { + select: { + User: { + select: { + id: true, + Profile: true, + }, + }, + }, + }, + ProjectCollaboration: { + select: { + id: true, + isActive: true, + title: true, + lokasi: true, + purpose: true, + benefit: true, + createdAt: true, + report: true, + Author: { + select: { + id: true, + Profile: { + select: { + name: true, + }, + }, + }, + }, + ProjectCollaborationMaster_Industri: true, + }, + }, + }, + }); + } else { + const data = await prisma.projectCollaboration_RoomChat.findMany({ + take: takeData, + skip: skipData, + orderBy: { + createdAt: "desc", + }, + where: { + isActive: true, + }, + select: { + id: true, + createdAt: true, + isActive: true, + name: true, + ProjectCollaboration_AnggotaRoomChat: { + select: { + User: { + select: { + id: true, + Profile: true, + }, + }, + }, + }, + ProjectCollaboration: { + select: { + id: true, + isActive: true, + title: true, + lokasi: true, + purpose: true, + benefit: true, + createdAt: true, + report: true, + Author: { + select: { + id: true, + Profile: { + select: { + name: true, + }, + }, + }, + }, + ProjectCollaborationMaster_Industri: true, + }, + }, + }, + }); + + const nCount = await prisma.projectCollaboration_RoomChat.count({ + where: { + isActive: true, + }, + }); + + fixData = { + data: data, + nPage: _.ceil(nCount / takeData), + }; + } + + return NextResponse.json( + { + success: true, + message: "Success get data collaboration group", + data: fixData, + }, + { status: 200 } + ); + } catch (error) { + backendLogger.error("Error get data collaboration group >>", error); + return NextResponse.json( + { + success: false, + message: "Error get data collaboration group", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/admin/collaboration/status/publish/route.ts b/src/app/api/admin/collaboration/status/publish/route.ts new file mode 100644 index 00000000..cf04c496 --- /dev/null +++ b/src/app/api/admin/collaboration/status/publish/route.ts @@ -0,0 +1,141 @@ +import { prisma } from "@/lib"; +import backendLogger from "@/util/backendLogger"; +import _ from "lodash"; +import { NextResponse } from "next/server"; + +export async function GET(request: Request) { + const { searchParams } = new URL(request.url); + const page = searchParams.get("page"); + const takeData = 10; + const skipData = Number(page) * takeData - takeData; + + try { + let fixData; + + if (!page) { + fixData = await prisma.projectCollaboration.findMany({ + orderBy: { + createdAt: "desc", + }, + where: { + isActive: true, + isReject: false, + Author: { + active: true, + }, + }, + select: { + id: true, + createdAt: true, + isActive: true, + title: true, + Author: { + select: { + id: true, + username: true, + Profile: true, + }, + }, + projectCollaborationMaster_IndustriId: true, + ProjectCollaborationMaster_Industri: true, + ProjectCollaboration_Partisipasi: { + where: { + User: { + active: true, + }, + }, + // select: { + // User: { + // select: { + // id: true, + // username: true, + // Profile: true, + // }, + // }, + // }, + }, + }, + }); + } else { + const data = await prisma.projectCollaboration.findMany({ + skip: skipData, + take: takeData, + orderBy: { + createdAt: "desc", + }, + where: { + isActive: true, + isReject: false, + Author: { + active: true, + }, + }, + select: { + id: true, + createdAt: true, + isActive: true, + title: true, + Author: { + select: { + id: true, + username: true, + Profile: true, + }, + }, + projectCollaborationMaster_IndustriId: true, + ProjectCollaborationMaster_Industri: true, + ProjectCollaboration_Partisipasi: { + where: { + User: { + active: true, + }, + }, + // select: { + // User: { + // select: { + // id: true, + // username: true, + // Profile: true, + // }, + // }, + // }, + }, + }, + }); + + const nCount = await prisma.projectCollaboration.count({ + where: { + isActive: true, + isReject: false, + Author: { + active: true, + }, + }, + }); + + fixData = { + data: data, + nPage: _.ceil(nCount / takeData), + }; + } + + return NextResponse.json( + { + success: true, + message: "Success get data collaboration dashboard", + data: fixData, + }, + { status: 200 } + ); + } catch (error) { + backendLogger.error("Error get data collaboration dashboard >>", error); + return NextResponse.json( + { + success: false, + message: "Error get data collaboration dashboard", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/admin/collaboration/status/reject/route.ts b/src/app/api/admin/collaboration/status/reject/route.ts new file mode 100644 index 00000000..7d43e265 --- /dev/null +++ b/src/app/api/admin/collaboration/status/reject/route.ts @@ -0,0 +1,143 @@ +import { prisma } from "@/lib"; +import backendLogger from "@/util/backendLogger"; +import _ from "lodash"; +import { NextResponse } from "next/server"; + +export async function GET(request: Request) { + + const { searchParams } = new URL(request.url); + const page = searchParams.get("page"); + const takeData = 10; + const skipData = Number(page) * takeData - takeData; + + try { + let fixData; + + + if (!page) { + fixData = await prisma.projectCollaboration.findMany({ + orderBy: { + createdAt: "desc", + }, + where: { + isActive: false, + isReject: true, + Author: { + active: true, + }, + + + }, + select: { + id: true, + createdAt: true, + isActive: true, + title: true, + Author: { + select: { + id: true, + username: true, + Profile: true, + }, + }, + projectCollaborationMaster_IndustriId: true, + ProjectCollaborationMaster_Industri: true, + ProjectCollaboration_Partisipasi: { + where: { + User: { + active: true, + }, + }, + // select: { + // User: { + // select: { + // id: true, + // username: true, + // Profile: true, + // }, + // }, + // }, + }, + }, + }); + } else { + const data = await prisma.projectCollaboration.findMany({ + skip: skipData, + take: takeData, + orderBy: { + createdAt: "desc", + }, + where: { + isActive: false, + isReject: true, + Author: { + active: true, + }, + }, + select: { + id: true, + createdAt: true, + isActive: true, + title: true, + Author: { + select: { + id: true, + username: true, + Profile: true, + }, + }, + projectCollaborationMaster_IndustriId: true, + ProjectCollaborationMaster_Industri: true, + ProjectCollaboration_Partisipasi: { + where: { + User: { + active: true, + }, + }, + // select: { + // User: { + // select: { + // id: true, + // username: true, + // Profile: true, + // }, + // }, + // }, + }, + }, + }); + + const nCount = await prisma.projectCollaboration.count({ + where: { + isActive: false, + isReject: true, + Author: { + active: true, + }, + }, + }); + + fixData = { + data: data, + nPage: _.ceil(nCount / takeData), + } + } + + return NextResponse.json({ + success: true, + message: "Success get data collaboration dashboard", + data: fixData, + }, + { status: 200 } + ); + } catch (error) { + backendLogger.error("Error get data collaboration dashboard >>", error); + return NextResponse.json({ + success: false, + message: "Error get data collaboration dashboard", + reason: (error as Error).message + }, + { status: 500 } + ) + } +} \ No newline at end of file diff --git a/src/app/api/admin/developer/route.ts b/src/app/api/admin/developer/route.ts new file mode 100644 index 00000000..30870c0b --- /dev/null +++ b/src/app/api/admin/developer/route.ts @@ -0,0 +1,84 @@ +import _ from "lodash"; +import { NextResponse } from "next/server"; +import prisma from "@/lib/prisma"; + +export const dynamic = "force-dynamic"; + +export async function GET(request: Request) { + try { + let fixData; + const { searchParams } = new URL(request.url); + const search = searchParams.get("search"); + const page = searchParams.get("page"); + const dataTake = 10; + const dataSkip = Number(page) * dataTake - dataTake; + + if (!page) { + fixData = await prisma.user.findMany({ + orderBy: { + updatedAt: "desc", + }, + where: { + masterUserRoleId: "2", + username: { + contains: search || "", + mode: "insensitive", + }, + }, + }); + } else { + const data = await prisma.user.findMany({ + skip: dataSkip, + take: dataTake, + orderBy: { + updatedAt: "desc", + }, + where: { + masterUserRoleId: "2", + username: { + contains: search || "", + mode: "insensitive", + }, + }, + }); + + const nCount = await prisma.user.count({ + where: { + masterUserRoleId: "2", + username: { + contains: search || "", + mode: "insensitive", + }, + }, + }); + + fixData = { + data: data, + nPage: _.ceil(nCount / dataTake), + }; + } + + return NextResponse.json( + { + success: true, + message: "Success get data", + data: fixData, + }, + { + status: 200, + } + ); + } catch (error) { + console.error("Error get data admin", error); + return NextResponse.json( + { + success: false, + message: "Internal Server Error", + reason: (error as Error).message, + }, + { + status: 500, + } + ); + } +} diff --git a/src/app/api/admin/donasi/[id]/count/route.ts b/src/app/api/admin/donasi/[id]/count/route.ts new file mode 100644 index 00000000..f9e3f9a1 --- /dev/null +++ b/src/app/api/admin/donasi/[id]/count/route.ts @@ -0,0 +1,29 @@ +import { NextResponse } from "next/server"; +import prisma from "@/lib/prisma"; +export async function GET( + req: Request, + { params }: { params: { id: string } } +) { + const { id } = params; + try { + const data = await prisma.donasi_Invoice.count({ + where: { + donasiId: id, + donasiMaster_StatusInvoiceId: "1", + }, + }); + + return NextResponse.json({ + success: true, + message: "Data berhasil diambil", + data: data, + }); + } catch (error) { + console.error("Error get count donasi ", error); + return NextResponse.json({ + success: false, + message: "Error get count donasi", + reason: (error as Error).message, + }); + } +} diff --git a/src/app/api/admin/donasi/[id]/donatur/route.ts b/src/app/api/admin/donasi/[id]/donatur/route.ts new file mode 100644 index 00000000..7c1d6ece --- /dev/null +++ b/src/app/api/admin/donasi/[id]/donatur/route.ts @@ -0,0 +1,111 @@ +import { prisma } from "@/lib"; +import backendLogger from "@/util/backendLogger"; +import _ from "lodash"; +import { NextResponse } from "next/server"; + +export async function GET(req: Request, + { params }: { params: { id: string } }) { + + try { + let fixData; + const { id } = params; + const { searchParams } = new URL(req.url); + const page = searchParams.get("page"); + const status = searchParams.get("status"); + const takeData = 10 + const skipData = Number(page) * takeData - takeData; + + if (!page) { + fixData = await prisma.donasi_Invoice.findMany({ + orderBy: { + createdAt: "desc", + }, + where: { + donasiId: id, + active: true, + }, + select: { + id: true, + nominal: true, + createdAt: true, + Author: true, + DonasiMaster_Bank: true, + DonasiMaster_StatusInvoice: true, + donasiMaster_StatusInvoiceId: true, + imagesId: true, + imageId: true, + + }, + }) + } else { + const fixStatus = _.startCase(status ? status : ""); + const data = await prisma.donasi_Invoice.findMany({ + take: takeData, + skip: skipData, + orderBy: { + createdAt: "desc", + }, + where: { + + donasiId: id, + active: true, + DonasiMaster_StatusInvoice: { + name: { + contains: fixStatus, + mode: "insensitive", + } + } + }, + select: { + id: true, + nominal: true, + createdAt: true, + Author: true, + DonasiMaster_Bank: true, + DonasiMaster_StatusInvoice: true, + donasiMaster_StatusInvoiceId: true, + imagesId: true, + imageId: true, + + + }, + }) + + const nCount = await prisma.donasi_Invoice.count({ + where: { + donasiId: id, + active: true, + DonasiMaster_StatusInvoice: { + name: { + contains: fixStatus, + mode: "insensitive", + } + } + } + }) + + fixData = { + data: data, + nPage: _.ceil(nCount / takeData) + } + } + + return NextResponse.json({ + success: true, + message: "Success", + data: fixData, + }, + { status: 200 } + ) + } catch (error) { + backendLogger.error("Error get data donatur >>", error); + return NextResponse.json({ + success: false, + message: "Error get data donatur", + reason: (error as Error).message + }, + { status: 500 } + ) + } +} + diff --git a/src/app/api/admin/donasi/[id]/pencairan/route.ts b/src/app/api/admin/donasi/[id]/pencairan/route.ts new file mode 100644 index 00000000..f933f133 --- /dev/null +++ b/src/app/api/admin/donasi/[id]/pencairan/route.ts @@ -0,0 +1,64 @@ +import prisma from "@/lib/prisma"; +import backendLogger from "@/util/backendLogger"; +import _ from "lodash"; +import { NextResponse } from "next/server"; +export async function GET( + req: Request, + { params }: { params: { id: string } } +) { + + let fixData; + const donasiId = params.id; + const { searchParams } = new URL(req.url); + const page = searchParams.get("page"); + const takeData = 10 + const skipData = Number(page) * takeData - takeData; + + try { + if (!page) { + fixData = await prisma.donasi_PencairanDana.findMany({ + orderBy: { + createdAt: "desc", + }, + where: { + donasiId: donasiId, + }, + }); + } else { + const data = await prisma.donasi_PencairanDana.findMany({ + take: takeData, + skip: skipData, + orderBy: { + createdAt: "desc", + }, + where: { + donasiId: donasiId, + }, + }); + + const nCount = await prisma.donasi_PencairanDana.count({ + where: { + donasiId: donasiId, + }, + }); + + fixData = { + data: data, + nPage: _.ceil(nCount / takeData), + }; + } + + return NextResponse.json({ + success: true, + message: "Data berhasil diambil", + data: fixData, + }); + } catch (error) { + backendLogger.error("Error get pencairan donasi >>", error); + return NextResponse.json({ + success: false, + message: "Error get pencairan donasi", + reason: (error as Error).message, + }); + } +} diff --git a/src/app/api/admin/donasi/[id]/route.ts b/src/app/api/admin/donasi/[id]/route.ts new file mode 100644 index 00000000..a2739b1e --- /dev/null +++ b/src/app/api/admin/donasi/[id]/route.ts @@ -0,0 +1,57 @@ +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; +import prisma from "@/lib/prisma"; + +export async function GET(req: Request, { params }: { params: { id: string } }) { + + try { + const { id } = params; + const donasiId = id; + const data = await prisma.donasi.findUnique({ + where: { + id: donasiId, + }, + select: { + id: true, + title: true, + target: true, + active: true, + createdAt: true, + updatedAt: true, + publishTime: true, + catatan: true, + progres: true, + terkumpul: true, + authorId: true, + namaBank: true, + rekening: true, + totalPencairan: true, + akumulasiPencairan: true, + imagesId: true, + donasiMaster_KategoriId: true, + donasiMaster_DurasiId: true, + donasiMaster_StatusDonasiId: true, + Author: true, + imageDonasi: true, + CeritaDonasi: true, + DonasiMaster_Ketegori: true, + DonasiMaster_Durasi: true, + DonasiMaster_Status: true, + imageId: true, + } + }) + + return NextResponse.json({ + success: true, + message: "Data Donasi Berhasil Diambil", + data: data, + }, { status: 200 }); + } catch (error) { + backendLogger.error("Error Get Data Donasi >>", error); + return NextResponse.json({ + success: false, + message: "Error get detail Investasi", + reason: (error as Error).message, + }, { status: 500 }); + } +} \ No newline at end of file diff --git a/src/app/api/admin/donasi/dashboard/[name]/route.ts b/src/app/api/admin/donasi/dashboard/[name]/route.ts new file mode 100644 index 00000000..6c4a7053 --- /dev/null +++ b/src/app/api/admin/donasi/dashboard/[name]/route.ts @@ -0,0 +1,38 @@ +import { prisma } from "@/lib"; +import backendLogger from "@/util/backendLogger"; +import _ from "lodash"; +import { NextResponse } from "next/server"; + +export async function GET(request: Request, { params }: { + params: { name: string } +}) { + + const { name } = params; + try { + let fixData; + const fixStatus = _.startCase(name); + fixData = await prisma.donasi.count({ + where: { + DonasiMaster_Status: { + name: fixStatus + }, + } + }); + return NextResponse.json({ + success: true, + message: "Success get data donasi dashboard", + data: fixData + }, + { status: 200 } + ) + } catch (error) { + backendLogger.error("Error get data donasi dashboard >>", error); + return NextResponse.json({ + success: false, + message: "Failed to get data donasi dashboard", + reason: (error as Error).message + }, + { status: 500 } + ) + } +} diff --git a/src/app/api/admin/donasi/dashboard/kategori/route.ts b/src/app/api/admin/donasi/dashboard/kategori/route.ts new file mode 100644 index 00000000..997e0a14 --- /dev/null +++ b/src/app/api/admin/donasi/dashboard/kategori/route.ts @@ -0,0 +1,25 @@ +import { prisma } from "@/lib"; +import { NextResponse } from "next/server"; + +export async function GET() { + try { + const fixData = await prisma.donasiMaster_Kategori.count({}); + return NextResponse.json( + { + success: true, + message: "Success get data donasi dashboard", + data: fixData, + }, + { status: 200 } + ); + } catch (error) { + return NextResponse.json( + { + success: true, + message: "gagal mendapatkan data donasi dashboard", + error: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/admin/donasi/kategori/route.ts b/src/app/api/admin/donasi/kategori/route.ts new file mode 100644 index 00000000..71b43b37 --- /dev/null +++ b/src/app/api/admin/donasi/kategori/route.ts @@ -0,0 +1,34 @@ +import { prisma } from "@/lib"; +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; + +export async function GET(request: Request) { + const method = request.method; + try { + const data = await prisma.donasiMaster_Kategori.findMany({ + orderBy: { + createdAt: 'asc' + }, + where: { + + active: true + + } + + }) + return NextResponse.json({ + success: true, + message: "Success get kategori", + data: data + }) + } catch (error) { + backendLogger.error("Error get kategori", error); + return NextResponse.json({ + success: false, + message: "Failed get kategori", + reason: (error as Error).message + }, + { status: 500 } + ) + } +} \ No newline at end of file diff --git a/src/app/api/admin/donasi/status/[name]/route.ts b/src/app/api/admin/donasi/status/[name]/route.ts new file mode 100644 index 00000000..d6c6bfa5 --- /dev/null +++ b/src/app/api/admin/donasi/status/[name]/route.ts @@ -0,0 +1,122 @@ +import { prisma } from "@/lib"; +import backendLogger from "@/util/backendLogger"; +import _ from "lodash"; +import { NextResponse } from "next/server"; + +export async function GET(request: Request, + { params }: { params: { name: string } }) { + + const { name } = params; + const { searchParams } = new URL(request.url); + const search = searchParams.get("search"); + const page = searchParams.get("page"); + const takeData = 10; + const skipData = Number(page) * takeData - takeData; + + try { + let fixData; + const fixStatus = _.startCase(name); + + + if (!page) { + fixData = await prisma.donasi.findMany({ + orderBy: { + createdAt: "desc", + }, + where: { + DonasiMaster_Status: { + name: fixStatus, + }, + active: true, + title: { + contains: search ? search : "", + mode: "insensitive", + }, + }, + select: { + id: true, + title: true, + target: true, + authorId: true, + terkumpul: true, + imageDonasi: true, + DonasiMaster_Ketegori: true, + DonasiMaster_Durasi: true, + Author: { + select: { + id: true, + username: true, + }, + }, + }, + }) + } else { + const data = await prisma.donasi.findMany({ + take: takeData, + skip: skipData, + orderBy: { + createdAt: "desc", + }, + where: { + DonasiMaster_Status: { + name: fixStatus, + }, + active: true, + title: { + contains: search ? search : "", + mode: "insensitive", + }, + }, + select: { + id: true, + title: true, + target: true, + authorId: true, + terkumpul: true, + imageDonasi: true, + DonasiMaster_Ketegori: true, + DonasiMaster_Durasi: true, + Author: { + select: { + id: true, + username: true, + }, + }, + }, + }) + + const nCount = await prisma.donasi.count({ + where: { + active: true, + DonasiMaster_Status: { + name: fixStatus + }, + } + }) + + + fixData = { + data: data, + nCount: _.ceil(nCount / takeData) + } + } + + return NextResponse.json({ + success: true, + message: "Success", + data: fixData + }, + { status: 200 } + ) + + } catch (error) { + backendLogger.error("Error geta data table donasi event dashboard>>", error) + return NextResponse.json({ + success: false, + message: "Failed get data table donasi dashboard", + reason: (error as Error).message + }, + { status: 500 } + ); + } +} \ No newline at end of file diff --git a/src/app/api/admin/event/[id]/peserta/route.ts b/src/app/api/admin/event/[id]/peserta/route.ts new file mode 100644 index 00000000..a9a45acd --- /dev/null +++ b/src/app/api/admin/event/[id]/peserta/route.ts @@ -0,0 +1,100 @@ +import backendLogger from "@/util/backendLogger"; +import _ from "lodash"; +import { NextResponse } from "next/server"; +import prisma from "@/lib/prisma"; + +export async function GET(request: Request, + { params }: { params: { id: string } }) { + + const { searchParams } = new URL(request.url); + const search = searchParams.get('search'); + const page = searchParams.get('page'); + const takeData = 10; + const skipData = Number(page) * takeData - takeData; + + + try { + let fixData; + const { id } = params; + const eventId = id + + if (!page) { + fixData = await prisma.event_Peserta.findMany({ + + where: { + eventId: eventId, + User: { + username: { + contains: search ? search : "", + mode: "insensitive", + } + } + + }, + select: { + isPresent: true, + User: { + include: { + Profile: true, + }, + }, + }, + }); + } else { + const data = await prisma.event_Peserta.findMany({ + skip: skipData, + take: takeData, + where: { + eventId: eventId, + User: { + username: { + contains: search ? search : "", + mode: "insensitive", + } + } + }, + select: { + isPresent: true, + User: { + include: { + Profile: true, + }, + }, + }, + }); + + const nCount = await prisma.event_Peserta.count({ + where: { + eventId: eventId, + User: { + username: { + contains: search ? search : "", + mode: "insensitive", + } + } + }, + }); + + fixData = { + data: data, + nPage: _.ceil(nCount / takeData), + }; + } + return NextResponse.json({ + success: true, + message: "Success get data event detail", + data: fixData, + }, + { status: 200 } + ) + } catch (error) { + backendLogger.error("Error get data event detail >>", error); + return NextResponse.json({ + success: false, + message: "Error get data event detail", + reason: (error as Error).message + }, + { status: 500 } + ) + } +} \ No newline at end of file diff --git a/src/app/api/admin/event/[id]/route.ts b/src/app/api/admin/event/[id]/route.ts new file mode 100644 index 00000000..8a72e174 --- /dev/null +++ b/src/app/api/admin/event/[id]/route.ts @@ -0,0 +1,55 @@ +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; +import prisma from "@/lib/prisma"; + +export async function GET( + req: Request, + { params }: { params: { id: string } } +) { + try { + const { id } = params; + const data = await prisma.event.findUnique({ + where: { + id: id, + }, + include: { + Author: { + select: { + username: true, + nomor: true, + Profile: { + select: { + name: true, + alamat: true, + }, + }, + }, + }, + EventMaster_TipeAcara: { + select: { + name: true, + }, + }, + EventMaster_Status: true, + }, + }); + return NextResponse.json( + { + success: true, + message: "Success get data event detail", + data: data, + }, + { status: 200 } + ); + } catch (error) { + backendLogger.error("Error get data event detail >>", error); + return NextResponse.json( + { + success: false, + message: "Error get data event detail", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/admin/event/dashboard/[name]/route.ts b/src/app/api/admin/event/dashboard/[name]/route.ts new file mode 100644 index 00000000..902f8605 --- /dev/null +++ b/src/app/api/admin/event/dashboard/[name]/route.ts @@ -0,0 +1,44 @@ +import { prisma } from "@/lib"; +import backendLogger from "@/util/backendLogger"; +import _ from "lodash"; +import { NextResponse } from "next/server"; + +export async function GET( + request: Request, + { params }: { params: { name: string } } +) { + + const { name } = params; + + try { + let fixData; + const fixStatus = _.startCase(name); + fixData = await prisma.event.count({ + where: { + EventMaster_Status: { + name: fixStatus, + }, + isArsip: false, + }, + }); + + return NextResponse.json( + { + success: true, + message: "Success get data event dashboard", + data: fixData, + }, + { status: 200 } + ); + } catch (error) { + backendLogger.error("Error get data event dashboard >>", error); + return NextResponse.json( + { + success: false, + message: "Failed to get data", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/admin/event/dashboard/riwayat/route.ts b/src/app/api/admin/event/dashboard/riwayat/route.ts new file mode 100644 index 00000000..522070ce --- /dev/null +++ b/src/app/api/admin/event/dashboard/riwayat/route.ts @@ -0,0 +1,37 @@ +import { prisma } from "@/lib"; +import backendLogger from "@/util/backendLogger"; +import _ from "lodash"; +import { NextResponse } from "next/server"; + +export async function GET(request: Request) { + try { + let fixData; + fixData = await prisma.event.count({ + where: { + EventMaster_Status: { + name: "Publish", + }, + isArsip: true, + }, + }); + + return NextResponse.json( + { + success: true, + message: "Success get data riwayat event dashboard", + data: fixData, + }, + { status: 200 } + ); + } catch (error) { + backendLogger.error("Error get data riwayat event dashboard >>", error); + return NextResponse.json( + { + success: false, + message: "Failed to get data", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/admin/event/dashboard/tipe-acara/route.ts b/src/app/api/admin/event/dashboard/tipe-acara/route.ts new file mode 100644 index 00000000..1d4b9aa2 --- /dev/null +++ b/src/app/api/admin/event/dashboard/tipe-acara/route.ts @@ -0,0 +1,33 @@ +import { prisma } from "@/lib"; +import backendLogger from "@/util/backendLogger"; +import _ from "lodash"; +import { NextResponse } from "next/server"; + +export async function GET() { + try { + const fixData = await prisma.eventMaster_TipeAcara.count({ + where: { + active: true, + }, + }); + + return NextResponse.json( + { + success: true, + message: "Success get data riwayat event dashboard", + data: fixData, + }, + { status: 200 } + ); + } catch (error) { + backendLogger.error("Error get data riwayat event dashboard >>", error); + return NextResponse.json( + { + success: false, + message: "Failed to get data", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/admin/event/riwayat/route.ts b/src/app/api/admin/event/riwayat/route.ts new file mode 100644 index 00000000..aedecf4e --- /dev/null +++ b/src/app/api/admin/event/riwayat/route.ts @@ -0,0 +1,192 @@ +import { prisma } from "@/lib"; +import backendLogger from "@/util/backendLogger"; +import _ from "lodash"; +import { NextResponse } from "next/server"; + +export async function GET(request: Request) { + + const { searchParams } = new URL(request.url); + const search = searchParams.get("search"); + const page = searchParams.get("page"); + const takeData = 10; + const skipData = Number(page) * takeData - takeData; + + try { + let fixData; + + if (!page && !search) { + fixData = await prisma.event.findMany({ + orderBy: { + createdAt: "desc", + }, + where: { + EventMaster_Status: { + name: "Publish", + }, + isArsip: true, + }, + include: { + Author: { + select: { + id: true, + username: true, + Profile: { + select: { + name: true, + }, + }, + }, + }, + EventMaster_Status: true, + EventMaster_TipeAcara: true, + }, + }); + } else if (!page && search) { + fixData = await prisma.event.findMany({ + orderBy: { + createdAt: "desc", + }, + where: { + EventMaster_Status: { + name: "Publish", + }, + isArsip: true, + title: { + contains: search, + mode: "insensitive", + }, + }, + include: { + Author: { + select: { + id: true, + username: true, + Profile: { + select: { + name: true, + }, + }, + }, + }, + EventMaster_Status: true, + EventMaster_TipeAcara: true, + }, + }); + } else if (page && !search) { + const data = await prisma.event.findMany({ + take: takeData, + skip: skipData, + orderBy: { + createdAt: "desc", + }, + where: { + EventMaster_Status: { + name: "Publish", + }, + isArsip: true, + }, + include: { + Author: { + select: { + id: true, + username: true, + Profile: { + select: { + name: true, + }, + }, + }, + }, + EventMaster_Status: true, + EventMaster_TipeAcara: true, + }, + }); + + const nCount = await prisma.event.count({ + where: { + active: true, + isArsip: true, + EventMaster_Status: { + name: "Publish", + }, + }, + }); + + fixData = { + data: data, + nPage: _.ceil(nCount / takeData), + }; + } else if (page && search) { + const data = await prisma.event.findMany({ + take: takeData, + skip: skipData, + orderBy: { + createdAt: "desc", + }, + where: { + EventMaster_Status: { + name: "Publish", + }, + isArsip: true, + title: { + contains: search, + mode: "insensitive", + }, + }, + include: { + Author: { + select: { + id: true, + username: true, + Profile: { + select: { + name: true, + }, + }, + }, + }, + EventMaster_Status: true, + EventMaster_TipeAcara: true, + }, + }); + + const nCount = await prisma.event.count({ + where: { + active: true, + isArsip: true, + EventMaster_Status: { + name: "Publish", + }, + title: { + contains: search, + mode: "insensitive", + }, + }, + }); + + fixData = { + data, + nPage: _.ceil(nCount / takeData), + }; + } + + return NextResponse.json( + { + success: true, + message: "Success get data riwayat event", + data: fixData, + }, + { status: 200 } + ); + } catch (error) { + backendLogger.error("Error get data riwayat event >>", error); + return NextResponse.json( + { + success: false, + message: "Error get data riwayat event", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/admin/event/status/[name]/route.ts b/src/app/api/admin/event/status/[name]/route.ts new file mode 100644 index 00000000..f4fb0e52 --- /dev/null +++ b/src/app/api/admin/event/status/[name]/route.ts @@ -0,0 +1,153 @@ +import { prisma } from "@/lib"; +import backendLogger from "@/util/backendLogger"; +import _ from "lodash"; +import moment from "moment"; +import { NextResponse } from "next/server"; + +export async function GET( + request: Request, + { params }: { params: { name: string } } +) { + const { name } = params; + const { searchParams } = new URL(request.url); + const search = searchParams.get("search"); + const page = searchParams.get("page"); + const takeData = 10; + const skipData = Number(page) * takeData - takeData; + + try { + let fixData; + const fixStatus = _.startCase(name); + + if (!page) { + fixData = await prisma.event.findMany({ + orderBy: { + updatedAt: "desc", + }, + where: { + active: true, + isArsip: false, + EventMaster_Status: { + name: fixStatus, + }, + title: { + contains: search ? search : "", + mode: "insensitive", + }, + }, + include: { + Author: { + select: { + id: true, + username: true, + Profile: { + select: { + name: true, + }, + }, + }, + }, + EventMaster_Status: true, + EventMaster_TipeAcara: true, + }, + }); + } else { + if (fixStatus === "Publish") { + const getAllData = await prisma.event.findMany({ + where: { + active: true, + EventMaster_Status: { + name: fixStatus, + }, + isArsip: false, + }, + }); + + for (let i of getAllData) { + if (moment(i.tanggalSelesai).diff(moment(), "minutes") < 0) { + await prisma.event.update({ + where: { + id: i.id, + }, + data: { + isArsip: true, + }, + }); + } + } + } + + const data = await prisma.event.findMany({ + take: takeData, + skip: skipData, + orderBy: { + tanggal: "asc", + }, + where: { + active: true, + isArsip: false, + EventMaster_Status: { + name: fixStatus, + }, + title: { + contains: search ? search : "", + mode: "insensitive", + }, + }, + include: { + Author: { + select: { + id: true, + username: true, + Profile: { + select: { + name: true, + }, + }, + }, + }, + EventMaster_Status: true, + EventMaster_TipeAcara: true, + }, + }); + + const nCount = await prisma.event.count({ + where: { + active: true, + isArsip: false, + EventMaster_Status: { + name: fixStatus, + }, + title: { + contains: search ? search : "", + mode: "insensitive", + }, + }, + }); + + fixData = { + data: data, + nPage: _.ceil(nCount / takeData), + }; + } + + return NextResponse.json( + { + success: true, + message: `Success get data table event ${name}`, + data: fixData, + }, + { status: 200 } + ); + } catch (error) { + backendLogger.error("Error get data table event dashboard >>", error); + return NextResponse.json( + { + success: false, + message: "Failed get data table event dashboard", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/admin/forum/[id]/komentar/route.ts b/src/app/api/admin/forum/[id]/komentar/route.ts new file mode 100644 index 00000000..1569bf8a --- /dev/null +++ b/src/app/api/admin/forum/[id]/komentar/route.ts @@ -0,0 +1,102 @@ +import _ from "lodash"; +import { NextResponse } from "next/server"; +import prisma from "@/lib/prisma"; + +export async function GET( + request: Request, + { params }: { params: { id: string } } +) { + const { searchParams } = new URL(request.url); + const search = searchParams.get("search"); + const page = searchParams.get("page"); + const takeData = 10; + const skipData = Number(page) * takeData - takeData; + + try { + let fixData; + const { id } = params; + const postingId = id; + + if (!page) { + fixData = await prisma.forum_Komentar.findMany({ + orderBy: { + createdAt: "desc", + }, + where: { + forum_PostingId: postingId, + isActive: true, + komentar: { + contains: search ?? "", + mode: "insensitive", + }, + }, + include: { + Forum_ReportKomentar: true, + Author: { + select: { + username: true + } + } + + }, + }); + } else { + const data = await prisma.forum_Komentar.findMany({ + take: takeData, + skip: skipData, + orderBy: { + createdAt: "desc", + }, + where: { + forum_PostingId: postingId, + isActive: true, + komentar: { + contains: search ?? "", + mode: "insensitive", + }, + }, + include: { + Forum_ReportKomentar: true, + Author: { + select: { + username: true + } + } + + }, + }); + + const nCount = await prisma.forum_Komentar.count({ + where: { + forum_PostingId: postingId, + isActive: true, + komentar: { + contains: search ?? "", + mode: "insensitive", + }, + }, + }); + + fixData = { + data: data, + nPage: _.ceil(nCount / takeData), + }; + } + + return NextResponse.json({ + success: true, + message: "Berhasil mendapatkan data komentar", + data: fixData, + }); + } catch (error) { + console.log("Error get data komentar", error); + return NextResponse.json( + { + status: false, + message: "Gagal mendapatkan data komentar", + error: error || (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/admin/forum/[id]/report-komentar/route.ts b/src/app/api/admin/forum/[id]/report-komentar/route.ts new file mode 100644 index 00000000..5f045ab7 --- /dev/null +++ b/src/app/api/admin/forum/[id]/report-komentar/route.ts @@ -0,0 +1,109 @@ +import backendLogger from "@/util/backendLogger"; +import _ from "lodash"; +import { NextResponse } from "next/server"; +import prisma from "@/lib/prisma"; + +export async function GET( + request: Request, + { params }: { params: { id: string } } +) { + const { searchParams } = new URL(request.url); + const search = searchParams.get("search"); + const page = searchParams.get("page"); + const takeData = 10; + const skipData = Number(page) * takeData - takeData; + + try { + let fixData; + const { id } = params; + const komentarId = id; + + if (!page) { + fixData = await prisma.forum_ReportKomentar.findMany({ + orderBy: { + createdAt: "desc", + }, + where: { + forum_KomentarId: komentarId, + }, + select: { + id: true, + isActive: true, + createdAt: true, + deskripsi: true, + ForumMaster_KategoriReport: true, + User: { + select: { + username: true, + Profile: { + select: { + id: true, + name: true, + }, + }, + }, + }, + }, + }); + } else { + const data = await prisma.forum_ReportKomentar.findMany({ + take: takeData, + skip: skipData, + orderBy: { + createdAt: "desc", + }, + where: { + forum_KomentarId: komentarId, + }, + select: { + id: true, + isActive: true, + createdAt: true, + deskripsi: true, + ForumMaster_KategoriReport: true, + User: { + select: { + username: true, + Profile: { + select: { + id: true, + name: true, + }, + }, + }, + }, + }, + }); + + const nCount = await prisma.forum_ReportKomentar.count({ + where: { + forum_KomentarId: komentarId, + }, + }); + + fixData = { + data: data, + nPage: _.ceil(nCount / takeData), + }; + } + + return NextResponse.json( + { + success: true, + message: "Success get detail data report komentar", + data: fixData, + }, + { status: 200 } + ); + } catch (error) { + backendLogger.error("Error get detail data report komentar >>", error); + return NextResponse.json( + { + success: false, + message: "Error get detail data report komentar", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/admin/forum/[id]/report-posting/route.ts b/src/app/api/admin/forum/[id]/report-posting/route.ts new file mode 100644 index 00000000..12e47ce1 --- /dev/null +++ b/src/app/api/admin/forum/[id]/report-posting/route.ts @@ -0,0 +1,113 @@ +import { prisma } from "@/lib"; +import backendLogger from "@/util/backendLogger"; +import _ from "lodash"; +import { NextResponse } from "next/server"; + +export async function GET(request: Request, + { params }: { params: { id: string } }) { + + const { searchParams } = new URL(request.url); + const search = searchParams.get('search'); + const page = searchParams.get('page'); + const takeData = 10; + const skipData = Number(page) * takeData - takeData; + + try { + let fixData; + const { id } = params; + const postingId = id + + if (!page) { + fixData = await prisma.forum_ReportPosting.findMany({ + orderBy: { + createdAt: "desc", + }, + where: { + forum_PostingId: postingId, + }, + select: { + id: true, + deskripsi: true, + createdAt: true, + User: { + select: { + id: true, + username: true, + Profile: { + select: { + name: true, + }, + }, + }, + }, + ForumMaster_KategoriReport: { + select: { + id: true, + title: true, + deskripsi: true, + }, + }, + }, + }); + } else { + const data = await prisma.forum_ReportPosting.findMany({ + take: takeData, + skip: skipData, + orderBy: { + createdAt: "desc", + }, + where: { + forum_PostingId: postingId, + }, + select: { + id: true, + deskripsi: true, + createdAt: true, + User: { + select: { + id: true, + username: true, + Profile: { + select: { + name: true, + }, + }, + }, + }, + ForumMaster_KategoriReport: { + select: { + id: true, + title: true, + deskripsi: true, + }, + }, + }, + }); + const nCount = await prisma.forum_ReportPosting.count({ + where: { + forum_PostingId: postingId, + }, + }); + + fixData = { + data: data, + nPage: _.ceil(nCount / takeData), + }; + } + return NextResponse.json({ + success: true, + message: "Success get data forum report posting", + data: fixData + }, + { status: 200 } + ) + } catch (error) { + backendLogger.error("Error get data forum report posting >>", error); + return NextResponse.json({ + success: false, + message: "Error get data forum report posting", + }, + { status: 500 } + ) + } +} \ No newline at end of file diff --git a/src/app/api/admin/forum/[id]/route.ts b/src/app/api/admin/forum/[id]/route.ts new file mode 100644 index 00000000..2c1323fa --- /dev/null +++ b/src/app/api/admin/forum/[id]/route.ts @@ -0,0 +1,65 @@ +import { NextResponse } from "next/server"; +import prisma from "@/lib/prisma"; +import _ from "lodash"; + +export async function GET( + request: Request, + { params }: { params: { id: string } } +) { + try { + const { id } = params; + const data = await prisma.forum_Posting.findFirst({ + where: { + id: id, + }, + select: { + id: true, + diskusi: true, + ForumMaster_StatusPosting: { + select: { + id: true, + status: true, + }, + }, + authorId: true, + Author: { + select: { + id: true, + username: true, + Profile: { + select: { + name: true, + }, + }, + }, + }, + Forum_Komentar: { + where: { + isActive: true, + }, + }, + }, + }); + + const result = { + ..._.omit(data, "Forum_Komentar"), + Forum_Komentar: data?.Forum_Komentar.length, + }; + + return NextResponse.json({ + success: true, + message: "Success get data", + data: result, + }); + } catch (error) { + console.error("Error get data forum", error); + return NextResponse.json( + { + success: false, + message: "Error get data forum", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/admin/forum/dashboard/publish/route.ts b/src/app/api/admin/forum/dashboard/publish/route.ts new file mode 100644 index 00000000..109c1ade --- /dev/null +++ b/src/app/api/admin/forum/dashboard/publish/route.ts @@ -0,0 +1,32 @@ +import { prisma } from "@/lib"; +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; + +export async function GET() { + try { + const fixData = await prisma.forum_Posting.count({ + where: { + isActive: true, + }, + }); + + return NextResponse.json( + { + success: true, + message: "Success get data forum dashboard", + data: fixData, + }, + { status: 200 } + ); + } catch (error) { + backendLogger.error("Error get data forum dashboard", error); + return NextResponse.json( + { + success: false, + message: "Error get data forum dashboard", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/admin/forum/dashboard/report_komentar/route.ts b/src/app/api/admin/forum/dashboard/report_komentar/route.ts new file mode 100644 index 00000000..4efc7546 --- /dev/null +++ b/src/app/api/admin/forum/dashboard/report_komentar/route.ts @@ -0,0 +1,31 @@ +import { prisma } from "@/lib"; +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; + +export async function GET(request: Request) { + + try { + let fixData; + fixData = await prisma.forum_ReportKomentar.count({ + where: { + isActive: true, + } + }) + return NextResponse.json({ + success: true, + message: "Success get data forum dashboard", + data: fixData, + }, + { status: 200 } + ); + } catch (error) { + backendLogger.error("Error get data forum dashboard", error); + return NextResponse.json({ + success: false, + message: "Error get data forum dashboard", + reason: (error as Error).message + }, + { status: 500 } + ) + } +} \ No newline at end of file diff --git a/src/app/api/admin/forum/dashboard/report_posting/route.ts b/src/app/api/admin/forum/dashboard/report_posting/route.ts new file mode 100644 index 00000000..763eb1d8 --- /dev/null +++ b/src/app/api/admin/forum/dashboard/report_posting/route.ts @@ -0,0 +1,30 @@ +import { prisma } from "@/lib"; +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; + +export async function GET(request: Request) { + try { + let fixData; + fixData = await prisma.forum_ReportPosting.count({ + where: { + isActive: true, + } + }) + return NextResponse.json({ + success: true, + message: "Success get data forum dashboard", + data: fixData, + }, + { status: 200 } + ); + } catch (error) { + backendLogger.error("Error get data forum dashboard", error); + return NextResponse.json({ + success: false, + message: "Error get data forum dashboard", + reason: (error as Error).message + }, + { status: 500 } + ) + } +} \ No newline at end of file diff --git a/src/app/api/admin/forum/komentar/[id]/route.ts b/src/app/api/admin/forum/komentar/[id]/route.ts new file mode 100644 index 00000000..5de5f484 --- /dev/null +++ b/src/app/api/admin/forum/komentar/[id]/route.ts @@ -0,0 +1,45 @@ +import { NextResponse } from "next/server"; +import prisma from "@/lib/prisma"; + +export async function GET( + request: Request, + { params }: { params: { id: string } } +) { + try { + const { id } = params; + const data = await prisma.forum_Komentar.findFirst({ + where: { + id: id, + }, + select: { + id: true, + isActive: true, + authorId: true, + Author: { + select: { + id: true, + username: true, + }, + }, + komentar: true, + forum_PostingId: true, + }, + }); + + return NextResponse.json({ + success: true, + message: "Success get data komentar", + data: data, + }); + } catch (error) { + console.error("Error get data komentar", error); + return NextResponse.json( + { + success: false, + message: "Error get data komentar", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/admin/forum/komentar/route.ts b/src/app/api/admin/forum/komentar/route.ts new file mode 100644 index 00000000..e76249b0 --- /dev/null +++ b/src/app/api/admin/forum/komentar/route.ts @@ -0,0 +1,122 @@ +import { prisma } from "@/lib"; +import backendLogger from "@/util/backendLogger"; +import _ from "lodash"; +import { NextResponse } from "next/server"; + +export async function GET(request: Request) { + const { searchParams } = new URL(request.url); + const search = searchParams.get("search"); + const page = searchParams.get("page"); + const takeData = 10; + const skipData = Number(page) * takeData - takeData; + + try { + let fixData; + + if (!page) { + fixData = await prisma.forum_ReportKomentar.findMany({ + orderBy: { + createdAt: "desc", + }, + where: { + Forum_Komentar: { + isActive: true, + komentar: { + contains: search ? search : "", + mode: "insensitive", + }, + }, + }, + include: { + ForumMaster_KategoriReport: true, + User: { + select: { + username: true, + Profile: { + select: { + id: true, + name: true, + }, + }, + }, + }, + Forum_Komentar: { + select: { + id: true, + komentar: true, + }, + }, + }, + }); + } else { + const data = await prisma.forum_ReportKomentar.findMany({ + take: takeData, + skip: skipData, + orderBy: { + createdAt: "desc", + }, + where: { + Forum_Komentar: { + isActive: true, + komentar: { + contains: search ? search : "", + mode: "insensitive", + }, + }, + }, + include: { + ForumMaster_KategoriReport: true, + User: { + select: { + username: true, + Profile: { + select: { + id: true, + name: true, + }, + }, + }, + }, + Forum_Komentar: { + select: { + id: true, + komentar: true, + }, + }, + }, + }); + const nCount = await prisma.forum_ReportKomentar.count({ + where: { + Forum_Komentar: { + isActive: true, + komentar: { + contains: search ? search : "", + mode: "insensitive", + }, + }, + }, + }); + + fixData = { + data: data, + nCount: _.ceil(nCount / takeData), + }; + } + + return NextResponse.json( + { + success: true, + message: "Success get data forum komentar", + data: fixData, + }, + { status: 200 } + ); + } catch (error) { + backendLogger.error("Error get data forum komentar", error); + return NextResponse.json({ + success: false, + message: "Error get data forum komentar", + reason: (error as Error).message, + }); + } +} diff --git a/src/app/api/admin/forum/posting/route.ts b/src/app/api/admin/forum/posting/route.ts new file mode 100644 index 00000000..51d36ec8 --- /dev/null +++ b/src/app/api/admin/forum/posting/route.ts @@ -0,0 +1,153 @@ +import { prisma } from "@/lib"; +import backendLogger from "@/util/backendLogger"; +import _ from "lodash"; +import { NextResponse } from "next/server"; + +export async function GET(request: Request) { + const { searchParams } = new URL(request.url); + const search = searchParams.get("search"); + const page = searchParams.get("page"); + const takeData = 10; + const skipData = Number(page) * takeData - takeData; + + try { + let fixData; + + if (!page) { + fixData = await prisma.forum_ReportPosting.findMany({ + orderBy: { + createdAt: "desc", + }, + where: { + Forum_Posting: { + isActive: true, + diskusi: { + contains: search ? search : "", + mode: "insensitive", + }, + }, + }, + select: { + id: true, + deskripsi: true, + createdAt: true, + User: { + select: { + id: true, + username: true, + Profile: { + select: { + name: true, + }, + }, + }, + }, + ForumMaster_KategoriReport: { + select: { + id: true, + title: true, + deskripsi: true, + }, + }, + Forum_Posting: { + select: { + diskusi: true, + }, + }, + }, + }); + } else { + const data = await prisma.forum_ReportPosting.findMany({ + take: takeData, + skip: skipData, + orderBy: { + createdAt: "desc", + }, + where: { + Forum_Posting: { + isActive: true, + diskusi: { + contains: search ? search : "", + mode: "insensitive", + }, + }, + }, + select: { + id: true, + isActive: true, + createdAt: true, + deskripsi: true, + forumMaster_KategoriReportId: true, + ForumMaster_KategoriReport: { + select: { + id: true, + title: true, + deskripsi: true, + }, + }, + + forum_PostingId: true, + Forum_Posting: { + select: { + id: true, + diskusi: true, + ForumMaster_StatusPosting: { + select: { + id: true, + status: true, + }, + }, + Author: { + select: { + id: true, + username: true, + }, + }, + }, + }, + userId: true, + User: { + select: { + id: true, + username: true, + }, + }, + }, + }); + + const nCount = await prisma.forum_ReportPosting.count({ + where: { + Forum_Posting: { + isActive: true, + diskusi: { + contains: search ? search : "", + mode: "insensitive", + }, + }, + }, + }); + + fixData = { + data: data, + nCount: _.ceil(nCount / takeData), + }; + } + return NextResponse.json( + { + success: true, + message: "Success get data forum posting", + data: fixData, + }, + { status: 200 } + ); + } catch (error) { + backendLogger.error("Error get data forum posting >>", error); + return NextResponse.json( + { + success: false, + message: "Error get data forum posting", + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/admin/forum/publish/route.ts b/src/app/api/admin/forum/publish/route.ts new file mode 100644 index 00000000..1bd4f355 --- /dev/null +++ b/src/app/api/admin/forum/publish/route.ts @@ -0,0 +1,119 @@ +import { prisma } from "@/lib"; +import backendLogger from "@/util/backendLogger"; +import _ from "lodash"; +import { NextResponse } from "next/server"; + +export async function GET(request: Request) { + const { searchParams } = new URL(request.url); + const search = searchParams.get("search"); + const page = searchParams.get("page"); + const takeData = 10; + const skipData = Number(page) * takeData - takeData; + + try { + let fixData; + + if (!page) { + fixData = await prisma.forum_Posting.findMany({ + orderBy: { + createdAt: "desc", + }, + where: { + isActive: true, + diskusi: { + contains: search ? search : "", + mode: "insensitive", + }, + }, + select: { + id: true, + diskusi: true, + isActive: true, + createdAt: true, + Author: { + select: { + id: true, + username: true, + Profile: true, + }, + }, + Forum_ReportPosting: true, + Forum_Komentar: { + where: { + isActive: true, + }, + }, + ForumMaster_StatusPosting: true, + }, + }); + } else { + const data = await prisma.forum_Posting.findMany({ + take: takeData, + skip: skipData, + orderBy: { + createdAt: "desc", + }, + where: { + isActive: true, + diskusi: { + contains: search ? search : "", + mode: "insensitive", + }, + }, + select: { + id: true, + diskusi: true, + isActive: true, + createdAt: true, + Author: { + select: { + id: true, + username: true, + Profile: true, + }, + }, + Forum_ReportPosting: true, + Forum_Komentar: { + where: { + isActive: true, + }, + }, + ForumMaster_StatusPosting: true, + }, + }); + + const nCount = await prisma.forum_Posting.count({ + where: { + isActive: true, + diskusi: { + contains: search ? search : "", + mode: "insensitive", + }, + }, + }); + + fixData = { + data: data, + nCount: _.ceil(nCount / takeData), + }; + } + return NextResponse.json( + { + success: true, + message: "Success get data table forum", + data: fixData, + }, + { status: 200 } + ); + } catch (error) { + backendLogger.error("Error get data table forum", error); + return NextResponse.json( + { + success: false, + message: "Error get data table forum", + reason: error as Error, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/admin/investasi/[id]/detail/route.ts b/src/app/api/admin/investasi/[id]/detail/route.ts new file mode 100644 index 00000000..6fd0ebc9 --- /dev/null +++ b/src/app/api/admin/investasi/[id]/detail/route.ts @@ -0,0 +1,80 @@ +import { prisma } from "@/lib"; +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; + +export async function GET(req: Request, + { params }: { params: { id: string } }) { + + + + try { + const { id } = params; + const investasiId = id; + const data = await prisma.investasi.findUnique({ + where: { + id: investasiId, + }, + select: { + imageId: true, + prospektusFileId: true, + id: true, + author: { + select: { + id: true, + username: true, + nomor: true, + Profile: true, + }, + }, + title: true, + authorId: true, + hargaLembar: true, + targetDana: true, + totalLembar: true, + sisaLembar: true, + lembarTerbeli: true, + progress: true, + roi: true, + active: true, + createdAt: true, + updatedAt: true, + catatan: true, + imagesId: true, + MasterStatusInvestasi: true, + BeritaInvestasi: true, + DokumenInvestasi: true, + ProspektusInvestasi: true, + MasterPembagianDeviden: true, + MasterPencarianInvestor: true, + MasterPeriodeDeviden: true, + MasterProgresInvestasi: true, + masterStatusInvestasiId: true, + Investasi_Invoice: { + where: { + statusInvoiceId: "1", + }, + }, + countDown: true, + + }, + }); + + return NextResponse.json({ + success: true, + message: "Success get detail investasi", + data: data, + }, + { status: 200 } + ) + } catch (error) { + backendLogger.error("Error get detail investasi", error); + return NextResponse.json({ + success: false, + message: "Error get detail investasi", + reason: (error as Error).message + }, + { status: 500 } + ); + + } +} \ No newline at end of file diff --git a/src/app/api/admin/investasi/[id]/detail_transaksi/route.ts b/src/app/api/admin/investasi/[id]/detail_transaksi/route.ts new file mode 100644 index 00000000..12805fda --- /dev/null +++ b/src/app/api/admin/investasi/[id]/detail_transaksi/route.ts @@ -0,0 +1,41 @@ +import prisma from "@/lib/prisma"; +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; +export async function GET(req: Request, + { params }: { params: { id: string } }) { + try { + let fixData; + const { id } = params + const data = await prisma.investasi_Invoice.findUnique({ + where: { + id: id + }, + include: { + Author: true, + Images: true, + StatusInvoice: true, + MasterBank: true, + } + }) + + fixData = { + data: data, + } + return NextResponse.json({ + success: true, + message: "Success get data detail transaksi", + data: fixData, + }, + { status: 200 } + ) + } catch (error) { + backendLogger.error("Error get data detail transaksi", error); + return NextResponse.json({ + success: false, + message: "Error get data detail transaksi", + reason: (error as Error).message + }, + { status: 500 } + ) + } +} \ No newline at end of file diff --git a/src/app/api/admin/investasi/[id]/transaksi/route.ts b/src/app/api/admin/investasi/[id]/transaksi/route.ts new file mode 100644 index 00000000..afceafea --- /dev/null +++ b/src/app/api/admin/investasi/[id]/transaksi/route.ts @@ -0,0 +1,99 @@ +import backendLogger from "@/util/backendLogger"; +import _ from "lodash"; +import { NextResponse } from "next/server"; +import prisma from "@/lib/prisma"; + +export async function GET( + request: Request, + { params }: { params: { id: string } } +) { + try { + let fixData; + const { id } = params; + const { searchParams } = new URL(request.url); + const page = searchParams.get("page"); + const status = searchParams.get("status"); + const takeData = 10 + const skipData = Number(page) * takeData - takeData; + + if (!page) { + fixData = await prisma.investasi_Invoice.findMany({ + orderBy: { + createdAt: "desc", + }, + where: { + investasiId: id, + isActive: true, + }, + include: { + Author: true, + Images: true, + StatusInvoice: true, + MasterBank: true, + }, + }); + } else { + const fixStatus = _.startCase(status ? status : ""); + + const data = await prisma.investasi_Invoice.findMany({ + take: takeData, + skip: skipData, + orderBy: { + createdAt: "desc", + }, + where: { + investasiId: id, + isActive: true, + StatusInvoice: { + name: { + contains: fixStatus, + mode: "insensitive", + }, + }, + }, + include: { + Author: true, + Images: true, + StatusInvoice: true, + MasterBank: true, + }, + }); + const nCount = await prisma.investasi_Invoice.count({ + where: { + investasiId: id, + isActive: true, + StatusInvoice: { + name: { + contains: fixStatus, + mode: "insensitive", + }, + }, + }, + }); + + fixData = { + data: data, + nPage: _.ceil(nCount / takeData), + }; + } + + return NextResponse.json( + { + success: true, + message: "Success get status transaksi", + data: fixData, + }, + { status: 200 } + ); + } catch (error) { + backendLogger.error("Eror get status transaksi", error); + return NextResponse.json( + { + success: false, + message: "Error get status transaksi", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/admin/investasi/dashboard/[name]/route.ts b/src/app/api/admin/investasi/dashboard/[name]/route.ts new file mode 100644 index 00000000..a18dba8b --- /dev/null +++ b/src/app/api/admin/investasi/dashboard/[name]/route.ts @@ -0,0 +1,36 @@ +import { prisma } from "@/lib"; +import backendLogger from "@/util/backendLogger"; +import _ from "lodash"; +import { NextResponse } from "next/server"; + +export async function GET(request: Request, { params }: { params: { name: string } }) { + + const { name } = params; + try { + let fixData; + const fixStatus = _.startCase(name); + fixData = await prisma.investasi.count({ + where: { + MasterStatusInvestasi: { + name: fixStatus + }, + } + }) + return NextResponse.json({ + success: true, + message: "Success get data investasi dashboard", + data: fixData, + }, + { status: 200 } + ) + } catch (error) { + backendLogger.error("Error get data investasi dashboard >>", error); + return NextResponse.json({ + success: false, + message: "Error get data investasi dashboard", + reason: (error as Error).message + }, + { status: 500 } + ) + } +} diff --git a/src/app/api/admin/investasi/status/[name]/route.ts b/src/app/api/admin/investasi/status/[name]/route.ts new file mode 100644 index 00000000..34fe14e6 --- /dev/null +++ b/src/app/api/admin/investasi/status/[name]/route.ts @@ -0,0 +1,138 @@ +import { prisma } from "@/lib"; +import _ from "lodash"; +import { NextResponse } from "next/server"; + +export async function GET( + request: Request, + { + params, + }: { + params: { name: string }; + } +) { + const method = request.method; + if (method !== "GET") { + return NextResponse.json( + { + success: false, + message: "Method not allowed", + }, + { status: 405 } + ); + } + + const { name } = params; + const { searchParams } = new URL(request.url); + const search = searchParams.get("search"); + const page = searchParams.get("page"); + const takeData = 10; + const skipData = Number(page) * takeData - takeData; + + try { + let fixData; + const fixStatus = _.startCase(name); + + if (!page) { + fixData = await prisma.investasi.findMany({ + orderBy: { + updatedAt: "desc", + }, + where: { + active: true, + MasterStatusInvestasi: { + name: fixStatus, + }, + title: { + contains: search ? search : "", + mode: "insensitive", + }, + }, + include: { + MasterStatusInvestasi: true, + BeritaInvestasi: true, + DokumenInvestasi: true, + ProspektusInvestasi: true, + MasterPembagianDeviden: true, + MasterPencarianInvestor: true, + MasterPeriodeDeviden: true, + author: true, + Investasi_Invoice: { + where: { + statusInvoiceId: "2", + }, + }, + }, + }); + } else { + const data = await prisma.investasi.findMany({ + take: takeData, + skip: skipData, + orderBy: { + updatedAt: "desc", + }, + where: { + active: true, + MasterStatusInvestasi: { + name: fixStatus, + }, + title: { + contains: search ? search : "", + mode: "insensitive", + }, + }, + include: { + MasterStatusInvestasi: true, + BeritaInvestasi: true, + DokumenInvestasi: true, + ProspektusInvestasi: true, + MasterPembagianDeviden: true, + MasterPencarianInvestor: true, + MasterPeriodeDeviden: true, + author: true, + Investasi_Invoice: { + where: { + statusInvoiceId: "2", + }, + }, + }, + }); + + const nCount = await prisma.investasi.count({ + where: { + active: true, + MasterStatusInvestasi: { + name: fixStatus, + }, + title: { + contains: search ? search : "", + mode: "insensitive", + }, + }, + }); + + fixData = { + data: data, + nPage: _.ceil(nCount / takeData), + }; + } + + return NextResponse.json( + { + success: true, + message: "Success", + data: fixData, + }, + { status: 200 } + ); + } catch (error) { + console.log(error); + return NextResponse.json( + { + success: false, + message: "Failed", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/admin/job/[id]/route.ts b/src/app/api/admin/job/[id]/route.ts new file mode 100644 index 00000000..45e4996d --- /dev/null +++ b/src/app/api/admin/job/[id]/route.ts @@ -0,0 +1,53 @@ +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; +import prisma from "@/lib/prisma"; + +export { GET }; + +async function GET(request: Request, { params }: { params: { id: string } }) { + try { + const { id } = params; + const data = await prisma.job.findUnique({ + where: { + id: id, + }, + include: { + Author: { + select: { + username: true, + nomor: true, + Profile: { + select: { + name: true, + alamat: true, + }, + }, + }, + }, + MasterStatus: { + select: { + name: true, + }, + }, + }, + }); + return NextResponse.json( + { + success: true, + message: "Success get data job-vacancy", + data: data, + }, + { status: 200 } + ); + } catch (error) { + backendLogger.error("Error get data job-vacancy", error); + return NextResponse.json( + { + success: false, + message: "Error get data job-vacancy", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/admin/job/dashboard/[status]/route.ts b/src/app/api/admin/job/dashboard/[status]/route.ts new file mode 100644 index 00000000..b9fda394 --- /dev/null +++ b/src/app/api/admin/job/dashboard/[status]/route.ts @@ -0,0 +1,40 @@ +import { prisma } from "@/lib"; +import backendLogger from "@/util/backendLogger"; +import _ from "lodash"; +import { NextResponse } from "next/server"; + +export async function GET(request: Request, { params }: { + params: { status: string } +}) { + + const { status } = params; + try { + let fixData; + const fixStatus = _.startCase(status); + fixData = await prisma.job.count({ + where: { + MasterStatus: { + name: fixStatus, + }, + isArsip: false, + } + }); + + return NextResponse.json({ + success: true, + message: "Success get data job-vacancy dashboard", + data: fixData + }, + { status: 200 } + ); + } catch (error) { + backendLogger.error("Error get data job-vacancy dashboard", error); + return NextResponse.json({ + success: false, + message: "Error get data job-vacancy dashboard", + reason: (error as Error).message, + }, + { status: 500 } + ) + } +} \ No newline at end of file diff --git a/src/app/api/admin/job/dashboard/arsip/route.ts b/src/app/api/admin/job/dashboard/arsip/route.ts new file mode 100644 index 00000000..bd450b54 --- /dev/null +++ b/src/app/api/admin/job/dashboard/arsip/route.ts @@ -0,0 +1,35 @@ +import { prisma } from "@/lib"; +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; + +export async function GET(request: Request) { + const method = request.method; + + try { + let fixData; + fixData = await prisma.job.count({ + where: { + MasterStatus: { + name: "Publish" + }, + isArsip: true + } + }) + return NextResponse.json({ + success: true, + message: "Success get data job-vacancy dashboard", + data: fixData + }, + { status: 200 } + ) + } catch (error) { + backendLogger.error("Error get data job-vacancy dashboard", error); + return NextResponse.json({ + success: false, + message: "Error get data job-vacancy dashboard", + reason: (error as Error).message + }, + { status: 500 } + ) + } +} \ No newline at end of file diff --git a/src/app/api/admin/job/status/[name]/route.ts b/src/app/api/admin/job/status/[name]/route.ts new file mode 100644 index 00000000..7b91bc43 --- /dev/null +++ b/src/app/api/admin/job/status/[name]/route.ts @@ -0,0 +1,116 @@ +import { prisma } from "@/lib"; +import backendLogger from "@/util/backendLogger"; +import _ from "lodash"; +import { NextResponse } from "next/server"; + +export async function GET( + request: Request, + { + params, + }: { + params: { name: string }; + } +) { + const method = request.method; + if (method !== "GET") { + return NextResponse.json( + { + success: false, + message: "Method not allowed", + }, + { status: 405 } + ); + } + const { name } = params; + const { searchParams } = new URL(request.url); + const search = searchParams.get("search"); + const page = searchParams.get("page"); + const takeData = 10 + const skipData = Number(page) * takeData - takeData; + + try { + let fixData; + const fixStatus = _.startCase(name); + + if (!page) { + fixData = await prisma.job.findMany({ + orderBy: { + updatedAt: "desc", + }, + where: { + isActive: true, + isArsip: false, + MasterStatus: { + name: fixStatus, + }, + title: { + contains: search ? search : "", + mode: "insensitive", + }, + }, + include: { + Author: true, + }, + }); + } else { + const data = await prisma.job.findMany({ + take: takeData, + skip: skipData, + orderBy: { + updatedAt: "desc", + }, + where: { + isActive: true, + isArsip: false, + MasterStatus: { + name: fixStatus, + }, + title: { + contains: search ? search : "", + mode: "insensitive", + }, + }, + include: { + Author: true, + }, + }); + + const nCount = await prisma.job.count({ + where: { + isActive: true, + isArsip: false, + MasterStatus: { + name: fixStatus, + }, + title: { + contains: search ? search : "", + mode: "insensitive", + }, + }, + }); + + fixData = { + data: data, + nPage: _.ceil(nCount / takeData), + }; + } + return NextResponse.json( + { + success: true, + message: "Data found", + data: fixData, + }, + { status: 200 } + ); + } catch (error) { + backendLogger.error("Eror get data", error); + return NextResponse.json( + { + success: false, + message: "Data not found", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/admin/main_dashboard/portofolio/route.ts b/src/app/api/admin/main_dashboard/portofolio/route.ts new file mode 100644 index 00000000..e1417cd9 --- /dev/null +++ b/src/app/api/admin/main_dashboard/portofolio/route.ts @@ -0,0 +1,29 @@ +import { prisma } from "@/lib"; +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; + +export async function GET(request: Request) { + try { + const data = await prisma.portofolio.count({ + where: { + active: true + } + }); + return NextResponse.json({ + success: true, + message: "Data portofolio", + data: data + }, + { status: 200 } + ); + } catch (error) { + backendLogger.error("Error Get Count Portofolio Main Dashboard") + return NextResponse.json({ + success: false, + message: "Error Get Count Portofolio Main Dashboard", + data: null + }, + { status: 500 } + ); + } +} \ No newline at end of file diff --git a/src/app/api/admin/main_dashboard/user/route.ts b/src/app/api/admin/main_dashboard/user/route.ts new file mode 100644 index 00000000..3f2682fa --- /dev/null +++ b/src/app/api/admin/main_dashboard/user/route.ts @@ -0,0 +1,35 @@ +import { prisma } from "@/lib"; +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; + +export async function GET(request: Request) { + const method = request.method; + + try { + const data = await prisma.user.count({ + where: { + active: true + }, + + + }) + return NextResponse.json({ + success: true, + message: "Data user", + data: data + }, + { status: 200 } + ) + } catch (error) { + backendLogger.error("Error Get Count User Main Dashboard") + return NextResponse.json({ + success: false, + message: "Gagal mendapatkan data", + reason: (error as Error).message + }, + { status: 500 } + ) + + } + +} \ No newline at end of file diff --git a/src/app/api/admin/master/bank/route.ts b/src/app/api/admin/master/bank/route.ts new file mode 100644 index 00000000..609a6bc4 --- /dev/null +++ b/src/app/api/admin/master/bank/route.ts @@ -0,0 +1,32 @@ +import { NextResponse } from "next/server"; +import { prisma } from "@/lib"; + +export { GET }; + +async function GET(request: Request) { + try { + const data = await prisma.masterBank.findMany({ + orderBy: { + createdAt: "desc", + }, + }); + + return NextResponse.json( + { success: true, message: "Berhasil mendapatkan data", data: data }, + { status: 200 } + ); + } catch (error) { + console.error( + "Error Get Master Bank >>", + error || (error as Error).message + ); + return NextResponse.json( + { + success: false, + message: "API Error Get Master Bank ", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/admin/master/bidang-bisnis/route.ts b/src/app/api/admin/master/bidang-bisnis/route.ts new file mode 100644 index 00000000..c2802e52 --- /dev/null +++ b/src/app/api/admin/master/bidang-bisnis/route.ts @@ -0,0 +1,32 @@ +import { NextResponse } from "next/server"; +import { prisma } from "@/lib"; + +export { GET }; + +async function GET(request: Request) { + try { + const data = await prisma.masterBidangBisnis.findMany({ + orderBy: { + createdAt: "desc", + }, + }); + + return NextResponse.json( + { success: true, message: "Berhasil mendapatkan data", data: data }, + { status: 200 } + ); + } catch (error) { + console.error( + "Error Get Master Bidang Bisnis >>", + error || (error as Error).message + ); + return NextResponse.json( + { + success: false, + message: "API Error Get Master Bidang Bisnis ", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/admin/notifikasi/[id]/route.ts b/src/app/api/admin/notifikasi/[id]/route.ts new file mode 100644 index 00000000..f0595242 --- /dev/null +++ b/src/app/api/admin/notifikasi/[id]/route.ts @@ -0,0 +1,106 @@ +import { NextResponse } from "next/server"; +import prisma from "@/lib/prisma"; + +export { GET, POST }; +async function GET(request: Request, { params }: { params: { id: string } }) { + try { + let fixData; + const { id } = params; + const userLoginId = id; + + if (!id) { + return NextResponse.json( + { success: false, message: "ID not provided" }, + { status: 400 } + ); + } + + const { searchParams } = new URL(request.url); + const page = searchParams.get("page"); + const takeData = 10; + const skipData = Number(page) * takeData - takeData; + + if (!page) { + fixData = await prisma.notifikasi.findMany({ + orderBy: [ + { + isRead: "asc", + }, + { + createdAt: "desc", + }, + ], + where: { + adminId: userLoginId, + userRoleId: "2", + }, + }); + } else { + fixData = await prisma.notifikasi.findMany({ + take: takeData, + skip: skipData, + orderBy: [ + { + isRead: "asc", + }, + { + createdAt: "desc", + }, + ], + where: { + adminId: id, + userRoleId: "2", + }, + }); + } + + return NextResponse.json({ + success: true, + message: "Data fetched successfully", + data: fixData, + }); + } catch (error) { + console.error("Error fetching notifications:", error); + return NextResponse.json( + { success: false, message: "Failed to fetch notifications" }, + { status: 500 } + ); + } +} + +async function POST(request: Request, { params }: { params: { id: string } }) { + try { + const { id } = params; + const userLoginId = id; + + if (!id) { + return NextResponse.json( + { success: false, message: "ID not provided" }, + { status: 400 } + ); + } + + const data = await request.json(); + + const updatedData = await prisma.notifikasi.updateMany({ + where: { + adminId: userLoginId, + }, + data: { + isRead: data.isRead, + }, + }); + + return NextResponse.json({ + success: true, + message: "Notification updated successfully", + data: updatedData, + }); + } catch (error) { + console.error("Error updating notification:", error); + return NextResponse.json( + { success: false, message: "Failed to update notification" }, + { status: 500 } + ); + } +} diff --git a/src/app/api/admin/notifikasi/count/route.tsx b/src/app/api/admin/notifikasi/count/route.tsx new file mode 100644 index 00000000..1d2d8b5a --- /dev/null +++ b/src/app/api/admin/notifikasi/count/route.tsx @@ -0,0 +1,46 @@ +import { NextResponse } from "next/server"; +import { prisma } from "@/lib"; + +export const dynamic = "force-dynamic"; + +export async function GET(request: Request) { + const method = request.method; + if (method !== "GET") { + return NextResponse.json( + { success: false, message: "Method not allowed" }, + { status: 405 } + ); + } + + try { + const { searchParams } = new URL(request.url); + const userId = searchParams.get("id"); + + const data = await prisma.notifikasi.count({ + where: { + adminId: userId, + userRoleId: "2", + isRead: false, + }, + }); + + return NextResponse.json( + { + success: true, + message: "Data fetched successfully", + data: data, + }, + { status: 200 } + ); + } catch (error) { + console.error("Error get count notifikasi", error); + return NextResponse.json( + { + success: false, + message: "Failed to get count notifikasi", + data: null, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/admin/notifikasi/route.ts b/src/app/api/admin/notifikasi/route.ts deleted file mode 100644 index 4847fb76..00000000 --- a/src/app/api/admin/notifikasi/route.ts +++ /dev/null @@ -1,8 +0,0 @@ -import adminNotifikasi_getByUserId from "@/app_modules/admin/notifikasi/fun/get/get_notifikasi_by_user_id"; -import { NextRequest, NextResponse } from "next/server"; - -export async function GET(req: NextRequest) { - - - return NextResponse.json({ success: true }); -} diff --git a/src/app/api/admin/sticker/[id]/activation/route.ts b/src/app/api/admin/sticker/[id]/activation/route.ts new file mode 100644 index 00000000..27146d49 --- /dev/null +++ b/src/app/api/admin/sticker/[id]/activation/route.ts @@ -0,0 +1,39 @@ +import { NextResponse } from "next/server"; +import { prisma } from "@/lib"; + +export { PUT }; + +async function PUT(request: Request, { params }: { params: { id: string } }) { + const method = request.method; + if (method !== "PUT") { + return NextResponse.json( + { success: false, message: "Method not allowed" }, + { status: 405 } + ); + } + + try { + const { id } = params; + const data = await request.json(); + + const sticker = await prisma.sticker.update({ + where: { + id: id, + }, + data: { + isActive: data.isActive, + }, + }); + + return NextResponse.json( + { success: true, message: "Success update data sticker", data: sticker }, + { status: 200 } + ); + } catch (error) { + console.error("Error update data sticker", error); + return NextResponse.json( + { success: false, message: "Error update data sticker" }, + { status: 500 } + ); + } +} \ No newline at end of file diff --git a/src/app/api/admin/sticker/[id]/route.ts b/src/app/api/admin/sticker/[id]/route.ts new file mode 100644 index 00000000..33ca6d83 --- /dev/null +++ b/src/app/api/admin/sticker/[id]/route.ts @@ -0,0 +1,139 @@ +import { NextResponse } from "next/server"; +import { prisma } from "@/lib"; + +export { GET, PUT, DELETE }; + +async function GET(request: Request, { params }: { params: { id: string } }) { + const method = request.method; + if (method !== "GET") { + return NextResponse.json( + { success: false, message: "Method not allowed" }, + { status: 405 } + ); + } + + try { + const { id } = params; + + const sticker = await prisma.sticker.findUnique({ + where: { + id: id, + }, + include: { + MasterEmotions: true, + }, + }); + + return NextResponse.json( + { success: true, message: "Success get data sticker", data: sticker }, + { status: 200 } + ); + } catch (error) { + console.error("Error get data sticker", error); + return NextResponse.json( + { success: false, message: "Error get data sticker" }, + { status: 500 } + ); + } +} + +async function PUT(request: Request, { params }: { params: { id: string } }) { + const method = request.method; + if (method !== "PUT") { + return NextResponse.json( + { success: false, message: "Method not allowed" }, + { status: 405 } + ); + } + + try { + const { id } = params; + const data = await request.json(); + + if (data.fileId) { + const updatedDataWithFile = await prisma.sticker.update({ + where: { + id: id, + }, + data: { + fileId: data.fileId, + MasterEmotions: { + set: data.emotions.map((value: string) => ({ value })), // ✅ replace relasi + }, + jenisKelamin: data.jenisKelamin, + }, + }); + + return NextResponse.json({ + success: true, + message: "Sticker updated successfully", + data: updatedDataWithFile, + }); + } + + const updatedDataWithoutFile = await prisma.sticker.update({ + where: { + id: id, + }, + data: { + MasterEmotions: { + set: data.emotions.map((value: string) => ({ value })), // ✅ replace relasi + }, + jenisKelamin: data.jenisKelamin, + }, + }); + + if (!updatedDataWithoutFile) { + return NextResponse.json( + { success: false, message: "Failed to update sticker" }, + { status: 400 } + ); + } + + return NextResponse.json({ + success: true, + message: "Sticker updated successfully", + data: updatedDataWithoutFile, + }); + } catch (error) { + console.error("Error updating sticker:", error); + return NextResponse.json( + { success: false, message: "Failed to update sticker" }, + { status: 500 } + ); + } +} + +async function DELETE( + request: Request, + { params }: { params: { id: string } } +) { + const method = request.method; + if (method !== "DELETE") { + return NextResponse.json( + { success: false, message: "Method not allowed" }, + { status: 405 } + ); + } + + try { + const { id } = params; + + const sticker = await prisma.sticker.delete({ + where: { + id: id, + }, + }); + + return NextResponse.json( + { success: true, message: "Success delete sticker", data: sticker }, + { status: 200 } + ); + } catch (error) { + console.error("Error delete sticker", error); + return NextResponse.json( + { success: false, message: "Error delete sticker" }, + { status: 500 } + ); + } +} diff --git a/src/app/api/admin/sticker/route.ts b/src/app/api/admin/sticker/route.ts new file mode 100644 index 00000000..621ab4fa --- /dev/null +++ b/src/app/api/admin/sticker/route.ts @@ -0,0 +1,113 @@ +import { prisma } from "@/lib"; +import _ from "lodash"; +import { NextResponse } from "next/server"; + +export { GET, POST }; + +interface IPostSticker { + fileId: string; + emotions: string[]; + gender: "Laki-laki" | "Perempuan" | null; +} + +async function POST(request: Request) { + const method = request.method; + if (method !== "POST") { + return NextResponse.json( + { success: false, message: "Method not allowed" }, + { status: 405 } + ); + } + + try { + const { fileId, emotions, gender } = await request.json(); + + const newStiker = await prisma.sticker.create({ + data: { + fileId, + MasterEmotions: { + connect: emotions.map((value: string) => ({ value })), // id = number[] + }, + jenisKelamin: gender, + }, + }); + + if (!newStiker) { + return NextResponse.json( + { success: false, message: "Gagal membuat stiker" }, + { status: 400 } + ); + } + + return NextResponse.json( + { success: true, message: "Berhasil membuat stiker" }, + { status: 200 } + ); + } catch (error) { + console.error("Error create sticker", error); + return NextResponse.json( + { success: false, message: "Failed to create sticker" }, + { status: 500 } + ); + } +} + +async function GET(request: Request) { + const method = request.method; + if (method !== "GET") { + return NextResponse.json( + { success: false, message: "Method not allowed" }, + { status: 405 } + ); + } + + let fixData; + const { searchParams } = new URL(request.url); + const search = searchParams.get("search"); + const page = searchParams.get("page"); + const dataTake = 10; + const dataSkip = Number(page) * dataTake - dataTake; + + try { + if (!page) { + fixData = await prisma.sticker.findMany({ + orderBy: { + createdAt: "desc", + }, + include: { + MasterEmotions: true, + }, + }); + } else { + const data = await prisma.sticker.findMany({ + skip: dataSkip, + take: dataTake, + + orderBy: { + createdAt: "desc", + }, + include: { + MasterEmotions: true, + }, + }); + + const nCount = await prisma.sticker.count({}); + + fixData = { + data: data, + nPage: _.ceil(nCount / dataTake), + }; + } + + return NextResponse.json( + { success: true, message: "Success get data sticker", data: fixData }, + { status: 200 } + ); + } catch (error) { + console.error("Error get data sticker", error); + return NextResponse.json( + { success: false, message: "Error get data sticker" }, + { status: 500 } + ); + } +} diff --git a/src/app/api/admin/user/route.ts b/src/app/api/admin/user/route.ts new file mode 100644 index 00000000..b8995dac --- /dev/null +++ b/src/app/api/admin/user/route.ts @@ -0,0 +1,75 @@ +import _ from "lodash"; +import { NextResponse } from "next/server"; +import prisma from "@/lib/prisma"; + +export async function GET(request: Request) { + try { + let fixData; + const { searchParams } = new URL(request.url); + const search = searchParams.get("search"); + const page = searchParams.get("page"); + const takeData = 10; + const skipData = Number(page) * takeData - takeData; + + if (!page) { + fixData = await prisma.user.findMany({ + orderBy: { + updatedAt: "desc", + }, + where: { + masterUserRoleId: "1", + username: { + contains: search || "", + mode: "insensitive", + }, + }, + }); + } else { + const getData = await prisma.user.findMany({ + skip: skipData, + take: takeData, + orderBy: { + updatedAt: "desc", + }, + where: { + masterUserRoleId: "1", + username: { + contains: search || "", + mode: "insensitive", + }, + }, + }); + + const nCount = await prisma.user.count({ + where: { + masterUserRoleId: "1", + username: { + contains: search || "", + mode: "insensitive", + }, + }, + }); + + fixData = { + data: getData, + nPage: _.ceil(nCount / takeData), + }; + } + + return NextResponse.json( + { + success: true, + message: "Success get data", + data: fixData, + }, + { + status: 200, + } + ); + } catch (error) { + return NextResponse.json( + { success: false, message: "Internal Server Error" }, + { status: 500 } + ); + } +} diff --git a/src/app/api/admin/vote/[id]/kontributor/route.ts b/src/app/api/admin/vote/[id]/kontributor/route.ts new file mode 100644 index 00000000..c36bab5e --- /dev/null +++ b/src/app/api/admin/vote/[id]/kontributor/route.ts @@ -0,0 +1,67 @@ +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; +import { prisma } from "@/lib"; + +export async function GET( + request: Request, + { params }: { params: { id: string } } +) { + try { + const { id } = params; + + // Validasi ID + if (!id) { + return NextResponse.json( + { + success: false, + message: "ID is required", + }, + { status: 400 } + ); + } + + const data = await prisma.voting_Kontributor.findMany({ + where: { + votingId: id, + }, + select: { + Voting_DaftarNamaVote: true, + Author: { + select: { + username: true, + Profile: true, + }, + }, + }, + }); + + // Penanganan data tidak ditemukan + if (!data) { + return NextResponse.json( + { + success: false, + message: "Voting data not found", + }, + { status: 404 } + ); + } + + return NextResponse.json( + { + success: true, + data: data, + }, + { status: 200 } + ); + } catch (error) { + backendLogger.error("Error fetching voting data >>", error); + return NextResponse.json( + { + success: false, + message: "Error fetching voting data", + error: error instanceof Error ? error.message : String(error), + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/admin/vote/[id]/route.tsx b/src/app/api/admin/vote/[id]/route.tsx new file mode 100644 index 00000000..a2d790b7 --- /dev/null +++ b/src/app/api/admin/vote/[id]/route.tsx @@ -0,0 +1,63 @@ +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; +import { prisma } from "@/lib"; + +export async function GET( + request: Request, + { params }: { params: { id: string } } +) { + try { + const { id } = params; + + // Validasi ID + if (!id) { + return NextResponse.json( + { + success: false, + message: "ID is required", + }, + { status: 400 } + ); + } + + const fixData = await prisma.voting.findUnique({ + where: { + id: id, + }, + include: { + Author: true, + Voting_Status: true, + Voting_DaftarNamaVote: true, + }, + }); + + // Penanganan data tidak ditemukan + if (!fixData) { + return NextResponse.json( + { + success: false, + message: "Voting data not found", + }, + { status: 404 } + ); + } + + return NextResponse.json( + { + success: true, + data: fixData, + }, + { status: 200 } + ); + } catch (error) { + backendLogger.error("Error fetching voting data >>", error); + return NextResponse.json( + { + success: false, + message: "Error fetching voting data", + error: error instanceof Error ? error.message : String(error), + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/admin/vote/dashboard/[name]/route.ts b/src/app/api/admin/vote/dashboard/[name]/route.ts new file mode 100644 index 00000000..38382deb --- /dev/null +++ b/src/app/api/admin/vote/dashboard/[name]/route.ts @@ -0,0 +1,62 @@ +import { prisma } from "@/lib"; +import backendLogger from "@/util/backendLogger"; +import _ from "lodash"; +import { NextResponse } from "next/server"; + +export async function GET( + request: Request, + { + params, + }: { + params: { name: string }; + } +) { + const { name } = params; + try { + let fixData; + const fixStatus = _.startCase(name); + + if (fixStatus === "Publish") { + fixData = await prisma.voting.count({ + where: { + Voting_Status: { + name: fixStatus, + }, + isActive: true, + isArsip: false, + akhirVote: { + gte: new Date(), + }, + }, + }); + } else { + fixData = await prisma.voting.count({ + where: { + Voting_Status: { + name: fixStatus, + }, + isArsip: false, + }, + }); + } + + return NextResponse.json( + { + success: true, + message: "Success get data voting dashboard", + data: fixData, + }, + { status: 200 } + ); + } catch (error) { + backendLogger.error("Error get data voting dashboard >>", error); + return NextResponse.json( + { + success: false, + message: "Error get data voting dashboard", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/admin/vote/dashboard/riwayat/route.ts b/src/app/api/admin/vote/dashboard/riwayat/route.ts new file mode 100644 index 00000000..f3943fe8 --- /dev/null +++ b/src/app/api/admin/vote/dashboard/riwayat/route.ts @@ -0,0 +1,40 @@ +import { prisma } from "@/lib"; +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; + +export async function GET(request: Request) { + + try { + let fixData; + fixData = await prisma.voting.count({ + where: { + Voting_Status: { + name: "Publish", + }, + isActive: true, + akhirVote: { + lte: new Date(), + }, + }, + }); + + return NextResponse.json( + { + success: true, + message: "Success get data voting dashboard", + data: fixData, + }, + { status: 200 } + ); + } catch (error) { + backendLogger.error("Error get data voting dashboard >>", error); + return NextResponse.json( + { + success: false, + message: "Error get data voting dashboard", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/admin/vote/status/[name]/route.ts b/src/app/api/admin/vote/status/[name]/route.ts new file mode 100644 index 00000000..e2cd0b6b --- /dev/null +++ b/src/app/api/admin/vote/status/[name]/route.ts @@ -0,0 +1,219 @@ +import { prisma } from "@/lib"; +import backendLogger from "@/util/backendLogger"; +import _ from "lodash"; +import moment from "moment"; +import { NextResponse } from "next/server"; + +export async function GET( + request: Request, + { params }: { params: { name: string } } +) { + + try { + let fixData; + const { name } = params; + const { searchParams } = new URL(request.url); + const search = searchParams.get("search"); + const page = searchParams.get("page"); + const takeData = 10 + const skipData = Number(page) * takeData - takeData; + + const fixStatus = _.startCase(name); + + if (!page) { + fixData = await prisma.voting.findMany({ + orderBy: { + createdAt: "desc", + }, + where: { + Voting_Status: { + name: fixStatus, + }, + isActive: true, + title: { + contains: search ? search : "", + mode: "insensitive", + }, + isArsip: false, + }, + include: { + Author: { + select: { + id: true, + username: true, + Profile: { + select: { + id: true, + name: true, + }, + }, + }, + }, + Voting_Kontributor: true, + Voting_DaftarNamaVote: true, + }, + }); + } else { + if (fixStatus === "Publish") { + const getAllData = await prisma.voting.findMany({ + where: { + Voting_Status: { + name: fixStatus, + }, + isActive: true, + isArsip: false, + akhirVote: { + gte: new Date(), + }, + }, + }); + + for (let i of getAllData) { + if (moment(i.akhirVote).diff(moment(), "minutes") < 0) { + await prisma.event.update({ + where: { + id: i.id, + }, + data: { + isArsip: true, + }, + }); + } + } + + const data = await prisma.voting.findMany({ + take: takeData, + skip: skipData, + orderBy: { + createdAt: "desc", + }, + where: { + Voting_Status: { + name: fixStatus, + }, + isActive: true, + title: { + contains: search ? search : "", + mode: "insensitive", + }, + akhirVote: { + gte: new Date(), + }, + isArsip: false, + }, + include: { + Author: { + select: { + id: true, + username: true, + Profile: { + select: { + id: true, + name: true, + }, + }, + }, + }, + Voting_Kontributor: true, + Voting_DaftarNamaVote: true, + }, + }); + + const nCount = await prisma.voting.count({ + where: { + Voting_Status: { + name: fixStatus, + }, + isActive: true, + title: { + contains: search ? search : "", + mode: "insensitive", + }, + akhirVote: { + gte: new Date(), + }, + isArsip: false, + }, + }); + + fixData = { + data: data, + nPage: _.ceil(nCount / takeData), + }; + } else { + const data = await prisma.voting.findMany({ + take: takeData, + skip: skipData, + orderBy: { + createdAt: "desc", + }, + where: { + Voting_Status: { + name: fixStatus, + }, + isActive: true, + title: { + contains: search ? search : "", + mode: "insensitive", + }, + isArsip: false, + }, + include: { + Author: { + select: { + id: true, + username: true, + Profile: { + select: { + id: true, + name: true, + }, + }, + }, + }, + Voting_Kontributor: true, + Voting_DaftarNamaVote: true, + }, + }); + + const nCount = await prisma.voting.count({ + where: { + Voting_Status: { + name: fixStatus, + }, + isActive: true, + title: { + contains: search ? search : "", + mode: "insensitive", + }, + isArsip: false, + }, + }); + + fixData = { + data: data, + nPage: _.ceil(nCount / takeData), + }; + } + } + + return NextResponse.json( + { + success: true, + message: "Success get data voting status", + data: fixData, + }, + { status: 200 } + ); + } catch (error) { + backendLogger.error("Error get data voting status ", error); + return NextResponse.json( + { + success: false, + message: "Error get data voting status", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/admin/vote/status/riwayat/route.ts b/src/app/api/admin/vote/status/riwayat/route.ts new file mode 100644 index 00000000..c2885985 --- /dev/null +++ b/src/app/api/admin/vote/status/riwayat/route.ts @@ -0,0 +1,123 @@ +import { prisma } from "@/lib"; +import backendLogger from "@/util/backendLogger"; +import _ from "lodash"; +import { NextResponse } from "next/server"; + +export async function GET(request: Request) { + try { + let fixData; + const { searchParams } = new URL(request.url); + const search = searchParams.get("search"); + const page = searchParams.get("page"); + const takeData = 10; + const skipData = Number(page) * takeData - takeData; + + if (!page) { + fixData = await prisma.voting.findMany({ + orderBy: { + updatedAt: "desc", + }, + where: { + voting_StatusId: "1", + isActive: true, + akhirVote: { + lte: new Date(), + }, + title: { + contains: search ? search : "", + mode: "insensitive", + }, + }, + include: { + Author: { + select: { + id: true, + username: true, + Profile: { + select: { + id: true, + name: true, + }, + }, + }, + }, + Voting_Kontributor: true, + Voting_DaftarNamaVote: true, + }, + }); + } else { + const data = await prisma.voting.findMany({ + skip: skipData, + take: takeData, + orderBy: { + updatedAt: "desc", + }, + where: { + voting_StatusId: "1", + isActive: true, + akhirVote: { + lte: new Date(), + }, + title: { + contains: search ? search : "", + mode: "insensitive", + }, + }, + include: { + Author: { + select: { + id: true, + username: true, + Profile: { + select: { + id: true, + name: true, + }, + }, + }, + }, + Voting_Kontributor: true, + Voting_DaftarNamaVote: true, + }, + }); + + const nCount = await prisma.voting.count({ + where: { + voting_StatusId: "1", + isActive: true, + akhirVote: { + lte: new Date(), + }, + title: { + contains: search ? search : "", + mode: "insensitive", + }, + }, + }); + + fixData = { + data: data, + nPage: _.ceil(nCount / takeData), + }; + } + + return NextResponse.json( + { + success: true, + message: "Success get data voting riwayat", + data: fixData, + }, + { status: 200 } + ); + } catch (error) { + backendLogger.error("Error get data voting riwayat ", error); + return NextResponse.json( + { + success: false, + message: "Error get data voting riwayat", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/auth/check/[id]/route.ts b/src/app/api/auth/check/[id]/route.ts new file mode 100644 index 00000000..44538898 --- /dev/null +++ b/src/app/api/auth/check/[id]/route.ts @@ -0,0 +1,30 @@ +import { prisma } from "@/lib"; +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; +export const dynamic = "force-dynamic"; + +export async function GET( + request: Request, + { params }: { params: { id: string } } +) { + if (request.method !== "GET") { + return NextResponse.json( + { success: false, message: "Method not allowed" }, + { status: 405 } + ); + } + + try { + const { id } = params; + const data = await prisma.kodeOtp.findFirst({ + where: { + id: id as string, + }, + }); + + return NextResponse.json(data, { status: 200 }); + } catch (error) { + backendLogger.error("Error get code otp", error); //(error); + return NextResponse.json(null, { status: 500 }); + } +} diff --git a/src/app/api/auth/check/route.ts b/src/app/api/auth/check/route.ts deleted file mode 100644 index ff617b41..00000000 --- a/src/app/api/auth/check/route.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { prisma } from "@/app/lib"; -import { data } from "autoprefixer"; -import { NextResponse } from "next/server"; - -export async function GET(request: Request) { - const { searchParams } = new URL(request.url); - const id = searchParams.get("id"); - - try { - const data = await prisma.kodeOtp.findFirst({ - where: { - id: id as string, - }, - }); - return new Response(JSON.stringify({ data }), { status: 200 }); - } catch (error) { - console.log(error); - } - - return new Response(JSON.stringify({ data: null }), { status: 404 }); -} diff --git a/src/app/api/auth/code/[id]/route.ts b/src/app/api/auth/code/[id]/route.ts new file mode 100644 index 00000000..f16fce90 --- /dev/null +++ b/src/app/api/auth/code/[id]/route.ts @@ -0,0 +1,56 @@ +import { prisma } from "@/lib"; +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; + +export { DELETE }; +async function DELETE( + request: Request, + { params }: { params: { id: string } } +) { + if (request.method !== "DELETE") { + return NextResponse.json( + { success: false, message: "Method not allowed" }, + { status: 405 } + ); + } + try { + // Ambil parameter id dari URL + const { id } = params; + + if (!id) { + return NextResponse.json( + { + success: false, + message: "Parameter 'id' diperlukan", + }, + { status: 400 } + ); + } + + // Hapus data OTP + await prisma.kodeOtp.delete({ + where: { + id: id, + }, + }); + + return NextResponse.json( + { + success: true, + message: "Berhasil menghapus data OTP", + }, + { status: 200 } + ); + } catch (error) { + backendLogger.error("Error deleting OTP:", error); + return NextResponse.json( + { + success: false, + message: "Terjadi kesalahan saat menghapus data OTP", + }, + { status: 500 } + ); + } finally { + await prisma.$disconnect(); + } +} diff --git a/src/app/api/auth/login/route.ts b/src/app/api/auth/login/route.ts index 3aac1607..aae133d9 100644 --- a/src/app/api/auth/login/route.ts +++ b/src/app/api/auth/login/route.ts @@ -1,65 +1,68 @@ -import { prisma } from "@/app/lib"; +import { prisma } from "@/lib"; import { randomOTP } from "@/app_modules/auth/fun/rondom_otp"; +import backendLogger from "@/util/backendLogger"; import { NextResponse } from "next/server"; export async function POST(req: Request) { - if (req.method === "POST") { + if (req.method !== "POST") { + return NextResponse.json( + { success: false, message: "Method Not Allowed" }, + { status: 405 } + ); + } + + try { const codeOtp = randomOTP(); const body = await req.json(); const { nomor } = body; - try { - const res = await fetch( - `https://wa.wibudev.com/code?nom=${nomor}&text=HIPMI - Kode ini bersifat RAHASIA dan JANGAN DI BAGIKAN KEPADA SIAPAPUN, termasuk anggota ataupun pengurus HIPMI lainnya. + const createOtpId = await prisma.kodeOtp.create({ + data: { + nomor: nomor, + otp: codeOtp, + }, + }); + + if (!createOtpId) + return NextResponse.json( + { success: false, message: "Gagal mengirim kode OTP" }, + { status: 400 } + ); + + const res = await fetch( + `https://wa.wibudev.com/code?nom=${nomor}&text=HIPMI - Kode ini bersifat RAHASIA dan JANGAN DI BAGIKAN KEPADA SIAPAPUN, termasuk anggota ataupun pengurus HIPMI lainnya. \n >> Kode OTP anda: ${codeOtp}. ` + ); + + const sendWa = await res.json(); + + if (sendWa.status !== "success") + return NextResponse.json( + { success: false, message: "Nomor Whatsapp Tidak Aktif" }, + { status: 400 } ); - const sendWa = await res.json(); - if (sendWa.status !== "success") - return new Response( - JSON.stringify({ - success: false, - message: "Nomor Whatsapp Tidak Aktif", - }), - { status: 400 } - ); - - const createOtpId = await prisma.kodeOtp.create({ - data: { - nomor: nomor, - otp: codeOtp, - }, - }); - - if (!createOtpId) - return new Response( - JSON.stringify({ - success: false, - message: "Gagal Membuat Kode OTP", - }), - { status: 400 } - ); - - return new Response( - JSON.stringify({ - success: true, - message: "Kode Verifikasi Dikirim", - kodeId: createOtpId.id, - }), - { status: 200 } - ); - } catch (error) { - console.log(error); - return new Response( - JSON.stringify({ - success: false, - message: "Server Whatsapp Error !!", - }), - { status: 500 } - ); - } + return NextResponse.json( + { + success: true, + message: "Kode verifikasi terkirim", + kodeId: createOtpId.id, + }, + { status: 200 } + ); + } catch (error) { + backendLogger.log("Error Login", error); + return NextResponse.json( + { + success: false, + message: "Terjadi masalah saat login", + reason: error as Error, + }, + { status: 500 } + ); + } finally { + await prisma.$disconnect(); } - return NextResponse.json({ success: false }); } diff --git a/src/app/api/auth/logout/route-v.1.4.5t.xt b/src/app/api/auth/logout/route-v.1.4.5t.xt new file mode 100644 index 00000000..82982ce6 --- /dev/null +++ b/src/app/api/auth/logout/route-v.1.4.5t.xt @@ -0,0 +1,38 @@ +import { cookies } from "next/headers"; +import { NextResponse } from "next/server"; + +export const dynamic = "force-dynamic"; + +export async function GET() { + const sessionKey = process.env.NEXT_PUBLIC_BASE_SESSION_KEY!; // Gunakan environment variable yang tidak diekspos ke client-side + if (!sessionKey) { + return NextResponse.json( + { success: false, message: "Session key tidak ditemukan" }, + { status: 500 } + ); + } + + const cookieStore = cookies(); + const sessionCookie = cookieStore.get(sessionKey); + + if (!sessionCookie) { + return NextResponse.json( + { success: false, message: "Session tidak ditemukan" }, + { status: 400 } + ); + } + + try { + cookieStore.delete(sessionKey); + return NextResponse.json( + { success: true, message: "Logout berhasil" }, + { status: 200 } + ); + } catch (error) { + console.error("Gagal menghapus cookie:", error); + return NextResponse.json( + { success: false, message: "Gagal melakukan logout" }, + { status: 500 } + ); + } +} diff --git a/src/app/api/auth/logout/route.ts b/src/app/api/auth/logout/route.ts index 9a5356ff..8e338459 100644 --- a/src/app/api/auth/logout/route.ts +++ b/src/app/api/auth/logout/route.ts @@ -1,28 +1,46 @@ -import { prisma } from "@/app/lib"; import { cookies } from "next/headers"; -export async function GET(request: Request) { - const { searchParams } = new URL(request.url); - const id = searchParams.get("id"); +import { NextResponse } from "next/server"; - const delToken = await prisma.userSession.delete({ - where: { - userId: id as string, - }, +export const dynamic = "force-dynamic"; + +export async function GET() { + const sessionKey = process.env.NEXT_PUBLIC_BASE_SESSION_KEY!; + if (!sessionKey) { + return NextResponse.json( + { success: false, message: "Session key tidak ditemukan" }, + { status: 500 } + ); + } + + const cookieStore = cookies(); + const sessionCookie = cookieStore.get(sessionKey); + + if (!sessionCookie) { + return NextResponse.json( + { success: false, message: "Session tidak ditemukan" }, + { status: 400 } + ); + } + + try { + // Menghapus cookie dengan set maxAge 0 + cookieStore.set({ + name: sessionKey, + value: "", + path: "/", + maxAge: 0, }); - const del = cookies().delete(process.env.NEXT_PUBLIC_BASE_SESSION_KEY!); - return new Response(JSON.stringify({ success: true, message: "Logout Berhasil" }), {status: 200}); + return NextResponse.json({ + success: true, + message: "Logout berhasil", + + }); + } catch (error) { + console.error("Gagal menghapus cookie:", error); + return NextResponse.json( + { success: false, message: "Gagal melakukan logout" }, + { status: 500 } + ); + } } - -// import { cookies } from "next/headers"; -// import { NextResponse } from "next/server"; - -// export async function GET() { -// cookies().set({ -// name: "mySession", -// value: "", -// maxAge: 0, -// }); - -// return NextResponse.json({ status: 200, message: "Logout" }); -// } diff --git a/src/app/api/auth/register/route.ts b/src/app/api/auth/register/route.ts index 8410af4b..59049c88 100644 --- a/src/app/api/auth/register/route.ts +++ b/src/app/api/auth/register/route.ts @@ -1,8 +1,17 @@ -import { sessionCreate } from "@/app/auth/_lib/session_create"; -import prisma from "@/app/lib/prisma"; +import { sessionCreate } from "@/app/(auth)/_lib/session_create"; +import prisma from "@/lib/prisma"; +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; export async function POST(req: Request) { - if (req.method === "POST") { + if (req.method !== "POST") { + return NextResponse.json( + { success: false, message: "Method Not Allowed" }, + { status: 405 } + ); + } + + try { const { data } = await req.json(); const cekUsername = await prisma.user.findUnique({ @@ -12,58 +21,51 @@ export async function POST(req: Request) { }); if (cekUsername) - return new Response( - JSON.stringify({ - success: false, - message: "Username sudah digunakan", - }), - { status: 400 } - ); + return NextResponse.json({ + success: false, + message: "Username sudah digunakan", + }); const createUser = await prisma.user.create({ data: { username: data.username, nomor: data.nomor, + active: false, }, }); + if (!createUser) + return NextResponse.json( + { success: false, message: "Gagal Registrasi" }, + { status: 500 } + ); + const token = await sessionCreate({ sessionKey: process.env.NEXT_PUBLIC_BASE_SESSION_KEY!, encodedKey: process.env.NEXT_PUBLIC_BASE_TOKEN_KEY!, user: createUser as any, }); - try { - const createUserSession = await prisma.userSession.create({ - data: { - token: token as string, - userId: createUser.id, - }, - }); - - if (!createUserSession) - return new Response( - JSON.stringify({ - success: false, - message: "Gagal Membuat Session", - }), - { status: 400 } - ); - } catch (error) { - console.log(error); - } - - return new Response( - JSON.stringify({ + return NextResponse.json( + { success: true, - message: "Berhasil Login", - }), - - { status: 200 } + message: "Registrasi Berhasil, Anda Sedang Login", + token: token, + // data: createUser, + }, + { status: 201 } ); + } catch (error) { + backendLogger.error("Error registrasi:", error); + return NextResponse.json( + { + success: false, + message: "Maaf, Terjadi Keselahan", + reason: (error as Error).message, + }, + { status: 500 } + ); + } finally { + await prisma.$disconnect(); } - return new Response( - JSON.stringify({ success: false, message: "Method Not Allowed" }), - { status: 405 } - ); } diff --git a/src/app/api/auth/resend/route.ts b/src/app/api/auth/resend/route.ts index 3aac1607..c32f7e99 100644 --- a/src/app/api/auth/resend/route.ts +++ b/src/app/api/auth/resend/route.ts @@ -1,65 +1,72 @@ -import { prisma } from "@/app/lib"; +import { prisma } from "@/lib"; import { randomOTP } from "@/app_modules/auth/fun/rondom_otp"; +import backendLogger from "@/util/backendLogger"; import { NextResponse } from "next/server"; export async function POST(req: Request) { - if (req.method === "POST") { + if (req.method !== "POST") { + return NextResponse.json( + { success: false, message: "Method Not Allowed" }, + { status: 405 } + ); + } + + try { const codeOtp = randomOTP(); const body = await req.json(); const { nomor } = body; - try { - const res = await fetch( - `https://wa.wibudev.com/code?nom=${nomor}&text=HIPMI - Kode ini bersifat RAHASIA dan JANGAN DI BAGIKAN KEPADA SIAPAPUN, termasuk anggota ataupun pengurus HIPMI lainnya. + const res = await fetch( + `https://wa.wibudev.com/code?nom=${nomor}&text=HIPMI - Kode ini bersifat RAHASIA dan JANGAN DI BAGIKAN KEPADA SIAPAPUN, termasuk anggota ataupun pengurus HIPMI lainnya. \n >> Kode OTP anda: ${codeOtp}. ` - ); + ); - const sendWa = await res.json(); - if (sendWa.status !== "success") - return new Response( - JSON.stringify({ - success: false, - message: "Nomor Whatsapp Tidak Aktif", - }), - { status: 400 } - ); - - const createOtpId = await prisma.kodeOtp.create({ - data: { - nomor: nomor, - otp: codeOtp, - }, - }); - - if (!createOtpId) - return new Response( - JSON.stringify({ - success: false, - message: "Gagal Membuat Kode OTP", - }), - { status: 400 } - ); - - return new Response( - JSON.stringify({ - success: true, - message: "Kode Verifikasi Dikirim", - kodeId: createOtpId.id, - }), - { status: 200 } - ); - } catch (error) { - console.log(error); - return new Response( - JSON.stringify({ + const sendWa = await res.json(); + if (sendWa.status !== "success") + return NextResponse.json( + { success: false, - message: "Server Whatsapp Error !!", - }), - { status: 500 } + message: "Nomor Whatsapp Tidak Aktif", + }, + { status: 400 } ); - } + + const createOtpId = await prisma.kodeOtp.create({ + data: { + nomor: nomor, + otp: codeOtp, + }, + }); + + if (!createOtpId) + return NextResponse.json( + { + success: false, + message: "Gagal Membuat Kode OTP", + }, + { status: 400 } + ); + + return NextResponse.json( + { + success: true, + message: "Kode Verifikasi Dikirim", + kodeId: createOtpId.id, + }, + { status: 200 } + ); + } catch (error) { + backendLogger.error(" Error Resend OTP", error); + return NextResponse.json( + { + success: false, + message: "Server Whatsapp Error !!", + }, + { status: 500 } + ); + } finally { + await prisma.$disconnect(); } - return NextResponse.json({ success: false }); } diff --git a/src/app/api/auth/validasi/route.ts b/src/app/api/auth/validasi/route.ts index f865cc07..3959ad1c 100644 --- a/src/app/api/auth/validasi/route.ts +++ b/src/app/api/auth/validasi/route.ts @@ -1,13 +1,17 @@ -import { sessionCreate } from "@/app/auth/_lib/session_create"; -import prisma from "@/app/lib/prisma"; -import { ServerEnv } from "@/app/lib/server_env"; -import { sealData } from "iron-session"; -import { revalidatePath } from "next/cache"; -import { cookies } from "next/headers"; +import { sessionCreate } from "@/app/(auth)/_lib/session_create"; +import prisma from "@/lib/prisma"; +import backendLogger from "@/util/backendLogger"; import { NextResponse } from "next/server"; export async function POST(req: Request) { - if (req.method === "POST") { + if (req.method !== "POST") { + return NextResponse.json( + { success: false, message: "Method Not Allowed" }, + { status: 405 } + ); + } + + try { const { nomor } = await req.json(); const dataUser = await prisma.user.findUnique({ @@ -23,11 +27,10 @@ export async function POST(req: Request) { }, }); - - if (dataUser === null) - return new Response( - JSON.stringify({ success: false, message: "Nomor Belum Terdaftar" }), - { status: 404 } + if (dataUser == null) + return NextResponse.json( + { success: false, message: "Nomor Belum Terdaftar" }, + { status: 200 } ); const token = await sessionCreate({ @@ -36,72 +39,44 @@ export async function POST(req: Request) { user: dataUser as any, }); - const cekSessionUser = await prisma.userSession.findFirst({ - where: { - userId: dataUser.id, - }, - }); - - if (cekSessionUser !== null) { - await prisma.userSession.delete({ - where: { - userId: dataUser.id, - }, - }); + if (!token) { + return NextResponse.json( + { success: false, message: "Gagal membuat session" }, + { status: 500 } + ); } - - try { - const createUserSession = await prisma.userSession.create({ - data: { - token: token as string, - userId: dataUser.id, - }, - }); - - if (!createUserSession) - return new Response( - JSON.stringify({ success: false, message: "Gagal Membuat Session" }), - { status: 400 } - ); - } catch (error) { - console.log(error); - } - - // if (data) { - // const res = await sealData( - // JSON.stringify({ - // id: data.id, - // username: data.username, - // }), - // { - // password: ServerEnv.value?.WIBU_PWD as string, - // } - // ); - - // cookies().set({ - // name: "mySession", - // value: res, - // maxAge: 60 * 60 * 24 * 7, - // }); - - // revalidatePath("/dev/home"); - - // return NextResponse.json({ status: 200, data }); - // } - - // return NextResponse.json({ success: true }); - return new Response( - JSON.stringify({ + // Buat response dengan token dalam cookie + const response = NextResponse.json( + { success: true, message: "Berhasil Login", roleId: dataUser.masterUserRoleId, active: dataUser.active, - }), + token: token, + }, { status: 200 } ); + + // Set cookie dengan token yang sudah dipastikan tidak null + response.cookies.set(process.env.NEXT_PUBLIC_BASE_SESSION_KEY!, token, { + path: "/", + sameSite: "lax", + secure: process.env.NODE_ENV === "production", + maxAge: 30 * 24 * 60 * 60, // 30 hari dalam detik (1 bulan) + }); + + return response; + } catch (error) { + backendLogger.log("API Error or Server Error", error); + return NextResponse.json( + { + success: false, + message: "Maaf, Terjadi Keselahan", + reason: (error as Error).message, + }, + { status: 500 } + ); + } finally { + await prisma.$disconnect(); } - return new Response( - JSON.stringify({ success: false, message: "Method Not Allowed" }), - { status: 405 } - ); } diff --git a/src/app/api/check-cookies/route.ts b/src/app/api/check-cookies/route.ts index b02fce67..ebc446be 100644 --- a/src/app/api/check-cookies/route.ts +++ b/src/app/api/check-cookies/route.ts @@ -8,7 +8,7 @@ export async function GET(req: Request) { if (!c || !c?.value || _.isEmpty(c?.value) || _.isUndefined(c?.value)) { return NextResponse.json({ success: false }); - // return new Response(JSON.stringify({ success: false })); + } return NextResponse.json({ success: true }); } diff --git a/src/app/api/collaboration/[id]/chat/route.ts b/src/app/api/collaboration/[id]/chat/route.ts new file mode 100644 index 00000000..70614144 --- /dev/null +++ b/src/app/api/collaboration/[id]/chat/route.ts @@ -0,0 +1,72 @@ +// /app/api/collaboration/[id]/chat/route.ts + +import _ from "lodash"; +import { NextRequest, NextResponse } from "next/server"; +import prisma from "@/lib/prisma"; +import backendLogger from "@/util/backendLogger"; + +export const dynamic = "force-dynamic"; + +export { GET }; + +async function GET( + request: NextRequest, + { params }: { params: { id: string } } +) { + try { + const roomId = params.id; + const { searchParams } = new URL(request.url); + const cursor = searchParams.get("cursor"); // ini adalah `id` pesan terakhir dari client + const takeData =5 + + console.log("cursor", cursor); + + // Query dengan cursor + const messages = await prisma.projectCollaboration_Message.findMany({ + where: { + projectCollaboration_RoomChatId: roomId, + isActive: true, + id: cursor ? { lt: cursor } : undefined, // ambil yang lebih lama dari cursor + }, + orderBy: { + createdAt: "desc", // urutkan dari paling baru + }, + take: takeData, + select: { + id: true, + createdAt: true, + isActive: true, + message: true, + isFile: true, + User: { + select: { + id: true, + Profile: { + select: { + id: true, + name: true, + }, + }, + }, + }, + }, + }); + + return NextResponse.json({ + success: true, + message: "Berhasil mendapatkan data", + data: messages, + nextCursor: messages.length > 0 ? messages[messages.length - 1]?.id : null, + }); + } catch (error) { + console.error("Error get message by room id", error); + return NextResponse.json( + { + success: false, + message: "Gagal mendapatkan data", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/collaboration/[id]/message/route.ts b/src/app/api/collaboration/[id]/message/route.ts new file mode 100644 index 00000000..c661c468 --- /dev/null +++ b/src/app/api/collaboration/[id]/message/route.ts @@ -0,0 +1,71 @@ +import _ from "lodash"; +import { NextRequest, NextResponse } from "next/server"; +import prisma from "@/lib/prisma"; +import backendLogger from "@/util/backendLogger"; + +export const dynamic = "force-dynamic"; + +export { GET }; + +async function GET( + request: NextRequest, + { params }: { params: { id: string } } +) { + try { + const roomId = params.id; + const { searchParams } = new URL(request.url); + const page = searchParams.get("page"); + const takeData = 10; + const dataSkip = Number(page) * takeData - takeData; + + const getList = await prisma.projectCollaboration_Message.findMany({ + orderBy: { + createdAt: "desc", + }, + skip: dataSkip, + take: takeData, + where: { + projectCollaboration_RoomChatId: roomId, + }, + select: { + id: true, + createdAt: true, + isActive: true, + message: true, + isFile: true, + User: { + select: { + id: true, + Profile: { + select: { + id: true, + name: true, + }, + }, + }, + }, + }, + }); + + const dataReverse = _.reverse(getList); + + return NextResponse.json( + { + success: true, + message: "Berhasil mendapatkan data", + data: dataReverse, + }, + { status: 200 } + ); + } catch (error) { + console.error("Error get message by room id", error); + return NextResponse.json( + { + success: false, + message: "Gagal mendapatkan data", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/collaboration/[id]/room/route.ts b/src/app/api/collaboration/[id]/room/route.ts new file mode 100644 index 00000000..e2f69cfd --- /dev/null +++ b/src/app/api/collaboration/[id]/room/route.ts @@ -0,0 +1,68 @@ +import { NextResponse } from "next/server"; +import prisma from "@/lib/prisma"; + +export async function GET( + request: Request, + { params }: { params: { id: string } } +) { + try { + const roomId = params.id; + const getData = await prisma.projectCollaboration_RoomChat.findUnique({ + where: { + id: roomId, + }, + select: { + id: true, + name: true, + ProjectCollaboration: { + select: { + id: true, + isActive: true, + title: true, + lokasi: true, + purpose: true, + benefit: true, + createdAt: true, + ProjectCollaborationMaster_Industri: true, + Author: true, + }, + }, + ProjectCollaboration_AnggotaRoomChat: { + select: { + User: { + select: { + username: true, + id: true, + Profile: { + select: { + id: true, + name: true, + }, + }, + }, + }, + }, + }, + }, + }); + + return NextResponse.json( + { + success: true, + message: "Berhasil mendapatkan data", + data: getData, + }, + { status: 200 } + ); + } catch (error) { + console.error("Error get room by id", error); + return NextResponse.json( + { + success: false, + message: "Gagal mendapatkan data", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/collaboration/[id]/route.ts b/src/app/api/collaboration/[id]/route.ts new file mode 100644 index 00000000..f65ffa8c --- /dev/null +++ b/src/app/api/collaboration/[id]/route.ts @@ -0,0 +1,113 @@ +import { prisma } from "@/lib"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; + +export const dynamic = "force-dynamic"; + +export async function GET( + request: Request, + context: { params: { id: string } } +) { + try { + let fixData; + const { id } = context.params; + const { searchParams } = new URL(request.url); + const kategori = searchParams.get("kategori"); + const page = searchParams.get("page"); + const takeData = 10; + const dataSkip = Number(page) * takeData - takeData; + + // Buatkan api untuk list partisipasi + + const userLoginId = await funGetUserIdByToken(); + + if (userLoginId == null) { + return NextResponse.json( + { + success: false, + message: "Gagal mendapatkan data, user id tidak ada", + }, + { status: 500 } + ); + } + + if (kategori == "detail") { + fixData = await prisma.projectCollaboration.findFirst({ + where: { + id: id, + }, + select: { + id: true, + isActive: true, + title: true, + lokasi: true, + purpose: true, + benefit: true, + createdAt: true, + // jumlah_partisipan: true, + Author: { + select: { + id: true, + Profile: true, + }, + }, + ProjectCollaborationMaster_Industri: true, + ProjectCollaboration_Partisipasi: { + where: { + isActive: true, + }, + }, + }, + }); + } else if (kategori == "list_partisipan") { + fixData = await prisma.projectCollaboration_Partisipasi.findMany({ + take: takeData, + skip: dataSkip, + where: { + projectCollaborationId: id, + isActive: true, + }, + select: { + id: true, + User: { + select: { + id: true, + Profile: true, + }, + }, + deskripsi_diri: true, + }, + }); + } else if (kategori == "cek_partisipasi") { + const cek = await prisma.projectCollaboration_Partisipasi.findFirst({ + where: { + projectCollaborationId: id, + userId: userLoginId, + }, + }); + + if (cek === null) { + fixData = false; + } else { + fixData = true; + } + } + + return NextResponse.json( + { success: true, message: "Berhasil mendapatkan data", data: fixData }, + { status: 200 } + ); + } catch (error) { + backendLogger.error("Error get collaboration by id", error); + + return NextResponse.json( + { + success: false, + message: "Gagal mendapatkan data", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/collaboration/get/route.ts b/src/app/api/collaboration/get/route.ts new file mode 100644 index 00000000..fed7621d --- /dev/null +++ b/src/app/api/collaboration/get/route.ts @@ -0,0 +1,176 @@ +import { prisma } from "@/lib"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; + +export const dynamic = "force-dynamic"; + +export async function GET(request: Request) { + try { + let fixData; + + const { searchParams } = new URL(request.url); + const kategori = searchParams.get("kategori"); + const page = searchParams.get("page"); + + const takeData = 5; + const skipData = page ? Number(page) * takeData - takeData : 0; + + const userLoginId = await funGetUserIdByToken(); + + if (userLoginId == null) { + return NextResponse.json( + { + success: false, + message: "Gagal mendapatkan data, user id tidak ada", + }, + { status: 500 } + ); + } + + if (kategori == "beranda") { + fixData = await prisma.projectCollaboration.findMany({ + take: takeData, + skip: skipData, + orderBy: { + createdAt: "desc", + }, + where: { + projectCollaborationMaster_StatusId: 1, + isActive: true, + }, + select: { + id: true, + isActive: true, + title: true, + lokasi: true, + purpose: true, + benefit: true, + Author: { + select: { + id: true, + Profile: true, + }, + }, + ProjectCollaborationMaster_Industri: true, + ProjectCollaboration_Partisipasi: { + where: { + isActive: true, + }, + }, + }, + }); + } else if (kategori == "partisipasi") { + fixData = await prisma.projectCollaboration_Partisipasi.findMany({ + take: takeData, + skip: skipData, + orderBy: { + createdAt: "desc", + }, + where: { + userId: userLoginId, + isActive: true, + AND: { + ProjectCollaboration: { + isActive: true, + }, + }, + }, + select: { + id: true, + isActive: true, + ProjectCollaboration: { + select: { + id: true, + isActive: true, + title: true, + lokasi: true, + purpose: true, + benefit: true, + Author: { + select: { + id: true, + Profile: true, + }, + }, + ProjectCollaborationMaster_Industri: true, + ProjectCollaboration_Partisipasi: { + where: { + isActive: true, + }, + }, + }, + }, + }, + }); + } else if (kategori == "proyeksaya") { + fixData = await prisma.projectCollaboration.findMany({ + take: takeData, + skip: skipData, + orderBy: { createdAt: "desc" }, + where: { userId: userLoginId, isActive: true }, + select: { + id: true, + isActive: true, + title: true, + lokasi: true, + purpose: true, + benefit: true, + // jumlah_partisipan: true, + Author: { + select: { + id: true, + Profile: true, + }, + }, + ProjectCollaborationMaster_Industri: true, + ProjectCollaboration_Partisipasi: { + where: { + isActive: true, + }, + }, + }, + }); + } else if (kategori == "grup") { + fixData = await prisma.projectCollaboration_AnggotaRoomChat.findMany({ + take: takeData, + skip: skipData, + orderBy: { + createdAt: "desc", + }, + where: { + userId: userLoginId as string, + }, + select: { + ProjectCollaboration_RoomChat: { + select: { + id: true, + name: true, + isActive: true, + ProjectCollaboration_AnggotaRoomChat: { + select: { + User: true, + }, + }, + }, + }, + }, + }); + } + + return NextResponse.json( + { success: true, message: "Berhasil mendapatkan data", data: fixData }, + { status: 200 } + ); + } catch (error) { + backendLogger.error("Error get collaboration: ", error); + return NextResponse.json( + { + success: false, + message: "Gagal mendapatkan data", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/collaboration/group/[id]/route.ts b/src/app/api/collaboration/group/[id]/route.ts new file mode 100644 index 00000000..a477a713 --- /dev/null +++ b/src/app/api/collaboration/group/[id]/route.ts @@ -0,0 +1,82 @@ +import { prisma } from "@/lib"; +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; + +export const dynamic = "force-dynamic"; + +export async function GET( + request: Request, + context: { params: { id: string } } +) { + try { + let fixData; + const { id } = context.params; + const { searchParams } = new URL(request.url); + const kategori = searchParams.get("kategori"); + const page = searchParams.get("page"); + const takeData = 10; + const skipData = Number(page) * takeData - takeData; + + // data room { id, grup_name} + if (kategori == "detail") { + fixData = await prisma.projectCollaboration_RoomChat.findFirst({ + where: { + id: id, + }, + select: { + id: true, + name: true, + }, + }); + } else if (kategori == "info_group") { + fixData = await prisma.projectCollaboration_RoomChat.findFirst({ + where: { + id: id, + }, + select: { + id: true, + name: true, + ProjectCollaboration: { + select: { + id: true, + isActive: true, + title: true, + lokasi: true, + purpose: true, + benefit: true, + createdAt: true, + ProjectCollaborationMaster_Industri: true, + }, + }, + ProjectCollaboration_AnggotaRoomChat: { + select: { + User: { + select: { + id: true, + Profile: { + select: { + id: true, + name: true, + imageId: true, + }, + }, + }, + }, + }, + }, + }, + }); + } + + return NextResponse.json( + { success: true, message: "Berhasil mendapatkan data", data: fixData }, + { status: 200 } + ); + } catch (error) { + backendLogger.error("Gagal mendapatkan data", error); + return NextResponse.json( + { success: false, message: "Gagal mendapatkan data" }, + { status: 500 } + ); + } +} diff --git a/src/app/api/collaboration/master/route.ts b/src/app/api/collaboration/master/route.ts new file mode 100644 index 00000000..ddc78eb7 --- /dev/null +++ b/src/app/api/collaboration/master/route.ts @@ -0,0 +1,20 @@ +import { prisma } from "@/lib"; +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; + +export const dynamic = "force-dynamic"; +export async function GET(request: Request) { + try { + const data = await prisma.projectCollaborationMaster_Industri.findMany({}); + return NextResponse.json( + { success: true, message: "Berhasil mendapatkan data", data: data }, + { status: 200 } + ); + } catch (error) { + backendLogger.error("Master Collaboration:=========>", error); + return NextResponse.json( + { success: false, message: "Gagal mendapatkan data" }, + { status: 500 } + ); + } +} diff --git a/src/app/api/donasi/[id]/cerita-penggalang/route.ts b/src/app/api/donasi/[id]/cerita-penggalang/route.ts new file mode 100644 index 00000000..a2f2468f --- /dev/null +++ b/src/app/api/donasi/[id]/cerita-penggalang/route.ts @@ -0,0 +1,34 @@ +import { NextResponse } from "next/server"; +import prisma from "@/lib/prisma"; + +export { GET }; + +async function GET(req: Request, { params }: { params: { id: string } }) { + try { + const donasiId = params.id; + const data = await prisma.donasi_Cerita.findFirst({ + where: { + donasiId: donasiId, + }, + select: { + id: true, + pembukaan: true, + cerita: true, + imageCeritaDonasi: true, + createdAt: true, + imageId: true, + }, + }); + return NextResponse.json({ + success: true, + message: "Data berhasil diambil", + data: data, + }); + } catch (error) { + return NextResponse.json({ + success: false, + message: "Terjadi kesalahan saat mengambil data", + reason: error as Error, + }); + } +} diff --git a/src/app/api/donasi/[id]/donatur/route.ts b/src/app/api/donasi/[id]/donatur/route.ts new file mode 100644 index 00000000..7ad885b4 --- /dev/null +++ b/src/app/api/donasi/[id]/donatur/route.ts @@ -0,0 +1,106 @@ +import prisma from "@/lib/prisma"; +import { NextResponse } from "next/server"; + +export async function GET( + request: Request, + { params }: { params: { id: string } } +) { + try { + let fixData; + const { id } = params; + const { searchParams } = new URL(request.url); + const page = Number(searchParams.get("page")); + const takeData = 10; + const skipData = page * takeData - takeData; + + if (!page) { + fixData = await prisma.donasi_Invoice.findMany({ + orderBy: { + createdAt: "desc", + }, + where: { + donasiId: id, + donasiMaster_StatusInvoiceId: "1", + }, + select: { + id: true, + createdAt: true, + updatedAt: true, + nominal: true, + DonasiMaster_StatusInvoice: true, + donasiMaster_StatusInvoiceId: true, + Author: true, + Donasi: { + select: { + id: true, + title: true, + target: true, + progres: true, + authorId: true, + imagesId: true, + publishTime: true, + donasiMaster_KategoriId: true, + donasiMaster_DurasiId: true, + donasiMaster_StatusDonasiId: true, + imageDonasi: true, + DonasiMaster_Ketegori: true, + DonasiMaster_Durasi: true, + DonasiMaster_Status: true, + }, + }, + }, + }); + } else { + fixData = await prisma.donasi_Invoice.findMany({ + take: takeData, + skip: skipData, + orderBy: { + createdAt: "desc", + }, + where: { + donasiId: id, + donasiMaster_StatusInvoiceId: "1", + }, + select: { + id: true, + createdAt: true, + updatedAt: true, + nominal: true, + DonasiMaster_StatusInvoice: true, + donasiMaster_StatusInvoiceId: true, + Author: true, + Donasi: { + select: { + id: true, + title: true, + target: true, + progres: true, + authorId: true, + imagesId: true, + publishTime: true, + donasiMaster_KategoriId: true, + donasiMaster_DurasiId: true, + donasiMaster_StatusDonasiId: true, + imageDonasi: true, + DonasiMaster_Ketegori: true, + DonasiMaster_Durasi: true, + DonasiMaster_Status: true, + }, + }, + }, + }); + } + + return NextResponse.json({ + success: true, + message: "Data berhasil diambil", + data: fixData, + }); + } catch (error) { + return NextResponse.json({ + success: false, + message: "Terjadi kesalahan saat mengambil data", + reason: error as Error, + }); + } +} diff --git a/src/app/api/donasi/[id]/invoice/count/route.ts b/src/app/api/donasi/[id]/invoice/count/route.ts new file mode 100644 index 00000000..a4496f2e --- /dev/null +++ b/src/app/api/donasi/[id]/invoice/count/route.ts @@ -0,0 +1,31 @@ +import { NextResponse } from "next/server"; +import { prisma } from "@/lib"; + +export async function GET( + request: Request, + { params }: { params: { id: string } } +) { + try { + const { id } = params; + const data = await prisma.donasi_Invoice.count({ + where: { + donasiId: id, + donasiMaster_StatusInvoiceId: { + equals: "1", + }, + }, + }); + + return NextResponse.json({ + success: true, + message: "Data berhasil diambil", + data: data, + }); + } catch (error) { + return NextResponse.json({ + success: false, + message: "Terjadi kesalahan saat mengambil data", + reason: (error as Error).message || error, + }); + } +} diff --git a/src/app/api/donasi/[id]/invoice/route.ts b/src/app/api/donasi/[id]/invoice/route.ts new file mode 100644 index 00000000..29293a2a --- /dev/null +++ b/src/app/api/donasi/[id]/invoice/route.ts @@ -0,0 +1,72 @@ +import { NextResponse } from "next/server"; +import { prisma } from "@/lib"; + +export async function GET( + request: Request, + { params }: { params: { id: string } } +) { + try { + const { id } = params; + const data = await prisma.donasi_Invoice.findFirst({ + where: { + id: id, + }, + select: { + id: true, + authorId: true, + nominal: true, + donasiId: true, + createdAt: true, + donasiMaster_BankId: true, + donasiMaster_StatusInvoiceId: true, + Donasi: { + select: { + id: true, + title: true, + target: true, + active: true, + createdAt: true, + updatedAt: true, + publishTime: true, + catatan: true, + progres: true, + terkumpul: true, + authorId: true, + imagesId: true, + donasiMaster_KategoriId: true, + donasiMaster_DurasiId: true, + donasiMaster_StatusDonasiId: true, + Author: true, + imageDonasi: true, + CeritaDonasi: true, + DonasiMaster_Ketegori: true, + DonasiMaster_Durasi: true, + DonasiMaster_Status: true, + imageId: true, + }, + }, + DonasiMaster_Bank: true, + DonasiMaster_StatusInvoice: true, + }, + }); + + if (!data) { + return NextResponse.json({ + success: false, + message: "Data tidak ditemukan", + }); + } + + return NextResponse.json({ + success: true, + message: "Data berhasil diambil", + data: data, + }); + } catch (error) { + return NextResponse.json({ + success: false, + message: "Terjadi kesalahan saat mengambil data", + reason: (error as Error).message || error, + }); + } +} \ No newline at end of file diff --git a/src/app/api/donasi/[id]/pencairan-dana/route.ts b/src/app/api/donasi/[id]/pencairan-dana/route.ts new file mode 100644 index 00000000..4456b51f --- /dev/null +++ b/src/app/api/donasi/[id]/pencairan-dana/route.ts @@ -0,0 +1,52 @@ +import { NextResponse } from "next/server"; +import { prisma } from "@/lib"; + +export const dynamic = "force-dynamic"; + +export async function GET( + request: Request, + { params }: { params: { id: string } } +) { + try { + let fixData; + const { id } = params; + const { searchParams } = new URL(request.url); + const page = Number(searchParams.get("page")); + const takeData = 5 + const skipData = page * takeData - takeData; + + if (!page) { + fixData = await prisma.donasi_PencairanDana.findMany({ + orderBy: { + createdAt: "asc", + }, + where: { + donasiId: id, + }, + }); + } else { + fixData = await prisma.donasi_PencairanDana.findMany({ + take: takeData, + skip: skipData, + orderBy: { + createdAt: "asc", + }, + where: { + donasiId: id, + }, + }); + } + + return NextResponse.json({ + success: true, + message: "Data berhasil diambil", + data: fixData, + }); + } catch (error) { + return NextResponse.json({ + success: false, + message: "Terjadi kesalahan saat mengambil data", + reason: error as Error, + }); + } +} diff --git a/src/app/api/donasi/[id]/penggalang-dana/route.ts b/src/app/api/donasi/[id]/penggalang-dana/route.ts new file mode 100644 index 00000000..1c4c6d23 --- /dev/null +++ b/src/app/api/donasi/[id]/penggalang-dana/route.ts @@ -0,0 +1,73 @@ +import { NextResponse } from "next/server"; +import { prisma } from "@/lib"; + +export async function GET( + request: Request, + { params }: { params: { id: string } } +) { + try { + const { id } = params; + const data = await prisma.user.findFirst({ + where: { + id: id, + }, + select: { + id: true, + username: true, + nomor: true, + Profile: { + select: { + id: true, + name: true, + email: true, + imageId: true, + }, + }, + Donasi: { + orderBy: { + createdAt: "desc", + }, + where: { + donasiMaster_StatusDonasiId: "1", + }, + select: { + id: true, + title: true, + target: true, + active: true, + createdAt: true, + updatedAt: true, + publishTime: true, + catatan: true, + authorId: true, + progres: true, + terkumpul: true, + imagesId: true, + donasiMaster_KategoriId: true, + donasiMaster_DurasiId: true, + donasiMaster_StatusDonasiId: true, + Author: true, + imageDonasi: true, + CeritaDonasi: true, + DonasiMaster_Ketegori: true, + DonasiMaster_Durasi: true, + DonasiMaster_Status: true, + imageId: true, + }, + }, + }, + }); + + return NextResponse.json({ + success: true, + message: "Data berhasil diambil", + data: data, + }); + } catch (error) { + return NextResponse.json({ + success: false, + message: "Terjadi kesalahan saat mengambil data", + reason: error as Error, + }); + } +} diff --git a/src/app/api/donasi/[id]/route.ts b/src/app/api/donasi/[id]/route.ts new file mode 100644 index 00000000..3d5f7f47 --- /dev/null +++ b/src/app/api/donasi/[id]/route.ts @@ -0,0 +1,88 @@ +import { prisma } from "@/lib"; +import { NextResponse } from "next/server"; +export const dynamic = "force-dynamic"; + +// GET ONE DATA DONASI +export async function GET( + request: Request, + context: { params: { id: string } } +) { + try { + let dataFix; + const { id } = context.params; + const { searchParams } = new URL(request.url); + const kategori = searchParams.get("cat"); + + if (kategori == "semua") { + dataFix = await prisma.donasi.findFirst({ + where: { + id: id, + }, + include: { + Author: true, + imageDonasi: true, + CeritaDonasi: true, + DonasiMaster_Ketegori: true, + DonasiMaster_Durasi: true, + DonasiMaster_Status: true, + Donasi_Invoice: true, + Donasi_Kabar: true, + Donasi_PencairanDana: true, + }, + }); + } else if (kategori == "count") { + dataFix = await prisma.donasi_Invoice.count({ + where: { + donasiId: id, + donasiMaster_StatusInvoiceId: { + equals: "1", + }, + }, + }); + } else { + let tampil; + if (kategori == "author") { + tampil = { + authorId: true, + Author: { + select: { + username: true, + }, + }, + }; + } else if (kategori == "cerita") { + tampil = { + id: true, + createdAt: true, + CeritaDonasi: { + select: { + cerita: true, + }, + }, + }; + } + + dataFix = await prisma.donasi.findFirst({ + where: { + id: id, + }, + select: tampil, + }); + } + + return NextResponse.json( + { success: true, message: "Berhasil mendapatkan data", data: dataFix }, + { status: 200 } + ); + } catch (error) { + console.error(error); + return NextResponse.json( + { + success: false, + message: "Gagal mendapatkan data, coba lagi nanti ", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/donasi/[id]/temporary-create/route.ts b/src/app/api/donasi/[id]/temporary-create/route.ts new file mode 100644 index 00000000..0c286ad6 --- /dev/null +++ b/src/app/api/donasi/[id]/temporary-create/route.ts @@ -0,0 +1,28 @@ +import { NextResponse } from "next/server"; +import { prisma } from "@/lib"; + +export async function GET( + request: Request, + { params }: { params: { id: string } } +) { + try { + const { id } = params; + const data = await prisma.donasi_TemporaryCreate.findFirst({ + where: { + id: id, + }, + }); + + return NextResponse.json({ + success: true, + message: "Data berhasil diambil", + data: data, + }); + } catch (error) { + return NextResponse.json({ + success: false, + message: "Terjadi kesalahan saat mengambil data", + reason: error as Error, + }); + } +} diff --git a/src/app/api/donasi/gambar/[id]/route.ts b/src/app/api/donasi/gambar/[id]/route.ts index 1bf25d16..e881370b 100644 --- a/src/app/api/donasi/gambar/[id]/route.ts +++ b/src/app/api/donasi/gambar/[id]/route.ts @@ -1,4 +1,4 @@ -import prisma from "@/app/lib/prisma"; +import prisma from "@/lib/prisma"; import fs from "fs"; import { NextRequest, NextResponse } from "next/server"; diff --git a/src/app/api/donasi/gambar_bukti_transfer/[id]/route.ts b/src/app/api/donasi/gambar_bukti_transfer/[id]/route.ts index c560690a..3564caac 100644 --- a/src/app/api/donasi/gambar_bukti_transfer/[id]/route.ts +++ b/src/app/api/donasi/gambar_bukti_transfer/[id]/route.ts @@ -1,4 +1,4 @@ -import prisma from "@/app/lib/prisma"; +import prisma from "@/lib/prisma"; import fs from "fs"; import { NextRequest, NextResponse } from "next/server"; diff --git a/src/app/api/donasi/gambar_cerita/[id]/route.ts b/src/app/api/donasi/gambar_cerita/[id]/route.ts index 26728087..8e46967a 100644 --- a/src/app/api/donasi/gambar_cerita/[id]/route.ts +++ b/src/app/api/donasi/gambar_cerita/[id]/route.ts @@ -1,4 +1,4 @@ -import prisma from "@/app/lib/prisma"; +import prisma from "@/lib/prisma"; import fs from "fs"; import { NextRequest, NextResponse } from "next/server"; diff --git a/src/app/api/donasi/gambar_kabar/[id]/route.ts b/src/app/api/donasi/gambar_kabar/[id]/route.ts index 97c277df..07a3492b 100644 --- a/src/app/api/donasi/gambar_kabar/[id]/route.ts +++ b/src/app/api/donasi/gambar_kabar/[id]/route.ts @@ -1,4 +1,4 @@ -import prisma from "@/app/lib/prisma"; +import prisma from "@/lib/prisma"; import fs from "fs"; import { NextRequest, NextResponse } from "next/server"; diff --git a/src/app/api/donasi/gambar_pencairan/[id]/route.ts b/src/app/api/donasi/gambar_pencairan/[id]/route.ts index 69ff5739..0d1660e6 100644 --- a/src/app/api/donasi/gambar_pencairan/[id]/route.ts +++ b/src/app/api/donasi/gambar_pencairan/[id]/route.ts @@ -1,4 +1,4 @@ -import prisma from "@/app/lib/prisma"; +import prisma from "@/lib/prisma"; import fs from "fs"; import { NextRequest, NextResponse } from "next/server"; diff --git a/src/app/api/donasi/kabar/[id]/list/route.ts b/src/app/api/donasi/kabar/[id]/list/route.ts new file mode 100644 index 00000000..6bd2cd6e --- /dev/null +++ b/src/app/api/donasi/kabar/[id]/list/route.ts @@ -0,0 +1,58 @@ +import { prisma } from "@/lib"; +import { NextResponse } from "next/server"; + +export async function GET( + request: Request, + { params }: { params: { id: string } } +) { + try { + let fixData; + const { id } = params; + const { searchParams } = new URL(request.url); + const page = Number(searchParams.get("page")); + const takeData = 10; + const skipData = page * takeData - takeData; + + if (!page) { + fixData = await prisma.donasi_Kabar.findMany({ + where: { + donasiId: id, + active: true, + }, + select: { + id: true, + title: true, + deskripsi: true, + createdAt: true, + }, + }); + } else { + fixData = await prisma.donasi_Kabar.findMany({ + take: takeData, + skip: skipData, + where: { + donasiId: id, + active: true, + }, + select: { + id: true, + title: true, + deskripsi: true, + createdAt: true, + }, + }); + } + + return NextResponse.json({ + success: true, + message: "Data berhasil diambil", + data: fixData, + }); + } catch (error) { + return NextResponse.json({ + success: false, + message: "Terjadi kesalahan saat mengambil data", + reason: error as Error, + }); + } +} diff --git a/src/app/api/donasi/kabar/[id]/route.ts b/src/app/api/donasi/kabar/[id]/route.ts new file mode 100644 index 00000000..c6999e57 --- /dev/null +++ b/src/app/api/donasi/kabar/[id]/route.ts @@ -0,0 +1,28 @@ +import { NextResponse } from "next/server"; +import { prisma } from "@/lib"; + +export async function GET( + request: Request, + { params }: { params: { id: string } } +) { + try { + const { id } = params; + const data = await prisma.donasi_Kabar.findFirst({ + where: { + id: id, + }, + }); + + return NextResponse.json({ + success: true, + message: "Data berhasil diambil", + data: data, + }); + } catch (error) { + return NextResponse.json({ + success: false, + message: "Terjadi kesalahan saat mengambil data", + reason: error as Error, + }); + } +} diff --git a/src/app/api/event/[id]/konfirmasi/route.ts b/src/app/api/event/[id]/konfirmasi/route.ts new file mode 100644 index 00000000..d821a9da --- /dev/null +++ b/src/app/api/event/[id]/konfirmasi/route.ts @@ -0,0 +1,98 @@ +import { event_getOneById } from "@/app_modules/event/fun/get/get_one_by_id"; +import { NextResponse } from "next/server"; +import { prisma } from "@/lib"; + +export async function GET( + request: Request, + { params }: { params: { id: string } } +) { + try { + const { id } = params; + let fixData; + const { searchParams } = new URL(request.url); + const userId = searchParams.get("userId"); + + const checkDataEvent = await prisma.event.findUnique({ + where: { + id: id, + }, + select: { + id: true, + title: true, + tanggal: true, + tanggalSelesai: true, + lokasi: true, + Author: { + select: { + id: true, + username: true, + Profile: { + select: { + id: true, + name: true, + }, + }, + }, + }, + }, + }); + + if (!checkDataEvent) { + return NextResponse.json( + { message: "Event Not Found", response: null }, + { status: 400 } + ); + } + + let peserta; + const checkPeserta = await prisma.event_Peserta.findFirst({ + where: { + userId: userId, + eventId: id, + }, + }); + + if (checkPeserta) { + peserta = true; + } else { + peserta = false; + } + + let kehadiran; + const checkKehadiran = await prisma.event_Peserta.findFirst({ + where: { + userId: userId, + eventId: id, + }, + select: { + isPresent: true, + }, + }); + + if (checkKehadiran?.isPresent) { + kehadiran = true; + } else { + kehadiran = false; + } + + fixData = { + dataEvent: checkDataEvent, + peserta: peserta, + kehadiran: kehadiran, + }; + + return NextResponse.json( + { message: "Event Found", res: fixData }, + { status: 200 } + ); + } catch (error) { + return NextResponse.json( + { + message: "Error get data event", + response: null, + error: (error as Error).message || error, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/event/[id]/route.ts b/src/app/api/event/[id]/route.ts new file mode 100644 index 00000000..81849514 --- /dev/null +++ b/src/app/api/event/[id]/route.ts @@ -0,0 +1,48 @@ +import { prisma } from "@/lib"; +import { NextResponse } from "next/server"; + +export async function GET( + request: Request, + context: { params: { id: string } } +) { + const method = request.method; + if (method !== "GET") { + return NextResponse.json( + { success: false, message: "Method not allowed" }, + { status: 405 } + ); + } + + try { + let fixData; + const { id } = context.params; + + fixData = await prisma.event.findUnique({ + where: { + id: id, + }, + include: { + Author: { + include: { + Profile: true, + }, + }, + EventMaster_TipeAcara: true, + EventMaster_Status: true, + }, + }); + + return NextResponse.json({ + success: true, + message: "Berhasil mendapatkan data", + data: fixData, + }); + } catch (error) { + return NextResponse.json( + { success: false, message: "Gagal mendapatkan data" }, + { status: 500 } + ); + } finally { + await prisma.$disconnect(); + } +} diff --git a/src/app/api/event/check-kehadiran/route.ts b/src/app/api/event/check-kehadiran/route.ts new file mode 100644 index 00000000..b0ecbf78 --- /dev/null +++ b/src/app/api/event/check-kehadiran/route.ts @@ -0,0 +1,23 @@ +import { event_funCheckKehadiran } from "@/app_modules/event/fun"; +import { NextResponse } from "next/server"; + +export async function GET(request: Request) { + const method = request.method; + if (method !== "GET") { + return NextResponse.json( + { success: false, message: "Method not allowed" }, + { status: 405 } + ); + } + + const { searchParams } = new URL(request.url); + const userId = searchParams.get("userId"); + const eventId = searchParams.get("eventId"); + + const res = await event_funCheckKehadiran({ + eventId: eventId as string, + userId: userId as string, + }); + + return NextResponse.json(res, { status: 200 }); +} diff --git a/src/app/api/event/check-peserta/route.ts b/src/app/api/event/check-peserta/route.ts new file mode 100644 index 00000000..4333609f --- /dev/null +++ b/src/app/api/event/check-peserta/route.ts @@ -0,0 +1,50 @@ +import { prisma } from "@/lib"; +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; + +export async function GET(request: Request) { + const method = request.method; + if (method !== "GET") { + return NextResponse.json( + { success: false, message: "Method not allowed" }, + { status: 405 } + ); + } + + try { + let fixData; + const { searchParams } = new URL(request.url); + const userId = searchParams.get("userId"); + const eventId = searchParams.get("eventId"); + + const check = await prisma.event_Peserta.findFirst({ + where: { + userId: userId, + eventId: eventId, + }, + }); + + if (check) { + fixData = true; + } else { + fixData = false; + } + + await prisma.$disconnect(); + return NextResponse.json( + { success: true, message: "Success get data", data: fixData }, + { status: 200 } + ); + } catch (error) { + await prisma.$disconnect(); + backendLogger.error("Error get data detail event:", error); + return NextResponse.json( + { + success: false, + message: "Gagal mendapatkan data", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/event/get-all/route.ts b/src/app/api/event/get-all/route.ts new file mode 100644 index 00000000..33e9c89a --- /dev/null +++ b/src/app/api/event/get-all/route.ts @@ -0,0 +1,12 @@ +import { event_getListAllPublish } from "@/app_modules/event/fun/get/get_list_all_publish"; +import { toNumber } from "lodash"; +import { NextResponse } from "next/server"; + +export async function GET(params: Request) { + const { searchParams } = new URL(params.url); + const page = searchParams.get("page"); + + const data = await event_getListAllPublish({ page: toNumber(page) }); + + return NextResponse.json({ data }); +} diff --git a/src/app/api/event/get-one-by-id/route.ts b/src/app/api/event/get-one-by-id/route.ts new file mode 100644 index 00000000..7ab66fac --- /dev/null +++ b/src/app/api/event/get-one-by-id/route.ts @@ -0,0 +1,21 @@ +import { event_getOneById } from "@/app_modules/event/fun/get/get_one_by_id"; +import { NextResponse } from "next/server"; + +export async function GET(params: Request) { + const { searchParams } = new URL(params.url); + const eventId = searchParams.get("eventId"); + + const res = await event_getOneById(eventId as string); + + if (!res) { + return NextResponse.json( + { message: "Event Not Found", data: null }, + { status: 404 } + ); + } + + return NextResponse.json( + { message: "Event Found", data: res }, + { status: 200 } + ); +} diff --git a/src/app/api/event/kontribusi/route.ts b/src/app/api/event/kontribusi/route.ts new file mode 100644 index 00000000..449ea9fa --- /dev/null +++ b/src/app/api/event/kontribusi/route.ts @@ -0,0 +1,133 @@ +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; +import prisma from "@/lib/prisma"; + +export { GET }; + +async function GET(request: Request) { + try { + let fixData; + const { searchParams } = new URL(request.url); + const page = searchParams.get("page"); + const takeData = 5; + const skipData = Number(page) * takeData - takeData; + + const userLoginId = await funGetUserIdByToken(); + if (!userLoginId) { + return NextResponse.json( + { + success: false, + message: "Gagal mendapatkan data", + reason: "User not found", + }, + { + status: 401, + } + ); + } + + if (!page) { + fixData = await prisma.event_Peserta.findMany({ + orderBy: { + createdAt: "desc", + }, + where: { + userId: userLoginId, + }, + select: { + id: true, + Event: { + select: { + id: true, + title: true, + tanggal: true, + deskripsi: true, + Author: { + select: { + Profile: true, + }, + }, + Event_Peserta: { + take: 5, + orderBy: { + createdAt: "desc", + }, + select: { + id: true, + userId: true, + User: { + select: { + Profile: true, + }, + }, + }, + }, + }, + }, + }, + }); + } else { + fixData = await prisma.event_Peserta.findMany({ + take: takeData, + skip: skipData, + orderBy: { + createdAt: "desc", + }, + where: { + userId: userLoginId, + }, + select: { + id: true, + Event: { + select: { + id: true, + title: true, + tanggal: true, + deskripsi: true, + Author: { + select: { + Profile: true, + }, + }, + Event_Peserta: { + take: 5, + orderBy: { + createdAt: "desc", + }, + select: { + id: true, + userId: true, + User: { + select: { + Profile: true, + }, + }, + }, + }, + }, + }, + }, + }); + } + + return NextResponse.json( + { + success: true, + message: "Success get kontribusi", + data: fixData, + }, + { status: 200 } + ); + } catch (error) { + backendLogger.error("Error get kontribusi", error); + return NextResponse.json( + { + success: false, + message: "Failed get kontribusi", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/event/list-peserta/route.ts b/src/app/api/event/list-peserta/route.ts new file mode 100644 index 00000000..be0037a6 --- /dev/null +++ b/src/app/api/event/list-peserta/route.ts @@ -0,0 +1,16 @@ +import { event_newGetListPesertaById } from "@/app_modules/event/fun"; +import { toNumber } from "lodash"; +import { NextResponse } from "next/server"; + +export async function GET(req: Request) { + const { searchParams } = new URL(req.url); + const eventId = searchParams.get("eventId"); + const page = searchParams.get("page"); + + const res = await event_newGetListPesertaById({ + eventId: eventId as string, + page: toNumber(page), + }); + + return NextResponse.json(res, { status: 200 }); +} diff --git a/src/app/api/event/peserta/[id]/route.ts b/src/app/api/event/peserta/[id]/route.ts new file mode 100644 index 00000000..6223fa9d --- /dev/null +++ b/src/app/api/event/peserta/[id]/route.ts @@ -0,0 +1,67 @@ +import { prisma } from "@/lib"; +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; + +export async function GET( + request: Request, + context: { params: { id: string } } +) { + const method = request.method; + if (method !== "GET") { + return NextResponse.json( + { success: false, message: "Method not allowed" }, + { status: 405 } + ); + } + + try { + let fixData; + const { id } = context.params; + const { searchParams } = new URL(request.url); + const page = searchParams.get("page"); + const takeData = 10; + const skipData = Number(page) * takeData - takeData; + + fixData = await prisma.event_Peserta.findMany({ + take: takeData, + skip: skipData, + orderBy: { + updatedAt: "desc", + }, + where: { + eventId: id, + }, + select: { + id: true, + active: true, + createdAt: true, + updatedAt: true, + userId: true, + isPresent: true, + User: { + select: { + Profile: true, + }, + }, + Event: true, + eventId: true, + }, + }); + + return NextResponse.json({ + success: true, + message: "Success get data", + data: fixData, + }); + } catch (error) { + backendLogger.error("Error get list data:", error); + return NextResponse.json( + { + success: false, + message: "Failed get data", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/event/riwayat/[name]/route.ts b/src/app/api/event/riwayat/[name]/route.ts new file mode 100644 index 00000000..e415dec0 --- /dev/null +++ b/src/app/api/event/riwayat/[name]/route.ts @@ -0,0 +1,154 @@ +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; +import prisma from "@/lib/prisma"; + +export { GET }; + +interface Props { + params: { name: string }; +} +async function GET(request: Request, { params }: Props) { + try { + let fixData; + const { name } = params; + const { searchParams } = new URL(request.url); + const page = searchParams.get("page"); + const takeData = 5; + const skipData = Number(page) * takeData - takeData; + + const userLoginId = await funGetUserIdByToken(); + if (!userLoginId) { + return NextResponse.json( + { + success: false, + message: "Gagal mendapatkan data", + reason: "Unauthorized", + }, + { + status: 401, + } + ); + } + + if (!page) { + if (name == "saya") { + fixData = await prisma.event.findMany({ + orderBy: { + tanggal: "desc", + }, + where: { + authorId: userLoginId, + eventMaster_StatusId: "1", + isArsip: true, + }, + select: { + id: true, + title: true, + tanggal: true, + deskripsi: true, + active: true, + authorId: true, + Author: { + select: { + Profile: true, + }, + }, + }, + }); + } else if (name === "semua") { + fixData = await prisma.event.findMany({ + orderBy: { + tanggal: "desc", + }, + where: { + eventMaster_StatusId: "1", + isArsip: true, + }, + select: { + id: true, + title: true, + tanggal: true, + deskripsi: true, + active: true, + authorId: true, + Author: { + select: { + Profile: true, + }, + }, + }, + }); + } + } else { + if (name == "saya") { + fixData = await prisma.event.findMany({ + take: takeData, + skip: skipData, + orderBy: { + tanggal: "desc", + }, + where: { + authorId: userLoginId, + eventMaster_StatusId: "1", + isArsip: true, + }, + select: { + id: true, + title: true, + tanggal: true, + deskripsi: true, + active: true, + authorId: true, + Author: { + select: { + Profile: true, + }, + }, + }, + }); + } else if (name === "semua") { + fixData = await prisma.event.findMany({ + take: takeData, + skip: skipData, + orderBy: { + tanggal: "desc", + }, + where: { + eventMaster_StatusId: "1", + isArsip: true, + }, + select: { + id: true, + title: true, + tanggal: true, + deskripsi: true, + active: true, + authorId: true, + Author: { + select: { + Profile: true, + }, + }, + }, + }); + } + } + + return NextResponse.json({ + success: true, + message: "Berhasil mendapatkan data", + data: fixData, + }); + } catch (error) { + backendLogger.error("Error get riwayat", error); + return NextResponse.json( + { + success: false, + message: "Error get data", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/event/sponsor/[id]/route.ts b/src/app/api/event/sponsor/[id]/route.ts new file mode 100644 index 00000000..9860ed0d --- /dev/null +++ b/src/app/api/event/sponsor/[id]/route.ts @@ -0,0 +1,106 @@ +import { prisma } from "@/lib"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; +import { IEventSponsor } from "@/app_modules/event/_lib/interface"; +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; + +export async function POST( + request: Request, + context: { params: { id: string } } +) { + const method = request.method; + if (method !== "POST") { + return NextResponse.json( + { success: false, message: "Method not allowed" }, + { status: 405 } + ); + } + + const userLoginId = await funGetUserIdByToken(); + + if (!userLoginId) { + return NextResponse.json( + { success: false, message: "User not found" }, + { status: 401 } + ); + } + + try { + let fixData; + const { id } = context.params; + const req: IEventSponsor = await request.json(); + + fixData = await prisma.eventSponsor.create({ + data: { + eventId: id, + name: req.name as string, + fileName: req.fileName as string, + fileExt: req.fileExt as string, + fileId: req.fileId as string, + // authorId: userLoginId, + }, + }); + + await prisma.$disconnect(); + return NextResponse.json({ + success: true, + message: "Success create sponsor", + }); + } catch (error) { + await prisma.$disconnect(); + backendLogger.error("Error create sponsor event", error); + return NextResponse.json( + { success: false, message: "Failed create sponsor" }, + { status: 500 } + ); + } +} + +export async function GET( + request: Request, + context: { params: { id: string } } +) { + const method = request.method; + if (method !== "GET") { + return NextResponse.json( + { success: false, message: "Method not allowed" }, + { status: 405 } + ); + } + + try { + let fixData; + const { id } = context.params; + + fixData = await prisma.eventSponsor.findUnique({ + where: { + id: id, + }, + include: { + Author: { + include: { + Profile: true, + }, + }, + }, + }); + + return NextResponse.json({ + success: true, + message: "Success create sponsor", + data: fixData, + }); + } catch (error) { + backendLogger.error("Error get sponsor event", error); + return NextResponse.json( + { + success: false, + message: "Failed create sponsor", + reason: (error as Error).message, + }, + { status: 500 } + ); + } finally { + await prisma.$disconnect(); + } +} diff --git a/src/app/api/event/sponsor/list/[id]/route.ts b/src/app/api/event/sponsor/list/[id]/route.ts new file mode 100644 index 00000000..cc1f8ac9 --- /dev/null +++ b/src/app/api/event/sponsor/list/[id]/route.ts @@ -0,0 +1,79 @@ +import { prisma } from "@/lib"; +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; + +export async function GET( + request: Request, + context: { params: { id: string } } +) { + const method = request.method; + if (method !== "GET") { + return NextResponse.json( + { success: false, message: "Method not allowed" }, + { status: 405 } + ); + } + + try { + let fixData; + const { id } = context.params; + const { searchParams } = new URL(request.url); + const page = searchParams.get("page"); + const takeData = 10; + const skipData = Number(page) * takeData - takeData; + + if (!page) { + fixData = await prisma.eventSponsor.findMany({ + orderBy: { + createdAt: "desc", + }, + where: { + eventId: id, + }, + include: { + Author: { + include: { + Profile: true, + }, + }, + }, + }); + } else { + fixData = await prisma.eventSponsor.findMany({ + take: takeData, + skip: skipData, + orderBy: { + createdAt: "desc", + }, + where: { + eventId: id, + }, + include: { + Author: { + include: { + Profile: true, + }, + }, + }, + }); + } + + await prisma.$disconnect(); + return NextResponse.json({ + success: true, + message: "Success create sponsor", + data: fixData, + }); + } catch (error) { + backendLogger.error("Error get sponsor event", error); + await prisma.$disconnect(); + return NextResponse.json( + { + success: false, + message: "Failed create sponsor", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/event/status/[name]/route.ts b/src/app/api/event/status/[name]/route.ts new file mode 100644 index 00000000..2b3ba3ce --- /dev/null +++ b/src/app/api/event/status/[name]/route.ts @@ -0,0 +1,86 @@ +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; +import backendLogger from "@/util/backendLogger"; +import _ from "lodash"; +import { NextResponse } from "next/server"; +import prisma from "@/lib/prisma"; + +export async function GET( + request: Request, + { params }: { params: { name: string } } +) { + try { + let fixData; + const { name } = params; + const { searchParams } = new URL(request.url); + const page = searchParams.get("page"); + const takeData = 10; + const skipData = Number(page) * takeData - takeData; + + const userLoginId = await funGetUserIdByToken(); + if (!userLoginId) { + return NextResponse.json( + { + success: false, + message: "Gagal mendapatkan data", + reason: "User Unauthorized", + }, + { + status: 401, + } + ); + } + + if (!page) { + fixData = await prisma.event.findMany({ + orderBy: { + updatedAt: "desc", + }, + where: { + active: true, + authorId: userLoginId, + isArsip: false, + }, + include: { + EventMaster_Status: true, + }, + }); + } else { + const fixStatusName = _.startCase(name); + + fixData = await prisma.event.findMany({ + take: takeData, + skip: skipData, + orderBy: { + updatedAt: "desc", + }, + where: { + active: true, + authorId: userLoginId, + isArsip: false, + EventMaster_Status: { + name: fixStatusName || name, + }, + }, + include: { + EventMaster_Status: true, + }, + }); + } + + return NextResponse.json({ + success: true, + message: "Success", + data: fixData, + }); + } catch (error) { + backendLogger.error("Error get data event ", error); + return NextResponse.json( + { + success: false, + message: "Failed to get data", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/event/tipe-acara/route.ts b/src/app/api/event/tipe-acara/route.ts new file mode 100644 index 00000000..93da9808 --- /dev/null +++ b/src/app/api/event/tipe-acara/route.ts @@ -0,0 +1,39 @@ +import { prisma } from "@/lib"; +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; + +export async function GET(request: Request) { + const method = request.method; + if (method !== "GET") { + return NextResponse.json( + { success: false, message: "Method not allowed" }, + { status: 405 } + ); + } + + try { + const data = await prisma.eventMaster_TipeAcara.findMany({ + orderBy: { + id: "asc", + }, + }); + + return NextResponse.json({ + success: true, + message: "Success get tipe acara", + data: data, + }); + } catch (error) { + backendLogger.error("Error get tipe acara", error); + return NextResponse.json( + { + success: false, + message: "Failed get tipe acara ", + reason: (error as Error).message, + }, + { status: 500 } + ); + } finally { + await prisma.$disconnect(); + } +} diff --git a/src/app/api/forum/[id]/komentar/route.ts b/src/app/api/forum/[id]/komentar/route.ts new file mode 100644 index 00000000..d1cf896c --- /dev/null +++ b/src/app/api/forum/[id]/komentar/route.ts @@ -0,0 +1,96 @@ +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; +import prisma from "@/lib/prisma"; + +export const dynamic = "force-dynamic"; + +export { GET }; + +async function GET(request: Request, { params }: { params: { id: string } }) { + try { + let fixData; + const { id } = params; + const { searchParams } = new URL(request.url); + const page = searchParams.get("page"); + const takeData = 5; + const skipData = Number(page) * takeData - takeData; + + if (!page) { + fixData = await prisma.forum_Komentar.findMany({ + orderBy: { + createdAt: "desc", + }, + where: { + forum_PostingId: id, + isActive: true, + }, + select: { + id: true, + isActive: true, + komentar: true, + createdAt: true, + Author: { + select: { + id: true, + username: true, + Profile: { + select: { + name: true, + imageId: true, + }, + }, + }, + }, + authorId: true, + }, + }); + } else { + fixData = await prisma.forum_Komentar.findMany({ + take: takeData, + skip: skipData, + orderBy: { + createdAt: "desc", + }, + where: { + forum_PostingId: id, + isActive: true, + }, + select: { + id: true, + isActive: true, + komentar: true, + createdAt: true, + Author: { + select: { + id: true, + username: true, + Profile: { + select: { + name: true, + imageId: true, + }, + }, + }, + }, + authorId: true, + }, + }); + } + + return NextResponse.json({ + success: true, + message: "Berhasil mendapatkan data", + data: fixData, + }); + } catch (error) { + backendLogger.error("Error Get Forum Komentar >>", error); + return NextResponse.json( + { + success: false, + message: "API Error Get Data", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/forum/[id]/report-komentar/route.ts b/src/app/api/forum/[id]/report-komentar/route.ts new file mode 100644 index 00000000..1407a037 --- /dev/null +++ b/src/app/api/forum/[id]/report-komentar/route.ts @@ -0,0 +1,75 @@ +import prisma from "@/lib/prisma"; +import _ from "lodash"; +import { NextResponse } from "next/server"; + +export const dynamic = "force-dynamic"; + +export async function GET( + request: Request, + { params }: { params: { id: string } } +) { + try { + const { id } = params; + const data = await prisma.forum_Komentar.findFirst({ + where: { + id: id, + }, + select: { + id: true, + komentar: true, + Forum_Posting: { + select: { + id: true, + diskusi: true, + Author: { + select: { + username: true, + }, + }, + }, + }, + + Forum_ReportKomentar: { + select: { + deskripsi: true, + ForumMaster_KategoriReport: { + select: { + id: true, + title: true, + }, + }, + }, + }, + }, + }); + + const group = _.groupBy( + data?.Forum_ReportKomentar, + (v) => v.ForumMaster_KategoriReport?.title + ); + + const getKey = _.keys(group); + const filterGroup = getKey.map((e) => e.replace("undefined", "Lainnya")); + + const allData = { + data: data, + list: filterGroup, + }; + + return NextResponse.json({ + success: true, + message: "Success get data report komentar", + data: allData, + }); + } catch (error) { + console.error("Error get data report komentar", error); + return NextResponse.json( + { + success: false, + message: "Error get data report komentar", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/forum/[id]/report-posting/route.ts b/src/app/api/forum/[id]/report-posting/route.ts new file mode 100644 index 00000000..4a69e48e --- /dev/null +++ b/src/app/api/forum/[id]/report-posting/route.ts @@ -0,0 +1,59 @@ +import _ from "lodash"; +import { NextResponse } from "next/server"; +import prisma from "@/lib/prisma"; + +export const dynamic = "force-dynamic"; + +export async function GET( + request: Request, + { params }: { params: { id: string } } +) { + try { + const { id } = params; + const data = await prisma.forum_Posting.findFirst({ + where: { + id: id, + }, + select: { + id: true, + diskusi: true, + Forum_ReportPosting: { + select: { + id: true, + deskripsi: true, + forumMaster_KategoriReportId: true, + ForumMaster_KategoriReport: true, + }, + }, + }, + }); + + const group = _.groupBy( + data?.Forum_ReportPosting, + (val) => val.ForumMaster_KategoriReport?.title + ); + const getKey = _.keys(group); + const filterGroup = getKey.map((e) => e.replace("undefined", "Lainnya")); + + const allData = { + data: data, + list: filterGroup, + }; + + return NextResponse.json({ + success: true, + message: "Success get data report posting", + data: allData, + }); + } catch (error) { + console.error("Error get data report posting", error); + return NextResponse.json( + { + success: false, + message: "Error get data report posting", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/forum/[id]/route.ts b/src/app/api/forum/[id]/route.ts new file mode 100644 index 00000000..935c8b88 --- /dev/null +++ b/src/app/api/forum/[id]/route.ts @@ -0,0 +1,65 @@ +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; +import prisma from "@/lib/prisma"; + +export const dynamic = "force-dynamic"; + +export { GET }; + +async function GET(request: Request, { params }: { params: { id: string } }) { + try { + const { id } = params; + + const data = await prisma.forum_Posting.findUnique({ + where: { + id: id, + }, + select: { + id: true, + diskusi: true, + isActive: true, + createdAt: true, + authorId: true, + Author: { + select: { + id: true, + username: true, + Profile: true, + }, + }, + _count: { + select: { + Forum_Komentar: { + where: { + isActive: true, + }, + }, + }, + }, + ForumMaster_StatusPosting: true, + forumMaster_StatusPostingId: true, + }, + }); + + const fixData = { + ...data, + count: data?._count.Forum_Komentar, + }; + + return NextResponse.json({ + success: true, + message: "Success get data", + data: fixData, + }); + } catch (error) { + backendLogger.error("Error get data forum", error); + return NextResponse.json( + { + success: false, + message: "Error get data forum", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/forum/forumku/[id]/route.ts b/src/app/api/forum/forumku/[id]/route.ts new file mode 100644 index 00000000..c7ac8d94 --- /dev/null +++ b/src/app/api/forum/forumku/[id]/route.ts @@ -0,0 +1,120 @@ +import { NextResponse } from "next/server"; +import prisma from "@/lib/prisma"; + +export { GET }; + +async function GET(request: Request, { params }: { params: { id: string } }) { + try { + let fixData; + const { id } = params; + const { searchParams } = new URL(request.url); + const page = searchParams.get("page"); + const takeData = 5; + const skipData = Number(page) * takeData - takeData; + + if (!page) { + fixData = await prisma.forum_Posting.findMany({ + orderBy: { + createdAt: "desc", + }, + where: { + authorId: id, + isActive: true, + }, + select: { + id: true, + diskusi: true, + createdAt: true, + isActive: true, + authorId: true, + Author: { + select: { + id: true, + username: true, + Profile: { + select: { + id: true, + name: true, + imageId: true, + }, + }, + }, + }, + Forum_Komentar: { + where: { + isActive: true, + }, + }, + ForumMaster_StatusPosting: { + select: { + id: true, + status: true, + }, + }, + forumMaster_StatusPostingId: true, + }, + }); + } else { + fixData = await prisma.forum_Posting.findMany({ + take: takeData, + skip: skipData, + orderBy: { + createdAt: "desc", + }, + where: { + authorId: id, + isActive: true, + }, + select: { + id: true, + diskusi: true, + createdAt: true, + isActive: true, + authorId: true, + Author: { + select: { + id: true, + username: true, + Profile: { + select: { + id: true, + name: true, + imageId: true, + }, + }, + }, + }, + Forum_Komentar: { + where: { + isActive: true, + }, + }, + ForumMaster_StatusPosting: { + select: { + id: true, + status: true, + }, + }, + forumMaster_StatusPostingId: true, + }, + }); + } + + return NextResponse.json({ + success: true, + message: "Berhasil mendapatkan data", + data: fixData, + }); + } catch (error) { + return NextResponse.json( + { + success: false, + message: "Gagal mendapatkan data", + error: (error as Error).message, + }, + { + status: 500, + } + ); + } +} diff --git a/src/app/api/forum/master/route.ts b/src/app/api/forum/master/route.ts new file mode 100644 index 00000000..a2b1e1eb --- /dev/null +++ b/src/app/api/forum/master/route.ts @@ -0,0 +1,32 @@ +import { NextResponse } from "next/server"; +import prisma from "@/lib/prisma"; +import backendLogger from "@/util/backendLogger"; + +export async function GET(request: Request) { + try { + const data = await prisma.forumMaster_KategoriReport.findMany({ + orderBy: { + createdAt: "asc", + }, + where: { + isActive: true, + }, + }); + + return NextResponse.json({ + success: true, + message: "Berhasil mendapatkan data", + data: data, + }); + } catch (error) { + backendLogger.error("Error Get Master Kategori Report >>", error); + return NextResponse.json( + { + success: false, + message: "Gagal mendapatkan data", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/forum/route.ts b/src/app/api/forum/route.ts new file mode 100644 index 00000000..6c53c6d2 --- /dev/null +++ b/src/app/api/forum/route.ts @@ -0,0 +1,125 @@ +import { prisma } from "@/lib"; +import { NextResponse } from "next/server"; +export const dynamic = "force-dynamic"; + +// GET ALL DATA PORTOFOLIO BY PROFILE ID +export async function GET(request: Request) { + try { + let fixData; + const { searchParams } = new URL(request.url); + const page = searchParams.get("page"); + const search = searchParams.get("search"); + const takeData = 5; + const skipData = Number(page) * takeData - takeData; + + + if (!page) { + fixData = await prisma.forum_Posting.findMany({ + orderBy: { + createdAt: "desc", + }, + where: { + isActive: true, + diskusi: { + mode: "insensitive", + contains: search == undefined || search == "null" ? "" : search, + }, + }, + select: { + id: true, + diskusi: true, + createdAt: true, + isActive: true, + authorId: true, + Author: { + select: { + id: true, + username: true, + Profile: { + select: { + id: true, + name: true, + imageId: true, + }, + }, + }, + }, + Forum_Komentar: { + where: { + isActive: true, + }, + }, + ForumMaster_StatusPosting: { + select: { + id: true, + status: true, + }, + }, + forumMaster_StatusPostingId: true, + }, + }); + } else { + fixData = await prisma.forum_Posting.findMany({ + take: takeData, + skip: skipData, + orderBy: { + createdAt: "desc", + }, + where: { + isActive: true, + diskusi: { + mode: "insensitive", + contains: search == undefined || search == "null" ? "" : search, + }, + }, + select: { + id: true, + diskusi: true, + createdAt: true, + isActive: true, + authorId: true, + Author: { + select: { + id: true, + username: true, + Profile: { + select: { + id: true, + name: true, + imageId: true, + }, + }, + }, + }, + Forum_Komentar: { + where: { + isActive: true, + }, + }, + ForumMaster_StatusPosting: { + select: { + id: true, + status: true, + }, + }, + forumMaster_StatusPostingId: true, + }, + }); + } + + return NextResponse.json( + { success: true, message: "Berhasil mendapatkan data", data: fixData }, + { status: 200 } + ); + } catch (error) { + console.error(error); + return NextResponse.json( + { + success: false, + message: "Gagal mendapatkan data, coba lagi nanti ", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/get-cookie/route.ts b/src/app/api/get-cookie/route.ts new file mode 100644 index 00000000..8b4959b8 --- /dev/null +++ b/src/app/api/get-cookie/route.ts @@ -0,0 +1,15 @@ +import { cookies } from 'next/headers' +import { NextResponse } from 'next/server'; + +export const dynamic = "force-dynamic"; +export async function GET(request: Request) { + try { + const cookiesKey = process.env.NEXT_PUBLIC_BASE_SESSION_KEY! + const cookieStore = cookies(); + const hipmiKey = cookieStore.get(cookiesKey)?.value || ''; + return NextResponse.json({ token: hipmiKey }); + } catch (error) { + console.error(error); + return NextResponse.json({ error }, { status: 500 }); + } +} \ No newline at end of file diff --git a/src/app/api/image/delete/route.ts b/src/app/api/image/delete/route.ts new file mode 100644 index 00000000..42d360e3 --- /dev/null +++ b/src/app/api/image/delete/route.ts @@ -0,0 +1,51 @@ +import { funGetDirectoryNameByValue } from "@/app_modules/_global/fun/get"; +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; + +export async function DELETE(req: Request) { + const data = await req.json(); + const id = data.fileId; + const dirId = data.dirId; + + const keyOfDirectory = await funGetDirectoryNameByValue({ + value: dirId, + }); + + if (req.method === "DELETE") { + try { + const res = await fetch( + `https://wibu-storage.wibudev.com/api/files/${id}/delete`, + { + method: "DELETE", + headers: { + Authorization: `Bearer ${process.env.WS_APIKEY}`, + }, + } + ); + backendLogger.info("Server status code: " + res.status); + const data = await res.json(); + if (res.ok) { + backendLogger.info(`Success delete ${keyOfDirectory}`); + return NextResponse.json({ success: true }); + } else { + const errorText = await res.json(); + backendLogger.error( + `Failed delete ${keyOfDirectory}: ` + errorText.message + ); + return NextResponse.json({ + success: false, + message: errorText.message, + }); + } + } catch (error) { + backendLogger.error(`Delete error ${keyOfDirectory}:`, error); + return NextResponse.json({ + success: false, + message: "An unexpected error occurred", + }); + } + } else { + backendLogger.error(`Error upload ${keyOfDirectory}: Method not allowed`); + return NextResponse.json({ success: false, message: "Method not allowed" }); + } +} diff --git a/src/app/api/image/upload/route.ts b/src/app/api/image/upload/route.ts new file mode 100644 index 00000000..eb11ddb0 --- /dev/null +++ b/src/app/api/image/upload/route.ts @@ -0,0 +1,87 @@ +import { funGetDirectoryNameByValue } from "@/app_modules/_global/fun/get"; +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; +import sharp from "sharp"; +export async function POST(request: Request) { + const formData = await request.formData(); + const valueOfDir = formData.get("dirId"); + const keyOfDirectory = await funGetDirectoryNameByValue({ + value: valueOfDir as string, + }); + + if (request.method === "POST") { + let fixFormData; + const file: any = formData.get("file"); + const mimeType = file.type; + // console.log("MIME Type:", mimeType); + + try { + if (mimeType != "application/pdf") { + // Resize ukuran + const imageBuffer = await file.arrayBuffer(); + const resize = await sharp(imageBuffer).resize(2000).toBuffer(); + + // Convert buffer ke Blob + const blob = new Blob([resize], { type: file.type }); + + // Convert Blob ke File + const resizedFile = new File([blob], file.name, { + type: file.type, + lastModified: new Date().getTime(), + }); + + // Buat FormData baru + const newFormData = new FormData(); + newFormData.append("file", resizedFile); + newFormData.append("dirId", formData.get("dirId") as string); + + fixFormData = newFormData; + } else { + fixFormData = formData; + } + + const res = await fetch("https://wibu-storage.wibudev.com/api/upload", { + method: "POST", + body: fixFormData, + headers: { + Authorization: `Bearer ${process.env.WS_APIKEY}`, + }, + }); + + backendLogger.info("Server status code: " + res.status); + const dataRes = await res.json(); + + if (res.ok) { + backendLogger.info( + `Success upload ${keyOfDirectory}: ${JSON.stringify(dataRes.data)}` + ); + return NextResponse.json( + { success: true, data: dataRes.data }, + { status: 200 } + ); + } else { + const errorText = await res.text(); + backendLogger.error(`Failed upload ${keyOfDirectory}: ${errorText}`); + return NextResponse.json( + { success: false, message: errorText }, + { status: 400 } + ); + } + } catch (error) { + backendLogger.error(`Error upload ${keyOfDirectory}: ${error}`); + return NextResponse.json( + { + success: false, + message: "An unexpected error occurred", + }, + { status: 500 } + ); + } + } else { + backendLogger.error(`Error upload ${keyOfDirectory}: Method not allowed`); + return NextResponse.json( + { success: false, message: "Method not allowed" }, + { status: 405 } + ); + } +} diff --git a/src/app/api/investasi/[id]/investor/route.ts b/src/app/api/investasi/[id]/investor/route.ts new file mode 100644 index 00000000..30f968f9 --- /dev/null +++ b/src/app/api/investasi/[id]/investor/route.ts @@ -0,0 +1,76 @@ +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; +import prisma from "@/lib/prisma"; +import _ from "lodash"; + +export { GET }; + +async function GET(request: Request, { params }: { params: { id: string } }) { + try { + let fixData; + const { id } = params; + const { searchParams } = new URL(request.url); + const page = searchParams.get("page"); + const takeData = 10 + const skipData = Number(page) * takeData - takeData; + + if (!page) { + fixData = await prisma.investasi_Invoice.findMany({ + where: { + investasiId: id, + StatusInvoice: { + name: "Berhasil", + }, + }, + include: { + Author: { + select: { + Profile: true, + }, + }, + }, + }); + } else { + const Alldata = await prisma.investasi_Invoice.findMany({ + skip: skipData, + take: takeData, + where: { + investasiId: id, + StatusInvoice: { + name: "Berhasil", + }, + }, + include: { + Author: { + select: { + Profile: true, + }, + }, + }, + }); + + fixData = Alldata.map((e, i) => ({ + ..._.omit(e, ["Author"]), + Profile: e.Author?.Profile, + })); + } + + return NextResponse.json({ + success: true, + message: "Success get data investor", + data: fixData, + }); + } catch (error) { + backendLogger.error("Error get data investor >>", error); + return NextResponse.json( + { + success: false, + message: "Error get data investor", + reason: (error as Error).message, + }, + { + status: 500, + } + ); + } +} diff --git a/src/app/api/investasi/[id]/invoice/route.ts b/src/app/api/investasi/[id]/invoice/route.ts new file mode 100644 index 00000000..df9c6e9f --- /dev/null +++ b/src/app/api/investasi/[id]/invoice/route.ts @@ -0,0 +1,55 @@ +import { NextResponse } from "next/server"; +import { prisma } from "@/lib"; + +export async function GET( + request: Request, + context: { params: { id: string } } +) { + try { + const { id } = context.params; + const data = await prisma.investasi_Invoice.findFirst({ + where: { + id: id, + }, + include: { + MasterBank: true, + StatusInvoice: true, + Investasi: { + include: { + MasterPembagianDeviden: true, + MasterPencarianInvestor: true, + MasterPeriodeDeviden: true, + ProspektusInvestasi: true, + Investasi_Invoice: { + where: { + statusInvoiceId: "1", + }, + }, + }, + }, + Author: { + include: { + Profile: true, + }, + }, + }, + }); + + const { ...allData } = data; + const Investor = data?.Investasi?.Investasi_Invoice; + const result = { ...allData, Investor }; + + return NextResponse.json({ + success: true, + message: "Berhasil mendapatkan data invoice", + data: result, + }); + } catch (error) { + console.error("Error get invoice", error); + return NextResponse.json({ + success: false, + message: "Gagal mendapatkan data invoice, coba lagi nanti ", + reason: (error as Error).message, + }); + } +} diff --git a/src/app/api/investasi/[id]/route.ts b/src/app/api/investasi/[id]/route.ts new file mode 100644 index 00000000..0ff6b59e --- /dev/null +++ b/src/app/api/investasi/[id]/route.ts @@ -0,0 +1,53 @@ +import { prisma } from "@/lib"; +import { NextResponse } from "next/server"; +export const dynamic = "force-dynamic"; + +// GET ONE DATA INVESTASI BY ID +export async function GET( + request: Request, + context: { params: { id: string } } +) { + try { + const { id } = context.params; + const data = await prisma.investasi.findUnique({ + where: { + id: id, + }, + include: { + author: { + include: { + Profile: true, + }, + }, + Investasi_Invoice: { + where: { + statusInvoiceId: "1" + } + }, + MasterStatusInvestasi: true, + BeritaInvestasi: true, + DokumenInvestasi: true, + ProspektusInvestasi: true, + MasterPembagianDeviden: true, + MasterPencarianInvestor: true, + MasterPeriodeDeviden: true, + MasterProgresInvestasi: true, + }, + }); + + return NextResponse.json( + { success: true, message: "Berhasil mendapatkan data", data }, + { status: 200 } + ); + } catch (error) { + console.error(error); + return NextResponse.json( + { + success: false, + message: "Gagal mendapatkan data, coba lagi nanti ", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/investasi/bukti-transfer/[id]/route.ts b/src/app/api/investasi/bukti-transfer/[id]/route.ts index 0877bb3d..34223776 100644 --- a/src/app/api/investasi/bukti-transfer/[id]/route.ts +++ b/src/app/api/investasi/bukti-transfer/[id]/route.ts @@ -1,6 +1,6 @@ import { NextRequest, NextResponse } from "next/server"; import fs from "fs"; -import prisma from "@/app/lib/prisma"; +import prisma from "@/lib/prisma"; export async function GET( req: NextRequest, diff --git a/src/app/api/investasi/dokumen/[id]/route.ts b/src/app/api/investasi/dokumen/[id]/route.ts index e5d4c94c..07724d36 100644 --- a/src/app/api/investasi/dokumen/[id]/route.ts +++ b/src/app/api/investasi/dokumen/[id]/route.ts @@ -1,4 +1,4 @@ -import prisma from "@/app/lib/prisma"; +import prisma from "@/lib/prisma"; import { NextRequest, NextResponse } from "next/server"; import fs from "fs"; diff --git a/src/app/api/investasi/gambar/[id]/route.ts b/src/app/api/investasi/gambar/[id]/route.ts index 8fce01cc..2524f254 100644 --- a/src/app/api/investasi/gambar/[id]/route.ts +++ b/src/app/api/investasi/gambar/[id]/route.ts @@ -1,6 +1,6 @@ import { NextRequest, NextResponse } from "next/server"; import fs from "fs"; -import prisma from "@/app/lib/prisma"; +import prisma from "@/lib/prisma"; export async function GET( req: NextRequest, diff --git a/src/app/api/investasi/prospektus/[id]/route.ts b/src/app/api/investasi/prospektus/[id]/route.ts index 243b204a..a5b90324 100644 --- a/src/app/api/investasi/prospektus/[id]/route.ts +++ b/src/app/api/investasi/prospektus/[id]/route.ts @@ -1,4 +1,4 @@ -import prisma from "@/app/lib/prisma"; +import prisma from "@/lib/prisma"; import { NextRequest, NextResponse } from "next/server"; import fs from "fs"; diff --git a/src/app/api/investasi/route.ts b/src/app/api/investasi/route.ts new file mode 100644 index 00000000..e60e4df9 --- /dev/null +++ b/src/app/api/investasi/route.ts @@ -0,0 +1,185 @@ +import { prisma } from "@/lib"; +import _ from "lodash"; +import moment from "moment"; +import { NextResponse } from "next/server"; +export const dynamic = "force-dynamic"; + +// GET ALL DATA INVESTASI +export async function GET(request: Request) { + try { + let dataFix; + const { searchParams } = new URL(request.url); + const kategori = searchParams.get("cat"); + const status = searchParams.get("status"); + const page = searchParams.get("page"); + const dataTake = 10; + const dataSkip = Number(page) * dataTake - dataTake; + + if (!page) { + const data = await prisma.investasi.findMany({ + where: { + masterStatusInvestasiId: "1", + masterProgresInvestasiId: "1", + }, + select: { + id: true, + MasterPencarianInvestor: true, + countDown: true, + progress: true, + }, + }); + + for (let a of data) { + if ( + (a.MasterPencarianInvestor?.name as any) - + moment(new Date()).diff(new Date(a.countDown as any), "days") <= + 0 + ) { + await prisma.investasi.update({ + where: { + id: a.id, + }, + data: { + masterProgresInvestasiId: "3", + }, + }); + } + + if (a.progress === "100") { + await prisma.investasi.update({ + where: { + id: a.id, + }, + data: { + masterProgresInvestasiId: "2", + }, + }); + } + } + + // cek data yang lewat + // klo ada, update status + const dataAwal = await prisma.investasi.findMany({ + orderBy: [ + { + masterProgresInvestasiId: "asc", + }, + { + countDown: "desc", + }, + ], + where: { + masterStatusInvestasiId: "1", + }, + select: { + id: true, + imageId: true, + title: true, + progress: true, + countDown: true, + MasterPencarianInvestor: { + select: { + name: true, + }, + }, + }, + }); + + dataFix = dataAwal.map((v: any) => ({ + ..._.omit(v, ["MasterPencarianInvestor"]), + pencarianInvestor: v.MasterPencarianInvestor.name, + })); + } else { + const data = await prisma.investasi.findMany({ + where: { + masterStatusInvestasiId: "1", + masterProgresInvestasiId: "1", + }, + select: { + id: true, + MasterPencarianInvestor: true, + countDown: true, + progress: true, + }, + }); + + for (let a of data) { + if ( + (a.MasterPencarianInvestor?.name as any) - + moment(new Date()).diff(new Date(a.countDown as any), "days") <= + 0 + ) { + await prisma.investasi.update({ + where: { + id: a.id, + }, + data: { + masterProgresInvestasiId: "3", + }, + }); + } + + if (a.progress === "100") { + await prisma.investasi.update({ + where: { + id: a.id, + }, + data: { + masterProgresInvestasiId: "2", + }, + }); + } + } + + // cek data yang lewat + // klo ada, update status + const dataAwal = await prisma.investasi.findMany({ + take: dataTake, + skip: dataSkip, + orderBy: [ + { + masterProgresInvestasiId: "asc", + }, + { + countDown: "desc", + }, + ], + where: { + masterStatusInvestasiId: "1", + }, + select: { + id: true, + imageId: true, + title: true, + progress: true, + countDown: true, + MasterPencarianInvestor: { + select: { + name: true, + }, + }, + }, + }); + + dataFix = dataAwal.map((v: any) => ({ + ..._.omit(v, ["MasterPencarianInvestor"]), + pencarianInvestor: v.MasterPencarianInvestor.name, + })); + } + + return NextResponse.json( + { success: true, message: "Berhasil mendapatkan data", data: dataFix }, + { status: 200 } + ); + } catch (error) { + console.error(error); + return NextResponse.json( + { + success: false, + message: "Gagal mendapatkan data, coba lagi nanti ", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/investasi/saham/[id]/route.ts b/src/app/api/investasi/saham/[id]/route.ts new file mode 100644 index 00000000..d6e150b4 --- /dev/null +++ b/src/app/api/investasi/saham/[id]/route.ts @@ -0,0 +1,61 @@ +import { NextResponse } from "next/server"; +import { prisma } from "@/lib"; + +export { GET }; + +async function GET(request: Request, { params }: { params: { id: string } }) { + try { + const { id } = params; + const data = await prisma.investasi_Invoice.findFirst({ + where: { + id: id, + }, + include: { + MasterBank: true, + StatusInvoice: { + where: { + name: "Berhasil", + }, + }, + Investasi: { + include: { + MasterPembagianDeviden: true, + MasterPencarianInvestor: true, + MasterPeriodeDeviden: true, + ProspektusInvestasi: true, + Investasi_Invoice: { + where: { + statusInvoiceId: "1", + }, + }, + }, + }, + Author: { + include: { + Profile: true, + }, + }, + }, + }); + + const { ...allData } = data; + const Investor = data?.Investasi?.Investasi_Invoice; + const result = { ...allData, Investor }; + + return NextResponse.json({ + success: true, + message: "Berhasil mengambil data", + data: result, + }); + } catch (error) { + console.log(error); + return NextResponse.json( + { + success: false, + message: "Gagal mengambil data", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/job/[id]/route.ts b/src/app/api/job/[id]/route.ts new file mode 100644 index 00000000..45e4996d --- /dev/null +++ b/src/app/api/job/[id]/route.ts @@ -0,0 +1,53 @@ +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; +import prisma from "@/lib/prisma"; + +export { GET }; + +async function GET(request: Request, { params }: { params: { id: string } }) { + try { + const { id } = params; + const data = await prisma.job.findUnique({ + where: { + id: id, + }, + include: { + Author: { + select: { + username: true, + nomor: true, + Profile: { + select: { + name: true, + alamat: true, + }, + }, + }, + }, + MasterStatus: { + select: { + name: true, + }, + }, + }, + }); + return NextResponse.json( + { + success: true, + message: "Success get data job-vacancy", + data: data, + }, + { status: 200 } + ); + } catch (error) { + backendLogger.error("Error get data job-vacancy", error); + return NextResponse.json( + { + success: false, + message: "Error get data job-vacancy", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/job/arsip/route.ts b/src/app/api/job/arsip/route.ts new file mode 100644 index 00000000..26525965 --- /dev/null +++ b/src/app/api/job/arsip/route.ts @@ -0,0 +1,97 @@ +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; +import { prisma } from "@/lib"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; +export const dynamic = "force-dynamic"; + +export { GET }; + +async function GET(request: Request) { + try { + let fixData; + const { searchParams } = new URL(request.url); + const page = searchParams.get("page"); + const dataTake = 10 + const dataSkip = Number(page) * dataTake - dataTake; + + const userLoginId = await funGetUserIdByToken(); + if (!userLoginId) { + return NextResponse.json( + { + success: false, + message: "Gagal mendapatkan data", + reason: "Unauthorized", + }, + { + status: 401, + } + ); + } + + if (!page) { + fixData = await prisma.job.findMany({ + orderBy: { + updatedAt: "desc", + }, + where: { + masterStatusId: "1", + isActive: true, + isArsip: true, + authorId: userLoginId, + }, + select: { + id: true, + title: true, + isArsip: true, + Author: { + select: { + id: true, + username: true, + Profile: true, + }, + }, + }, + }); + } else { + fixData = await prisma.job.findMany({ + take: dataTake, + skip: dataSkip, + orderBy: { + updatedAt: "desc", + }, + where: { + masterStatusId: "1", + isActive: true, + isArsip: true, + authorId: userLoginId, + }, + select: { + id: true, + title: true, + isArsip: true, + Author: { + select: { + id: true, + username: true, + Profile: true, + }, + }, + }, + }); + } + + return NextResponse.json({ + success: true, + message: "Berhasil mendapatkan data", + data: fixData, + }); + + } catch (error) { + backendLogger.error("Error get data job"); + return NextResponse.json({ + success: false, + message: "Error get data job", + error: (error as Error).message, + }); + } +} diff --git a/src/app/api/job/gambar/[id]/route.ts b/src/app/api/job/gambar/[id]/route.ts deleted file mode 100644 index 0df462d1..00000000 --- a/src/app/api/job/gambar/[id]/route.ts +++ /dev/null @@ -1,36 +0,0 @@ -import prisma from "@/app/lib/prisma"; -import fs from "fs"; -import { NextRequest, NextResponse } from "next/server"; -import path from "path"; -const root = process.cwd(); - -export async function GET( - req: NextRequest, - { params }: { params: { id: string } } -) { - const get = await prisma.images.findUnique({ - where: { - id: params.id, - }, - select: { - url: true, - }, - }); - - if (!fs.existsSync(path.join(root, `public/job/${get?.url}`))) { - const notFile = fs.readFileSync( - path.join(root, "public/aset/global/no-file.png") - ); - return new NextResponse(notFile, { - headers: { - "Content-Type": "image/png", - }, - }); - } - const file = fs.readFileSync(path.join(root, `public/job/${get?.url}`)); - return new NextResponse(file, { - headers: { - "Content-Type": "image/png", - }, - }); -} diff --git a/src/app/api/job/route.ts b/src/app/api/job/route.ts new file mode 100644 index 00000000..031ba4e7 --- /dev/null +++ b/src/app/api/job/route.ts @@ -0,0 +1,148 @@ +import { prisma } from "@/lib"; +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; + +export async function GET(request: Request) { + try { + let fixData; + const { searchParams } = new URL(request.url); + const search = searchParams.get("search"); + const page = searchParams.get("page"); + const dataTake = 10; + const dataSkip = Number(page) * dataTake - dataTake; + + if (!page) { + fixData = await prisma.job.findMany({ + orderBy: { + updatedAt: "desc", + }, + where: { + masterStatusId: "1", + isActive: true, + isArsip: false, + title: { + mode: "insensitive", + contains: search ? search : "", + }, + }, + select: { + id: true, + title: true, + Author: { + select: { + id: true, + username: true, + Profile: true, + }, + }, + }, + }); + } else { + fixData = await prisma.job.findMany({ + take: dataTake, + skip: dataSkip, + orderBy: { + updatedAt: "desc", + }, + where: { + masterStatusId: "1", + isActive: true, + isArsip: false, + title: { + mode: "insensitive", + contains: search ? search : "", + }, + }, + select: { + id: true, + title: true, + Author: { + select: { + id: true, + username: true, + Profile: true, + }, + }, + }, + }); + } + + return NextResponse.json({ + success: true, + message: "Berhasil mendapatkan data", + data: fixData, + }); + } catch (error) { + backendLogger.error("Error get data job"); + return NextResponse.json({ + success: false, + message: "Error get data job", + error: (error as Error).message, + }); + } +} + +export async function POST(request: Request) { + if (request.method !== "POST") { + return NextResponse.json( + { + success: false, + message: "Method not allowed", + }, + { status: 405 } + ); + } + + try { + const { data } = await request.json(); + + const fixData = await prisma.job.create({ + data: { + title: data.title, + content: data.content, + deskripsi: data.deskripsi, + authorId: data.authorId, + imageId: data.imageId ?? null, + }, + select: { + id: true, + authorId: true, + MasterStatus: { + select: { + name: true, + }, + }, + title: true, + }, + }); + + if (!fixData) { + return NextResponse.json( + { + success: false, + message: "Failed created job", + }, + { status: 400 } + ); + } + + return NextResponse.json( + { + success: true, + message: "Success created job", + data: fixData, + }, + { status: 201 } + ); + } catch (error) { + console.log("Error created job", error); + return NextResponse.json( + { + success: false, + message: "Error created job", + error: (error as Error).message || error, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/job/status/[name]/route.ts b/src/app/api/job/status/[name]/route.ts new file mode 100644 index 00000000..d71d0a5b --- /dev/null +++ b/src/app/api/job/status/[name]/route.ts @@ -0,0 +1,87 @@ +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; +import backendLogger from "@/util/backendLogger"; +import _ from "lodash"; +import { NextResponse } from "next/server"; +import { prisma } from "@/lib"; +export async function GET( + request: Request, + { params }: { params: { name: string } } +) { + try { + let fixData; + const { name } = params; + const { searchParams } = new URL(request.url); + const page = searchParams.get("page"); + const takeData = 10 + const skipData = Number(page) * takeData - takeData; + + const userLoginId = await funGetUserIdByToken(); + + if (!userLoginId) { + return NextResponse.json( + { + success: false, + message: "Gagal mendapatkan data", + reason: "Unauthorized", + }, + { + status: 401, + } + ); + } + + + if (!page) { + fixData = await prisma.job.findMany({ + orderBy: { + updatedAt: "desc", + }, + where: { + authorId: userLoginId, + isActive: true, + isArsip: false, + }, + include: { + Author: true, + MasterStatus: true, + }, + }); + } else { + const fixStatusName = _.startCase(name); + fixData = await prisma.job.findMany({ + take: takeData, + skip: skipData, + orderBy: { + updatedAt: "desc", + }, + where: { + authorId: userLoginId, + isActive: true, + MasterStatus: { + name: fixStatusName || name, + }, + }, + include: { + Author: true, + MasterStatus: true, + }, + }); + } + + return NextResponse.json({ + success: true, + message: "Berhasil mendapatkan data", + data: fixData, + }); + } catch (error) { + backendLogger.error("Error Get Data Job", error); + return NextResponse.json( + { + success: false, + message: "Gagal mendapatkan data", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/logs/route.ts b/src/app/api/logs/route.ts new file mode 100644 index 00000000..b660e323 --- /dev/null +++ b/src/app/api/logs/route.ts @@ -0,0 +1,71 @@ +// app/api/logs/view/route.ts +import { NextRequest, NextResponse } from "next/server"; +import fs from "fs/promises"; +import path from "path"; + +interface LogEntry { + timestamp: string; + level: string; + message: string; + metadata?: any; +} + +async function readLogFiles(directory: string): Promise { + try { + const logPath = path.join(process.cwd(), directory); + const files = await fs.readdir(logPath); + const logFiles = files.filter((file) => file.endsWith(".log")); + + const allLogs: LogEntry[] = []; + + for (const file of logFiles) { + const filePath = path.join(logPath, file); + const content = await fs.readFile(filePath, "utf-8"); + + // Parse setiap baris log + const logs = content + .split("\n") + .filter(Boolean) + .map((line) => { + try { + return JSON.parse(line); + } catch (e) { + return null; + } + }) + .filter(Boolean); + + allLogs.push(...logs); + } + + // Sort berdasarkan timestamp, terbaru di atas + return allLogs.sort( + (a, b) => + new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime() + ); + } catch (error) { + console.error("Error reading log files:", error); + return []; + } +} + +export async function GET(request: NextRequest) { + try { + // Baca logs dari frontend dan backend + const frontendLogs = await readLogFiles("logs/frontend"); + const backendLogs = await readLogFiles("logs/backend"); + + // Gabungkan dan sort semua logs + const allLogs = [...frontendLogs, ...backendLogs].sort( + (a, b) => + new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime() + ); + + return NextResponse.json({ logs: allLogs }); + } catch (error) { + return NextResponse.json( + { error: "Failed to fetch logs" }, + { status: 500 } + ); + } +} diff --git a/src/app/api/logs/view/route.ts b/src/app/api/logs/view/route.ts new file mode 100644 index 00000000..b660e323 --- /dev/null +++ b/src/app/api/logs/view/route.ts @@ -0,0 +1,71 @@ +// app/api/logs/view/route.ts +import { NextRequest, NextResponse } from "next/server"; +import fs from "fs/promises"; +import path from "path"; + +interface LogEntry { + timestamp: string; + level: string; + message: string; + metadata?: any; +} + +async function readLogFiles(directory: string): Promise { + try { + const logPath = path.join(process.cwd(), directory); + const files = await fs.readdir(logPath); + const logFiles = files.filter((file) => file.endsWith(".log")); + + const allLogs: LogEntry[] = []; + + for (const file of logFiles) { + const filePath = path.join(logPath, file); + const content = await fs.readFile(filePath, "utf-8"); + + // Parse setiap baris log + const logs = content + .split("\n") + .filter(Boolean) + .map((line) => { + try { + return JSON.parse(line); + } catch (e) { + return null; + } + }) + .filter(Boolean); + + allLogs.push(...logs); + } + + // Sort berdasarkan timestamp, terbaru di atas + return allLogs.sort( + (a, b) => + new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime() + ); + } catch (error) { + console.error("Error reading log files:", error); + return []; + } +} + +export async function GET(request: NextRequest) { + try { + // Baca logs dari frontend dan backend + const frontendLogs = await readLogFiles("logs/frontend"); + const backendLogs = await readLogFiles("logs/backend"); + + // Gabungkan dan sort semua logs + const allLogs = [...frontendLogs, ...backendLogs].sort( + (a, b) => + new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime() + ); + + return NextResponse.json({ logs: allLogs }); + } catch (error) { + return NextResponse.json( + { error: "Failed to fetch logs" }, + { status: 500 } + ); + } +} diff --git a/src/app/api/map/[id]/portofolio/route.ts b/src/app/api/map/[id]/portofolio/route.ts new file mode 100644 index 00000000..365a8c35 --- /dev/null +++ b/src/app/api/map/[id]/portofolio/route.ts @@ -0,0 +1,53 @@ +import { NextResponse } from "next/server"; +import { prisma } from "@/lib"; +import backendLogger from "@/util/backendLogger"; + +export { GET }; + +async function GET(request: Request, { params }: { params: { id: string } }) { + if (request.method !== "GET") { + return NextResponse.json( + { + success: false, + message: "Method not allowed", + }, + { status: 405 } + ); + } + + try { + const { id } = params; + + const data = await prisma.businessMaps.findUnique({ + where: { + portofolioId: id, + }, + include: { + Portofolio: { + select: { + id: true, + logoId: true, + }, + }, + }, + }); + return NextResponse.json( + { + success: true, + message: "Berhasil mendapatkan data pin map", + data: data, + }, + { status: 200 } + ); + } catch (error) { + backendLogger.error("Error get pin map", error); + return NextResponse.json( + { + success: false, + message: "Gagal mendapatkan data pin map", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/map/[id]/route.ts b/src/app/api/map/[id]/route.ts new file mode 100644 index 00000000..98c4c8e8 --- /dev/null +++ b/src/app/api/map/[id]/route.ts @@ -0,0 +1,74 @@ +import { prisma } from "@/lib"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; + +export { POST }; + +async function POST(request: Request, { params }: { params: { id: string } }) { + if (request.method !== "POST") { + return NextResponse.json( + { + success: false, + message: "Method not allowed", + }, + { status: 405 } + ); + } + + try { + const userLoginId = await funGetUserIdByToken(); + if (!userLoginId) { + return NextResponse.json( + { + success: false, + message: "User tidak ditemukan", + }, + { status: 401 } + ); + } + + const { id } = params; + const { data } = await request.json(); + + const created = await prisma.businessMaps.create({ + data: { + latitude: data.latitude, + longitude: data.longitude, + namePin: data.namePin, + imageId: data.imageId, + portofolioId: id, + authorId: userLoginId, + }, + }); + + if (!created) { + return NextResponse.json( + { + success: false, + message: "Gagal membuat pin map", + }, + { status: 400 } + ); + } + + return NextResponse.json( + { + success: true, + message: "Berhasil membuat portofolio", + data: created, + }, + { status: 201 } + ); + } catch (error) { + backendLogger.error("Error create pin map", error); + return NextResponse.json( + { + success: false, + message: "Gagal membuat pin map", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/map/foto/[id]/route.ts b/src/app/api/map/foto/[id]/route.ts index f822b3c6..295160c8 100644 --- a/src/app/api/map/foto/[id]/route.ts +++ b/src/app/api/map/foto/[id]/route.ts @@ -1,4 +1,4 @@ -import prisma from "@/app/lib/prisma"; +import prisma from "@/lib/prisma"; import fs from "fs"; import { NextRequest, NextResponse } from "next/server"; diff --git a/src/app/api/map/pin/[id]/route.ts b/src/app/api/map/pin/[id]/route.ts index 606cb5d5..f596eeab 100644 --- a/src/app/api/map/pin/[id]/route.ts +++ b/src/app/api/map/pin/[id]/route.ts @@ -1,4 +1,4 @@ -import prisma from "@/app/lib/prisma"; +import prisma from "@/lib/prisma"; import fs from "fs"; import { NextRequest, NextResponse } from "next/server"; diff --git a/src/app/api/master/admin-contact/route.ts b/src/app/api/master/admin-contact/route.ts new file mode 100644 index 00000000..7c6f4f55 --- /dev/null +++ b/src/app/api/master/admin-contact/route.ts @@ -0,0 +1,32 @@ +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; +import prisma from "@/lib/prisma"; + +export async function GET(request: Request) { + try { + const data = await prisma.nomorAdmin.findFirst({ + where: { + isActive: true, + }, + }); + + return NextResponse.json( + { + success: true, + message: "Success get admin contact", + data: data, + }, + { status: 200 } + ); + } catch (error) { + backendLogger.error("Error get admin contact", error); + return NextResponse.json( + { + success: false, + message: "Error get admin contact", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/master/bank/route.ts b/src/app/api/master/bank/route.ts new file mode 100644 index 00000000..f681d0f4 --- /dev/null +++ b/src/app/api/master/bank/route.ts @@ -0,0 +1,41 @@ +import { prisma } from "@/lib"; +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; + +export async function GET(request: Request) { + const method = request.method; + if (method !== "GET") { + return NextResponse.json( + { success: false, message: "Method not allowed" }, + { status: 405 } + ); + } + + try { + const res = await prisma.masterBank.findMany({ + orderBy: { + updatedAt: "asc", + }, + where: { + isActive: true, + }, + }); + + return NextResponse.json( + { success: true, message: "Berhasil mendapatkan data", data: res }, + { status: 200 } + ); + } catch (error) { + backendLogger.error("Error Get Master Bank >>", error); + return NextResponse.json( + { + success: false, + message: "API Error Get Data", + reason: (error as Error).message, + }, + { status: 500 } + ); + } finally { + await prisma.$disconnect(); + } +} diff --git a/src/app/api/master/bidang-bisnis/route.ts b/src/app/api/master/bidang-bisnis/route.ts new file mode 100644 index 00000000..6077760a --- /dev/null +++ b/src/app/api/master/bidang-bisnis/route.ts @@ -0,0 +1,34 @@ +import { prisma } from "@/lib"; +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; + +export async function GET(request: Request) { + + try { + let fixData; + fixData = await prisma.masterBidangBisnis.findMany({ + where: { + active: true, + }, + }); + + return NextResponse.json( + { + success: true, + message: "Berhasil mendapatkan data", + data: fixData, + }, + { status: 200 } + ); + } catch (error) { + backendLogger.error("Error Get Master Bidang Bisnis >>", error); + return NextResponse.json( + { + success: false, + message: "API Error Get Data", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/master/emotions/route.ts b/src/app/api/master/emotions/route.ts new file mode 100644 index 00000000..ad66425a --- /dev/null +++ b/src/app/api/master/emotions/route.ts @@ -0,0 +1,33 @@ +import { NextResponse } from "next/server"; +import { prisma } from "@/lib"; + +export async function GET(request: Request) { + const method = request.method; + if (method !== "GET") { + return NextResponse.json( + { success: false, message: "Method not allowed" }, + { status: 405 } + ); + } + + try { + const response = await prisma.masterEmotions.findMany({ + orderBy: { + createdAt: "asc", + }, + where: { + isActive: true, + }, + }); + return NextResponse.json( + { success: true, data: response }, + { status: 200 } + ); + } catch (error) { + console.error("Error fetching master emotions:", error); + return NextResponse.json( + { success: false, message: "Failed to fetch master emotions" }, + { status: 500 } + ); + } +} diff --git a/src/app/api/master/status_transaksi/route.ts b/src/app/api/master/status_transaksi/route.ts new file mode 100644 index 00000000..06840205 --- /dev/null +++ b/src/app/api/master/status_transaksi/route.ts @@ -0,0 +1,41 @@ +import { prisma } from "@/lib"; +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; + +export async function GET(request: Request) { + const method = request.method; + if (method !== "GET") { + return NextResponse.json( + { success: false, message: "Method not allowed" }, + { status: 405 } + ); + } + + try { + const res = await prisma.masterStatusTransaksi.findMany({ + orderBy: { + updatedAt: "asc", + }, + where: { + isActive: true, + }, + }); + + await prisma.$disconnect(); + return NextResponse.json( + { success: true, message: "Berhasil mendapatkan data", data: res }, + { status: 200 } + ); + } catch (error) { + await prisma.$disconnect(); + backendLogger.error("Error Get Master Status Transaksi >>", error); + return NextResponse.json( + { + success: false, + message: "API Error Get Data", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/master/sub-bidang-bisnis/[id]/route.ts b/src/app/api/master/sub-bidang-bisnis/[id]/route.ts new file mode 100644 index 00000000..eb6b92e4 --- /dev/null +++ b/src/app/api/master/sub-bidang-bisnis/[id]/route.ts @@ -0,0 +1,40 @@ +import { prisma } from "@/lib"; +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; + +export async function GET( + request: Request, + { params }: { params: { id: string } } +) { + try { + let fixData; + const { id } = params; + + fixData = await prisma.masterSubBidangBisnis.findMany({ + where: { + masterBidangBisnisId: id.toString(), + isActive: true, + }, + }); + + + return NextResponse.json( + { + success: true, + message: "Berhasil mendapatkan data", + data: fixData, + }, + { status: 200 } + ); + } catch (error) { + backendLogger.error("Error Get Master Sub Bidang Bisnis >>", error); + return NextResponse.json( + { + success: false, + message: "API Error Get Data", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/master/sub-bidang-bisnis/route.ts b/src/app/api/master/sub-bidang-bisnis/route.ts new file mode 100644 index 00000000..c9cb7aac --- /dev/null +++ b/src/app/api/master/sub-bidang-bisnis/route.ts @@ -0,0 +1,33 @@ +import { prisma } from "@/lib"; +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; + +export async function GET(request: Request) { + try { + let fixData; + fixData = await prisma.masterSubBidangBisnis.findMany({ + where: { + isActive: true, + }, + }); + + return NextResponse.json( + { + success: true, + message: "Berhasil mendapatkan data", + data: fixData, + }, + { status: 200 } + ); + } catch (error) { + backendLogger.error("Error Get Master Sub Bidang Bisnis >>", error); + return NextResponse.json( + { + success: false, + message: "API Error Get Data", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/master/tipe-acara/route.ts b/src/app/api/master/tipe-acara/route.ts new file mode 100644 index 00000000..0aa184ee --- /dev/null +++ b/src/app/api/master/tipe-acara/route.ts @@ -0,0 +1,34 @@ +import { NextResponse } from "next/server"; +import prisma from "@/lib/prisma"; + +export async function GET(request: Request) { + try { + const data = await prisma.eventMaster_TipeAcara.findMany({ + orderBy: { + id: "asc", + }, + where: { + active: true, + }, + }); + + return NextResponse.json( + { + success: true, + message: "Berhasil mendapatkan data", + data: data, + }, + { status: 200 } + ); + } catch (error) { + console.error("Error Get Master Tipe Acara ", error); + return NextResponse.json( + { + success: false, + message: "API Error Get Data", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/middleware/route.ts b/src/app/api/middleware/route.ts new file mode 100644 index 00000000..631ac799 --- /dev/null +++ b/src/app/api/middleware/route.ts @@ -0,0 +1,22 @@ +import { cookies } from "next/headers"; +import "colors"; +import { NextResponse } from "next/server"; + +export async function GET(req: Request) { + // const token = req.headers.get("Authorizationx")?.split(" ")[1]; + const SESSIONKEY = process.env.NEXT_PUBLIC_BASE_SESSION_KEY!; + const tokenCookies = cookies().get(SESSIONKEY)?.value; + + const tokenHeader = req.headers.get("Authorization")?.split(" ")[1]; + + if (!tokenCookies) return NextResponse.json({ success: false }); + return NextResponse.json({ success: true }); + + // return new Response(token, { + // status: 200, + // headers: { + // "Content-Type": "application/json", + // "Cache-Control": "no-store", + // }, + // }); +} diff --git a/src/app/api/mobile/user/route.ts b/src/app/api/mobile/user/route.ts new file mode 100644 index 00000000..79fc8bcd --- /dev/null +++ b/src/app/api/mobile/user/route.ts @@ -0,0 +1,46 @@ +import { decrypt } from "@/app/(auth)/_lib/decrypt"; +import { prisma } from "@/lib"; +import { NextResponse } from "next/server"; + +export async function GET(request: Request) { + try { + const { searchParams } = new URL(request.url); + const token = searchParams.get("token"); + + const dataUser = await decrypt({ + token: token!, + encodedKey: process.env.NEXT_PUBLIC_BASE_TOKEN_KEY!, + }); + + const id = dataUser?.id; + const user = await prisma.user.findUnique({ + where: { + id: id as string, + }, + }); + + return NextResponse.json( + { + success: true, + message: "Berhasil mendapatkan data", + data: user, + }, + { + status: 200, + } + ); + } catch (error) { + return NextResponse.json( + { + success: false, + message: "Gagal mendapatkan data", + reason: (error as Error).message, + }, + { + status: 500, + } + ); + } finally { + await prisma.$disconnect(); + } +} diff --git a/src/app/api/new/donasi/[id]/route.ts b/src/app/api/new/donasi/[id]/route.ts new file mode 100644 index 00000000..ac15bc6a --- /dev/null +++ b/src/app/api/new/donasi/[id]/route.ts @@ -0,0 +1,81 @@ +import { prisma } from "@/lib"; +import { NextResponse } from "next/server"; +export const dynamic = "force-dynamic"; + + +// GET ONE DATA DONASI +export async function GET(request: Request, context: { params: { id: string } }) { + try { + let dataFix + const { id } = context.params + const { searchParams } = new URL(request.url) + const kategori = searchParams.get("cat") + + if (kategori == "semua") { + dataFix = await prisma.donasi.findFirst({ + where: { + id: id + }, + include: { + Author: true, + imageDonasi: true, + CeritaDonasi: true, + DonasiMaster_Ketegori: true, + DonasiMaster_Durasi: true, + DonasiMaster_Status: true, + Donasi_Invoice: true, + Donasi_Kabar: true, + Donasi_PencairanDana: true, + }, + }); + + } else if (kategori == "count") { + dataFix = await prisma.donasi_Invoice.count({ + where: { + donasiId: id, + donasiMaster_StatusInvoiceId: { + equals: "1" + } + } + }); + + } else { + let tampil + if (kategori == "author") { + tampil = { + authorId: true, + Author: { + select: { + username: true + } + } + } + } else if (kategori == "cerita") { + tampil = { + id: true, + createdAt: true, + CeritaDonasi: { + select: { + cerita: true + } + } + } + } + + dataFix = await prisma.donasi.findFirst({ + where: { + id: id + }, + select: tampil + }) + } + + + return NextResponse.json({ success: true, message: "Berhasil mendapatkan data", data: dataFix }, { status: 200 }); + + } + catch (error) { + console.error(error); + return NextResponse.json({ success: false, message: "Gagal mendapatkan data, coba lagi nanti ", reason: (error as Error).message, }, { status: 500 }); + } +} \ No newline at end of file diff --git a/src/app/api/new/donasi/invoice/route.ts b/src/app/api/new/donasi/invoice/route.ts new file mode 100644 index 00000000..421487b0 --- /dev/null +++ b/src/app/api/new/donasi/invoice/route.ts @@ -0,0 +1,77 @@ +import { prisma } from "@/lib"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; +import _ from "lodash"; +import { NextResponse } from "next/server"; +export const dynamic = "force-dynamic"; + + + + +// GET ALL DATA DONASI SAYA (INVOICE) +export async function GET(request: Request) { + try { + const { searchParams } = new URL(request.url) + const page = searchParams.get("page") + const dataSkip = Number(page) * 5 - 5; + + + const userLoginId = await funGetUserIdByToken() + if (userLoginId == null) { + return NextResponse.json({ success: false, message: "Gagal mendapatkan data, user id tidak ada" }, { status: 500 }); + } + + const data = await prisma.donasi_Invoice.findMany({ + take: 5, + skip: dataSkip, + orderBy: { + createdAt: "desc", + }, + where: { + authorId: userLoginId, + }, + select: { + id: true, + nominal: true, + donasiMaster_StatusInvoiceId: true, + DonasiMaster_StatusInvoice: { + select: { + name: true + } + }, + Donasi: { + select: { + id: true, + title: true, + publishTime: true, + progres: true, + imageId: true, + DonasiMaster_Durasi: { + select: { + name: true + } + }, + }, + }, + }, + }); + + const dataFix = data.map((v: any) => ({ + ..._.omit(v, ["DonasiMaster_StatusInvoice", "Donasi"]), + nameStatusInvoice: v.DonasiMaster_StatusInvoice.name, + donasiId: v.Donasi.id, + title: v.Donasi.title, + publishTime: v.Donasi.publishTime, + progres: v.Donasi.progres, + imageId: v.Donasi.imageId, + durasiDonasi: v.Donasi.DonasiMaster_Durasi.name + })) + + + return NextResponse.json({ success: true, message: "Berhasil mendapatkan data", data: dataFix }, { status: 200 }); + + } + catch (error) { + console.error(error); + return NextResponse.json({ success: false, message: "Gagal mendapatkan data, coba lagi nanti ", reason: (error as Error).message, }, { status: 500 }); + } +} \ No newline at end of file diff --git a/src/app/api/new/donasi/master/route.ts b/src/app/api/new/donasi/master/route.ts new file mode 100644 index 00000000..20fe5b24 --- /dev/null +++ b/src/app/api/new/donasi/master/route.ts @@ -0,0 +1,33 @@ +import { prisma } from "@/lib"; +import { NextResponse } from "next/server"; +export const dynamic = "force-dynamic"; + + +// GET ALL DATA MASTER UNTUK DONASI +export async function GET(request: Request) { + try { + let dataFix + const { searchParams } = new URL(request.url) + const kategori = searchParams.get("cat") + + if (kategori == "kategori") { + dataFix = await prisma.donasiMaster_Kategori.findMany({ + orderBy: { + createdAt: "asc", + }, + where: { + active: true, + } + }) + } else if (kategori == "durasi") { + dataFix = await prisma.donasiMaster_Durasi.findMany() + } + + return NextResponse.json({ success: true, message: "Berhasil mendapatkan data", data: dataFix }, { status: 200 }); + + } + catch (error) { + console.error(error); + return NextResponse.json({ success: false, message: "Gagal mendapatkan data, coba lagi nanti ", reason: (error as Error).message, }, { status: 500 }); + } +} \ No newline at end of file diff --git a/src/app/api/new/donasi/route.ts b/src/app/api/new/donasi/route.ts new file mode 100644 index 00000000..cfbfb540 --- /dev/null +++ b/src/app/api/new/donasi/route.ts @@ -0,0 +1,96 @@ +import { prisma } from "@/lib"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; +import _ from "lodash"; +import { NextResponse } from "next/server"; +export const dynamic = "force-dynamic"; + + +// GET ALL DATA DONASI +export async function GET(request: Request) { + try { + let dataFix + const { searchParams } = new URL(request.url) + const kategori = searchParams.get("cat") + const status = searchParams.get("status") + const page = searchParams.get("page") + const dataSkip = Number(page) * 5 - 5; + + if (kategori == "beranda") { + const data = await prisma.donasi.findMany({ + take: 5, + skip: dataSkip, + orderBy: { + publishTime: "desc", + }, + where: { + donasiMaster_StatusDonasiId: "1", + active: true, + }, + select: { + id: true, + imageId: true, + title: true, + publishTime: true, + progres: true, + terkumpul: true, + DonasiMaster_Durasi: { + select: { + name: true + } + }, + + } + }); + + dataFix = data.map((v: any) => ({ + ..._.omit(v, ["DonasiMaster_Durasi"]), + nameDonasiDurasi: v.DonasiMaster_Durasi.name + })) + } else if (kategori == "galang-dana") { + const userLoginId = await funGetUserIdByToken() + if (userLoginId == null) { + return NextResponse.json({ success: false, message: "Gagal mendapatkan data, user id tidak ada" }, { status: 500 }); + } + + const data = await prisma.donasi.findMany({ + take: 5, + skip: dataSkip, + where: { + authorId: userLoginId, + donasiMaster_StatusDonasiId: status, + active: true, + }, + select: { + id: true, + title: true, + imagesId: true, + target: true, + progres: true, + publishTime: true, + DonasiMaster_Durasi: { + select: { + name: true + } + }, + terkumpul: true, + imageId: true, + }, + orderBy: { + updatedAt: "desc", + }, + }); + + dataFix = data.map((v: any) => ({ + ..._.omit(v, ["DonasiMaster_Durasi"]), + nameDonasiDurasi: v.DonasiMaster_Durasi.name + })) + } + + return NextResponse.json({ success: true, message: "Berhasil mendapatkan data", data: dataFix }, { status: 200 }); + + } + catch (error) { + console.error(error); + return NextResponse.json({ success: false, message: "Gagal mendapatkan data, coba lagi nanti ", reason: (error as Error).message, }, { status: 500 }); + } +} \ No newline at end of file diff --git a/src/app/api/new/forum/route.ts b/src/app/api/new/forum/route.ts new file mode 100644 index 00000000..c8af9dc2 --- /dev/null +++ b/src/app/api/new/forum/route.ts @@ -0,0 +1,67 @@ +import { prisma } from "@/lib" +import { NextResponse } from "next/server"; +export const dynamic = "force-dynamic"; + +// GET ALL DATA PORTOFOLIO BY PROFILE ID +export async function GET(request: Request) { + try { + const { searchParams } = new URL(request.url) + const page = searchParams.get("page") + const search = searchParams.get("search") + const dataSkip = Number(page) * 5 - 5; + + const data = await prisma.forum_Posting.findMany({ + take: 5, + skip: dataSkip, + orderBy: { + createdAt: "desc", + }, + where: { + isActive: true, + diskusi: { + mode: "insensitive", + contains: (search == undefined || search == "null") ? "" : search, + }, + }, + select: { + id: true, + diskusi: true, + createdAt: true, + isActive: true, + authorId: true, + Author: { + select: { + id: true, + username: true, + Profile: { + select: { + id: true, + name: true, + imageId: true, + }, + }, + }, + }, + Forum_Komentar: { + where: { + isActive: true, + }, + }, + ForumMaster_StatusPosting: { + select: { + id: true, + status: true, + }, + }, + forumMaster_StatusPostingId: true, + }, + }); + + return NextResponse.json({ success: true, message: "Berhasil mendapatkan data", data }, { status: 200 }); + + } + catch (error) { + console.error(error); + return NextResponse.json({ success: false, message: "Gagal mendapatkan data, coba lagi nanti ", reason: (error as Error).message, }, { status: 500 }); + } +} \ No newline at end of file diff --git a/src/app/api/new/home/route.ts b/src/app/api/new/home/route.ts new file mode 100644 index 00000000..640d45ef --- /dev/null +++ b/src/app/api/new/home/route.ts @@ -0,0 +1,84 @@ +import { prisma } from "@/lib"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; +import { NextResponse } from "next/server"; +export const dynamic = "force-dynamic"; + +// GET DATA HOME +export async function GET(request: Request) { + try { + let fixData; + const { searchParams } = new URL(request.url); + const kategori = searchParams.get("cat"); + + const userLoginId = await funGetUserIdByToken(); + if (userLoginId == null) { + return NextResponse.json( + { + success: false, + message: "Gagal mendapatkan data, user id tidak ada", + }, + { status: 500 } + ); + } + + if (kategori == "job") { + fixData = await prisma.job.findMany({ + take: 2, + orderBy: { + createdAt: "desc", + }, + where: { + isActive: true, + masterStatusId: "1", + }, + select: { + id: true, + Author: { + select: { + id: true, + username: true, + }, + }, + title: true, + deskripsi: true, + }, + }); + } else if (kategori == "cek_profile") { + const data = await prisma.user.findUnique({ + where: { + id: userLoginId, + }, + include: { + Profile: { + select: { + id: true, + imageId: true, + }, + }, + }, + }); + + fixData = { + profile: data?.Profile?.id, + imageId: data?.Profile?.imageId, + }; + } + + return NextResponse.json( + { success: true, message: "Berhasil mendapatkan data", data: fixData }, + { status: 200 } + ); + } catch (error) { + console.error(error); + return NextResponse.json( + { + success: false, + message: "Gagal mendapatkan data, coba lagi nanti ", + reason: (error as Error).message, + }, + { status: 500 } + ); + } finally { + await prisma.$disconnect(); + } +} diff --git a/src/app/api/new/investasi/[id]/route.ts b/src/app/api/new/investasi/[id]/route.ts new file mode 100644 index 00000000..1c83c6a7 --- /dev/null +++ b/src/app/api/new/investasi/[id]/route.ts @@ -0,0 +1,49 @@ +import { prisma } from "@/lib"; +import { NextResponse } from "next/server"; +export const dynamic = "force-dynamic"; + +// GET ONE DATA INVESTASI BY ID +export async function GET( + request: Request, + context: { params: { id: string } } +) { + try { + const { id } = context.params; + const data = await prisma.investasi.findUnique({ + where: { + id: id, + }, + include: { + author: { + include: { + Profile: true, + }, + }, + Investasi_Invoice: true, + MasterStatusInvestasi: true, + BeritaInvestasi: true, + DokumenInvestasi: true, + ProspektusInvestasi: true, + MasterPembagianDeviden: true, + MasterPencarianInvestor: true, + MasterPeriodeDeviden: true, + MasterProgresInvestasi: true, + }, + }); + + return NextResponse.json( + { success: true, message: "Berhasil mendapatkan data", data }, + { status: 200 } + ); + } catch (error) { + console.error(error); + return NextResponse.json( + { + success: false, + message: "Gagal mendapatkan data, coba lagi nanti ", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/new/investasi/berita/[id]/route.ts b/src/app/api/new/investasi/berita/[id]/route.ts new file mode 100644 index 00000000..7c0f27ed --- /dev/null +++ b/src/app/api/new/investasi/berita/[id]/route.ts @@ -0,0 +1,70 @@ +import { prisma } from "@/lib"; +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; + +export async function GET( + request: Request, + context: { params: { id: string } } +) { + // if (request.method === "GET") { + // return NextResponse.json( + // { success: false, message: "Method not allowed" }, + // { status: 405 } + // ); + // } + + try { + let fixData; + const { id } = context.params; + const { searchParams } = new URL(request.url); + const kategori: string | null = searchParams.get("kategori"); + const page = searchParams.get("page"); + const takeData = 10; + const skipData = Number(page) * takeData - takeData; + + if (!kategori) { + fixData = await prisma.beritaInvestasi.findFirst({ + where: { + id: id, + }, + include: { + investasi: { + select: { + authorId: true, + }, + }, + }, + }); + } else if (kategori == "get-all") { + fixData = await prisma.beritaInvestasi.findMany({ + take: takeData, + skip: skipData, + orderBy: { + updatedAt: "desc", + }, + where: { + investasiId: id, + active: true, + }, + }); + } + + await prisma.$disconnect(); + + return NextResponse.json( + { success: true, message: "Success get data news", data: fixData }, + { status: 200 } + ); + } catch (error) { + await prisma.$disconnect(); + backendLogger.error("Error get data news", error); + return NextResponse.json( + { + success: false, + message: "Failed to get data, try again later", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/new/investasi/dokumen/[id]/route.ts b/src/app/api/new/investasi/dokumen/[id]/route.ts new file mode 100644 index 00000000..b4146075 --- /dev/null +++ b/src/app/api/new/investasi/dokumen/[id]/route.ts @@ -0,0 +1,61 @@ +import { prisma } from "@/lib"; +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; + +export async function GET( + request: Request, + context: { params: { id: string } } +) { + if (request.method === "GET") { + try { + let fixData; + const { id } = context.params; + const { searchParams } = new URL(request.url); + const kategori = searchParams.get("kategori"); + const page = searchParams.get("page"); + const takeData = 10; + const skipData = Number(page) * takeData - takeData; + + if (kategori == null) { + fixData = await prisma.dokumenInvestasi.findFirst({ + where: { + id: id, + }, + }); + } else if (kategori == "get-all") { + fixData = await prisma.dokumenInvestasi.findMany({ + take: takeData, + skip: skipData, + orderBy: { + updatedAt: "desc", + }, + where: { + investasiId: id, + active: true, + }, + }); + } + + await prisma.$disconnect(); + + return NextResponse.json( + { success: true, message: "Success get data document", data: fixData }, + { status: 200 } + ); + } catch (error) { + backendLogger.error("Error get data document", error); + return NextResponse.json( + { + success: false, + message: "Failed to get data, try again later", + reason: (error as Error).message, + }, + { status: 500 } + ); + } + } + return NextResponse.json( + { success: false, message: "Method not allowed" }, + { status: 405 } + ); +} diff --git a/src/app/api/new/investasi/invoice/route.ts b/src/app/api/new/investasi/invoice/route.ts new file mode 100644 index 00000000..3af318a1 --- /dev/null +++ b/src/app/api/new/investasi/invoice/route.ts @@ -0,0 +1,99 @@ +import { prisma } from "@/lib"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; +import _ from "lodash"; +import { NextResponse } from "next/server"; +export const dynamic = "force-dynamic"; + + + +// GET ALL DATA INVESTASI SAYA (INVOICE) +export async function GET(request: Request) { + try { + let dataFix + const { searchParams } = new URL(request.url) + const page = searchParams.get("page") + const dataSkip = Number(page) * 10 - 10; + const kategori = searchParams.get("cat") + + + const userLoginId = await funGetUserIdByToken() + if (userLoginId == null) { + return NextResponse.json({ success: false, message: "Gagal mendapatkan data, user id tidak ada" }, { status: 500 }); + } + + if (kategori == "saham-saya") { + const data = await prisma.investasi_Invoice.findMany({ + take: 10, + skip: dataSkip, + orderBy: { + updatedAt: "desc", + }, + where: { + authorId: userLoginId, + statusInvoiceId: "1", + isActive: true, + }, + select: { + id: true, + nominal: true, + lembarTerbeli: true, + Investasi: { + select: { + title: true, + progress: true + } + } + } + }); + + dataFix = data.map((v: any) => ({ + ..._.omit(v, ["Investasi"]), + title: v.Investasi.title, + progress: v.Investasi.progress + })) + + } else if (kategori == "transaksi") { + const data = await prisma.investasi_Invoice.findMany({ + take: 10, + skip: dataSkip, + orderBy: { + updatedAt: "desc", + }, + where: { + authorId: userLoginId, + }, + select: { + id: true, + statusInvoiceId: true, + nominal: true, + createdAt: true, + StatusInvoice: { + select: { + name: true + } + }, + Investasi: { + select: { + title: true + } + } + } + }); + + + dataFix = data.map((v: any) => ({ + ..._.omit(v, ["Investasi", "StatusInvoice"]), + title: v.Investasi.title, + statusInvoice: v.StatusInvoice.name + })) + } + + + return NextResponse.json({ success: true, message: "Berhasil mendapatkan data", data: dataFix }, { status: 200 }); + + } + catch (error) { + console.error(error); + return NextResponse.json({ success: false, message: "Gagal mendapatkan data, coba lagi nanti ", reason: (error as Error).message, }, { status: 500 }); + } +} \ No newline at end of file diff --git a/src/app/api/new/investasi/master/route.ts b/src/app/api/new/investasi/master/route.ts new file mode 100644 index 00000000..841de0f4 --- /dev/null +++ b/src/app/api/new/investasi/master/route.ts @@ -0,0 +1,46 @@ +import { prisma } from "@/lib"; +import { NextResponse } from "next/server"; +export const dynamic = "force-dynamic"; + + +// GET ALL DATA MASTER UNTUK INVESTASI +export async function GET(request: Request) { + try { + let dataFix + const { searchParams } = new URL(request.url) + const kategori = searchParams.get("cat") + + if (kategori == "pencarian-investor") { + dataFix = await await prisma.masterPencarianInvestor.findMany({ + select: { + id: true, + name: true, + active: true, + }, + }); + } else if (kategori == "periode-deviden") { + dataFix = await prisma.masterPeriodeDeviden.findMany({ + select: { + id: true, + name: true, + active: true, + }, + }); + } else if (kategori == "pembagian-deviden") { + dataFix = await prisma.masterPembagianDeviden.findMany({ + select: { + id: true, + name: true, + active: true, + }, + }); + } + + return NextResponse.json({ success: true, message: "Berhasil mendapatkan data", data: dataFix }, { status: 200 }); + + } + catch (error) { + console.error(error); + return NextResponse.json({ success: false, message: "Gagal mendapatkan data, coba lagi nanti ", reason: (error as Error).message, }, { status: 500 }); + } +} \ No newline at end of file diff --git a/src/app/api/new/investasi/route.ts b/src/app/api/new/investasi/route.ts new file mode 100644 index 00000000..13b7a818 --- /dev/null +++ b/src/app/api/new/investasi/route.ts @@ -0,0 +1,145 @@ +import { prisma } from "@/lib"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; +import _ from "lodash"; +import moment from "moment"; +import { NextResponse } from "next/server"; +export const dynamic = "force-dynamic"; + + +// GET ALL DATA INVESTASI +export async function GET(request: Request) { + try { + let dataFix + const { searchParams } = new URL(request.url) + const kategori = searchParams.get("cat") + const status = searchParams.get("status") + const page = searchParams.get("page") + const dataTake = 10 + const dataSkip = Number(page) * dataTake - dataTake; + + if (kategori == "bursa") { + const data = await prisma.investasi.findMany({ + where: { + masterStatusInvestasiId: "1", + masterProgresInvestasiId: "1", + }, + select: { + id: true, + MasterPencarianInvestor: true, + countDown: true, + progress: true, + }, + }); + + for (let a of data) { + if ( + (a.MasterPencarianInvestor?.name as any) - + moment(new Date()).diff(new Date(a.countDown as any), "days") <= + 0 + ) { + await prisma.investasi.update({ + where: { + id: a.id, + }, + data: { + masterProgresInvestasiId: "3", + }, + }); + } + + if (a.progress === "100") { + await prisma.investasi.update({ + where: { + id: a.id, + }, + data: { + masterProgresInvestasiId: "2", + }, + }); + } + } + + // cek data yang lewat + // klo ada, update status + const dataAwal = await prisma.investasi.findMany({ + take: dataTake, + skip: dataSkip, + orderBy: [ + { + masterProgresInvestasiId: "asc", + }, + { + countDown: "desc", + }, + ], + where: { + masterStatusInvestasiId: "1", + }, + select: { + id: true, + imageId: true, + title: true, + progress: true, + countDown: true, + MasterPencarianInvestor: { + select: { + name: true + } + } + } + }); + + dataFix = dataAwal.map((v: any) => ({ + ..._.omit(v, ["MasterPencarianInvestor"]), + pencarianInvestor: v.MasterPencarianInvestor.name + })) + + } else if (kategori == "portofolio") { + const userLoginId = await funGetUserIdByToken() + if (userLoginId == null) { + return NextResponse.json({ success: false, message: "Gagal mendapatkan data, user id tidak ada" }, { status: 500 }); + } + + const data = await prisma.investasi.findMany({ + take: dataTake, + skip: dataSkip, + orderBy: { + updatedAt: "desc", + }, + where: { + authorId: userLoginId, + masterStatusInvestasiId: status, + }, + select: { + id: true, + title: true, + targetDana: true, + imageId: true, + countDown: true, + updatedAt: true, + MasterPencarianInvestor: { + select: { + name: true, + }, + }, + }, + }); + + dataFix = data.map((v: any) => ({ + ..._.omit(v, ["MasterPencarianInvestor"]), + pencarianInvestor: v.MasterPencarianInvestor.name + })) + + + } + + + + return NextResponse.json({ success: true, message: "Berhasil mendapatkan data", data: dataFix }, { status: 200 }); + + } + catch (error) { + console.error(error); + return NextResponse.json({ success: false, message: "Gagal mendapatkan data, coba lagi nanti ", reason: (error as Error).message, }, { status: 500 }); + } +} \ No newline at end of file diff --git a/src/app/api/new/map/[id]/route.ts b/src/app/api/new/map/[id]/route.ts new file mode 100644 index 00000000..f5d80770 --- /dev/null +++ b/src/app/api/new/map/[id]/route.ts @@ -0,0 +1,76 @@ +import { prisma } from "@/lib"; +import { NextResponse } from "next/server"; +export const dynamic = "force-dynamic"; + +export async function GET(request: Request, context: { params: { id: string } }) { + try { + const { id } = context.params + const data = await prisma.businessMaps.findUnique({ + where: { + id: id, + }, + select: { + namePin: true, + latitude: true, + longitude: true, + pinId: true, + imageId: true, + Author: { + select: { + Profile: { + select: { + id: true, + name: true, + imageId: true, + } + } + } + }, + Portofolio: { + select: { + id: true, + alamatKantor: true, + tlpn: true, + deskripsi: true, + namaBisnis: true, + MasterBidangBisnis: { + select: { + name: true, + }, + }, + }, + }, + } + }); + + const dataLokasi = { + namePin: data?.namePin, + latitude: data?.latitude, + longitude: data?.longitude, + pinId: data?.pinId, + imageId: data?.imageId, + } + + const dataAuthor = { + id: data?.Author?.Profile?.id, + name: data?.Author?.Profile?.name, + imageId: data?.Author?.Profile?.imageId, + } + + const dataBisnis = { + id: data?.Portofolio?.id, + alamatKantor: data?.Portofolio?.alamatKantor, + tlpn: data?.Portofolio?.tlpn, + deskripsi: data?.Portofolio?.deskripsi, + namaBisnis: data?.Portofolio?.namaBisnis, + bidangBisnis: data?.Portofolio?.MasterBidangBisnis?.name, + } + + return NextResponse.json({ success: true, message: "Berhasil mendapatkan data", dataLokasi, dataAuthor, dataBisnis }, { status: 200 }); + + } + catch (error) { + console.error(error); + return NextResponse.json({ success: false, message: "Gagal mendapatkan data, coba lagi nanti ", reason: (error as Error).message, }, { status: 500 }); + } +} \ No newline at end of file diff --git a/src/app/api/new/map/route.ts b/src/app/api/new/map/route.ts new file mode 100644 index 00000000..61805cbf --- /dev/null +++ b/src/app/api/new/map/route.ts @@ -0,0 +1,52 @@ +import { prisma } from "@/lib"; +import _ from "lodash"; +import { NextResponse } from "next/server"; +export const dynamic = "force-dynamic"; + +// GET ALL DATA MAP +export async function GET(request: Request) { + try { + const data = await prisma.businessMaps.findMany({ + where: { + isActive: true, + Portofolio: { + NOT: { + logoId: null, + }, + }, + }, + select: { + id: true, + namePin: true, + latitude: true, + longitude: true, + pinId: true, + Portofolio: { + select: { + logoId: true, + }, + }, + }, + }); + + const dataFix = data.map((v: any) => ({ + ..._.omit(v, ["Portofolio"]), + logoId: v.Portofolio.logoId, + })); + + return NextResponse.json( + { success: true, message: "Berhasil mendapatkan data", data: dataFix }, + { status: 200 } + ); + } catch (error) { + console.error(error); + return NextResponse.json( + { + success: false, + message: "Gagal mendapatkan data, coba lagi nanti ", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/new/portofolio/[id]/route.ts b/src/app/api/new/portofolio/[id]/route.ts new file mode 100644 index 00000000..4e6900ca --- /dev/null +++ b/src/app/api/new/portofolio/[id]/route.ts @@ -0,0 +1,241 @@ +import { prisma } from "@/lib"; +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; +export const dynamic = "force-dynamic"; + +// GET ONE DATA PORTOFOLIO BY ID PORTOFOLIO +export async function GET( + request: Request, + context: { params: { id: string } } +) { + try { + let dataFix; + const { id } = context.params; + const { searchParams } = new URL(request.url); + const kategori = searchParams.get("cat"); + + if (kategori == "bisnis") { + const data = await prisma.portofolio.findUnique({ + where: { + id: id, + }, + select: { + id_Portofolio: true, + namaBisnis: true, + alamatKantor: true, + tlpn: true, + deskripsi: true, + logoId: true, + MasterBidangBisnis: { + select: { + name: true, + }, + }, + Profile: { + select: { + userId: true, + }, + }, + Portofolio_BidangDanSubBidangBisnis: { + select: { + MasterSubBidangBisnis: { + select: { + name: true, + }, + }, + }, + }, + }, + }); + + dataFix = { + id_Portofolio: data?.id_Portofolio, + namaBisnis: data?.namaBisnis, + alamatKantor: data?.alamatKantor, + tlpn: data?.tlpn, + deskripsi: data?.deskripsi, + logoId: data?.logoId, + bidangBisnis: data?.MasterBidangBisnis?.name, + subBidangBisnis: data?.Portofolio_BidangDanSubBidangBisnis?.map((item) => item.MasterSubBidangBisnis?.name), + authorId: data?.Profile?.userId, + }; + } else if (kategori == "lokasi") { + const data = await prisma.portofolio.findUnique({ + where: { + id: id, + }, + select: { + logoId: true, + BusinessMaps: { + select: { + id: true, + namePin: true, + latitude: true, + longitude: true, + imageId: true, + pinId: true, + }, + }, + }, + }); + + dataFix = { + mapId: data?.BusinessMaps?.id, + logoId: data?.logoId, + namePin: data?.BusinessMaps?.namePin, + latitude: data?.BusinessMaps?.latitude, + longitude: data?.BusinessMaps?.longitude, + imageId: data?.BusinessMaps?.imageId, + pinId: data?.BusinessMaps?.pinId, + }; + } else if (kategori == "sosmed") { + const data = await prisma.portofolio.findUnique({ + where: { + id: id, + }, + select: { + Portofolio_MediaSosial: { + select: { + facebook: true, + twitter: true, + instagram: true, + tiktok: true, + youtube: true, + }, + }, + }, + }); + + dataFix = { + facebook: data?.Portofolio_MediaSosial?.facebook, + twitter: data?.Portofolio_MediaSosial?.twitter, + instagram: data?.Portofolio_MediaSosial?.instagram, + tiktok: data?.Portofolio_MediaSosial?.tiktok, + youtube: data?.Portofolio_MediaSosial?.youtube, + }; + } + + return NextResponse.json( + { success: true, message: "Berhasil mendapatkan data", data: dataFix }, + { status: 200 } + ); + } catch (error) { + console.error(error); + return NextResponse.json( + { + success: false, + message: "Gagal mendapatkan data, coba lagi nanti (error: 500)", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} + +// DELETE ONE DATA PORTOFOLIO +export async function DELETE( + request: Request, + context: { params: { id: string } } +) { + try { + const { id } = context.params; + + const data = await prisma.portofolio.findUnique({ + where: { + id: id, + }, + include: { + BusinessMaps: { + select: { + pinId: true, + imageId: true, + }, + }, + }, + }); + + try { + const id = data?.logoId; + const deleteLogo = await fetch( + `https://wibu-storage.wibudev.com/api/files/${id}/delete`, + { + method: "DELETE", + headers: { + Authorization: `Bearer ${process.env.WS_APIKEY}`, + }, + } + ); + + if (deleteLogo.ok) { + backendLogger.info(`Success delete logo`); + } + + if (data?.BusinessMaps?.pinId != null) { + const pinId = data?.BusinessMaps?.pinId; + const deletePin = await fetch( + `https://wibu-storage.wibudev.com/api/files/${pinId}/delete`, + { + method: "DELETE", + headers: { + Authorization: `Bearer ${process.env.WS_APIKEY}`, + }, + } + ); + + if (deletePin.ok) { + backendLogger.info(`Success delete pin`); + } + + const imageId = data?.BusinessMaps?.imageId; + const deleteImage = await fetch( + `https://wibu-storage.wibudev.com/api/files/${imageId}/delete`, + { + method: "DELETE", + headers: { + Authorization: `Bearer ${process.env.WS_APIKEY}`, + }, + } + ); + + if (deleteImage.ok) { + backendLogger.info(`Success delete image`); + } + } + } catch (error) { + backendLogger.error("Error delete logo", error); + } + + const deletePortoMedsos = await prisma.portofolio_MediaSosial.delete({ + where: { + portofolioId: id, + }, + }); + + const deleteMap = await prisma.businessMaps.delete({ + where: { + portofolioId: id, + }, + }); + + const deletePortofolio = await prisma.portofolio.delete({ + where: { + id: id, + }, + }); + + return NextResponse.json( + { success: true, message: "Berhasil menghapus data" }, + { status: 200 } + ); + } catch (error) { + console.error(error); + return NextResponse.json( + { + success: false, + message: "Gagal menghapus data, coba lagi nanti (error: 500)", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/new/portofolio/route.ts b/src/app/api/new/portofolio/route.ts new file mode 100644 index 00000000..3a38b5a9 --- /dev/null +++ b/src/app/api/new/portofolio/route.ts @@ -0,0 +1,60 @@ +import { prisma } from "@/lib"; +import { NextResponse } from "next/server"; +export const dynamic = "force-dynamic"; + + +// GET ALL DATA PORTOFOLIO BY PROFILE ID +export async function GET(request: Request) { + try { + let fixData + const { searchParams } = new URL(request.url) + const profile = searchParams.get("profile") + const kategori_halaman = searchParams.get("cat") + const page = searchParams.get("page") + const dataSkip = Number(page) * 10 - 10; + + if (kategori_halaman == "profile") { + fixData = await prisma.portofolio.findMany({ + take: 2, + orderBy: { + createdAt: "desc", + }, + where: { + profileId: profile, + active: true, + }, + select: { + id: true, + id_Portofolio: true, + namaBisnis: true, + profileId: true, + }, + }); + } else if (kategori_halaman == "portofolio") { + fixData = await prisma.portofolio.findMany({ + skip: dataSkip, + take: 10, + orderBy: { + createdAt: "desc", + }, + where: { + profileId: profile, + active: true, + }, + select: { + id: true, + id_Portofolio: true, + namaBisnis: true, + profileId: true, + }, + }); + } + + return NextResponse.json({ success: true, message: "Berhasil mendapatkan data", data: fixData }, { status: 200 }); + + } + catch (error) { + console.error(error); + return NextResponse.json({ success: false, message: "Gagal mendapatkan data, coba lagi nanti ", reason: (error as Error).message, }, { status: 500 }); + } +} \ No newline at end of file diff --git a/src/app/api/new/user/route.ts b/src/app/api/new/user/route.ts new file mode 100644 index 00000000..198c0071 --- /dev/null +++ b/src/app/api/new/user/route.ts @@ -0,0 +1,59 @@ +import { prisma } from "@/lib"; +import { NextResponse } from "next/server"; +export const dynamic = "force-dynamic"; + + +// GET ONE DATA USER PROFILE BY PROFILE ID +export async function GET(request: Request) { + try { + const { searchParams } = new URL(request.url) + const profile = searchParams.get("profile") + + const data = await prisma.profile.findUnique({ + where: { + id: String(profile), + }, + select: { + id: true, + name: true, + email: true, + alamat: true, + jenisKelamin: true, + imageId: true, + imageBackgroundId: true, + userId: true, + User: { + select: { + username: true, + nomor: true, + active: true, + masterUserRoleId: true + } + } + } + }); + + const dataFix = { + id: data?.userId, + username: data?.User?.username, + nomor: data?.User?.nomor, + active: data?.User?.active, + masterUserRoleId: data?.User?.masterUserRoleId, + idProfile: data?.id, + name: data?.name, + email: data?.email, + alamat: data?.alamat, + jenisKelamin: data?.jenisKelamin, + imageId: data?.imageId, + imageBackgroundId: data?.imageBackgroundId + + } + + return NextResponse.json({ success: true, message: "Berhasil mendapatkan data", data: dataFix, }, { status: 200 }); + + } + catch (error) { + console.error(error); + return NextResponse.json({ success: false, message: "Gagal mendapatkan data, coba lagi nanti ", reason: (error as Error).message, }, { status: 500 }); + } +} \ No newline at end of file diff --git a/src/app/api/not-user/job/[id]/route.ts b/src/app/api/not-user/job/[id]/route.ts new file mode 100644 index 00000000..757fa07c --- /dev/null +++ b/src/app/api/not-user/job/[id]/route.ts @@ -0,0 +1,25 @@ +import { NextResponse } from "next/server"; +import prisma from "@/lib/prisma"; + +export async function GET( + request: Request, + { params }: { params: { id: string } } +) { + try { + const { id } = params; + + const data = await prisma.job.findUnique({ + where: { + id: id, + }, + }); + + return NextResponse.json(data); + } catch (error) { + console.error("Error fetching job data:", error); + return NextResponse.json( + { error: "Failed to fetch job data" }, + { status: 500 } + ); + } +} diff --git a/src/app/api/notifications/to-admin/route.ts b/src/app/api/notifications/to-admin/route.ts new file mode 100644 index 00000000..bd1e921f --- /dev/null +++ b/src/app/api/notifications/to-admin/route.ts @@ -0,0 +1,72 @@ +import { NextResponse } from "next/server"; +import {prisma} from "@/lib" + +interface NotificationData { + userId: string; + appId: string; + status: string; + title: string; + pesan: string; + kategoriApp: string; +} + +export async function POST(request: Request) { + try { + const { data }: { data: NotificationData } = await request.json(); + + // Validasi input + if (!data || !data.userId || !data.title || !data.pesan) { + return NextResponse.json( + { + success: false, + message: "Missing required fields", + }, + { status: 400 } + ); + } + + // Ambil semua admin aktif + const getAdmin = await prisma.user.findMany({ + where: { + active: true, + masterUserRoleId: "2", + }, + }); + + // Buat notifikasi untuk semua admin secara paralel + const createPromises = getAdmin.map((a) => + prisma.notifikasi.create({ + data: { + adminId: a.id, + userId: data.userId, + appId: data.appId, + status: data.status, + title: data.title, + pesan: data.pesan, + kategoriApp: data.kategoriApp, + userRoleId: "2", + }, + }) + ); + + await Promise.all(createPromises); + + return NextResponse.json( + { + success: true, + message: "Successfully created notifications for admins", + }, + { status: 201 } + ); + } catch (error) { + console.error("Error creating notification for admin:", error); + return NextResponse.json( + { + success: false, + message: "Error creating notification for admin", + error: (error as Error).message || "Unknown error", + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/notifikasi/count/route.ts b/src/app/api/notifikasi/count/route.ts new file mode 100644 index 00000000..1a3763d1 --- /dev/null +++ b/src/app/api/notifikasi/count/route.ts @@ -0,0 +1,28 @@ +import { prisma } from "@/lib"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; + +export const dynamic = "force-dynamic"; + +export async function GET(request: Request) { + try { + const userLoginId = await funGetUserIdByToken(); + + const count = await prisma.notifikasi.findMany({ + where: { + userId: userLoginId, + isRead: false, + userRoleId: "1", + }, + }); + + return NextResponse.json({ success: true, data: count.length }); + } catch (error) { + backendLogger.error("Gagal mendapatkan data count notifikasi", error); + return NextResponse.json( + { success: false, message: "Gagal mendapatkan data" }, + { status: 500 } + ); + } +} diff --git a/src/app/api/notifikasi/donasi/transaksi/[id]/route.ts b/src/app/api/notifikasi/donasi/transaksi/[id]/route.ts new file mode 100644 index 00000000..925aded2 --- /dev/null +++ b/src/app/api/notifikasi/donasi/transaksi/[id]/route.ts @@ -0,0 +1,39 @@ +import { prisma } from "@/lib"; +import _ from "lodash"; +import { NextResponse } from "next/server"; + +export async function GET( + request: Request, + { params }: { params: { id: string } } +) { + try { + const { id } = params; + + const data = await prisma.donasi_Invoice.findUnique({ + where: { + id: id, + }, + select: { + // DonasiMaster_Status: true, + DonasiMaster_StatusInvoice: true, + }, + }); + + return NextResponse.json({ + success: true, + message: "Berhasil di check transaksis donasi", + statusTransaksi: _.lowerCase(data?.DonasiMaster_StatusInvoice?.name), + }); + } catch (error) { + return NextResponse.json( + { + success: false, + message: "Gagal di check transaksis donasi", + reason: (error as Error).message, + }, + { + status: 500, + } + ); + } +} diff --git a/src/app/api/notifikasi/get-all-by-category/route.ts b/src/app/api/notifikasi/get-all-by-category/route.ts new file mode 100644 index 00000000..5f770fc0 --- /dev/null +++ b/src/app/api/notifikasi/get-all-by-category/route.ts @@ -0,0 +1,65 @@ +import { prisma } from "@/lib"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; +import { ICategoryapp } from "@/app_modules/notifikasi/model/interface"; +import backendLogger from "@/util/backendLogger"; +import _ from "lodash"; +import { NextResponse } from "next/server"; +export const dynamic = "force-dynamic"; + +export async function GET(request: Request) { + try { + let fixData; + const { searchParams } = new URL(request.url); + const category = searchParams.get("category") as ICategoryapp; + const page = searchParams.get("page"); + + const userLoginId = await funGetUserIdByToken(); + const fixPage = _.toNumber(page); + const takeData = 10; + const skipData = fixPage * takeData - takeData; + + if (category === "Semua") { + fixData = await prisma.notifikasi.findMany({ + take: takeData, + skip: skipData, + orderBy: [ + { + isRead: "asc", + }, + { createdAt: "desc" }, + ], + where: { + userId: userLoginId, + userRoleId: "1", + }, + }); + } else { + fixData = await prisma.notifikasi.findMany({ + take: takeData, + skip: skipData, + orderBy: [ + { + isRead: "asc", + }, + { createdAt: "desc" }, + ], + where: { + userId: userLoginId, + userRoleId: "1", + kategoriApp: _.upperCase(category), + }, + }); + } + + return NextResponse.json( + { success: true, data: fixData, message: "Berhasil mendapatkan data" }, + { status: 200 } + ); + } catch (error) { + backendLogger.error("Error get data notifikasi: " + error); + return NextResponse.json( + { success: false, message: "Gagal mendapatkan data" }, + { status: 500 } + ); + } +} diff --git a/src/app/api/notifikasi/kategori/[name]/route.ts b/src/app/api/notifikasi/kategori/[name]/route.ts new file mode 100644 index 00000000..e0c20d2d --- /dev/null +++ b/src/app/api/notifikasi/kategori/[name]/route.ts @@ -0,0 +1,89 @@ +import { prisma } from "@/lib"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; +import { ICategoryapp } from "@/app_modules/notifikasi/model/interface"; +import backendLogger from "@/util/backendLogger"; +import _ from "lodash"; +import { NextResponse } from "next/server"; +export const dynamic = "force-dynamic"; + +export async function GET( + request: Request, + { params }: { params: { name: string } } +) { + try { + let fixData; + const { name } = params; + const { searchParams } = new URL(request.url); + const page = searchParams.get("page"); + + const takeData = 10; + const skipData = Number(page) * takeData - takeData; + + const userLoginId = await funGetUserIdByToken(); + if (!userLoginId) + return NextResponse.json( + { success: false, message: "User not found" }, + { status: 404 } + ); + + if (!page) { + fixData = await prisma.notifikasi.findMany({ + orderBy: [ + { + isRead: "asc", + }, + { createdAt: "desc" }, + ], + where: { + userId: userLoginId, + userRoleId: "1", + }, + }); + } else { + const fixNameKategori = _.startCase(name); + if (fixNameKategori === "Semua") { + fixData = await prisma.notifikasi.findMany({ + take: takeData, + skip: skipData, + orderBy: [ + { + isRead: "asc", + }, + { createdAt: "desc" }, + ], + where: { + userId: userLoginId, + userRoleId: "1", + }, + }); + } else { + fixData = await prisma.notifikasi.findMany({ + take: takeData, + skip: skipData, + orderBy: [ + { + isRead: "asc", + }, + { createdAt: "desc" }, + ], + where: { + userId: userLoginId, + userRoleId: "1", + kategoriApp: _.upperCase(name), + }, + }); + } + } + + return NextResponse.json( + { success: true, data: fixData, message: "Berhasil mendapatkan data" }, + { status: 200 } + ); + } catch (error) { + backendLogger.error("Error get data notifikasi: " + error); + return NextResponse.json( + { success: false, message: "Gagal mendapatkan data" }, + { status: 500 } + ); + } +} diff --git a/src/app/api/notifikasi/kategori/route.ts b/src/app/api/notifikasi/kategori/route.ts new file mode 100644 index 00000000..097601e1 --- /dev/null +++ b/src/app/api/notifikasi/kategori/route.ts @@ -0,0 +1,88 @@ +import { prisma } from "@/lib"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; +import { ICategoryapp } from "@/app_modules/notifikasi/model/interface"; +import backendLogger from "@/util/backendLogger"; +import _ from "lodash"; +import { NextResponse } from "next/server"; +export const dynamic = "force-dynamic"; + +export async function GET( + request: Request, +) { + try { + let fixData; + const { searchParams } = new URL(request.url); + const category = searchParams.get("category") as ICategoryapp; + const page = searchParams.get("page"); + + const takeData = 10; + const skipData = Number(page) * takeData - takeData; + + const userLoginId = await funGetUserIdByToken(); + if (!userLoginId) + return NextResponse.json( + { success: false, message: "User not found" }, + { status: 404 } + ); + + if (!page) { + fixData = await prisma.notifikasi.findMany({ + orderBy: [ + { + isRead: "asc", + }, + { createdAt: "desc" }, + ], + where: { + userId: userLoginId, + userRoleId: "1", + }, + }); + } else { + const fixNameKategori = _.startCase(category); + if (fixNameKategori === "Semua") { + fixData = await prisma.notifikasi.findMany({ + take: takeData, + skip: skipData, + orderBy: [ + { + isRead: "asc", + }, + { createdAt: "desc" }, + ], + where: { + userId: userLoginId, + userRoleId: "1", + }, + }); + } else { + fixData = await prisma.notifikasi.findMany({ + take: takeData, + skip: skipData, + orderBy: [ + { + isRead: "asc", + }, + { createdAt: "desc" }, + ], + where: { + userId: userLoginId, + userRoleId: "1", + kategoriApp: _.upperCase(category), + }, + }); + } + } + + return NextResponse.json( + { success: true, data: fixData, message: "Berhasil mendapatkan data" }, + { status: 200 } + ); + } catch (error) { + backendLogger.error("Error get data notifikasi: " + error); + return NextResponse.json( + { success: false, message: "Gagal mendapatkan data" }, + { status: 500 } + ); + } +} diff --git a/src/app/api/notifikasi/master/route.ts b/src/app/api/notifikasi/master/route.ts new file mode 100644 index 00000000..7d51056f --- /dev/null +++ b/src/app/api/notifikasi/master/route.ts @@ -0,0 +1,35 @@ +import { prisma } from "@/lib"; +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; + +export const dynamic = "force-dynamic"; + +export async function GET(request: Request) { + try { + const data = await prisma.masterKategoriApp.findMany({ + where: { + isActive: true, + }, + }); + + data.unshift({ + id: "0", + isActive: true, + createdAt: new Date(), + updatedAt: new Date(), + name: "Semua", + value: null, + }); + + return NextResponse.json( + { success: true, data, message: "Berhasil mendapatkan data" }, + { status: 200 } + ); + } catch (error) { + backendLogger.error("Master Notifikasi:", error); + return NextResponse.json( + { success: false, message: "Gagal mendapatkan data" }, + { status: 500 } + ); + } +} diff --git a/src/app/api/origin-url/route.ts b/src/app/api/origin-url/route.ts new file mode 100644 index 00000000..9b5e2eb8 --- /dev/null +++ b/src/app/api/origin-url/route.ts @@ -0,0 +1,6 @@ +import { NextResponse } from "next/server"; +export async function GET(req: Request) { + const origin = new URL(req.url).origin; + + return NextResponse.json({ success: true, origin }); +} diff --git a/src/app/api/pdf-to-image/route.ts b/src/app/api/pdf-to-image/route.ts new file mode 100644 index 00000000..26274157 --- /dev/null +++ b/src/app/api/pdf-to-image/route.ts @@ -0,0 +1,283 @@ +// // app/api/pdf-to-image/route.ts +import { execSync } from 'child_process'; +import { NextResponse } from 'next/server'; +import { PDFDocument } from 'pdf-lib'; +import { fromBuffer } from 'pdf2pic'; + +// // Tambahkan custom error +// class PDFConversionError extends Error { +// constructor(message: string, public statusCode: number = 500) { +// super(message); +// this.name = 'PDFConversionError'; +// } +// } + +// // Improve fungsi check dependencies +// async function checkDependencies() { +// const dependencies = [ +// { cmd: 'gm version', name: 'GraphicsMagick' }, +// { cmd: 'gs --version', name: 'Ghostscript' } +// ]; + +// for (const dep of dependencies) { +// try { +// execSync(dep.cmd); +// } catch (error) { +// throw new PDFConversionError(`${dep.name} tidak terinstall`, 500); +// } +// } +// } + +// // Tambah konstanta +// const MAX_PDF_SIZE_MB = 50; +// const MAX_IMAGE_DIMENSION = 2000; +// const CONVERSION_TIMEOUT_MS = 30000; +// const MAX_PAGES = 10; // Batasan jumlah halaman +// const DEFAULT_PAGE = 1; + +// // Modifikasi validateParams +// function validateParams(pdfUrl: string | null, pages: number[]) { +// if (!pdfUrl) { +// throw new PDFConversionError('URL parameter wajib diisi', 400); +// } +// if (pages.some(p => p < 1)) { +// throw new PDFConversionError('Nomor halaman tidak valid', 400); +// } +// if (pages.length > MAX_PAGES) { +// throw new PDFConversionError(`Maksimal ${MAX_PAGES} halaman per request`, 400); +// } +// } + +// interface ConversionResult { +// buffer: Buffer; +// text: string; +// density: number; +// width: number; +// height: number; +// } + +// // Fungsi untuk validasi dan fetch PDF +// async function fetchPDF(url: string) { +// const controller = new AbortController(); +// const timeout = setTimeout(() => controller.abort(), 10000); + +// try { +// // Validasi URL +// const validUrl = new URL(url); +// if (!validUrl.protocol.startsWith('http')) { +// throw new PDFConversionError('URL tidak valid', 400); +// } + +// const response = await fetch(url, { +// signal: controller.signal, +// headers: { +// 'Accept': 'application/pdf', +// 'User-Agent': 'Mozilla/5.0 (compatible; PDFConverter/1.0)' +// } +// }); + +// if (!response.ok) { +// throw new PDFConversionError( +// `Gagal mengakses PDF: ${response.status} ${response.statusText}`, +// response.status +// ); +// } + +// const contentType = response.headers.get('content-type'); +// if (!contentType?.includes('pdf')) { +// throw new PDFConversionError('URL bukan file PDF', 400); +// } + +// return response; + +// } catch (error: unknown) { +// if (error instanceof PDFConversionError) throw error; +// if (error instanceof Error && error.name === 'AbortError') { +// throw new PDFConversionError('Timeout saat mengunduh PDF', 504); +// } +// const message = error instanceof Error ? error.message : 'Unknown error'; +// throw new PDFConversionError('Gagal mengunduh PDF: ' + message, 500); +// } finally { +// clearTimeout(timeout); +// } +// } + +// // Tambahkan error SVG template +// const errorImageSvg = ` +// +// +// +// +// +// PDF Conversion Failed +// +// `; + +// // Tambahkan SVG untuk end of page +// const endOfPageSvg = ` +// +// +// +// End of PDF +// +// +// No more pages available +// +// +// `; + +// // Fungsi helper untuk set common headers +// function setCommonHeaders(headers: Headers) { +// headers.set('Access-Control-Allow-Origin', '*'); +// headers.set('Access-Control-Allow-Methods', 'GET, OPTIONS'); +// headers.set('Content-Security-Policy', "default-src 'self'; img-src 'self' data: blob:;"); +// headers.set('X-Content-Type-Options', 'nosniff'); +// } + +// // Fungsi helper untuk return error image +// function returnErrorImage(message: string = 'Conversion failed') { +// const response = new NextResponse(errorImageSvg, { +// headers: { +// 'Content-Type': 'image/svg+xml', +// 'Cache-Control': 'no-store', +// 'X-Error-Message': message +// } +// }); +// setCommonHeaders(response.headers); +// return response; +// } + +// // Fungsi helper untuk return end of page image +// function returnEndOfPageImage() { +// const response = new NextResponse(endOfPageSvg, { +// headers: { +// 'Content-Type': 'image/svg+xml', +// 'Cache-Control': 'public, max-age=31536000', +// 'X-Error-Message': 'End of PDF pages' +// } +// }); +// setCommonHeaders(response.headers); +// return response; +// } + +// // Fungsi untuk get total pages menggunakan pdf-lib +// async function getPDFPageCount(buffer: Buffer): Promise { +// try { +// const pdfDoc = await PDFDocument.load(buffer); +// return pdfDoc.getPageCount(); +// } catch (error) { +// console.error('Error getting PDF page count:', error); +// throw new Error('Failed to get PDF page count'); +// } +// } + +// export async function GET(request: Request) { +// let pdfBuffer: Buffer | null = null; +// const { searchParams } = new URL(request.url); + +// try { +// // Validasi parameter wajib +// const pdfUrl = searchParams.get('url'); +// if (!pdfUrl) { +// return NextResponse.json({ +// error: 'URL parameter wajib diisi' +// }, { status: 400 }); +// } + +// // Decode URL jika perlu +// const decodedUrl = decodeURIComponent(pdfUrl); + +// await checkDependencies(); + +// const getTotalPages = searchParams.get('total') === 'true'; + +// // Single fetch PDF dengan URL yang sudah di-decode +// const pdfResponse = await fetchPDF(decodedUrl); + +// const arrayBuffer = await pdfResponse.arrayBuffer(); +// pdfBuffer = Buffer.from(arrayBuffer); + +// // Get total pages +// if (getTotalPages) { +// try { +// const pageCount = await getPDFPageCount(pdfBuffer); +// return Response.json({ +// totalPages: pageCount, +// message: 'Success get total pages' +// }); +// } catch (error) { +// console.error('PDF parse error:', error); +// return Response.json({ +// error: 'Gagal membaca total halaman PDF', +// totalPages: 0 +// }, { status: 500 }); +// } +// } + +// // Parse page parameter dengan lebih baik +// const pageStr = searchParams.get('page'); +// let pageNum = 1; // Default ke halaman 1 + +// if (pageStr) { +// pageNum = parseInt(pageStr); +// if (isNaN(pageNum) || pageNum < 1) { +// return returnErrorImage('Invalid page number'); +// } + +// // Validasi halaman tidak melebihi total +// const totalPages = await getPDFPageCount(pdfBuffer); +// if (pageNum > totalPages) { +// return returnEndOfPageImage(); +// } +// } + +// const options = { +// density: 300, +// format: "png", +// width: Math.min(1200, MAX_IMAGE_DIMENSION), +// height: Math.min(1700, MAX_IMAGE_DIMENSION), +// preserveAspectRatio: true, +// saveFilename: "", +// savePath: "", +// returnBuffer: true +// }; + +// // Konversi single page +// const convert = fromBuffer(pdfBuffer, options); +// const result = await Promise.race([ +// convert(pageNum, { responseType: "buffer" }), +// new Promise((_, reject) => +// setTimeout(() => reject(new PDFConversionError('Konversi timeout', 504)), +// CONVERSION_TIMEOUT_MS) +// ) +// ]) as ConversionResult; + +// if (!result?.buffer) { +// return returnErrorImage('Konversi gagal: tidak ada output'); +// } + +// // Return image buffer +// const response = new NextResponse(result.buffer, { +// headers: { +// 'Content-Type': 'image/png', +// 'Content-Length': result.buffer.length.toString(), +// 'Cache-Control': 'public, max-age=31536000' +// } +// }); +// setCommonHeaders(response.headers); +// return response; + +// } catch (error) { +// console.error('PDF conversion error:', error); + +// // Return appropriate error response +// const errorMessage = error instanceof Error ? error.message : 'Unknown error'; +// const statusCode = error instanceof PDFConversionError ? error.statusCode : 500; + +// return !searchParams.get('pages') ? +// returnErrorImage(errorMessage) : +// NextResponse.json({ error: errorMessage }, { status: statusCode }); +// } finally { +// pdfBuffer = null; +// } +// } \ No newline at end of file diff --git a/src/app/api/portofolio/[id]/route.ts b/src/app/api/portofolio/[id]/route.ts new file mode 100644 index 00000000..0760c303 --- /dev/null +++ b/src/app/api/portofolio/[id]/route.ts @@ -0,0 +1,307 @@ +import { prisma } from "@/lib"; +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; + +export { GET, POST, PUT }; + +async function GET(request: Request, { params }: { params: { id: string } }) { + try { + const { id } = params; + + const data = await prisma.portofolio.findUnique({ + where: { + id: id, + }, + include: { + Portofolio_BidangDanSubBidangBisnis: { + select: { + id: true, + MasterSubBidangBisnis: { + select: { + id: true, + name: true, + masterBidangBisnisId: true, + }, + }, + }, + }, + MasterBidangBisnis: { + select: { + id: true, + name: true, + active: true, + }, + }, + Portofolio_MediaSosial: true, + Profile: { + select: { + userId: true, + User: { + select: { + id: true, + }, + }, + }, + }, + BusinessMaps: { + include: { + Author: true, + }, + }, + }, + }); + + if (!data) + return NextResponse.json( + { + success: false, + message: "Data tidak ditemukan", + }, + { status: 404 } + ); + + return NextResponse.json( + { + success: true, + message: "Berhasil mendapatkan data", + data: data, + }, + { status: 200 } + ); + } catch (error) { + backendLogger.error("API Error Get Data Portofolio", error); + return NextResponse.json( + { + success: false, + message: "API Error Get Data Potofolio", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} + +async function PUT(request: Request, { params }: { params: { id: string } }) { + if (request.method !== "PUT") { + return NextResponse.json( + { + success: false, + message: "Method not allowed", + }, + { status: 405 } + ); + } + + try { + const { id } = params; + const { data } = await request.json(); + + const checkData = await prisma.portofolio.findUnique({ + where: { id }, + include: { + Portofolio_BidangDanSubBidangBisnis: true, + }, + }); + + if (!checkData) { + return NextResponse.json( + { + success: false, + message: "Data tidak ditemukan", + }, + { status: 404 } + ); + } + + // Update data utama portofolio + const updatePortofolio = await prisma.portofolio.update({ + where: { id }, + data: { + namaBisnis: data.namaBisnis, + alamatKantor: data.alamatKantor, + tlpn: data.tlpn, + deskripsi: data.deskripsi, + masterBidangBisnisId: data.masterBidangBisnisId, + }, + }); + + const bidangBerubah = + checkData.masterBidangBisnisId !== data.masterBidangBisnisId; + + if (bidangBerubah) { + // Bidang berubah → hapus semua sub bidang lama + await prisma.portofolio_BidangDanSubBidangBisnis.deleteMany({ + where: { portofolioId: id }, + }); + + // Tambahkan sub bidang baru + for (const sub of data.subBidang) { + await prisma.portofolio_BidangDanSubBidangBisnis.create({ + data: { + portofolioId: id, + masterBidangBisnisId: data.masterBidangBisnisId, + masterSubBidangBisnisId: sub.MasterSubBidangBisnis.id, + }, + }); + } + } else { + // Bidang tidak berubah → sinkronisasi sub bidang + + const existingSub = checkData.Portofolio_BidangDanSubBidangBisnis; + + const incomingIds = data.subBidang.map( + (sub: any) => sub.MasterSubBidangBisnis.id + ); + + const existingIds = existingSub.map( + (item) => item.masterSubBidangBisnisId + ); + + // 1. Hapus sub bidang yang sudah tidak dipilih + const toDelete = existingSub.filter( + (item) => !incomingIds.includes(item.masterSubBidangBisnisId) + ); + + await prisma.portofolio_BidangDanSubBidangBisnis.deleteMany({ + where: { + id: { + in: toDelete.map((item) => item.id), + }, + }, + }); + + // 2. Tambahkan sub bidang baru yang belum ada di DB + const toCreate = data.subBidang.filter( + (sub: any) => !existingIds.includes(sub.MasterSubBidangBisnis.id) + ); + + for (const sub of toCreate) { + await prisma.portofolio_BidangDanSubBidangBisnis.create({ + data: { + portofolioId: id, + masterBidangBisnisId: data.masterBidangBisnisId, + masterSubBidangBisnisId: sub.MasterSubBidangBisnis.id, + }, + }); + } + } + + return NextResponse.json( + { + success: true, + message: "Berhasil update data", + data: updatePortofolio, + }, + { status: 200 } + ); + } catch (error) { + backendLogger.error("Error update data portofolio", error); + return NextResponse.json( + { + success: false, + message: "Error update data", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} + + + +async function POST(request: Request, { params }: { params: { id: string } }) { + if (request.method !== "POST") { + return NextResponse.json( + { + success: false, + message: "Method not allowed", + }, + { status: 405 } + ); + } + + try { + const { id } = params; + const { data } = await request.json(); + + const createPortofolio = await prisma.portofolio.create({ + data: { + profileId: id, + id_Portofolio: "Porto" + Date.now().toString(), + namaBisnis: data.namaBisnis, + deskripsi: data.deskripsi, + tlpn: data.tlpn, + alamatKantor: data.alamatKantor, + masterBidangBisnisId: data.masterBidangBisnisId, + logoId: data.fileId, + }, + }); + + for (let i of data.subBidang) { + const createSubBidang = + await prisma.portofolio_BidangDanSubBidangBisnis.create({ + data: { + portofolioId: createPortofolio.id, + masterBidangBisnisId: data.masterBidangBisnisId, + masterSubBidangBisnisId: i.id, + }, + }); + + if (!createSubBidang) + return NextResponse.json( + { + success: false, + message: "Gagal membuat sub bidang bisnis", + }, + { status: 400 } + ); + } + + if (!createPortofolio) + return NextResponse.json( + { + success: false, + message: "Gagal membuat portofolio", + }, + { status: 400 } + ); + + const createMedsos = await prisma.portofolio_MediaSosial.create({ + data: { + portofolioId: createPortofolio.id, + facebook: data?.facebook, + instagram: data?.instagram, + tiktok: data?.tiktok, + twitter: data?.twitter, + youtube: data?.youtube, + }, + }); + + if (!createMedsos) + return NextResponse.json( + { + success: false, + message: "Gagal menambahkan medsos", + }, + { status: 400 } + ); + + return NextResponse.json( + { + success: true, + message: "Berhasil mendapatkan data", + data: createPortofolio, + }, + { status: 200 } + ); + } catch (error) { + return NextResponse.json( + { + success: false, + message: "API Error Post Data", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/portofolio/logo/[id]/route.ts b/src/app/api/portofolio/logo/[id]/route.ts index 05134e05..08885d0b 100644 --- a/src/app/api/portofolio/logo/[id]/route.ts +++ b/src/app/api/portofolio/logo/[id]/route.ts @@ -1,11 +1,11 @@ -import prisma from "@/app/lib/prisma"; +import prisma from "@/lib/prisma"; +import backendLogger from "@/util/backendLogger"; import fs from "fs"; import { NextRequest, NextResponse } from "next/server"; -export async function GET( - req: NextRequest, - { params }: { params: { id: string } } -) { +export { GET, PUT }; + +async function GET(req: NextRequest, { params }: { params: { id: string } }) { const get = await prisma.images.findUnique({ where: { id: params.id, @@ -30,3 +30,52 @@ export async function GET( }, }); } + +async function PUT( + request: NextRequest, + { params }: { params: { id: string } } +) { + if (request.method !== "PUT") { + return NextResponse.json( + { + success: false, + message: "Method not allowed", + }, + { status: 405 } + ); + } + + try { + const { id } = params; + const portofolioId = id; + + const { data } = await request.json(); + const logoId = data; + + const updatePorto = await prisma.portofolio.update({ + where: { + id: portofolioId, + }, + data: { + logoId: logoId, + }, + }); + return NextResponse.json( + { + success: true, + message: "Berhasil mengubah Logo Bisnis!", + data: updatePorto, + }, + { status: 200 } // default status: 200 + ); + } catch (error) { + backendLogger.error("API Error Update Logo Portofolio", error); + return NextResponse.json( + { + success: false, + message: "Internal Server Error", + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/portofolio/medsos/[id]/route.ts b/src/app/api/portofolio/medsos/[id]/route.ts new file mode 100644 index 00000000..47bb658d --- /dev/null +++ b/src/app/api/portofolio/medsos/[id]/route.ts @@ -0,0 +1,55 @@ +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; +import prisma from "@/lib/prisma"; + +export async function PUT( + request: Request, + { params }: { params: { id: string } } +) { + if (request.method !== "PUT") { + return NextResponse.json( + { + success: false, + message: "Method not allowed", + }, + { status: 405 } + ); + } + + try { + const { id } = params; + const { data } = await request.json(); + + const updateData = await prisma.portofolio_MediaSosial.update({ + where: { + id: id, + }, + data: { + facebook: data.facebook, + instagram: data.instagram, + tiktok: data.tiktok, + twitter: data.twitter, + youtube: data.youtube, + }, + }); + + return NextResponse.json( + { + success: true, + message: "Berhasil update data", + data: updateData, + }, + { status: 200 } + ); + } catch (error) { + backendLogger.error("Error update data", error); + return NextResponse.json( + { + success: false, + message: "Error update data", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/profile/[id]/route.ts b/src/app/api/profile/[id]/route.ts new file mode 100644 index 00000000..edad427e --- /dev/null +++ b/src/app/api/profile/[id]/route.ts @@ -0,0 +1,110 @@ +import { prisma } from "@/lib"; +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; + +export { GET, PUT }; +async function GET(request: Request, { params }: { params: { id: string } }) { + if (request.method !== "GET") { + return NextResponse.json( + { success: false, message: "Method not allowed" }, + { status: 405 } + ); + } + + try { + let fixData; + const { id } = params; + + fixData = await prisma.profile.findFirst({ + where: { + id: id, + }, + include: { + User: true, + }, + }); + + return NextResponse.json( + { + success: true, + message: "Success get profile", + data: fixData, + }, + { status: 200 } + ); + } catch (error) { + backendLogger.error("Error get profile", error); + return NextResponse.json( + { + success: false, + message: "Error get profile", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} + +async function PUT(request: Request) { + if (request.method !== "PUT") { + return NextResponse.json( + { success: false, message: "Method not allowed" }, + { status: 405 } + ); + } + + try { + const body = await request.json(); + const { data } = body; + + const cekEmail = await prisma.profile.findUnique({ + where: { + email: data.email, + }, + }); + + if (cekEmail && cekEmail.id != data.id) + return NextResponse.json( + { success: false, message: "Email sudah digunakan" }, + { status: 400 } + ); + + const updateData = await prisma.profile.update({ + where: { + id: data.id, + }, + data: { + name: data.name, + email: data.email, + alamat: data.alamat, + jenisKelamin: data.jenisKelamin, + }, + }); + + if (!updateData) { + return NextResponse.json( + { success: false, message: "Gagal update" }, + { + status: 400, + } + ); + } + + return NextResponse.json( + { success: true, message: "Berhasil edit profile" }, + { status: 200 } + ); + } catch (error) { + backendLogger.error("Error edit profile", error); + return NextResponse.json( + { + success: false, + message: "Error edit profile", + reason: (error as Error).message, + }, + { status: 500 } + ); + } finally { + await prisma.$disconnect(); + } +} diff --git a/src/app/api/profile/foto/[id]/route.ts b/src/app/api/profile/foto/[id]/route.ts index da29b38d..c92a2ae3 100644 --- a/src/app/api/profile/foto/[id]/route.ts +++ b/src/app/api/profile/foto/[id]/route.ts @@ -1,4 +1,4 @@ -import prisma from "@/app/lib/prisma"; +import prisma from "@/lib/prisma"; import fs from "fs"; import { NextRequest, NextResponse } from "next/server"; diff --git a/src/app/api/profile/route.ts b/src/app/api/profile/route.ts new file mode 100644 index 00000000..5a1c8bfe --- /dev/null +++ b/src/app/api/profile/route.ts @@ -0,0 +1,83 @@ + +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; +import { prisma } from "@/lib"; +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; + +export { POST }; + +async function POST(request: Request) { + if (request.method !== "POST") { + return NextResponse.json( + { + success: false, + message: "Method not allowed", + }, + { status: 405 } + ); + } + + try { + const { data } = await request.json(); + const userLoginId = await funGetUserIdByToken(); + + if (!userLoginId) { + backendLogger.error("User tidak terautentikasi"); + return NextResponse.json( + { + success: false, + message: "User tidak terautentikasi", + }, + { status: 400 } + ); // Validasi user login + } + + const existingEmail = await prisma.profile.findUnique({ + where: { + email: data.email, + }, + }); + + if (existingEmail) { + return NextResponse.json( + { + success: false, + message: "Email telah digunakan", + }, + { status: 409 } + ); + } + + const createProfile = await prisma.profile.create({ + data: { + userId: userLoginId, + name: data.name, + email: data.email, + alamat: data.alamat, + jenisKelamin: data.jenisKelamin, + imageId: data.imageId, + imageBackgroundId: data.imageBackgroundId, + }, + }); + + return NextResponse.json( + { + success: true, + message: "Berhasil membuat profile", + data: createProfile, + }, + { status: 201 } + ); + } catch (error) { + backendLogger.error("Error create profile", error); + return NextResponse.json( + { + success: false, + message: "Gagal membuat profile", + }, + { status: 500 } + ); + } finally { + await prisma.$disconnect(); + } +} diff --git a/src/app/api/season/route.ts b/src/app/api/season/route.ts new file mode 100644 index 00000000..6eb04b61 --- /dev/null +++ b/src/app/api/season/route.ts @@ -0,0 +1,65 @@ +import { NextResponse } from "next/server"; +import { decrypt } from "../../../app/(auth)/_lib/decrypt"; +import { cookies } from "next/headers"; +export const dynamic = "force-dynamic"; + + +interface DecryptedUser { + id: string; + [key: string]: any; +} + +export async function GET(request: Request) { + const SESSION_KEY = process.env.NEXT_PUBLIC_BASE_SESSION_KEY; + const TOKEN_KEY = process.env.NEXT_PUBLIC_BASE_TOKEN_KEY; + + if (!SESSION_KEY || !TOKEN_KEY) { + return NextResponse.json( + { success: false, message: "Server configuration error" }, + { status: 500 } + ); + } + + try { + const cookieStore = cookies(); + const sessionCookie = cookieStore.get(SESSION_KEY); + + if (!sessionCookie || !sessionCookie.value) { + return NextResponse.json( + { success: false, message: "Unauthorized: No session found" }, + { status: 401 } + ); + } + + const cekUser = (await decrypt({ + token: sessionCookie.value, + encodedKey: TOKEN_KEY, + })) as DecryptedUser | null; + + if (!cekUser || !cekUser.id) { + return NextResponse.json( + { success: false, message: "Unauthorized: Invalid session" }, + { status: 401 } + ); + } + + return NextResponse.json( + { + success: true, + message: "User session retrieved successfully", + data: { id: cekUser.id }, + }, + { status: 200 } + ); + } catch (error) { + console.error("Error retrieving user session:", error); + return NextResponse.json( + { + success: false, + message: "Error retrieving user session", + error: (error as Error).message || "Unknown error", + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/seeder/route.ts b/src/app/api/seeder/route.ts index 024cf41a..cc1fc4ed 100644 --- a/src/app/api/seeder/route.ts +++ b/src/app/api/seeder/route.ts @@ -1,4 +1,4 @@ -import prisma from "@/app/lib/prisma"; +import prisma from "@/lib/prisma"; import { NextResponse } from "next/server"; import userRole from "../../../bin/seeder/user_role.json"; import bidangBisnis from "../../../bin/seeder/bidang_bisnis.json"; diff --git a/src/app/api/sticker/route.ts b/src/app/api/sticker/route.ts new file mode 100644 index 00000000..700ea0b7 --- /dev/null +++ b/src/app/api/sticker/route.ts @@ -0,0 +1,92 @@ +import { prisma } from "@/lib"; +import _ from "lodash"; +import { NextResponse } from "next/server"; + +export { GET }; + +async function GET(request: Request) { + const method = request.method; + if (method !== "GET") { + return NextResponse.json( + { success: false, message: "Method not allowed" }, + { status: 405 } + ); + } + + let fixData; + const { searchParams } = new URL(request.url); + const gender = searchParams.get("gender"); + const page = searchParams.get("page"); + const dataTake = 10; + const dataSkip = Number(page) * dataTake - dataTake; + + try { + if (!page) { + // Without page + const getData = await prisma.sticker.findMany({ + orderBy: { + createdAt: "desc", + }, + where: { + isActive: true, + jenisKelamin: { + mode: "insensitive", + contains: gender ?? "", + }, + }, + include: { + MasterEmotions: true, + }, + }); + + fixData = { + data: getData, + }; + } else { + // With page + const data = await prisma.sticker.findMany({ + skip: dataSkip, + take: dataTake, + where: { + isActive: true, + jenisKelamin: { + mode: "insensitive", + contains: gender ?? "", + }, + }, + orderBy: { + createdAt: "desc", + }, + include: { + MasterEmotions: true, + }, + }); + + const nCount = await prisma.sticker.count({ + where: { + isActive: true, + jenisKelamin: { + mode: "insensitive", + contains: gender ?? "", + }, + }, + }); + + fixData = { + data: data, + nPage: _.ceil(nCount / dataTake), + }; + } + + return NextResponse.json( + { success: true, message: "Success get data sticker", res: fixData }, + { status: 200 } + ); + } catch (error) { + console.error("Error get data sticker", error); + return NextResponse.json( + { success: false, message: "Error get data sticker" }, + { status: 500 } + ); + } +} diff --git a/src/app/api/test-scroll/route.ts b/src/app/api/test-scroll/route.ts index c722ba33..68ad6f7c 100644 --- a/src/app/api/test-scroll/route.ts +++ b/src/app/api/test-scroll/route.ts @@ -1,8 +1,11 @@ -import prisma from "@/app/lib/prisma"; +import prisma from "@/lib/prisma"; +import { NextResponse } from "next/server"; export async function GET(req: Request) { const page = new URL(req.url).searchParams.get("page"); - if (!page) return new Response("page require", { status: 400 }); + if (!page) + return NextResponse.json({ message: "Page not found" }, { status: 400 }); + const res = await prisma.projectCollaboration_Message.findMany({ take: 5, skip: +page * 5 - 5, diff --git a/src/app/api/user-validate/route-v.1.4.5.txt b/src/app/api/user-validate/route-v.1.4.5.txt new file mode 100644 index 00000000..ff4a3b61 --- /dev/null +++ b/src/app/api/user-validate/route-v.1.4.5.txt @@ -0,0 +1,67 @@ +import { decrypt } from "@/app/(auth)/_lib/decrypt"; +import { prisma } from "@/lib"; +import { cookies } from "next/headers"; +import { NextResponse } from "next/server"; +export const dynamic = "force-dynamic"; + +export async function GET(req: Request) { + try { + const SESSIONKEY = process.env.NEXT_PUBLIC_BASE_SESSION_KEY!; + // const token = req.headers.get("Authorization")?.split(" ")[1] + const token = + cookies().get(SESSIONKEY)?.value || + req.headers.get("Authorization")?.split(" ")[1]; + if (!token) { + return NextResponse.json( + { + success: false, + message: "Unauthorized token not found", + }, + { status: 401 } + ); + } + + const decripted = await decrypt({ + token: token!, + encodedKey: process.env.NEXT_PUBLIC_BASE_TOKEN_KEY!, + }); + + if (!decripted) { + await prisma.$disconnect(); + return NextResponse.json( + { + success: false, + message: "Unauthorized", + }, + { status: 401 } + ); + } + + const user = await prisma.user.findUnique({ + where: { + id: decripted.id, + }, + }); + + // Disconnect after successful query + + return NextResponse.json({ + success: true, + message: "Berhasil mendapatkan data", + data: user, + }); + } catch (error) { + // Ensure connection is closed even if error occurs + + console.error("Error in user validation:", error); + return NextResponse.json( + { + success: false, + message: "Terjadi kesalahan pada server", + }, + { status: 500 } + ); + } finally { + await prisma.$disconnect(); + } +} diff --git a/src/app/api/user-validate/route.ts b/src/app/api/user-validate/route.ts new file mode 100644 index 00000000..a9c8fcb7 --- /dev/null +++ b/src/app/api/user-validate/route.ts @@ -0,0 +1,90 @@ +import { decrypt } from "@/app/(auth)/_lib/decrypt"; +import { prisma } from "@/lib"; +import { cookies } from "next/headers"; +import { NextResponse } from "next/server"; + +export const dynamic = "force-dynamic"; + +export async function GET(req: Request) { + try { + const SESSIONKEY = process.env.NEXT_PUBLIC_BASE_SESSION_KEY!; + const TOKENKEY = process.env.NEXT_PUBLIC_BASE_TOKEN_KEY!; + const cookieStore = cookies(); + + const authHeader = req.headers.get("Authorization") || ""; + const bearerToken = authHeader.startsWith("Bearer ") + ? authHeader.split(" ")[1] + : undefined; + + const token = cookieStore.get(SESSIONKEY)?.value || bearerToken; + + if (!token) { + return NextResponse.json( + { + success: false, + message: "Unauthorized token not found", + }, + { status: 401 } + ); + } + + const decrypted = await decrypt({ + token, + encodedKey: TOKENKEY, + }); + + if (!decrypted?.id) { + return NextResponse.json( + { + success: false, + message: "Unauthorized: invalid token data", + }, + { status: 401 } + ); + } + + const user = await prisma.user.findUnique({ + where: { + id: decrypted.id, + }, + }); + + if (!user) { + return NextResponse.json( + { + success: false, + message: "User tidak ditemukan", + }, + { status: 404 } + ); + } + + if (!user.active) { + return NextResponse.json( + { + success: false, + message: "User belum aktif", + data: user, + }, + { status: 403 } + ); + } + + return NextResponse.json({ + success: true, + message: "Berhasil mendapatkan data", + data: user, + }); + } catch (error) { + console.error("Error in user validation:", error); + return NextResponse.json( + { + success: false, + message: "Terjadi kesalahan pada server", + }, + { status: 500 } + ); + } finally { + await prisma.$disconnect(); + } +} diff --git a/src/app/api/user/[id]/route.ts b/src/app/api/user/[id]/route.ts new file mode 100644 index 00000000..d896db13 --- /dev/null +++ b/src/app/api/user/[id]/route.ts @@ -0,0 +1,36 @@ +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; +import { prisma } from "@/lib"; + +export async function GET( + request: Request, + { params }: { params: { id: string } } +) { + try { + const { id } = params; + + const data = await prisma.user.findUnique({ + where: { + id: id, + }, + include: { + Profile: true, + }, + }); + + return NextResponse.json( + { success: true, message: "Berhasil mendapatkan data", data: data }, + { status: 200 } + ); + } catch (error) { + backendLogger.error("Error get data user", error); + return NextResponse.json( + { + success: false, + message: "Error get data from API ", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/user/activation/route.ts b/src/app/api/user/activation/route.ts new file mode 100644 index 00000000..fe938c7c --- /dev/null +++ b/src/app/api/user/activation/route.ts @@ -0,0 +1,53 @@ +import { prisma } from "@/lib"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; + +export const dynamic = "force-dynamic"; + +export async function GET(request: Request) { + try { + let fixData + const userLoginId = await funGetUserIdByToken(); + + if (userLoginId == null) { + return NextResponse.json( + { + success: false, + message: "Gagal mendapatkan data, user id tidak ada", + }, + { status: 500 } + ); + } + + const activationUser = await prisma.user.findFirst({ + where: { + id: userLoginId, + }, + select: { + active: true, + }, + }); + + fixData = activationUser?.active + + return NextResponse.json( + { + success: true, + message: "Berhasil mendapatkan data", + data: fixData, + }, + { status: 200 } + ); + } catch (error) { + backendLogger.error("Error get activation user: ", error); + return NextResponse.json( + { + success: false, + message: "Gagal mendapatkan data", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/user/all/route.ts b/src/app/api/user/all/route.ts new file mode 100644 index 00000000..d0791952 --- /dev/null +++ b/src/app/api/user/all/route.ts @@ -0,0 +1,46 @@ +import { prisma } from "@/lib"; +import { NextResponse } from "next/server"; + +export async function GET(request: Request) { + if (request.method === "GET") { + try { + let fixData; + const { searchParams } = new URL(request.url); + const except_id = searchParams.get("except-id"); + + if (!except_id) { + fixData = await prisma.user.findMany({ + where: { + active: true, + }, + }); + } else { + fixData = await prisma.user.findMany({ + where: { + active: true, + masterUserRoleId: "1", + id: { + not: except_id, + }, + }, + }); + } + + return NextResponse.json({ + success: true, + message: "Berhasil mendapatkan data", + data: fixData, + }); + } catch (error) { + return NextResponse.json({ + success: false, + message: "Gagal mendapatkan data", + }); + } + } else { + return NextResponse.json({ + success: false, + message: "Method not allowed", + }); + } +} diff --git a/src/app/api/user/get-cookies/route.ts b/src/app/api/user/get-cookies/route.ts new file mode 100644 index 00000000..812242cb --- /dev/null +++ b/src/app/api/user/get-cookies/route.ts @@ -0,0 +1,24 @@ +import { decrypt } from "@/app/(auth)/_lib/decrypt"; +import _ from "lodash"; +import { cookies } from "next/headers"; +import { NextResponse } from "next/server"; + +export const dynamic = "force-dynamic"; + +export async function GET() { + // const data = await req.text(); + // console.log(data); + const c = cookies().get(process.env.NEXT_PUBLIC_BASE_SESSION_KEY!); + + if (!c || !c?.value || _.isEmpty(c?.value) || _.isUndefined(c?.value)) { + return NextResponse.json({ status: 401, message: "Unauthorized" }); + } + + const token = c.value; + const dataUser = await decrypt({ + token: token, + encodedKey: process.env.NEXT_PUBLIC_BASE_TOKEN_KEY!, + }); + + return NextResponse.json({ status: 200, message: "OK", data: dataUser }); +} diff --git a/src/app/api/user/id/route.ts b/src/app/api/user/id/route.ts new file mode 100644 index 00000000..43869102 --- /dev/null +++ b/src/app/api/user/id/route.ts @@ -0,0 +1,58 @@ +import { NextResponse } from "next/server"; +import { cookies } from "next/headers"; +import { decrypt } from "@/app/(auth)/_lib/decrypt"; + +export async function GET() { + const SESSION_KEY = process.env.NEXT_PUBLIC_BASE_SESSION_KEY; + + if (!SESSION_KEY) { + return NextResponse.json( + { + success: false, + error: "Session key not configured", + message: "Session key not configured", + }, + { status: 500 } + ); + } + + const cookieStore = cookies(); + const token = cookieStore.get(SESSION_KEY)?.value; + + if (!token) { + return NextResponse.json( + { success: false, error: "No token found", message: "No token found" }, + { status: 401 } + ); + } + + try { + const decoded = await decrypt({ + token, + encodedKey: process.env.NEXT_PUBLIC_BASE_TOKEN_KEY!, + }); + + if (!decoded) { + return NextResponse.json( + { success: false, error: "Invalid token", message: "Invalid token" }, + { status: 401 } + ); + } + + return NextResponse.json({ + success: true, + message: "Berhasil mendapatkan data", + userId: decoded.id, + }); + } catch (error) { + console.error("Error decoding token:", error); + return NextResponse.json( + { + success: false, + error: "Failed to decode token", + message: "Failed to decode token", + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/user/route.ts b/src/app/api/user/route.ts new file mode 100644 index 00000000..6eec0018 --- /dev/null +++ b/src/app/api/user/route.ts @@ -0,0 +1,131 @@ +import { prisma } from "@/lib"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; +import { NextResponse } from "next/server"; + +export const dynamic = "force-dynamic"; + +export async function GET(request: Request) { + if (request.method !== "GET") { + return NextResponse.json( + { success: false, message: "Method Not Allowed" }, + { + status: 405, + } + ); + } + + try { + let fixData; + const userLoginId = await funGetUserIdByToken(); + if (userLoginId == null) { + return NextResponse.json( + { + success: false, + message: "Gagal mendapatkan data, user id tidak ada", + }, + { status: 500 } + ); + } + + const { searchParams } = new URL(request.url); + const search = searchParams.get("search"); + const page = searchParams.get("page"); + const takeData = 15; + const skipData = Number(page) * takeData - takeData; + + if (!page) { + fixData = await prisma.user.findMany({ + orderBy: { + createdAt: "desc", + }, + where: { + MasterUserRole: { + name: "User", + }, + active: true, + NOT: { + Profile: null, + }, + Profile: { + name: { + contains: search ? search : "", + mode: "insensitive", + }, + }, + }, + include: { + Profile: { + select: { + id: true, + name: true, + imageId: true, + }, + }, + }, + }); + } else { + fixData = await prisma.user.findMany({ + take: takeData, + skip: skipData, + orderBy: { + createdAt: "desc", + }, + where: { + MasterUserRole: { + name: "User", + }, + active: true, + Profile: { + name: { + contains: search ? search : "", + mode: "insensitive", + }, + }, + NOT: { + Profile: null, + }, + // OR: [ + // { + // NOT: { + // id: userLoginId as string, + // }, + // }, + // ], + }, + include: { + Profile: { + select: { + id: true, + name: true, + imageId: true, + }, + }, + }, + }); + } + + return NextResponse.json( + { + success: true, + message: "Berhasil mendapatkan data", + data: fixData, + }, + { + status: 200, + } + ); + } catch (error) { + return NextResponse.json( + { + success: false, + message: "Gagal mendapatkan data", + reason: (error as Error).message, + }, + { + status: 500, + } + ); + } finally { + await prisma.$disconnect(); + } +} diff --git a/src/app/api/validasi/route.ts b/src/app/api/validasi/route.ts deleted file mode 100644 index 65467cdb..00000000 --- a/src/app/api/validasi/route.ts +++ /dev/null @@ -1,7 +0,0 @@ -export async function GET(req: Request) { - const auth = req.headers.get("Authorization"); - const token = auth?.split(" ")[1]; - if (!token) - return new Response(JSON.stringify({ success: false }), { status: 401 }); - return new Response(JSON.stringify({ success: true })); -} diff --git a/src/app/api/validation/route.ts b/src/app/api/validation/route.ts new file mode 100644 index 00000000..8ad6c16b --- /dev/null +++ b/src/app/api/validation/route.ts @@ -0,0 +1,58 @@ +import { NextResponse } from "next/server"; +import { jwtVerify } from "jose"; + +export async function GET(req: Request) { + const token = req.headers.get("Authorization")?.split(" ")[1]; + + if (!token) { + console.warn("Token is missing in /api/validation"); + return NextResponse.json( + { success: false, error: "Token missing" }, + { status: 401 } + ); + } + + try { + const secret = new TextEncoder().encode( + process.env.NEXT_PUBLIC_BASE_TOKEN_KEY! + ); + const { payload } = await jwtVerify(token, secret, { + algorithms: ["HS256"], + }); + + if (!payload || typeof payload !== "object" || !payload.user) { + console.warn("Invalid payload structure in /api/validation:", payload); + return NextResponse.json( + { success: false, error: "Invalid token payload" }, + { status: 401 } + ); + } + + return NextResponse.json({ + success: true, + user: payload.user, + }); + } catch (err) { + console.error("Token verification failed in /api/validation:", err); + return NextResponse.json( + { success: false, error: "Invalid or expired token" }, + { status: 401 } + ); + } +} + +// Optional: handle disallowed methods +export async function POST() { + return NextResponse.json({ error: "Method Not Allowed" }, { status: 405 }); +} + + +// ==== Versi 1.4.5 ==== // + +// export async function GET(req: Request) { +// const token = req.headers.get("Authorization")?.split(" ")[1]; + +// if (!token) return NextResponse.json({ success: false }, { status: 401 }); + +// return NextResponse.json({ success: true }); +// } diff --git a/src/app/api/version/route.ts b/src/app/api/version/route.ts new file mode 100644 index 00000000..8d33bc62 --- /dev/null +++ b/src/app/api/version/route.ts @@ -0,0 +1,16 @@ +import { NextResponse } from "next/server"; +import packageVersion from "../../../../package.json"; + +export async function GET(request: Request) { + +const version = packageVersion.version + + return NextResponse.json( + { + success: true, + message: "Success get version", + data: version, + }, + { status: 200 } + ); +} diff --git a/src/app/api/voting/[id]/daftar-pilihan/route.ts b/src/app/api/voting/[id]/daftar-pilihan/route.ts new file mode 100644 index 00000000..e2fbcdd4 --- /dev/null +++ b/src/app/api/voting/[id]/daftar-pilihan/route.ts @@ -0,0 +1,27 @@ +import { NextResponse } from "next/server"; +import prisma from "@/lib/prisma"; + +export async function GET( + request: Request, + { params }: { params: { id: string } } +) { + const { id } = params; + try { + const data = await prisma.voting_DaftarNamaVote.findMany({ + where: { + votingId: id, + isActive: true, + }, + }); + + return NextResponse.json( + { success: true, message: "Berhasil mendapatkan data", data: data }, + { status: 200 } + ); + } catch (error) { + return NextResponse.json( + { success: false, message: "Gagal mendapatkan data" }, + { status: 500 } + ); + } +} diff --git a/src/app/api/voting/[id]/route.ts b/src/app/api/voting/[id]/route.ts new file mode 100644 index 00000000..2ee66518 --- /dev/null +++ b/src/app/api/voting/[id]/route.ts @@ -0,0 +1,47 @@ +import { prisma } from "@/lib"; +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; + +export const dynamic = "force-dynamic"; + +export async function GET( + request: Request, + context: { params: { id: string } } +) { + try { + let fixData; + const { id } = context.params; + + fixData = await prisma.voting.findFirst({ + where: { + id: id, + }, + include: { + Voting_DaftarNamaVote: { + orderBy: { + createdAt: "asc", + }, + where: { + isActive: true, + }, + }, + Author: { + select: { + Profile: true, + }, + }, + }, + }); + + return NextResponse.json( + { success: true, message: "Berhasil mendapatkan data", data: fixData }, + { status: 200 } + ); + } catch (error) { + backendLogger.error("Gagal mendapatkan data voting by id", error); + return NextResponse.json( + { success: false, message: "Gagal mendapatkan data" }, + { status: 500 } + ); + } +} diff --git a/src/app/api/voting/check/route.ts b/src/app/api/voting/check/route.ts new file mode 100644 index 00000000..82f0e26b --- /dev/null +++ b/src/app/api/voting/check/route.ts @@ -0,0 +1,76 @@ +import { prisma } from "@/lib"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; +import backendLogger from "@/util/backendLogger"; +import _ from "lodash"; +import { NextResponse } from "next/server"; + +export const dynamic = "force-dynamic"; + +/** + * + * @param id | votingId + * @param kategori | kontribusi + * @returns + */ +export async function GET(request: Request) { + try { + let fixData; + const { searchParams } = new URL(request.url); + const id = searchParams.get("id"); + const kategori = searchParams.get("kategori"); + + const userLoginId = await funGetUserIdByToken(); + if (!userLoginId) { + return NextResponse.json( + { success: false, message: "Gagal mendapatkan data, coba lagi nanti " }, + { status: 500 } + ); + } + + if (kategori == "isKontributor") { + const cek = await prisma.voting_Kontributor.count({ + where: { + authorId: userLoginId, + votingId: id, + }, + }); + + if (cek > 0) { + fixData = true; + } else { + fixData = false; + } + } else if (kategori == "pilihan") { + const cekPilihan = await prisma.voting_Kontributor.findFirst({ + where: { + authorId: userLoginId, + votingId: id, + }, + select: { + Voting_DaftarNamaVote: { + select: { + value: true, + }, + }, + }, + }); + + fixData = cekPilihan?.Voting_DaftarNamaVote?.value + } + + return NextResponse.json( + { success: true, message: "Berhasil mendapatkan data", data: fixData }, + { status: 200 } + ); + } catch (error) { + backendLogger.error("Error get hitung voting", error); + return NextResponse.json( + { + success: false, + message: "Gagal mendapatkan data", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/voting/get/route.ts b/src/app/api/voting/get/route.ts new file mode 100644 index 00000000..35fd18d9 --- /dev/null +++ b/src/app/api/voting/get/route.ts @@ -0,0 +1,312 @@ +import { prisma } from "@/lib"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; + +export const dynamic = "force-dynamic"; + +export async function GET(request: Request) { + try { + let fixData; + + const { searchParams } = new URL(request.url); + const search = searchParams.get("search"); + const kategori = searchParams.get("kategori"); + const status = searchParams.get("status"); + const page = searchParams.get("page"); + + const takeData = 5; + const skipData = Number(page) * 5 - 5; + + const userLoginId = await funGetUserIdByToken(); + + if (userLoginId == null) { + return NextResponse.json( + { + success: false, + message: "Gagal mendapatkan data, user id tidak ada", + }, + { status: 500 } + ); + } + + if (kategori == "beranda" && search != null && search != "") { + fixData = await prisma.voting.findMany({ + take: takeData, + skip: skipData, + orderBy: { + updatedAt: "desc", + }, + where: { + voting_StatusId: "1", + isArsip: false, + isActive: true, + akhirVote: { + gte: new Date(), + }, + title: { + contains: search, + mode: "insensitive", + }, + }, + select: { + id: true, + title: true, + isActive: true, + createdAt: true, + updatedAt: true, + deskripsi: true, + awalVote: true, + akhirVote: true, + catatan: true, + authorId: true, + voting_StatusId: true, + Voting_DaftarNamaVote: { + orderBy: { + createdAt: "asc", + }, + include: { + Voting_Kontributor: { + include: { + Author: true, + }, + }, + }, + }, + Author: { + select: { + id: true, + username: true, + nomor: true, + Profile: true, + }, + }, + }, + }); + } else if (kategori == "beranda") { + fixData = await prisma.voting.findMany({ + take: takeData, + skip: skipData, + orderBy: { + updatedAt: "desc", + }, + where: { + voting_StatusId: "1", + isArsip: false, + isActive: true, + akhirVote: { + gte: new Date(), + }, + title: { + // contains: search, + mode: "insensitive", + }, + }, + select: { + id: true, + title: true, + isActive: true, + createdAt: true, + updatedAt: true, + deskripsi: true, + awalVote: true, + akhirVote: true, + catatan: true, + authorId: true, + voting_StatusId: true, + Voting_DaftarNamaVote: { + orderBy: { + createdAt: "asc", + }, + include: { + Voting_Kontributor: { + include: { + Author: true, + }, + }, + }, + }, + Author: { + select: { + id: true, + username: true, + nomor: true, + Profile: true, + }, + }, + }, + }); + } else if (kategori == "status" && status == "1") { + fixData = await prisma.voting.findMany({ + take: takeData, + skip: skipData, + orderBy: { + updatedAt: "desc", + }, + where: { + voting_StatusId: status, + authorId: userLoginId as string, + isActive: true, + akhirVote: { + gte: new Date(), + }, + }, + include: { + Voting_DaftarNamaVote: { + orderBy: { + createdAt: "asc", + }, + }, + }, + }); + } else if (kategori == "status" && status != "1") { + fixData = await prisma.voting.findMany({ + take: takeData, + skip: skipData, + orderBy: { + updatedAt: "desc", + }, + where: { + voting_StatusId: status, + authorId: userLoginId as string, + isActive: true, + }, + }); + } else if (kategori == "kontribusi") { + fixData = await prisma.voting_Kontributor.findMany({ + take: takeData, + skip: skipData, + orderBy: { + createdAt: "desc", + }, + where: { + authorId: userLoginId, + }, + select: { + id: true, + Voting: { + select: { + id: true, + title: true, + isActive: true, + awalVote: true, + akhirVote: true, + Voting_DaftarNamaVote: { + orderBy: { + createdAt: "asc", + }, + }, + Author: { + select: { + Profile: true, + }, + }, + }, + }, + Voting_DaftarNamaVote: true, + Author: true, + }, + }); + } else if (kategori == "riwayat" && status == "1") { + fixData = await prisma.voting.findMany({ + take: takeData, + skip: skipData, + + orderBy: { + createdAt: "asc", + }, + where: { + voting_StatusId: "1", + isActive: true, + akhirVote: { + lte: new Date(), + }, + }, + select: { + id: true, + title: true, + isActive: true, + createdAt: true, + updatedAt: true, + deskripsi: true, + awalVote: true, + akhirVote: true, + catatan: true, + authorId: true, + voting_StatusId: true, + Voting_DaftarNamaVote: { + orderBy: { + createdAt: "asc", + }, + }, + Author: { + select: { + id: true, + username: true, + nomor: true, + Profile: true, + }, + }, + }, + }); + } else if (kategori == "riwayat" && status == "2") { + fixData = await prisma.voting.findMany({ + take: takeData, + skip: skipData, + + orderBy: { + createdAt: "asc", + }, + where: { + voting_StatusId: "1", + authorId: userLoginId as string, + isActive: true, + akhirVote: { + lte: new Date(), + }, + }, + select: { + id: true, + title: true, + isActive: true, + createdAt: true, + updatedAt: true, + deskripsi: true, + awalVote: true, + akhirVote: true, + catatan: true, + authorId: true, + voting_StatusId: true, + Voting_DaftarNamaVote: { + orderBy: { + createdAt: "asc", + }, + }, + Author: { + select: { + id: true, + username: true, + nomor: true, + Profile: true, + }, + }, + }, + }); + } + + return NextResponse.json( + { success: true, message: "Berhasil mendapatkan data", data: fixData }, + { status: 200 } + ); + } catch (error) { + backendLogger.error("Error get voting: ", error); + return NextResponse.json( + { + success: false, + message: "Gagal mendapatkan data", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/voting/hasil/route.ts b/src/app/api/voting/hasil/route.ts new file mode 100644 index 00000000..b1ad2fce --- /dev/null +++ b/src/app/api/voting/hasil/route.ts @@ -0,0 +1,30 @@ +import { prisma } from "@/lib"; +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; + +export const dynamic = "force-dynamic"; + +export async function GET(request: Request) { + try { + let fixData; + const { searchParams } = new URL(request.url); + const id = searchParams.get("id"); + + fixData = await prisma.voting_DaftarNamaVote.findMany({ + where: { + votingId: id, + }, + }); + + return NextResponse.json( + { success: true, message: "Berhasil mendapatkan data", data: fixData }, + { status: 200 } + ); + } catch (error) { + backendLogger.error(error); + return NextResponse.json( + { success: false, message: "Gagal mendapatkan data" }, + { status: 500 } + ); + } +} diff --git a/src/app/api/voting/kontributor/route.ts b/src/app/api/voting/kontributor/route.ts new file mode 100644 index 00000000..c0d67e95 --- /dev/null +++ b/src/app/api/voting/kontributor/route.ts @@ -0,0 +1,46 @@ +import { prisma } from "@/lib"; +import backendLogger from "@/util/backendLogger"; +import { NextResponse } from "next/server"; + +export const dynamic = "force-dynamic"; + +export async function GET(request: Request) { + try { + let fixData; + const { searchParams } = new URL(request.url); + const id = searchParams.get("id"); + const page = searchParams.get("page"); + const takeData = 10; + const dataSkip = Number(page) * takeData - takeData; + fixData = await prisma.voting_Kontributor.findMany({ + // take: takeData, + // skip: dataSkip, + orderBy: { + createdAt: "desc", + }, + where: { + votingId: id, + }, + include: { + Author: { + include: { + Profile: true, + }, + }, + Voting_DaftarNamaVote: { + select: { + value: true, + }, + }, + }, + }); + + return NextResponse.json({ success: true, data: fixData }, { status: 200 }); + } catch (error) { + backendLogger.error(error); + return NextResponse.json( + { success: false, reason: (error as Error).message || (error as Error) }, + { status: 500 } + ); + } +} diff --git a/src/app/api/voting/master/route.ts b/src/app/api/voting/master/route.ts new file mode 100644 index 00000000..a270c5c1 --- /dev/null +++ b/src/app/api/voting/master/route.ts @@ -0,0 +1,22 @@ +import { prisma } from "@/lib"; +import { NextResponse } from "next/server"; + +export async function GET(request: Request) { + try { + const data = await prisma.voting_Status.findMany(); + return NextResponse.json({ + success: true, + message: "Berhasil mendapatkan data", + data: data, + }); + } catch (error) { + return NextResponse.json( + { + success: false, + message: "Gagal mendapatkan data", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/zz-makuro/route.ts b/src/app/api/zz-makuro/route.ts index df7b0d72..ac94f9da 100644 --- a/src/app/api/zz-makuro/route.ts +++ b/src/app/api/zz-makuro/route.ts @@ -1,7 +1,7 @@ -import { headers } from "next/headers"; +import { NextResponse } from "next/server"; export async function GET( req: Request) { const origin = new URL(req.url).origin; - return new Response(JSON.stringify({ success: true, origin })); + return NextResponse.json({ success: true, origin }); } diff --git a/src/app/auth/api/login/route.ts b/src/app/auth/api/login/route.ts deleted file mode 100644 index 370b5bad..00000000 --- a/src/app/auth/api/login/route.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { prisma } from "@/app/lib"; -import { sessionCreate } from "../../_lib/session_create"; - -export async function POST(req: Request) { - const user = await prisma.user.findUnique({ - where: { - nomor: "6281339158911", - }, - select: { - id: true, - nomor: true, - }, - }); - - if (!user) - return new Response( - JSON.stringify({ success: false, message: "User not found" }), {status: 404} - ); - - const token = await sessionCreate({ - sessionKey: process.env.NEXT_PUBLIC_BASE_SESSION_KEY!, - encodedKey: process.env.NEXT_PUBLIC_BASE_TOKEN_KEY!, - user: user as any, - }); - - return new Response(JSON.stringify({ success: true, token })); -} diff --git a/src/app/auth/api/logout/route.ts b/src/app/auth/api/logout/route.ts deleted file mode 100644 index af733975..00000000 --- a/src/app/auth/api/logout/route.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { cookies } from "next/headers"; -export async function GET() { - const del = cookies().delete(process.env.NEXT_PUBLIC_BASE_SESSION_KEY!); - return new Response(JSON.stringify({ success: true })); -} diff --git a/src/app/auth/login/page.tsx b/src/app/auth/login/page.tsx deleted file mode 100644 index 7fe848b8..00000000 --- a/src/app/auth/login/page.tsx +++ /dev/null @@ -1,39 +0,0 @@ -"use client"; -import { Button } from "@mantine/core"; -import { useState } from "react"; - -export default function Page() { - const [loading, setLoading] = useState(false); - - - async function login() { - setLoading(true); - try { - const res = await fetch("/auth/api/login", { - method: "POST", - }); - - const dataText = await res.text(); - - if (!res.ok) { - console.error(dataText); - throw new Error(res.statusText); - } - - const dataJson = JSON.parse(dataText); - console.log(dataJson); - // window.location.replace("/dev/home"); - } catch (error) { - console.error(error); - } finally { - setLoading(false); - } - } - return ( - <> - - - ); -} diff --git a/src/app/dev/(user)/colab/_comp/ChatScrollArea.tsx b/src/app/dev/(user)/colab/_comp/ChatScrollArea.tsx new file mode 100644 index 00000000..a10cfc23 --- /dev/null +++ b/src/app/dev/(user)/colab/_comp/ChatScrollArea.tsx @@ -0,0 +1,224 @@ +/* eslint-disable react-hooks/exhaustive-deps */ +// components/ChatScrollArea.tsx + +import React, { useEffect, useRef, useState } from "react"; +import { ScrollArea, Box, Button, Text } from "@mantine/core"; +import { ChatMessage } from "./interface"; +import { apiGetMessageByRoomId } from "@/app_modules/colab/_lib/api_collaboration"; + +interface ChatScrollAreaProps { + initialMessages: ChatMessage[]; + currentUserId: string; + chatRoomId: string; +} + +export const ChatScrollArea: React.FC = ({ + initialMessages, + currentUserId, + chatRoomId, +}) => { + const [messages, setMessages] = useState(initialMessages); + const [hasMore, setHasMore] = useState(true); + const [showNewMessageIndicator, setShowNewMessageIndicator] = useState(false); + + const scrollAreaRef = useRef(null); + const messagesEndRef = useRef(null); + const loaderRef = useRef(null); + const lastMessageIdRef = useRef(null); + + // Auto scroll to bottom on first render + useEffect(() => { + scrollToBottom(); + }, []); + + // // Infinite Scroll Up - Load Older Messages + useEffect(() => { + const observer = new IntersectionObserver( + ([entry]) => { + if (entry.isIntersecting && hasMore) { + loadMoreMessages(); + } + }, + { root: scrollAreaRef.current } + ); + + if (loaderRef.current) observer.observe(loaderRef.current); + return () => observer.disconnect(); + }, [hasMore]); + + const scrollToBottom = () => { + setTimeout(() => { + if (messagesEndRef.current) { + messagesEndRef.current.scrollIntoView({ behavior: "auto" }); + } + }, 100); + }; + + const [loadingMore, setLoadingMore] = useState(false); + +const loadMoreMessages = async () => { + console.log("Triggered loadMoreMessages"); + console.log("Current lastMessageId:", lastMessageIdRef.current); + + if (!hasMore || loadingMore) return; + + setLoadingMore(true); + try { + const result = await apiGetMessageByRoomId({ + id: chatRoomId, + lastMessageId: lastMessageIdRef.current || undefined, + }); + + console.log("API Response:", result); + + if (!result.success || !result.data || result.data.length === 0) { + console.log("No more data from API"); + setHasMore(false); + return; + } + + const olderMessages = result.data; + const existingIds = new Set(messages.map((m) => m.id)); + const filtered = olderMessages.filter((msg: ChatMessage) => !existingIds.has(msg.id)); + + console.log("Filtered Messages:", filtered); + + if (filtered.length === 0) { + console.log("All messages already loaded"); + setHasMore(false); + return; + } + + lastMessageIdRef.current = filtered[0]?.id; + setMessages((prev) => [...prev, ...filtered]); + } catch (error) { + console.error("Failed to load more messages", error); + setHasMore(false); + } finally { + setLoadingMore(false); + } +};; + + // const sendMessage = async (content: string) => { + // try { + // const res = await fetch("/api/chat/send", { + // method: "POST", + // headers: { + // "Content-Type": "application/json", + // }, + // body: JSON.stringify({ + // content, + // chatRoomId, + // }), + // }); + + // const result = await res.json(); + + // if (result.success) { + // const newMessage = result.data; + // setMessages((prev) => [...prev, newMessage]); + // scrollToBottom(); + // } + // } catch (error) { + // console.error("Error sending message", error); + // } + // }; + + // const handleScrollToBottomClick = () => { + // scrollToBottom(); + // setShowNewMessageIndicator(false); + // }; + + // Simulasi menerima pesan baru (misalnya via WebSocket atau polling) + // const handleIncomingMessage = (newMessage: ChatMessage) => { + // if (newMessage.User?.id !== currentUserId) { + // const isScrolledToBottom = + // scrollAreaRef.current && + // scrollAreaRef.current.scrollHeight - + // scrollAreaRef.current.clientHeight <= + // scrollAreaRef.current.scrollTop + 100; + + // if (!isScrolledToBottom) { + // setShowNewMessageIndicator(true); + // } else { + // setMessages((prev) => [...prev, newMessage]); + // scrollToBottom(); + // } + // } else { + // setMessages((prev) => [...prev, newMessage]); + // scrollToBottom(); + // } + // }; + + + + return ( + + {/* Scroll Area */} + + + {hasMore && ( + + {loadingMore ? "Loading..." : "Load more"} + + )} + + {messages.map((msg) => ( + + {msg.message} + + ))} + +
+ + + + {/* Tombol Scroll ke Bawah jika ada pesan baru */} + {showNewMessageIndicator && ( + + )} + + {/* Form Kirim Pesan */} +
{ + e.preventDefault(); + const input = e.currentTarget.elements.namedItem( + "message" + ) as HTMLInputElement; + if (input.value.trim()) { + // sendMessage(input.value); + input.value = ""; + } + }} + > + + + + +
+ + ); +}; diff --git a/src/app/dev/(user)/colab/_comp/interface.ts b/src/app/dev/(user)/colab/_comp/interface.ts new file mode 100644 index 00000000..815613fd --- /dev/null +++ b/src/app/dev/(user)/colab/_comp/interface.ts @@ -0,0 +1,17 @@ +// types/message.ts +export interface ChatUser { + id: string; + Profile: { + id: string; + name: string; + }; +} + +export interface ChatMessage { + id: string; + message: string; + isActive: boolean; + createdAt: Date; + isFile?: boolean | null; + User: ChatUser | null; +} diff --git a/src/app/dev/(user)/colab/_comp/ui_chat.tsx b/src/app/dev/(user)/colab/_comp/ui_chat.tsx new file mode 100644 index 00000000..6f452711 --- /dev/null +++ b/src/app/dev/(user)/colab/_comp/ui_chat.tsx @@ -0,0 +1,60 @@ +// app/chat/[id]/page.tsx +"use client"; + +import { apiGetMessageByRoomId } from "@/app_modules/colab/_lib/api_collaboration"; +import { useShallowEffect } from "@mantine/hooks"; +import { ChatMessage } from "./interface"; +import { useState } from "react"; +import { ChatScrollArea } from "./ChatScrollArea"; +import { apiNewGetUserIdByToken } from "@/app_modules/_global/lib/api_fetch_global"; + +export default function ChatPage({ params }: { params: { id: string } }) { + const roomId = params.id; + const [initialMessages, setInitialMessages] = useState([]); + const [loading, setLoading] = useState(true); + + const [userLoginId, setUserLoginId] = useState(null); + + useShallowEffect(() => { + handleGetUserLoginId(); + }, []); + + async function handleGetUserLoginId() { + try { + const response = await apiNewGetUserIdByToken(); + if (response.success) { + setUserLoginId(response.userId); + } else { + setUserLoginId(null); + } + } catch (error) { + setUserLoginId(null); + } + } + + async function handleGetDataMessage() { + try { + const result = await apiGetMessageByRoomId({ id: roomId }); + setInitialMessages(result.data || []); + } catch (error) { + console.error("Failed to load messages", error); + } finally { + setLoading(false); + } + } + useShallowEffect(() => { + handleGetDataMessage(); + }, [roomId]); + + if (loading || !userLoginId) { + return
Loading chat...
; + } + + return ( + + ); +} diff --git a/src/app/dev/colab/create/layout.tsx b/src/app/dev/(user)/colab/create/layout.tsx similarity index 100% rename from src/app/dev/colab/create/layout.tsx rename to src/app/dev/(user)/colab/create/layout.tsx diff --git a/src/app/dev/(user)/colab/create/page.tsx b/src/app/dev/(user)/colab/create/page.tsx new file mode 100644 index 00000000..6a530d6f --- /dev/null +++ b/src/app/dev/(user)/colab/create/page.tsx @@ -0,0 +1,9 @@ +import { Colab_Create } from "@/app_modules/colab"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/colab/detail/group/[id]/page.tsx b/src/app/dev/(user)/colab/detail/group/[id]/page.tsx similarity index 58% rename from src/app/dev/colab/detail/group/[id]/page.tsx rename to src/app/dev/(user)/colab/detail/group/[id]/page.tsx index d93ed4f9..b127e820 100644 --- a/src/app/dev/colab/detail/group/[id]/page.tsx +++ b/src/app/dev/(user)/colab/detail/group/[id]/page.tsx @@ -1,13 +1,13 @@ -import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; import adminColab_getOneRoomChatById from "@/app_modules/admin/colab/fun/get/get_one_room_chat_by_id"; -import { Colab_GroupChatView } from "@/app_modules/colab"; +import Colab_NewGroupChatView from "@/app_modules/colab/detail/group/new_detail_group"; import colab_getMessageByRoomId from "@/app_modules/colab/fun/get/room_chat/get_message_by_room_id"; -import { user_getOneByUserId } from "@/app_modules/home/fun/get/get_one_user_by_id"; import _ from "lodash"; +export const dynamic = "force-dynamic"; export default async function Page({ params }: { params: { id: string } }) { const roomId = params.id; - const userLoginId = await funGetUserIdByToken(); + // const userLoginId = await funGetUserIdByToken(); + // const dataUserLogin = await user_getOneByUserId(userLoginId as string); const getData = (await adminColab_getOneRoomChatById({ roomId: roomId })) .data; @@ -15,25 +15,20 @@ export default async function Page({ params }: { params: { id: string } }) { "ProjectCollaboration", "ProjectCollaboration_AnggotaRoomChat", ]); + let listMsg = await colab_getMessageByRoomId({ roomId: roomId, page: 1 }); - const dataUserLogin = await user_getOneByUserId(userLoginId as string); return ( <> - {/* */} - - + /> */} + + + {/* */} ); } diff --git a/src/app/dev/(user)/colab/detail/info-grup/[id]/page.tsx b/src/app/dev/(user)/colab/detail/info-grup/[id]/page.tsx new file mode 100644 index 00000000..d4001193 --- /dev/null +++ b/src/app/dev/(user)/colab/detail/info-grup/[id]/page.tsx @@ -0,0 +1,9 @@ +import { Colab_DetailInfoGrup } from "@/app_modules/colab"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/colab/detail/main_detail/[id]/layout.tsx b/src/app/dev/(user)/colab/detail/main_detail/[id]/layout.tsx similarity index 100% rename from src/app/dev/colab/detail/main_detail/[id]/layout.tsx rename to src/app/dev/(user)/colab/detail/main_detail/[id]/layout.tsx diff --git a/src/app/dev/(user)/colab/detail/main_detail/[id]/page.tsx b/src/app/dev/(user)/colab/detail/main_detail/[id]/page.tsx new file mode 100644 index 00000000..baa4b1fd --- /dev/null +++ b/src/app/dev/(user)/colab/detail/main_detail/[id]/page.tsx @@ -0,0 +1,9 @@ +import { Colab_MainDetail } from "@/app_modules/colab"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/colab/detail/proyek/partisipasi/[id]/layout.tsx b/src/app/dev/(user)/colab/detail/proyek/partisipasi/[id]/layout.tsx similarity index 62% rename from src/app/dev/colab/detail/proyek/partisipasi/[id]/layout.tsx rename to src/app/dev/(user)/colab/detail/proyek/partisipasi/[id]/layout.tsx index 2d9fef0e..e7cdc81a 100644 --- a/src/app/dev/colab/detail/proyek/partisipasi/[id]/layout.tsx +++ b/src/app/dev/(user)/colab/detail/proyek/partisipasi/[id]/layout.tsx @@ -3,7 +3,9 @@ import { LayoutColab_DetailPartisipasiProyek } from "@/app_modules/colab"; export default async function Layout({ children }: { children: any }) { return ( <> - {children} + + {children} + ); } diff --git a/src/app/dev/(user)/colab/detail/proyek/partisipasi/[id]/page.tsx b/src/app/dev/(user)/colab/detail/proyek/partisipasi/[id]/page.tsx new file mode 100644 index 00000000..323e5439 --- /dev/null +++ b/src/app/dev/(user)/colab/detail/proyek/partisipasi/[id]/page.tsx @@ -0,0 +1,9 @@ +import { Colab_DetailPartisipasiProyek } from "@/app_modules/colab"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/colab/detail/proyek/saya/[id]/layout.tsx b/src/app/dev/(user)/colab/detail/proyek/saya/[id]/layout.tsx similarity index 55% rename from src/app/dev/colab/detail/proyek/saya/[id]/layout.tsx rename to src/app/dev/(user)/colab/detail/proyek/saya/[id]/layout.tsx index d7c38cc1..1b84d85b 100644 --- a/src/app/dev/colab/detail/proyek/saya/[id]/layout.tsx +++ b/src/app/dev/(user)/colab/detail/proyek/saya/[id]/layout.tsx @@ -3,19 +3,12 @@ import React from "react"; export default async function Layout({ children, - params, }: { children: React.ReactNode; - params: { id: string }; }) { - let colabId = params.id; - - return ( <> - - {children} - + {children} ); } diff --git a/src/app/dev/(user)/colab/detail/proyek/saya/[id]/page.tsx b/src/app/dev/(user)/colab/detail/proyek/saya/[id]/page.tsx new file mode 100644 index 00000000..e1527440 --- /dev/null +++ b/src/app/dev/(user)/colab/detail/proyek/saya/[id]/page.tsx @@ -0,0 +1,9 @@ +import { Colab_DetailProyekSaya } from "@/app_modules/colab"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/colab/edit/[id]/layout.tsx b/src/app/dev/(user)/colab/edit/[id]/layout.tsx similarity index 100% rename from src/app/dev/colab/edit/[id]/layout.tsx rename to src/app/dev/(user)/colab/edit/[id]/layout.tsx diff --git a/src/app/dev/(user)/colab/edit/[id]/page.tsx b/src/app/dev/(user)/colab/edit/[id]/page.tsx new file mode 100644 index 00000000..f92b00bd --- /dev/null +++ b/src/app/dev/(user)/colab/edit/[id]/page.tsx @@ -0,0 +1,9 @@ +import { Colab_Edit } from "@/app_modules/colab"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/(user)/colab/main/beranda/page.tsx b/src/app/dev/(user)/colab/main/beranda/page.tsx new file mode 100644 index 00000000..0a5046f4 --- /dev/null +++ b/src/app/dev/(user)/colab/main/beranda/page.tsx @@ -0,0 +1,9 @@ +import { Colab_Beranda } from "@/app_modules/colab"; + +export default function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/(user)/colab/main/grup/page.tsx b/src/app/dev/(user)/colab/main/grup/page.tsx new file mode 100644 index 00000000..81104f95 --- /dev/null +++ b/src/app/dev/(user)/colab/main/grup/page.tsx @@ -0,0 +1,9 @@ +import Colab_GrupDiskus from "@/app_modules/colab/main/grup"; + +export default function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/(user)/colab/main/layout.tsx b/src/app/dev/(user)/colab/main/layout.tsx new file mode 100644 index 00000000..57a49c42 --- /dev/null +++ b/src/app/dev/(user)/colab/main/layout.tsx @@ -0,0 +1,15 @@ +import { LayoutColab_Main } from "@/app_modules/colab"; +import React from "react"; + +export default async function Layout({ + children, +}: { + children: React.ReactNode; +}) { + + return ( + <> + {children} + + ); +} diff --git a/src/app/dev/(user)/colab/main/proyek/page.tsx b/src/app/dev/(user)/colab/main/proyek/page.tsx new file mode 100644 index 00000000..a1d89694 --- /dev/null +++ b/src/app/dev/(user)/colab/main/proyek/page.tsx @@ -0,0 +1,9 @@ +import { Colab_Proyek } from "@/app_modules/colab"; + +export default function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/colab/splash/page.tsx b/src/app/dev/(user)/colab/splash/page.tsx similarity index 100% rename from src/app/dev/colab/splash/page.tsx rename to src/app/dev/(user)/colab/splash/page.tsx diff --git a/src/app/dev/crowd/main/layout.tsx b/src/app/dev/(user)/crowd/main/layout.tsx similarity index 100% rename from src/app/dev/crowd/main/layout.tsx rename to src/app/dev/(user)/crowd/main/layout.tsx diff --git a/src/app/dev/crowd/main/page.tsx b/src/app/dev/(user)/crowd/main/page.tsx similarity index 100% rename from src/app/dev/crowd/main/page.tsx rename to src/app/dev/(user)/crowd/main/page.tsx diff --git a/src/app/dev/crowd/splash/page.tsx b/src/app/dev/(user)/crowd/splash/page.tsx similarity index 100% rename from src/app/dev/crowd/splash/page.tsx rename to src/app/dev/(user)/crowd/splash/page.tsx diff --git a/src/app/dev/donasi/bukti-transfer/[id]/page.tsx b/src/app/dev/(user)/donasi/bukti-transfer/[id]/page.tsx similarity index 100% rename from src/app/dev/donasi/bukti-transfer/[id]/page.tsx rename to src/app/dev/(user)/donasi/bukti-transfer/[id]/page.tsx diff --git a/src/app/dev/(user)/donasi/cerita_penggalang/[id]/layout.tsx b/src/app/dev/(user)/donasi/cerita_penggalang/[id]/layout.tsx new file mode 100644 index 00000000..4433edeb --- /dev/null +++ b/src/app/dev/(user)/donasi/cerita_penggalang/[id]/layout.tsx @@ -0,0 +1,15 @@ +import { LayoutCeritaPenggalangDonasi } from "@/app_modules/donasi"; +import { Donasi_getOneById } from "@/app_modules/donasi/fun/get/get_one_donasi_by_id"; +import React from "react"; + +export default async function Layout({ + children, +}: { + children: React.ReactNode; +}) { + return ( + <> + {children} + + ); +} diff --git a/src/app/dev/(user)/donasi/cerita_penggalang/[id]/page.tsx b/src/app/dev/(user)/donasi/cerita_penggalang/[id]/page.tsx new file mode 100644 index 00000000..97f4c94f --- /dev/null +++ b/src/app/dev/(user)/donasi/cerita_penggalang/[id]/page.tsx @@ -0,0 +1,9 @@ +import { CeritaPenggalangDonasi } from "@/app_modules/donasi"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/donasi/create/cerita_penggalang/[id]/layout.tsx b/src/app/dev/(user)/donasi/create/cerita_penggalang/[id]/layout.tsx similarity index 100% rename from src/app/dev/donasi/create/cerita_penggalang/[id]/layout.tsx rename to src/app/dev/(user)/donasi/create/cerita_penggalang/[id]/layout.tsx diff --git a/src/app/dev/(user)/donasi/create/cerita_penggalang/[id]/page.tsx b/src/app/dev/(user)/donasi/create/cerita_penggalang/[id]/page.tsx new file mode 100644 index 00000000..b02abb33 --- /dev/null +++ b/src/app/dev/(user)/donasi/create/cerita_penggalang/[id]/page.tsx @@ -0,0 +1,9 @@ +import { CreateCeritaPenggalangDonasi } from "@/app_modules/donasi"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/donasi/create/create_donasi/layout.tsx b/src/app/dev/(user)/donasi/create/create_donasi/layout.tsx similarity index 100% rename from src/app/dev/donasi/create/create_donasi/layout.tsx rename to src/app/dev/(user)/donasi/create/create_donasi/layout.tsx diff --git a/src/app/dev/(user)/donasi/create/create_donasi/page.tsx b/src/app/dev/(user)/donasi/create/create_donasi/page.tsx new file mode 100644 index 00000000..0b0aef8c --- /dev/null +++ b/src/app/dev/(user)/donasi/create/create_donasi/page.tsx @@ -0,0 +1,5 @@ +import { CreateDonasiNew } from "@/app_modules/donasi"; + +export default async function Page() { + return ; +} diff --git a/src/app/dev/donasi/create/create_kabar/[id]/layout.tsx b/src/app/dev/(user)/donasi/create/create_kabar/[id]/layout.tsx similarity index 100% rename from src/app/dev/donasi/create/create_kabar/[id]/layout.tsx rename to src/app/dev/(user)/donasi/create/create_kabar/[id]/layout.tsx diff --git a/src/app/dev/(user)/donasi/create/create_kabar/[id]/page.tsx b/src/app/dev/(user)/donasi/create/create_kabar/[id]/page.tsx new file mode 100644 index 00000000..6de2e1ce --- /dev/null +++ b/src/app/dev/(user)/donasi/create/create_kabar/[id]/page.tsx @@ -0,0 +1,9 @@ +import { Donasi_CreateKabar } from "@/app_modules/donasi"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/donasi/detail/donasi_saya/[id]/layout.tsx b/src/app/dev/(user)/donasi/detail/donasi_saya/[id]/layout.tsx similarity index 100% rename from src/app/dev/donasi/detail/donasi_saya/[id]/layout.tsx rename to src/app/dev/(user)/donasi/detail/donasi_saya/[id]/layout.tsx diff --git a/src/app/dev/(user)/donasi/detail/donasi_saya/[id]/page.tsx b/src/app/dev/(user)/donasi/detail/donasi_saya/[id]/page.tsx new file mode 100644 index 00000000..879f711f --- /dev/null +++ b/src/app/dev/(user)/donasi/detail/donasi_saya/[id]/page.tsx @@ -0,0 +1,9 @@ +import { DetailDonasiSaya } from "@/app_modules/donasi"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/donasi/detail/draft/[id]/layout.tsx b/src/app/dev/(user)/donasi/detail/draft/[id]/layout.tsx similarity index 100% rename from src/app/dev/donasi/detail/draft/[id]/layout.tsx rename to src/app/dev/(user)/donasi/detail/draft/[id]/layout.tsx diff --git a/src/app/dev/(user)/donasi/detail/draft/[id]/page.tsx b/src/app/dev/(user)/donasi/detail/draft/[id]/page.tsx new file mode 100644 index 00000000..0003b80e --- /dev/null +++ b/src/app/dev/(user)/donasi/detail/draft/[id]/page.tsx @@ -0,0 +1,9 @@ +import { DetailDraftDonasi } from "@/app_modules/donasi"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/donasi/detail/kabar/[id]/layout.tsx b/src/app/dev/(user)/donasi/detail/kabar/[id]/layout.tsx similarity index 100% rename from src/app/dev/donasi/detail/kabar/[id]/layout.tsx rename to src/app/dev/(user)/donasi/detail/kabar/[id]/layout.tsx diff --git a/src/app/dev/(user)/donasi/detail/kabar/[id]/page.tsx b/src/app/dev/(user)/donasi/detail/kabar/[id]/page.tsx new file mode 100644 index 00000000..b7b35179 --- /dev/null +++ b/src/app/dev/(user)/donasi/detail/kabar/[id]/page.tsx @@ -0,0 +1,5 @@ +import { DetailKabarDonasi } from "@/app_modules/donasi"; + +export default async function Page({params}: {params: {id: string}}) { + return +} \ No newline at end of file diff --git a/src/app/dev/(user)/donasi/detail/main/[id]/layout.tsx b/src/app/dev/(user)/donasi/detail/main/[id]/layout.tsx new file mode 100644 index 00000000..d810d3cd --- /dev/null +++ b/src/app/dev/(user)/donasi/detail/main/[id]/layout.tsx @@ -0,0 +1,13 @@ +import { LayoutDetailMainDonasiNew } from "@/app_modules/donasi"; +import React from "react"; + +export default async function Layout({ children }: { children: React.ReactNode; }) { + + return ( + <> + + {children} + + + ); +} diff --git a/src/app/dev/(user)/donasi/detail/main/[id]/page.tsx b/src/app/dev/(user)/donasi/detail/main/[id]/page.tsx new file mode 100644 index 00000000..c92aa864 --- /dev/null +++ b/src/app/dev/(user)/donasi/detail/main/[id]/page.tsx @@ -0,0 +1,9 @@ +import DetailMainDonasiNew from "@/app_modules/donasi/detail/detail_main/index_new"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/donasi/detail/publish/[id]/layout.tsx b/src/app/dev/(user)/donasi/detail/publish/[id]/layout.tsx similarity index 100% rename from src/app/dev/donasi/detail/publish/[id]/layout.tsx rename to src/app/dev/(user)/donasi/detail/publish/[id]/layout.tsx diff --git a/src/app/dev/(user)/donasi/detail/publish/[id]/page.tsx b/src/app/dev/(user)/donasi/detail/publish/[id]/page.tsx new file mode 100644 index 00000000..df37bd53 --- /dev/null +++ b/src/app/dev/(user)/donasi/detail/publish/[id]/page.tsx @@ -0,0 +1,9 @@ +import { DetailPublishDonasi } from "@/app_modules/donasi"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/donasi/detail/reject/[id]/layout.tsx b/src/app/dev/(user)/donasi/detail/reject/[id]/layout.tsx similarity index 100% rename from src/app/dev/donasi/detail/reject/[id]/layout.tsx rename to src/app/dev/(user)/donasi/detail/reject/[id]/layout.tsx diff --git a/src/app/dev/(user)/donasi/detail/reject/[id]/page.tsx b/src/app/dev/(user)/donasi/detail/reject/[id]/page.tsx new file mode 100644 index 00000000..561d04a8 --- /dev/null +++ b/src/app/dev/(user)/donasi/detail/reject/[id]/page.tsx @@ -0,0 +1,9 @@ +import { DetailRejectDonasi } from "@/app_modules/donasi"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/donasi/detail/review/[id]/layout.tsx b/src/app/dev/(user)/donasi/detail/review/[id]/layout.tsx similarity index 100% rename from src/app/dev/donasi/detail/review/[id]/layout.tsx rename to src/app/dev/(user)/donasi/detail/review/[id]/layout.tsx diff --git a/src/app/dev/(user)/donasi/detail/review/[id]/page.tsx b/src/app/dev/(user)/donasi/detail/review/[id]/page.tsx new file mode 100644 index 00000000..8d9d7cbf --- /dev/null +++ b/src/app/dev/(user)/donasi/detail/review/[id]/page.tsx @@ -0,0 +1,9 @@ +import { DetailReviewDonasi } from "@/app_modules/donasi"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/donasi/donatur/[id]/layout.tsx b/src/app/dev/(user)/donasi/donatur/[id]/layout.tsx similarity index 100% rename from src/app/dev/donasi/donatur/[id]/layout.tsx rename to src/app/dev/(user)/donasi/donatur/[id]/layout.tsx diff --git a/src/app/dev/(user)/donasi/donatur/[id]/page.tsx b/src/app/dev/(user)/donasi/donatur/[id]/page.tsx new file mode 100644 index 00000000..69843197 --- /dev/null +++ b/src/app/dev/(user)/donasi/donatur/[id]/page.tsx @@ -0,0 +1,9 @@ +import { DonaturDonasi } from "@/app_modules/donasi"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/donasi/edit/edit_cerita/[id]/layout.tsx b/src/app/dev/(user)/donasi/edit/edit_cerita/[id]/layout.tsx similarity index 100% rename from src/app/dev/donasi/edit/edit_cerita/[id]/layout.tsx rename to src/app/dev/(user)/donasi/edit/edit_cerita/[id]/layout.tsx diff --git a/src/app/dev/(user)/donasi/edit/edit_cerita/[id]/page.tsx b/src/app/dev/(user)/donasi/edit/edit_cerita/[id]/page.tsx new file mode 100644 index 00000000..c54da819 --- /dev/null +++ b/src/app/dev/(user)/donasi/edit/edit_cerita/[id]/page.tsx @@ -0,0 +1,9 @@ +import { EditCeritaPenggalangDonasi } from "@/app_modules/donasi"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/donasi/edit/edit_donasi/[id]/layout.tsx b/src/app/dev/(user)/donasi/edit/edit_donasi/[id]/layout.tsx similarity index 100% rename from src/app/dev/donasi/edit/edit_donasi/[id]/layout.tsx rename to src/app/dev/(user)/donasi/edit/edit_donasi/[id]/layout.tsx diff --git a/src/app/dev/(user)/donasi/edit/edit_donasi/[id]/page.tsx b/src/app/dev/(user)/donasi/edit/edit_donasi/[id]/page.tsx new file mode 100644 index 00000000..c99d7fab --- /dev/null +++ b/src/app/dev/(user)/donasi/edit/edit_donasi/[id]/page.tsx @@ -0,0 +1,9 @@ +import { EditDonasiNew } from "@/app_modules/donasi"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/donasi/edit/edit_rekening/[id]/layout.tsx b/src/app/dev/(user)/donasi/edit/edit_rekening/[id]/layout.tsx similarity index 100% rename from src/app/dev/donasi/edit/edit_rekening/[id]/layout.tsx rename to src/app/dev/(user)/donasi/edit/edit_rekening/[id]/layout.tsx diff --git a/src/app/dev/(user)/donasi/edit/edit_rekening/[id]/page.tsx b/src/app/dev/(user)/donasi/edit/edit_rekening/[id]/page.tsx new file mode 100644 index 00000000..b607efbb --- /dev/null +++ b/src/app/dev/(user)/donasi/edit/edit_rekening/[id]/page.tsx @@ -0,0 +1,9 @@ +import { Donasi_EditRekening } from "@/app_modules/donasi"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/(user)/donasi/edit/kabar/[id]/page.tsx b/src/app/dev/(user)/donasi/edit/kabar/[id]/page.tsx new file mode 100644 index 00000000..5ce340bf --- /dev/null +++ b/src/app/dev/(user)/donasi/edit/kabar/[id]/page.tsx @@ -0,0 +1,11 @@ +import { Donasi_UiEditKabar } from "@/app_modules/donasi/_ui"; + +async function Page() { + return ( + <> + + + ); +} + +export default Page; diff --git a/src/app/dev/donasi/edit/update_kabar/[id]/layout.tsx b/src/app/dev/(user)/donasi/edit/update_kabar/[id]/layout.tsx similarity index 64% rename from src/app/dev/donasi/edit/update_kabar/[id]/layout.tsx rename to src/app/dev/(user)/donasi/edit/update_kabar/[id]/layout.tsx index 03968363..7d7abf48 100644 --- a/src/app/dev/donasi/edit/update_kabar/[id]/layout.tsx +++ b/src/app/dev/(user)/donasi/edit/update_kabar/[id]/layout.tsx @@ -3,14 +3,12 @@ import React from "react"; export default async function Layout({ children, - params }: { children: React.ReactNode; - params: {id: string} }) { return ( <> - {children} + {children} ); } diff --git a/src/app/dev/(user)/donasi/edit/update_kabar/[id]/page.tsx b/src/app/dev/(user)/donasi/edit/update_kabar/[id]/page.tsx new file mode 100644 index 00000000..93278ec4 --- /dev/null +++ b/src/app/dev/(user)/donasi/edit/update_kabar/[id]/page.tsx @@ -0,0 +1,10 @@ +import { UpdateKabarDonasi } from "@/app_modules/donasi"; + +export default async function Page() { + + return ( + <> + + + ); +} diff --git a/src/app/dev/donasi/kabar/[id]/layout.tsx b/src/app/dev/(user)/donasi/kabar/[id]/layout.tsx similarity index 100% rename from src/app/dev/donasi/kabar/[id]/layout.tsx rename to src/app/dev/(user)/donasi/kabar/[id]/layout.tsx diff --git a/src/app/dev/(user)/donasi/kabar/[id]/page.tsx b/src/app/dev/(user)/donasi/kabar/[id]/page.tsx new file mode 100644 index 00000000..ff47e41e --- /dev/null +++ b/src/app/dev/(user)/donasi/kabar/[id]/page.tsx @@ -0,0 +1,9 @@ +import { KabarDonasi } from "@/app_modules/donasi"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/(user)/donasi/kabar/daftar/[id]/page.tsx b/src/app/dev/(user)/donasi/kabar/daftar/[id]/page.tsx new file mode 100644 index 00000000..ce86af26 --- /dev/null +++ b/src/app/dev/(user)/donasi/kabar/daftar/[id]/page.tsx @@ -0,0 +1,17 @@ +import { Donasi_UiDaftarKabar } from "@/app_modules/donasi/_ui"; + +async function Page({ params }: { params: { id: string } }) { + // const donasiId = params.id; + // const listKabar = await donasi_funGetListKabarById({ + // page: 1, + // donasiId: donasiId, + // }); + + return ( + <> + + + ); +} + +export default Page; diff --git a/src/app/dev/(user)/donasi/kabar/rekap/[id]/page.tsx b/src/app/dev/(user)/donasi/kabar/rekap/[id]/page.tsx new file mode 100644 index 00000000..dead1062 --- /dev/null +++ b/src/app/dev/(user)/donasi/kabar/rekap/[id]/page.tsx @@ -0,0 +1,11 @@ +import { Donasi_UiRekapKabar } from "@/app_modules/donasi/_ui"; + +async function Page() { + return ( + <> + + + ); +} + +export default Page; diff --git a/src/app/dev/(user)/donasi/main/beranda/page.tsx b/src/app/dev/(user)/donasi/main/beranda/page.tsx new file mode 100644 index 00000000..08d64509 --- /dev/null +++ b/src/app/dev/(user)/donasi/main/beranda/page.tsx @@ -0,0 +1,8 @@ +import { MainDonasiNew } from "@/app_modules/donasi"; + +export default async function Page() { + // const listDonasi = await donasi_funGetAllPublish({ page: 1 }); + + // return ; + return +} diff --git a/src/app/dev/(user)/donasi/main/donasi_saya/page.tsx b/src/app/dev/(user)/donasi/main/donasi_saya/page.tsx new file mode 100644 index 00000000..a04c7954 --- /dev/null +++ b/src/app/dev/(user)/donasi/main/donasi_saya/page.tsx @@ -0,0 +1,12 @@ +import DonasiSayaNew from "@/app_modules/donasi/main/donasi_saya_new"; + +export default async function Page() { + // const listInvoice = await donasi_funGetAllInvoiceByAuthorId({ page: 1 }); + + return ( + <> + {/* ; */} + + + ) +} diff --git a/src/app/dev/(user)/donasi/main/galang_dana/[id]/page.tsx b/src/app/dev/(user)/donasi/main/galang_dana/[id]/page.tsx new file mode 100644 index 00000000..c3cfa869 --- /dev/null +++ b/src/app/dev/(user)/donasi/main/galang_dana/[id]/page.tsx @@ -0,0 +1,23 @@ +import { GalangDanaDonasiNew } from "@/app_modules/donasi"; + +export default async function Page({ params }: { params: { id: string } }) { + // const statusId = params.id; + + // const listStatus = await donasi_funMasterStatusDonasi(); + // const dataDonasi = await donasi_funGetAllStatusById({ + // page: 1, + // statusId: statusId, + // }); + + return ( + <> + {/* */} + + + + ); +} diff --git a/src/app/dev/donasi/main/layout.tsx b/src/app/dev/(user)/donasi/main/layout.tsx similarity index 100% rename from src/app/dev/donasi/main/layout.tsx rename to src/app/dev/(user)/donasi/main/layout.tsx diff --git a/src/app/dev/donasi/pencairan_dana/[id]/layout.tsx b/src/app/dev/(user)/donasi/pencairan_dana/[id]/layout.tsx similarity index 100% rename from src/app/dev/donasi/pencairan_dana/[id]/layout.tsx rename to src/app/dev/(user)/donasi/pencairan_dana/[id]/layout.tsx diff --git a/src/app/dev/donasi/pencairan_dana/[id]/page.tsx b/src/app/dev/(user)/donasi/pencairan_dana/[id]/page.tsx similarity index 55% rename from src/app/dev/donasi/pencairan_dana/[id]/page.tsx rename to src/app/dev/(user)/donasi/pencairan_dana/[id]/page.tsx index b8c06d3a..d5a2de17 100644 --- a/src/app/dev/donasi/pencairan_dana/[id]/page.tsx +++ b/src/app/dev/(user)/donasi/pencairan_dana/[id]/page.tsx @@ -3,16 +3,16 @@ import { donasi_funGetListPencairanDanaById } from "@/app_modules/donasi/fun/get import { Donasi_getTotalPencairanDanaById } from "@/app_modules/donasi/fun/get/get_pencairan_dana_by_id"; export default async function Page({ params }: { params: { id: string } }) { - let donasiId = params.id; - const totalAkumulasi = await Donasi_getTotalPencairanDanaById(donasiId); - const listPencairan = await donasi_funGetListPencairanDanaById({page: 1, donasiId: donasiId}); + // let donasiId = params.id; + // const totalAkumulasi = await Donasi_getTotalPencairanDanaById(donasiId); + // const listPencairan = await donasi_funGetListPencairanDanaById({page: 1, donasiId: donasiId}); return ( <> ); diff --git a/src/app/dev/donasi/penggalang_dana/[id]/layout.tsx b/src/app/dev/(user)/donasi/penggalang_dana/[id]/layout.tsx similarity index 100% rename from src/app/dev/donasi/penggalang_dana/[id]/layout.tsx rename to src/app/dev/(user)/donasi/penggalang_dana/[id]/layout.tsx diff --git a/src/app/dev/(user)/donasi/penggalang_dana/[id]/page.tsx b/src/app/dev/(user)/donasi/penggalang_dana/[id]/page.tsx new file mode 100644 index 00000000..c0aea8d6 --- /dev/null +++ b/src/app/dev/(user)/donasi/penggalang_dana/[id]/page.tsx @@ -0,0 +1,9 @@ +import { PenggalangDanaDonasi } from "@/app_modules/donasi"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/(user)/donasi/proses_donasi/invoice/[id]/layout.tsx b/src/app/dev/(user)/donasi/proses_donasi/invoice/[id]/layout.tsx new file mode 100644 index 00000000..300fe0fa --- /dev/null +++ b/src/app/dev/(user)/donasi/proses_donasi/invoice/[id]/layout.tsx @@ -0,0 +1,14 @@ +import { LayoutDonasi_InvoiceProses } from "@/app_modules/donasi"; +import React from "react"; + +export default async function Layout({ + children, +}: { + children: React.ReactNode; +}) { + return ( + <> + {children} + + ); +} diff --git a/src/app/dev/(user)/donasi/proses_donasi/invoice/[id]/page.tsx b/src/app/dev/(user)/donasi/proses_donasi/invoice/[id]/page.tsx new file mode 100644 index 00000000..09361f5e --- /dev/null +++ b/src/app/dev/(user)/donasi/proses_donasi/invoice/[id]/page.tsx @@ -0,0 +1,5 @@ +import { Donasi_InvoiceProses } from "@/app_modules/donasi"; + +export default async function Page() { + return ; +} diff --git a/src/app/dev/donasi/proses_donasi/masukan_donasi/[id]/layout.tsx b/src/app/dev/(user)/donasi/proses_donasi/masukan_donasi/[id]/layout.tsx similarity index 100% rename from src/app/dev/donasi/proses_donasi/masukan_donasi/[id]/layout.tsx rename to src/app/dev/(user)/donasi/proses_donasi/masukan_donasi/[id]/layout.tsx diff --git a/src/app/dev/donasi/proses_donasi/masukan_donasi/[id]/page.tsx b/src/app/dev/(user)/donasi/proses_donasi/masukan_donasi/[id]/page.tsx similarity index 100% rename from src/app/dev/donasi/proses_donasi/masukan_donasi/[id]/page.tsx rename to src/app/dev/(user)/donasi/proses_donasi/masukan_donasi/[id]/page.tsx diff --git a/src/app/dev/(user)/donasi/proses_donasi/metode_pembayaran/[id]/layout.tsx b/src/app/dev/(user)/donasi/proses_donasi/metode_pembayaran/[id]/layout.tsx new file mode 100644 index 00000000..e7c36204 --- /dev/null +++ b/src/app/dev/(user)/donasi/proses_donasi/metode_pembayaran/[id]/layout.tsx @@ -0,0 +1,14 @@ +import { LayoutDonasi_MetodePembayaran } from "@/app_modules/donasi"; +import React from "react"; + +export default async function Layout({ + children, +}: { + children: React.ReactNode; +}) { + return ( + <> + {children} + + ); +} diff --git a/src/app/dev/(user)/donasi/proses_donasi/metode_pembayaran/[id]/page.tsx b/src/app/dev/(user)/donasi/proses_donasi/metode_pembayaran/[id]/page.tsx new file mode 100644 index 00000000..020c9e9f --- /dev/null +++ b/src/app/dev/(user)/donasi/proses_donasi/metode_pembayaran/[id]/page.tsx @@ -0,0 +1,9 @@ +import { Donasi_MetodePembayaran } from "@/app_modules/donasi"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/(user)/donasi/proses_donasi/proses_transaksi/[id]/layout.tsx b/src/app/dev/(user)/donasi/proses_donasi/proses_transaksi/[id]/layout.tsx new file mode 100644 index 00000000..8748b2eb --- /dev/null +++ b/src/app/dev/(user)/donasi/proses_donasi/proses_transaksi/[id]/layout.tsx @@ -0,0 +1,14 @@ +import { LayoutDonasi_ProsesTransaksi } from "@/app_modules/donasi"; +import React from "react"; + +export default async function Layout({ + children, +}: { + children: React.ReactNode; +}) { + return ( + <> + {children} + + ); +} diff --git a/src/app/dev/(user)/donasi/proses_donasi/proses_transaksi/[id]/page.tsx b/src/app/dev/(user)/donasi/proses_donasi/proses_transaksi/[id]/page.tsx new file mode 100644 index 00000000..d800a97c --- /dev/null +++ b/src/app/dev/(user)/donasi/proses_donasi/proses_transaksi/[id]/page.tsx @@ -0,0 +1,9 @@ +import { Donasi_ProsesTransaksi } from "@/app_modules/donasi"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/event/create/layout.tsx b/src/app/dev/(user)/event/create/layout.tsx similarity index 100% rename from src/app/dev/event/create/layout.tsx rename to src/app/dev/(user)/event/create/layout.tsx diff --git a/src/app/dev/(user)/event/create/page.tsx b/src/app/dev/(user)/event/create/page.tsx new file mode 100644 index 00000000..32a3cec4 --- /dev/null +++ b/src/app/dev/(user)/event/create/page.tsx @@ -0,0 +1,5 @@ +import { Event_Create } from "@/app_modules/event"; + +export default async function Page() { + return ; +} diff --git a/src/app/dev/(user)/event/detail/detail_sponsor/[id]/layout.tsx b/src/app/dev/(user)/event/detail/detail_sponsor/[id]/layout.tsx new file mode 100644 index 00000000..ca263a9d --- /dev/null +++ b/src/app/dev/(user)/event/detail/detail_sponsor/[id]/layout.tsx @@ -0,0 +1,16 @@ +import { funGetUserIdByToken } from '@/app_modules/_global/fun/get'; +import LayoutEvent_DetailSponsor from '@/app_modules/event/detail/detail_sponsor/layout'; +import React from 'react'; + +async function Layout({children} : {children: React.ReactNode}) { + // const userLoginId = await funGetUserIdByToken() + return ( + <> + + {children} + + + ); +} + +export default Layout; diff --git a/src/app/dev/(user)/event/detail/detail_sponsor/[id]/page.tsx b/src/app/dev/(user)/event/detail/detail_sponsor/[id]/page.tsx new file mode 100644 index 00000000..dff347af --- /dev/null +++ b/src/app/dev/(user)/event/detail/detail_sponsor/[id]/page.tsx @@ -0,0 +1,14 @@ +import { funGetUserIdByToken } from '@/app_modules/_global/fun/get'; +import DetailSponsor_Event from '@/app_modules/event/detail/detail_sponsor'; +import React from 'react'; + +async function Page() { + // const userLoginId = await funGetUserIdByToken(); + return ( + <> + + + ); +} + +export default Page; diff --git a/src/app/dev/event/detail/draft/[id]/layout.tsx b/src/app/dev/(user)/event/detail/draft/[id]/layout.tsx similarity index 100% rename from src/app/dev/event/detail/draft/[id]/layout.tsx rename to src/app/dev/(user)/event/detail/draft/[id]/layout.tsx diff --git a/src/app/dev/(user)/event/detail/draft/[id]/page.tsx b/src/app/dev/(user)/event/detail/draft/[id]/page.tsx new file mode 100644 index 00000000..5a67a485 --- /dev/null +++ b/src/app/dev/(user)/event/detail/draft/[id]/page.tsx @@ -0,0 +1,7 @@ +import { Event_DetailDraft } from "@/app_modules/event"; + +export default async function Page() { + return ( + + ); +} diff --git a/src/app/dev/event/detail/kontribusi/[id]/layout.tsx b/src/app/dev/(user)/event/detail/kontribusi/[id]/layout.tsx similarity index 100% rename from src/app/dev/event/detail/kontribusi/[id]/layout.tsx rename to src/app/dev/(user)/event/detail/kontribusi/[id]/layout.tsx diff --git a/src/app/dev/(user)/event/detail/kontribusi/[id]/page.tsx b/src/app/dev/(user)/event/detail/kontribusi/[id]/page.tsx new file mode 100644 index 00000000..80fd281b --- /dev/null +++ b/src/app/dev/(user)/event/detail/kontribusi/[id]/page.tsx @@ -0,0 +1,9 @@ +import { Event_DetailKontribusi } from "@/app_modules/event"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/event/detail/main/[id]/layout.tsx b/src/app/dev/(user)/event/detail/main/[id]/layout.tsx similarity index 100% rename from src/app/dev/event/detail/main/[id]/layout.tsx rename to src/app/dev/(user)/event/detail/main/[id]/layout.tsx diff --git a/src/app/dev/(user)/event/detail/main/[id]/page.tsx b/src/app/dev/(user)/event/detail/main/[id]/page.tsx new file mode 100644 index 00000000..9b47f808 --- /dev/null +++ b/src/app/dev/(user)/event/detail/main/[id]/page.tsx @@ -0,0 +1,9 @@ +import { Event_DetailMain } from "@/app_modules/event"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/(user)/event/detail/peserta/[id]/layout.tsx b/src/app/dev/(user)/event/detail/peserta/[id]/layout.tsx new file mode 100644 index 00000000..74bdbe58 --- /dev/null +++ b/src/app/dev/(user)/event/detail/peserta/[id]/layout.tsx @@ -0,0 +1,10 @@ +import { LayoutEvent_Peserta } from '@/app_modules/event'; +import React from 'react'; + +export default async function Page({ children }: { children: React.ReactNode }) { + return ( + + {children} + + ) +} diff --git a/src/app/dev/(user)/event/detail/peserta/[id]/page.tsx b/src/app/dev/(user)/event/detail/peserta/[id]/page.tsx new file mode 100644 index 00000000..fec42f21 --- /dev/null +++ b/src/app/dev/(user)/event/detail/peserta/[id]/page.tsx @@ -0,0 +1,8 @@ +import Event_DaftarPeserta from '@/app_modules/event/detail/peserta'; + +export default async function Page() { + return ( + + ) + +} diff --git a/src/app/dev/event/detail/publish/[id]/layout.tsx b/src/app/dev/(user)/event/detail/publish/[id]/layout.tsx similarity index 100% rename from src/app/dev/event/detail/publish/[id]/layout.tsx rename to src/app/dev/(user)/event/detail/publish/[id]/layout.tsx diff --git a/src/app/dev/(user)/event/detail/publish/[id]/page.tsx b/src/app/dev/(user)/event/detail/publish/[id]/page.tsx new file mode 100644 index 00000000..e17f8fe4 --- /dev/null +++ b/src/app/dev/(user)/event/detail/publish/[id]/page.tsx @@ -0,0 +1,5 @@ +import { Event_DetailPublish } from "@/app_modules/event"; + +export default async function Page() { + return ; +} diff --git a/src/app/dev/event/detail/reject/[id]/layout.tsx b/src/app/dev/(user)/event/detail/reject/[id]/layout.tsx similarity index 100% rename from src/app/dev/event/detail/reject/[id]/layout.tsx rename to src/app/dev/(user)/event/detail/reject/[id]/layout.tsx diff --git a/src/app/dev/(user)/event/detail/reject/[id]/page.tsx b/src/app/dev/(user)/event/detail/reject/[id]/page.tsx new file mode 100644 index 00000000..59766cdf --- /dev/null +++ b/src/app/dev/(user)/event/detail/reject/[id]/page.tsx @@ -0,0 +1,5 @@ +import { Event_DetailReject } from "@/app_modules/event"; + +export default async function Page() { + return ; +} diff --git a/src/app/dev/event/detail/review/[id]/layout.tsx b/src/app/dev/(user)/event/detail/review/[id]/layout.tsx similarity index 100% rename from src/app/dev/event/detail/review/[id]/layout.tsx rename to src/app/dev/(user)/event/detail/review/[id]/layout.tsx diff --git a/src/app/dev/(user)/event/detail/review/[id]/page.tsx b/src/app/dev/(user)/event/detail/review/[id]/page.tsx new file mode 100644 index 00000000..99b3d969 --- /dev/null +++ b/src/app/dev/(user)/event/detail/review/[id]/page.tsx @@ -0,0 +1,5 @@ +import { Event_DetailReview } from "@/app_modules/event"; + +export default async function Page() { + return ; +} diff --git a/src/app/dev/event/detail/riwayat/[id]/layout.tsx b/src/app/dev/(user)/event/detail/riwayat/[id]/layout.tsx similarity index 100% rename from src/app/dev/event/detail/riwayat/[id]/layout.tsx rename to src/app/dev/(user)/event/detail/riwayat/[id]/layout.tsx diff --git a/src/app/dev/(user)/event/detail/riwayat/[id]/page.tsx b/src/app/dev/(user)/event/detail/riwayat/[id]/page.tsx new file mode 100644 index 00000000..70a014a6 --- /dev/null +++ b/src/app/dev/(user)/event/detail/riwayat/[id]/page.tsx @@ -0,0 +1,9 @@ +import { Event_DetailRiwayat } from "@/app_modules/event"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/(user)/event/detail/sponsor/[id]/layout.tsx b/src/app/dev/(user)/event/detail/sponsor/[id]/layout.tsx new file mode 100644 index 00000000..957a0527 --- /dev/null +++ b/src/app/dev/(user)/event/detail/sponsor/[id]/layout.tsx @@ -0,0 +1,14 @@ +import { LayoutEvent_Sponsor } from '@/app_modules/event'; +import React from 'react'; + +function Layout({ children, }: {children: React.ReactNode}) { + return ( + <> + + {children} + + + ); +} + +export default Layout; diff --git a/src/app/dev/(user)/event/detail/sponsor/[id]/page.tsx b/src/app/dev/(user)/event/detail/sponsor/[id]/page.tsx new file mode 100644 index 00000000..d755e6bb --- /dev/null +++ b/src/app/dev/(user)/event/detail/sponsor/[id]/page.tsx @@ -0,0 +1,11 @@ +import Event_DaftarSponsor from '@/app_modules/event/detail/sponsor'; + +function Page() { + return ( + <> + + + ); +} + +export default Page; diff --git a/src/app/dev/(user)/event/detail/sponsor/edit_sponsor/layout.tsx b/src/app/dev/(user)/event/detail/sponsor/edit_sponsor/layout.tsx new file mode 100644 index 00000000..ed430688 --- /dev/null +++ b/src/app/dev/(user)/event/detail/sponsor/edit_sponsor/layout.tsx @@ -0,0 +1,14 @@ +import Event_LayoutEditSponsor from '@/app_modules/event/detail/sponsor/edit_sponsor/layout'; +import React from 'react'; + +function Layout({ children }: { children: React.ReactNode }) { + return ( + <> + + {children} + + + ); +} + +export default Layout; diff --git a/src/app/dev/(user)/event/detail/sponsor/edit_sponsor/page.tsx b/src/app/dev/(user)/event/detail/sponsor/edit_sponsor/page.tsx new file mode 100644 index 00000000..4b3e2fb9 --- /dev/null +++ b/src/app/dev/(user)/event/detail/sponsor/edit_sponsor/page.tsx @@ -0,0 +1,12 @@ +import Event_EditSponsor from '@/app_modules/event/detail/sponsor/edit_sponsor'; +import React from 'react'; + +function Page() { + return ( + <> + + + ); +} + +export default Page; diff --git a/src/app/dev/(user)/event/detail/sponsor/metode_pembayaran/[id]/layout.tsx b/src/app/dev/(user)/event/detail/sponsor/metode_pembayaran/[id]/layout.tsx new file mode 100644 index 00000000..4874c821 --- /dev/null +++ b/src/app/dev/(user)/event/detail/sponsor/metode_pembayaran/[id]/layout.tsx @@ -0,0 +1,14 @@ +import Event_LayoutMetodePembayaran from '@/app_modules/event/detail/sponsor/metode_pembayaran/layout'; +import React from 'react'; + +function Layout({ children } : { children: React.ReactNode }) { + return ( + <> + + {children} + + + ); +} + +export default Layout; diff --git a/src/app/dev/(user)/event/detail/sponsor/metode_pembayaran/[id]/page.tsx b/src/app/dev/(user)/event/detail/sponsor/metode_pembayaran/[id]/page.tsx new file mode 100644 index 00000000..9e749bdd --- /dev/null +++ b/src/app/dev/(user)/event/detail/sponsor/metode_pembayaran/[id]/page.tsx @@ -0,0 +1,12 @@ + +import Event_MetodePembayaran from '@/app_modules/event/detail/sponsor/metode_pembayaran'; + +function Page() { + return ( + <> + + + ); +} + +export default Page; diff --git a/src/app/dev/(user)/event/detail/sponsor/nominal_sponsor/[id]/layout.tsx b/src/app/dev/(user)/event/detail/sponsor/nominal_sponsor/[id]/layout.tsx new file mode 100644 index 00000000..d3fedd39 --- /dev/null +++ b/src/app/dev/(user)/event/detail/sponsor/nominal_sponsor/[id]/layout.tsx @@ -0,0 +1,12 @@ +import Event_LayoutNominalSponsor from '@/app_modules/event/detail/sponsor/nominal_sponsor/layout'; +import React from 'react'; + +function Layout({ children }: { children: React.ReactNode }) { + return ( + <> + {children} + + ); +} + +export default Layout; diff --git a/src/app/dev/(user)/event/detail/sponsor/nominal_sponsor/[id]/page.tsx b/src/app/dev/(user)/event/detail/sponsor/nominal_sponsor/[id]/page.tsx new file mode 100644 index 00000000..1ca80c55 --- /dev/null +++ b/src/app/dev/(user)/event/detail/sponsor/nominal_sponsor/[id]/page.tsx @@ -0,0 +1,12 @@ +import Event_PilihNominalSponsor from '@/app_modules/event/detail/sponsor/nominal_sponsor'; +import React from 'react'; + +function Page() { + return ( + <> + + + ); +} + +export default Page; diff --git a/src/app/dev/(user)/event/detail/sponsor/tambah_sponsor/[id]/layout.tsx b/src/app/dev/(user)/event/detail/sponsor/tambah_sponsor/[id]/layout.tsx new file mode 100644 index 00000000..24091745 --- /dev/null +++ b/src/app/dev/(user)/event/detail/sponsor/tambah_sponsor/[id]/layout.tsx @@ -0,0 +1,12 @@ +import LayoutEvent_TambahSponsor from '@/app_modules/event/detail/tambah_sponsor/layout'; +import React from 'react'; + +function Layout({children}: {children: React.ReactNode}) { + return ( + + {children} + + ); +} + +export default Layout; diff --git a/src/app/dev/(user)/event/detail/sponsor/tambah_sponsor/[id]/page.tsx b/src/app/dev/(user)/event/detail/sponsor/tambah_sponsor/[id]/page.tsx new file mode 100644 index 00000000..f47e4cd3 --- /dev/null +++ b/src/app/dev/(user)/event/detail/sponsor/tambah_sponsor/[id]/page.tsx @@ -0,0 +1,12 @@ +import Event_TambahSponsor from '@/app_modules/event/detail/tambah_sponsor'; +import React from 'react'; + +function Page() { + return ( + <> + + + ); +} + +export default Page; diff --git a/src/app/dev/vote/main/layout.tsx b/src/app/dev/(user)/event/edit/[id]/layout.tsx similarity index 57% rename from src/app/dev/vote/main/layout.tsx rename to src/app/dev/(user)/event/edit/[id]/layout.tsx index 6c2e5673..8fa6a1e9 100644 --- a/src/app/dev/vote/main/layout.tsx +++ b/src/app/dev/(user)/event/edit/[id]/layout.tsx @@ -1,4 +1,4 @@ -import { LayoutVote_Main } from "@/app_modules/vote"; +import { LayoutEvent_Edit } from "@/app_modules/event"; import React from "react"; export default async function Layout({ @@ -8,7 +8,7 @@ export default async function Layout({ }) { return ( <> - {children} + {children} ); } diff --git a/src/app/dev/(user)/event/edit/[id]/page.tsx b/src/app/dev/(user)/event/edit/[id]/page.tsx new file mode 100644 index 00000000..ead792b0 --- /dev/null +++ b/src/app/dev/(user)/event/edit/[id]/page.tsx @@ -0,0 +1,9 @@ +import { Event_Edit } from "@/app_modules/event"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/(user)/event/invoice/[id]/layout.tsx b/src/app/dev/(user)/event/invoice/[id]/layout.tsx new file mode 100644 index 00000000..ec04b66b --- /dev/null +++ b/src/app/dev/(user)/event/invoice/[id]/layout.tsx @@ -0,0 +1,14 @@ +import Event_LayoutInvoice from '@/app_modules/event/detail/invoice/layout'; +import React from 'react'; + +function Layout({ children }: { children: React.ReactNode }) { + return ( + <> + + {children} + + + ); +} + +export default Layout; diff --git a/src/app/dev/(user)/event/invoice/[id]/page.tsx b/src/app/dev/(user)/event/invoice/[id]/page.tsx new file mode 100644 index 00000000..1d712941 --- /dev/null +++ b/src/app/dev/(user)/event/invoice/[id]/page.tsx @@ -0,0 +1,14 @@ +import { funGetUserIdByToken } from '@/app_modules/_global/fun/get'; +import Event_Invoice from '@/app_modules/event/detail/invoice'; +import React from 'react'; + +async function Page() { + // const userLoginId = await funGetUserIdByToken(); + return ( + <> + + + ); +} + +export default Page; diff --git a/src/app/dev/(user)/event/konfirmasi/[id]/page.tsx b/src/app/dev/(user)/event/konfirmasi/[id]/page.tsx new file mode 100644 index 00000000..76f439c6 --- /dev/null +++ b/src/app/dev/(user)/event/konfirmasi/[id]/page.tsx @@ -0,0 +1,10 @@ +import UiEvent_V2_Konfirmasi from "@/app_modules/event/_ui/V2_konfirmasi"; + +export default async function Page() { + return ( + <> + {/* */} + + + ); +} diff --git a/src/app/dev/(user)/event/main/beranda/page.tsx b/src/app/dev/(user)/event/main/beranda/page.tsx new file mode 100644 index 00000000..5bde2a88 --- /dev/null +++ b/src/app/dev/(user)/event/main/beranda/page.tsx @@ -0,0 +1,10 @@ +import { Event_Beranda } from "@/app_modules/event"; + +export default async function Page() { + + return ( + <> + + + ); +} diff --git a/src/app/dev/event/main/kontribusi/page.tsx b/src/app/dev/(user)/event/main/kontribusi/page.tsx similarity index 63% rename from src/app/dev/event/main/kontribusi/page.tsx rename to src/app/dev/(user)/event/main/kontribusi/page.tsx index 0a883c1b..18e81ccf 100644 --- a/src/app/dev/event/main/kontribusi/page.tsx +++ b/src/app/dev/(user)/event/main/kontribusi/page.tsx @@ -2,11 +2,10 @@ import { Event_Kontribusi } from "@/app_modules/event"; import { event_getListKontibusiByUserId } from "@/app_modules/event/fun/get/get_list_kontribusi_by_user_id"; export default async function Page() { - const listKontribusi = await event_getListKontibusiByUserId({page: 1}) return ( <> - + ); } diff --git a/src/app/dev/(user)/event/main/layout.tsx b/src/app/dev/(user)/event/main/layout.tsx new file mode 100644 index 00000000..3f595b15 --- /dev/null +++ b/src/app/dev/(user)/event/main/layout.tsx @@ -0,0 +1,15 @@ +import { LayoutEvent_Main } from "@/app_modules/event"; +import NewLayout_Event from "@/app_modules/event/main/new_layout_event"; +import React from "react"; + +export default async function Layout({ + children, +}: { + children: React.ReactNode; +}) { + return ( + <> + {children} + + ); +} diff --git a/src/app/dev/(user)/event/main/riwayat/[id]/page.tsx b/src/app/dev/(user)/event/main/riwayat/[id]/page.tsx new file mode 100644 index 00000000..9ae233cc --- /dev/null +++ b/src/app/dev/(user)/event/main/riwayat/[id]/page.tsx @@ -0,0 +1,9 @@ +import { Event_Riwayat } from "@/app_modules/event"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/(user)/event/main/status/[id]/page.tsx b/src/app/dev/(user)/event/main/status/[id]/page.tsx new file mode 100644 index 00000000..1336dc64 --- /dev/null +++ b/src/app/dev/(user)/event/main/status/[id]/page.tsx @@ -0,0 +1,11 @@ +import { Event_StatusPage } from "@/app_modules/event"; + +async function Page({ params }: { params: { id: string } }) { + return ( + <> + + + ); +} + +export default Page; diff --git a/src/app/dev/event/splash/page.tsx b/src/app/dev/(user)/event/splash/page.tsx similarity index 100% rename from src/app/dev/event/splash/page.tsx rename to src/app/dev/(user)/event/splash/page.tsx diff --git a/src/app/dev/forum/create/layout.tsx b/src/app/dev/(user)/forum/create/layout.tsx similarity index 100% rename from src/app/dev/forum/create/layout.tsx rename to src/app/dev/(user)/forum/create/layout.tsx diff --git a/src/app/dev/(user)/forum/create/page.tsx b/src/app/dev/(user)/forum/create/page.tsx new file mode 100644 index 00000000..7b93d284 --- /dev/null +++ b/src/app/dev/(user)/forum/create/page.tsx @@ -0,0 +1,9 @@ +import { Forum_V3_Create } from "@/app_modules/forum/create/V3_create"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/forum/detail/main-detail/[id]/layout.tsx b/src/app/dev/(user)/forum/detail/main-detail/[id]/layout.tsx similarity index 100% rename from src/app/dev/forum/detail/main-detail/[id]/layout.tsx rename to src/app/dev/(user)/forum/detail/main-detail/[id]/layout.tsx diff --git a/src/app/dev/(user)/forum/detail/main-detail/[id]/page.tsx b/src/app/dev/(user)/forum/detail/main-detail/[id]/page.tsx new file mode 100644 index 00000000..22c306f7 --- /dev/null +++ b/src/app/dev/(user)/forum/detail/main-detail/[id]/page.tsx @@ -0,0 +1,9 @@ +import Forum_V3_MainDetail from "@/app_modules/forum/detail/v3_main_detail"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/(user)/forum/detail/report-komentar/[id]/page.tsx b/src/app/dev/(user)/forum/detail/report-komentar/[id]/page.tsx new file mode 100644 index 00000000..86741044 --- /dev/null +++ b/src/app/dev/(user)/forum/detail/report-komentar/[id]/page.tsx @@ -0,0 +1,9 @@ +import { Forum_DetailReportKomentar } from "@/app_modules/forum"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/(user)/forum/detail/report-posting/[id]/page.tsx b/src/app/dev/(user)/forum/detail/report-posting/[id]/page.tsx new file mode 100644 index 00000000..016415b4 --- /dev/null +++ b/src/app/dev/(user)/forum/detail/report-posting/[id]/page.tsx @@ -0,0 +1,9 @@ +import { Forum_DetailReportPosting } from "@/app_modules/forum"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/forum/edit/komentar/[id]/layout.tsx b/src/app/dev/(user)/forum/edit/komentar/[id]/layout.tsx similarity index 100% rename from src/app/dev/forum/edit/komentar/[id]/layout.tsx rename to src/app/dev/(user)/forum/edit/komentar/[id]/layout.tsx diff --git a/src/app/dev/forum/edit/komentar/[id]/page.tsx b/src/app/dev/(user)/forum/edit/komentar/[id]/page.tsx similarity index 100% rename from src/app/dev/forum/edit/komentar/[id]/page.tsx rename to src/app/dev/(user)/forum/edit/komentar/[id]/page.tsx diff --git a/src/app/dev/forum/edit/posting/[id]/layout.tsx b/src/app/dev/(user)/forum/edit/posting/[id]/layout.tsx similarity index 99% rename from src/app/dev/forum/edit/posting/[id]/layout.tsx rename to src/app/dev/(user)/forum/edit/posting/[id]/layout.tsx index 058935bd..2de2df46 100644 --- a/src/app/dev/forum/edit/posting/[id]/layout.tsx +++ b/src/app/dev/(user)/forum/edit/posting/[id]/layout.tsx @@ -1,4 +1,3 @@ - import { LayoutForum_EditPosting } from "@/app_modules/forum"; import React from "react"; diff --git a/src/app/dev/(user)/forum/edit/posting/[id]/page.tsx b/src/app/dev/(user)/forum/edit/posting/[id]/page.tsx new file mode 100644 index 00000000..751030f8 --- /dev/null +++ b/src/app/dev/(user)/forum/edit/posting/[id]/page.tsx @@ -0,0 +1,9 @@ +import Forum_V3_EditPosting from "@/app_modules/forum/edit/posting/V3_edit_posting"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/(user)/forum/forumku/[id]/layout.tsx b/src/app/dev/(user)/forum/forumku/[id]/layout.tsx new file mode 100644 index 00000000..8e0ddbea --- /dev/null +++ b/src/app/dev/(user)/forum/forumku/[id]/layout.tsx @@ -0,0 +1,14 @@ +import { LayoutForum_Forumku } from "@/app_modules/forum"; +import React from "react"; + +export default async function Layout({ + children, +}: { + children: React.ReactNode; +}) { + return ( + <> + {children} + + ); +} diff --git a/src/app/dev/(user)/forum/forumku/[id]/page.tsx b/src/app/dev/(user)/forum/forumku/[id]/page.tsx new file mode 100644 index 00000000..a0d2beba --- /dev/null +++ b/src/app/dev/(user)/forum/forumku/[id]/page.tsx @@ -0,0 +1,9 @@ +import { Forum_Forumku } from "@/app_modules/forum"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/job/main/layout.tsx b/src/app/dev/(user)/forum/main/layout.tsx similarity index 57% rename from src/app/dev/job/main/layout.tsx rename to src/app/dev/(user)/forum/main/layout.tsx index 337a18bc..37465d3e 100644 --- a/src/app/dev/job/main/layout.tsx +++ b/src/app/dev/(user)/forum/main/layout.tsx @@ -1,4 +1,4 @@ -import { LayoutJob_Main } from "@/app_modules/job"; +import { LayoutForum_Main } from "@/app_modules/forum"; import React from "react"; export default async function Layout({ @@ -8,7 +8,7 @@ export default async function Layout({ }) { return ( <> - {children} + {children} ); } diff --git a/src/app/dev/(user)/forum/main/page.tsx b/src/app/dev/(user)/forum/main/page.tsx new file mode 100644 index 00000000..b204a95b --- /dev/null +++ b/src/app/dev/(user)/forum/main/page.tsx @@ -0,0 +1,9 @@ +import { Forum_Beranda } from "@/app_modules/forum"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/forum/report/komentar-lainnya/[id]/layout.tsx b/src/app/dev/(user)/forum/report/komentar-lainnya/[id]/layout.tsx similarity index 100% rename from src/app/dev/forum/report/komentar-lainnya/[id]/layout.tsx rename to src/app/dev/(user)/forum/report/komentar-lainnya/[id]/layout.tsx diff --git a/src/app/dev/(user)/forum/report/komentar-lainnya/[id]/page.tsx b/src/app/dev/(user)/forum/report/komentar-lainnya/[id]/page.tsx new file mode 100644 index 00000000..878ebfbf --- /dev/null +++ b/src/app/dev/(user)/forum/report/komentar-lainnya/[id]/page.tsx @@ -0,0 +1,9 @@ +import { Forum_ReportKomentarLainnya } from "@/app_modules/forum"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/forum/report/komentar/[id]/layout.tsx b/src/app/dev/(user)/forum/report/komentar/[id]/layout.tsx similarity index 100% rename from src/app/dev/forum/report/komentar/[id]/layout.tsx rename to src/app/dev/(user)/forum/report/komentar/[id]/layout.tsx diff --git a/src/app/dev/(user)/forum/report/komentar/[id]/page.tsx b/src/app/dev/(user)/forum/report/komentar/[id]/page.tsx new file mode 100644 index 00000000..c1adedd2 --- /dev/null +++ b/src/app/dev/(user)/forum/report/komentar/[id]/page.tsx @@ -0,0 +1,9 @@ +import { Forum_ReportKomentar } from "@/app_modules/forum"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/forum/report/posting-lainnya/[id]/layout.tsx b/src/app/dev/(user)/forum/report/posting-lainnya/[id]/layout.tsx similarity index 100% rename from src/app/dev/forum/report/posting-lainnya/[id]/layout.tsx rename to src/app/dev/(user)/forum/report/posting-lainnya/[id]/layout.tsx diff --git a/src/app/dev/(user)/forum/report/posting-lainnya/[id]/page.tsx b/src/app/dev/(user)/forum/report/posting-lainnya/[id]/page.tsx new file mode 100644 index 00000000..5b146735 --- /dev/null +++ b/src/app/dev/(user)/forum/report/posting-lainnya/[id]/page.tsx @@ -0,0 +1,10 @@ +import { Forum_ReportPostingLainnya } from "@/app_modules/forum"; + +export default async function Page() { + + return ( + <> + + + ); +} diff --git a/src/app/dev/forum/report/posting/[id]/layout.tsx b/src/app/dev/(user)/forum/report/posting/[id]/layout.tsx similarity index 99% rename from src/app/dev/forum/report/posting/[id]/layout.tsx rename to src/app/dev/(user)/forum/report/posting/[id]/layout.tsx index b4cdf878..9b4f4591 100644 --- a/src/app/dev/forum/report/posting/[id]/layout.tsx +++ b/src/app/dev/(user)/forum/report/posting/[id]/layout.tsx @@ -1,4 +1,3 @@ - import { LayoutForum_ReportPosting } from "@/app_modules/forum"; import React from "react"; diff --git a/src/app/dev/(user)/forum/report/posting/[id]/page.tsx b/src/app/dev/(user)/forum/report/posting/[id]/page.tsx new file mode 100644 index 00000000..e81999bf --- /dev/null +++ b/src/app/dev/(user)/forum/report/posting/[id]/page.tsx @@ -0,0 +1,9 @@ +import { Forum_ReportPosting } from "@/app_modules/forum"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/forum/splash/page.tsx b/src/app/dev/(user)/forum/splash/page.tsx similarity index 100% rename from src/app/dev/forum/splash/page.tsx rename to src/app/dev/(user)/forum/splash/page.tsx diff --git a/src/app/dev/(user)/home/page.tsx b/src/app/dev/(user)/home/page.tsx new file mode 100644 index 00000000..20eece5e --- /dev/null +++ b/src/app/dev/(user)/home/page.tsx @@ -0,0 +1,11 @@ +import { V3_View_Home } from "@/app_modules/home/v3_home_view"; + +export default function PageHome() { + return ( + <> + {/* */} + {/* */} + + + ); +} diff --git a/src/app/dev/(user)/investasi/[id]/investor/page.tsx b/src/app/dev/(user)/investasi/[id]/investor/page.tsx new file mode 100644 index 00000000..bca95f92 --- /dev/null +++ b/src/app/dev/(user)/investasi/[id]/investor/page.tsx @@ -0,0 +1,11 @@ +import { Investasi_UiListInvestor } from "@/app_modules/investasi/_ui/detail/ui_list_investor"; + +async function Page() { + return ( + <> + + + ); +} + +export default Page; diff --git a/src/app/dev/(user)/investasi/berita/[id]/page.tsx b/src/app/dev/(user)/investasi/berita/[id]/page.tsx new file mode 100644 index 00000000..483ed39a --- /dev/null +++ b/src/app/dev/(user)/investasi/berita/[id]/page.tsx @@ -0,0 +1,9 @@ +import { Investasi_UiDetailBerita } from "@/app_modules/investasi/_ui"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/(user)/investasi/berita/daftar/[id]/page.tsx b/src/app/dev/(user)/investasi/berita/daftar/[id]/page.tsx new file mode 100644 index 00000000..de880b81 --- /dev/null +++ b/src/app/dev/(user)/investasi/berita/daftar/[id]/page.tsx @@ -0,0 +1,9 @@ +import { Investasi_UiDaftarBerita } from "@/app_modules/investasi/_ui"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/(user)/investasi/berita/rekap/[id]/page.tsx b/src/app/dev/(user)/investasi/berita/rekap/[id]/page.tsx new file mode 100644 index 00000000..bae957ad --- /dev/null +++ b/src/app/dev/(user)/investasi/berita/rekap/[id]/page.tsx @@ -0,0 +1,9 @@ +import { Investasi_UiRekapBerita } from "@/app_modules/investasi/_ui"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/(user)/investasi/create/berita/[id]/page.tsx b/src/app/dev/(user)/investasi/create/berita/[id]/page.tsx new file mode 100644 index 00000000..71683b93 --- /dev/null +++ b/src/app/dev/(user)/investasi/create/berita/[id]/page.tsx @@ -0,0 +1,9 @@ +import { Investasi_UiCreateBerita } from "@/app_modules/investasi/_ui"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/(user)/investasi/create/dokumen/[id]/page.tsx b/src/app/dev/(user)/investasi/create/dokumen/[id]/page.tsx new file mode 100644 index 00000000..92255f76 --- /dev/null +++ b/src/app/dev/(user)/investasi/create/dokumen/[id]/page.tsx @@ -0,0 +1,9 @@ +import { Investasi_UiCreateDocument } from "@/app_modules/investasi/_ui"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/investasi/create/investasi/layout.tsx b/src/app/dev/(user)/investasi/create/investasi/layout.tsx similarity index 100% rename from src/app/dev/investasi/create/investasi/layout.tsx rename to src/app/dev/(user)/investasi/create/investasi/layout.tsx diff --git a/src/app/dev/(user)/investasi/create/investasi/page.tsx b/src/app/dev/(user)/investasi/create/investasi/page.tsx new file mode 100644 index 00000000..f86b2291 --- /dev/null +++ b/src/app/dev/(user)/investasi/create/investasi/page.tsx @@ -0,0 +1,9 @@ +import { InvestasiCreateNew } from "@/app_modules/investasi"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/investasi/create_berita/[id]/layout.tsx b/src/app/dev/(user)/investasi/create_berita/[id]/layout.tsx similarity index 100% rename from src/app/dev/investasi/create_berita/[id]/layout.tsx rename to src/app/dev/(user)/investasi/create_berita/[id]/layout.tsx diff --git a/src/app/dev/investasi/create_berita/[id]/page.tsx b/src/app/dev/(user)/investasi/create_berita/[id]/page.tsx similarity index 100% rename from src/app/dev/investasi/create_berita/[id]/page.tsx rename to src/app/dev/(user)/investasi/create_berita/[id]/page.tsx diff --git a/src/app/dev/(user)/investasi/detail/[id]/page.tsx b/src/app/dev/(user)/investasi/detail/[id]/page.tsx new file mode 100644 index 00000000..83e5d9dc --- /dev/null +++ b/src/app/dev/(user)/investasi/detail/[id]/page.tsx @@ -0,0 +1,9 @@ +import { Investasi_UiDetailMain } from "@/app_modules/investasi/_ui"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/(user)/investasi/detail/portofolio/[id]/page.tsx b/src/app/dev/(user)/investasi/detail/portofolio/[id]/page.tsx new file mode 100644 index 00000000..b4251bf8 --- /dev/null +++ b/src/app/dev/(user)/investasi/detail/portofolio/[id]/page.tsx @@ -0,0 +1,9 @@ +import { Investasi_UiDetailPortofolio } from "@/app_modules/investasi/_ui"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/(user)/investasi/detail/prospektus/[id]/page.tsx b/src/app/dev/(user)/investasi/detail/prospektus/[id]/page.tsx new file mode 100644 index 00000000..f56379ca --- /dev/null +++ b/src/app/dev/(user)/investasi/detail/prospektus/[id]/page.tsx @@ -0,0 +1,9 @@ +import { Investasi_UiDetailProspektus } from "@/app_modules/investasi/_ui"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/(user)/investasi/detail/saham/[id]/page.tsx b/src/app/dev/(user)/investasi/detail/saham/[id]/page.tsx new file mode 100644 index 00000000..67a9eaa0 --- /dev/null +++ b/src/app/dev/(user)/investasi/detail/saham/[id]/page.tsx @@ -0,0 +1,9 @@ +import { Investasi_UiDetailSahamSaya } from "@/app_modules/investasi/_ui"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/investasi/detail_berita/[id]/layout.tsx b/src/app/dev/(user)/investasi/detail_berita/[id]/layout.tsx similarity index 91% rename from src/app/dev/investasi/detail_berita/[id]/layout.tsx rename to src/app/dev/(user)/investasi/detail_berita/[id]/layout.tsx index c75c0992..558b3ec6 100644 --- a/src/app/dev/investasi/detail_berita/[id]/layout.tsx +++ b/src/app/dev/(user)/investasi/detail_berita/[id]/layout.tsx @@ -1,6 +1,7 @@ import { LayoutDetailBeritaInvestasi } from "@/app_modules/investasi"; import React from "react"; + // -- DELETE SOON -- // export default async function Layout({ children, }: { diff --git a/src/app/dev/investasi/detail_berita/[id]/page.tsx b/src/app/dev/(user)/investasi/detail_berita/[id]/page.tsx similarity index 90% rename from src/app/dev/investasi/detail_berita/[id]/page.tsx rename to src/app/dev/(user)/investasi/detail_berita/[id]/page.tsx index d4d0f75e..b2cf7233 100644 --- a/src/app/dev/investasi/detail_berita/[id]/page.tsx +++ b/src/app/dev/(user)/investasi/detail_berita/[id]/page.tsx @@ -1,10 +1,11 @@ import { DetailBeritaInvestasi } from "@/app_modules/investasi"; import getOneBeritaInvestasiById from "@/app_modules/investasi/fun/get_one_berita_by_id"; + + // -- DELETE SOON -- // export default async function Page({ params }: { params: { id: string } }) { const investasiId = params.id; const dataBerita = await getOneBeritaInvestasiById(investasiId); - // console.log(dataBerita) return ( <> @@ -15,3 +16,4 @@ export default async function Page({ params }: { params: { id: string } }) { ); } + // -- DELETE SOON -- // diff --git a/src/app/dev/investasi/detail_dokumen/[id]/layout.tsx b/src/app/dev/(user)/investasi/detail_dokumen/[id]/layout.tsx similarity index 100% rename from src/app/dev/investasi/detail_dokumen/[id]/layout.tsx rename to src/app/dev/(user)/investasi/detail_dokumen/[id]/layout.tsx diff --git a/src/app/dev/investasi/detail_dokumen/[id]/page.tsx b/src/app/dev/(user)/investasi/detail_dokumen/[id]/page.tsx similarity index 94% rename from src/app/dev/investasi/detail_dokumen/[id]/page.tsx rename to src/app/dev/(user)/investasi/detail_dokumen/[id]/page.tsx index cd2202ee..86a19745 100644 --- a/src/app/dev/investasi/detail_dokumen/[id]/page.tsx +++ b/src/app/dev/(user)/investasi/detail_dokumen/[id]/page.tsx @@ -1,3 +1,4 @@ +// -- DELETE SOON -- // import { DetailDokumenInvestasi } from "@/app_modules/investasi"; import getOneInvestasiById from "@/app_modules/investasi/fun/get_one_investasi_by_id"; diff --git a/src/app/dev/investasi/detail_portofolio/draft/[id]/page.tsx b/src/app/dev/(user)/investasi/detail_portofolio/draft/[id]/page.tsx similarity index 100% rename from src/app/dev/investasi/detail_portofolio/draft/[id]/page.tsx rename to src/app/dev/(user)/investasi/detail_portofolio/draft/[id]/page.tsx diff --git a/src/app/dev/investasi/detail_portofolio/publish/[id]/page.tsx b/src/app/dev/(user)/investasi/detail_portofolio/publish/[id]/page.tsx similarity index 100% rename from src/app/dev/investasi/detail_portofolio/publish/[id]/page.tsx rename to src/app/dev/(user)/investasi/detail_portofolio/publish/[id]/page.tsx diff --git a/src/app/dev/investasi/detail_prospektus/[id]/layout.tsx b/src/app/dev/(user)/investasi/detail_prospektus/[id]/layout.tsx similarity index 91% rename from src/app/dev/investasi/detail_prospektus/[id]/layout.tsx rename to src/app/dev/(user)/investasi/detail_prospektus/[id]/layout.tsx index 49640fcf..d47ce20a 100644 --- a/src/app/dev/investasi/detail_prospektus/[id]/layout.tsx +++ b/src/app/dev/(user)/investasi/detail_prospektus/[id]/layout.tsx @@ -1,3 +1,4 @@ +// -- DELETE SOON -- // import { LayoutDetailPropektus } from "@/app_modules/investasi"; import React from "react"; diff --git a/src/app/dev/investasi/detail_prospektus/[id]/page.tsx b/src/app/dev/(user)/investasi/detail_prospektus/[id]/page.tsx similarity index 94% rename from src/app/dev/investasi/detail_prospektus/[id]/page.tsx rename to src/app/dev/(user)/investasi/detail_prospektus/[id]/page.tsx index 492bdad5..3c61ee9a 100644 --- a/src/app/dev/investasi/detail_prospektus/[id]/page.tsx +++ b/src/app/dev/(user)/investasi/detail_prospektus/[id]/page.tsx @@ -1,6 +1,6 @@ import { DetailPropektus } from "@/app_modules/investasi"; import getOneInvestasiById from "@/app_modules/investasi/fun/get_one_investasi_by_id"; - +// -- DELETE SOON -- // export default async function Page({ params }: { params: { id: string } }) { const dataInvestasi = await getOneInvestasiById(params.id); diff --git a/src/app/dev/investasi/dialog_page/create/layout.tsx b/src/app/dev/(user)/investasi/dialog_page/create/layout.tsx similarity index 100% rename from src/app/dev/investasi/dialog_page/create/layout.tsx rename to src/app/dev/(user)/investasi/dialog_page/create/layout.tsx diff --git a/src/app/dev/investasi/dialog_page/create/page.tsx b/src/app/dev/(user)/investasi/dialog_page/create/page.tsx similarity index 100% rename from src/app/dev/investasi/dialog_page/create/page.tsx rename to src/app/dev/(user)/investasi/dialog_page/create/page.tsx diff --git a/src/app/dev/(user)/investasi/dokumen/daftar/[id]/page.tsx b/src/app/dev/(user)/investasi/dokumen/daftar/[id]/page.tsx new file mode 100644 index 00000000..2478ddae --- /dev/null +++ b/src/app/dev/(user)/investasi/dokumen/daftar/[id]/page.tsx @@ -0,0 +1,9 @@ +import { Investasi_UiDaftarDokmen } from "@/app_modules/investasi/_ui"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/(user)/investasi/dokumen/rekap/[id]/page.tsx b/src/app/dev/(user)/investasi/dokumen/rekap/[id]/page.tsx new file mode 100644 index 00000000..596336ea --- /dev/null +++ b/src/app/dev/(user)/investasi/dokumen/rekap/[id]/page.tsx @@ -0,0 +1,9 @@ +import { Investasi_UiRekapDokumen } from "@/app_modules/investasi/_ui"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/(user)/investasi/edit/[id]/page.tsx b/src/app/dev/(user)/investasi/edit/[id]/page.tsx new file mode 100644 index 00000000..76a5e468 --- /dev/null +++ b/src/app/dev/(user)/investasi/edit/[id]/page.tsx @@ -0,0 +1,9 @@ +import { Investasi_UiEditInvestasiNew } from "@/app_modules/investasi/_ui"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/(user)/investasi/edit/dokumen/[id]/page.tsx b/src/app/dev/(user)/investasi/edit/dokumen/[id]/page.tsx new file mode 100644 index 00000000..6be72e19 --- /dev/null +++ b/src/app/dev/(user)/investasi/edit/dokumen/[id]/page.tsx @@ -0,0 +1,9 @@ +import { Investasi_UiEditDokumen } from "@/app_modules/investasi/_ui"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/(user)/investasi/edit/prospektus/[id]/page.tsx b/src/app/dev/(user)/investasi/edit/prospektus/[id]/page.tsx new file mode 100644 index 00000000..4c09a503 --- /dev/null +++ b/src/app/dev/(user)/investasi/edit/prospektus/[id]/page.tsx @@ -0,0 +1,10 @@ +import { Investasi_UiEditProspektus } from "@/app_modules/investasi/_ui"; + +export default async function Page() { + + return ( + <> + + + ); +} diff --git a/src/app/dev/investasi/edit_berita/[id]/layout.tsx b/src/app/dev/(user)/investasi/edit_berita/[id]/layout.tsx similarity index 91% rename from src/app/dev/investasi/edit_berita/[id]/layout.tsx rename to src/app/dev/(user)/investasi/edit_berita/[id]/layout.tsx index 68855271..81e5ce4d 100644 --- a/src/app/dev/investasi/edit_berita/[id]/layout.tsx +++ b/src/app/dev/(user)/investasi/edit_berita/[id]/layout.tsx @@ -1,6 +1,8 @@ import { LayoutEditBeritaInvestasi } from "@/app_modules/investasi"; import React from "react"; +// -- DELETE SOON -- // + export default async function Layout({children}: { children: React.ReactNode }) { return<> {children} diff --git a/src/app/dev/investasi/edit_berita/[id]/page.tsx b/src/app/dev/(user)/investasi/edit_berita/[id]/page.tsx similarity index 94% rename from src/app/dev/investasi/edit_berita/[id]/page.tsx rename to src/app/dev/(user)/investasi/edit_berita/[id]/page.tsx index 245f1308..613ce4d3 100644 --- a/src/app/dev/investasi/edit_berita/[id]/page.tsx +++ b/src/app/dev/(user)/investasi/edit_berita/[id]/page.tsx @@ -1,6 +1,6 @@ import { EditBeritaInvestasi } from "@/app_modules/investasi"; import getOneBeritaInvestasiById from "@/app_modules/investasi/fun/get_one_berita_by_id"; - +// -- DELETE SOON -- // export default async function Page({params}: {params: {id: string}}) { const dataBerita = await getOneBeritaInvestasiById(params.id) // console.log(dataBerita) diff --git a/src/app/dev/investasi/edit_intro/[id]/layout.tsx b/src/app/dev/(user)/investasi/edit_intro/[id]/layout.tsx similarity index 91% rename from src/app/dev/investasi/edit_intro/[id]/layout.tsx rename to src/app/dev/(user)/investasi/edit_intro/[id]/layout.tsx index 9ffdc3cd..07277f05 100644 --- a/src/app/dev/investasi/edit_intro/[id]/layout.tsx +++ b/src/app/dev/(user)/investasi/edit_intro/[id]/layout.tsx @@ -1,3 +1,4 @@ +// -- DELETE SOON -- // import { LayoutEditIntroInvestasi } from "@/app_modules/investasi"; import React from "react"; diff --git a/src/app/dev/investasi/edit_intro/[id]/page.tsx b/src/app/dev/(user)/investasi/edit_intro/[id]/page.tsx similarity index 97% rename from src/app/dev/investasi/edit_intro/[id]/page.tsx rename to src/app/dev/(user)/investasi/edit_intro/[id]/page.tsx index b726841c..31e92a5a 100644 --- a/src/app/dev/investasi/edit_intro/[id]/page.tsx +++ b/src/app/dev/(user)/investasi/edit_intro/[id]/page.tsx @@ -1,3 +1,5 @@ +// -- DELETE SOON -- // + import { EditIntroInvestasi } from "@/app_modules/investasi"; import getOneInvestasiById from "@/app_modules/investasi/fun/get_one_investasi_by_id"; import getPembagianDeviden from "@/app_modules/investasi/fun/master/get_pembagian_deviden"; diff --git a/src/app/dev/(user)/investasi/file-view/dokumen/[id]/page.tsx b/src/app/dev/(user)/investasi/file-view/dokumen/[id]/page.tsx new file mode 100644 index 00000000..22aa6e7c --- /dev/null +++ b/src/app/dev/(user)/investasi/file-view/dokumen/[id]/page.tsx @@ -0,0 +1,9 @@ +import { Investasi_UiFileViewDokumen } from "@/app_modules/investasi/_ui"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/(user)/investasi/file-view/prospektus/[id]/page.tsx b/src/app/dev/(user)/investasi/file-view/prospektus/[id]/page.tsx new file mode 100644 index 00000000..dd56c9a0 --- /dev/null +++ b/src/app/dev/(user)/investasi/file-view/prospektus/[id]/page.tsx @@ -0,0 +1,9 @@ +import { Investasi_UiFileView } from "@/app_modules/investasi/_ui"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/investasi/list_edit_berita/[id]/layout.tsx b/src/app/dev/(user)/investasi/list_edit_berita/[id]/layout.tsx similarity index 60% rename from src/app/dev/investasi/list_edit_berita/[id]/layout.tsx rename to src/app/dev/(user)/investasi/list_edit_berita/[id]/layout.tsx index f6361a2c..1ebbe92f 100644 --- a/src/app/dev/investasi/list_edit_berita/[id]/layout.tsx +++ b/src/app/dev/(user)/investasi/list_edit_berita/[id]/layout.tsx @@ -1,16 +1,20 @@ +// -- DELETE Or UPDATE SOON -- // + import { LayoutListEditBeritaInvestasi } from "@/app_modules/investasi"; import React from "react"; export default async function Layout({ children, - params + params, }: { children: React.ReactNode; params: { id: string }; }) { return ( <> - {children} + + {children} + ); } diff --git a/src/app/dev/investasi/list_edit_berita/[id]/page.tsx b/src/app/dev/(user)/investasi/list_edit_berita/[id]/page.tsx similarity index 92% rename from src/app/dev/investasi/list_edit_berita/[id]/page.tsx rename to src/app/dev/(user)/investasi/list_edit_berita/[id]/page.tsx index 4f5a9e8c..8023d326 100644 --- a/src/app/dev/investasi/list_edit_berita/[id]/page.tsx +++ b/src/app/dev/(user)/investasi/list_edit_berita/[id]/page.tsx @@ -1,3 +1,5 @@ +// -- DELETE Or UPDATE SOON -- // + import { ListEditBeritaInvestasi } from "@/app_modules/investasi"; import getOneInvestasiById from "@/app_modules/investasi/fun/get_one_investasi_by_id"; diff --git a/src/app/dev/investasi/main/layout.tsx b/src/app/dev/(user)/investasi/main/layout.tsx similarity index 100% rename from src/app/dev/investasi/main/layout.tsx rename to src/app/dev/(user)/investasi/main/layout.tsx diff --git a/src/app/dev/(user)/investasi/main/page.tsx b/src/app/dev/(user)/investasi/main/page.tsx new file mode 100644 index 00000000..ad4bbaa5 --- /dev/null +++ b/src/app/dev/(user)/investasi/main/page.tsx @@ -0,0 +1,11 @@ +import { Investasi_ViewBerandaNew } from "@/app_modules/investasi/_ui"; + +async function Page() { + return ( + <> + + + ); +} + +export default Page; diff --git a/src/app/dev/(user)/investasi/main/portofolio/[id]/page.tsx b/src/app/dev/(user)/investasi/main/portofolio/[id]/page.tsx new file mode 100644 index 00000000..b63e022f --- /dev/null +++ b/src/app/dev/(user)/investasi/main/portofolio/[id]/page.tsx @@ -0,0 +1,9 @@ +import { Investasi_UiPortofolioNew } from "@/app_modules/investasi/_ui"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/(user)/investasi/main/saham_saya/page.tsx b/src/app/dev/(user)/investasi/main/saham_saya/page.tsx new file mode 100644 index 00000000..ff5f97ef --- /dev/null +++ b/src/app/dev/(user)/investasi/main/saham_saya/page.tsx @@ -0,0 +1,9 @@ +import { Investasi_ViewSahamSayaNew } from "@/app_modules/investasi/_view/main/view_saham_saya_new"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/(user)/investasi/main/transaksi/page.tsx b/src/app/dev/(user)/investasi/main/transaksi/page.tsx new file mode 100644 index 00000000..47174371 --- /dev/null +++ b/src/app/dev/(user)/investasi/main/transaksi/page.tsx @@ -0,0 +1,11 @@ + +import { Investasi_ViewDaftarTransaksiNew } from "@/app_modules/investasi/_view/main/view_transaksi_new"; + +export default async function Page() { + + return ( + <> + + + ); +} diff --git a/src/app/dev/investasi/proses_transaksi/[id]/layout.tsx b/src/app/dev/(user)/investasi/proses_transaksi/[id]/layout.tsx similarity index 100% rename from src/app/dev/investasi/proses_transaksi/[id]/layout.tsx rename to src/app/dev/(user)/investasi/proses_transaksi/[id]/layout.tsx diff --git a/src/app/dev/investasi/proses_transaksi/[id]/page.tsx b/src/app/dev/(user)/investasi/proses_transaksi/[id]/page.tsx similarity index 100% rename from src/app/dev/investasi/proses_transaksi/[id]/page.tsx rename to src/app/dev/(user)/investasi/proses_transaksi/[id]/page.tsx diff --git a/src/app/dev/(user)/investasi/status-transaksi/berhasil/[id]/page.tsx b/src/app/dev/(user)/investasi/status-transaksi/berhasil/[id]/page.tsx new file mode 100644 index 00000000..12ad32af --- /dev/null +++ b/src/app/dev/(user)/investasi/status-transaksi/berhasil/[id]/page.tsx @@ -0,0 +1,11 @@ +import { Investasi_UiTransaksiBerhasil } from "@/app_modules/investasi/_ui"; + +export default async function Page({params}: {params: {id: string}}) { + const invoiceId = params.id; + // const dataTransaksi = await investasi_funGetOneInvoiceById({ invoiceId }); + return ( + <> + + + ); +} diff --git a/src/app/dev/investasi/status-transaksi/gagal/[id]/page.tsx b/src/app/dev/(user)/investasi/status-transaksi/gagal/[id]/page.tsx similarity index 69% rename from src/app/dev/investasi/status-transaksi/gagal/[id]/page.tsx rename to src/app/dev/(user)/investasi/status-transaksi/gagal/[id]/page.tsx index b13315c3..63411009 100644 --- a/src/app/dev/investasi/status-transaksi/gagal/[id]/page.tsx +++ b/src/app/dev/(user)/investasi/status-transaksi/gagal/[id]/page.tsx @@ -4,14 +4,13 @@ import { Investasi_UiTransaksiGagal } from "@/app_modules/investasi/_ui/status_t export default async function Page({ params }: { params: { id: string } }) { const invoiceId = params.id; - const dataTransaksi = await investasi_funGetOneInvoiceById({ invoiceId }); - const nomorAdmin = await funGlobal_getNomorAdmin(); + // const dataTransaksi = await investasi_funGetOneInvoiceById({ invoiceId }); + // const nomorAdmin = await funGlobal_getNomorAdmin(); return ( <> ); diff --git a/src/app/dev/investasi/status_pesanan/[id]/layout.tsx b/src/app/dev/(user)/investasi/status_pesanan/[id]/layout.tsx similarity index 100% rename from src/app/dev/investasi/status_pesanan/[id]/layout.tsx rename to src/app/dev/(user)/investasi/status_pesanan/[id]/layout.tsx diff --git a/src/app/dev/investasi/status_pesanan/[id]/page.tsx b/src/app/dev/(user)/investasi/status_pesanan/[id]/page.tsx similarity index 86% rename from src/app/dev/investasi/status_pesanan/[id]/page.tsx rename to src/app/dev/(user)/investasi/status_pesanan/[id]/page.tsx index 5180bca2..816a7539 100644 --- a/src/app/dev/investasi/status_pesanan/[id]/page.tsx +++ b/src/app/dev/(user)/investasi/status_pesanan/[id]/page.tsx @@ -1,4 +1,4 @@ -import { RouterInvestasi_OLD } from "@/app/lib/router_hipmi/router_investasi"; +import { RouterInvestasi_OLD } from "@/lib/router_hipmi/router_investasi"; import { StatusPesananInvetsatsi } from "@/app_modules/investasi"; import getOneTransaksiByIdInvestasi from "@/app_modules/investasi/fun/get_one_transaksi_by_id"; import getTransaksiByIdInvestasi from "@/app_modules/investasi/fun/get_transaksi_investasi"; diff --git a/src/app/dev/(user)/investasi/transaksi/invoice/[id]/page.tsx b/src/app/dev/(user)/investasi/transaksi/invoice/[id]/page.tsx new file mode 100644 index 00000000..1bc408ad --- /dev/null +++ b/src/app/dev/(user)/investasi/transaksi/invoice/[id]/page.tsx @@ -0,0 +1,9 @@ +import { Investasi_UiInvoice } from "@/app_modules/investasi/_ui"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/(user)/investasi/transaksi/metode-pembayaran/[id]/page.tsx b/src/app/dev/(user)/investasi/transaksi/metode-pembayaran/[id]/page.tsx new file mode 100644 index 00000000..f7a1b6fd --- /dev/null +++ b/src/app/dev/(user)/investasi/transaksi/metode-pembayaran/[id]/page.tsx @@ -0,0 +1,9 @@ +import { Investasi_UiMetodePembayaran } from "@/app_modules/investasi/_ui"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/(user)/investasi/transaksi/pembelian/[id]/page.tsx b/src/app/dev/(user)/investasi/transaksi/pembelian/[id]/page.tsx new file mode 100644 index 00000000..a2d96c56 --- /dev/null +++ b/src/app/dev/(user)/investasi/transaksi/pembelian/[id]/page.tsx @@ -0,0 +1,10 @@ +import { Investasi_UiProsesPembelian } from "@/app_modules/investasi/_ui"; + + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/(user)/investasi/transaksi/proses-transaksi/[id]/page.tsx b/src/app/dev/(user)/investasi/transaksi/proses-transaksi/[id]/page.tsx new file mode 100644 index 00000000..38ae995b --- /dev/null +++ b/src/app/dev/(user)/investasi/transaksi/proses-transaksi/[id]/page.tsx @@ -0,0 +1,9 @@ +import { Investasi_UiProsesTransaksi } from "@/app_modules/investasi/_ui"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/investasi/upload_dokumen/[id]/layout.tsx b/src/app/dev/(user)/investasi/upload_dokumen/[id]/layout.tsx similarity index 100% rename from src/app/dev/investasi/upload_dokumen/[id]/layout.tsx rename to src/app/dev/(user)/investasi/upload_dokumen/[id]/layout.tsx diff --git a/src/app/dev/investasi/upload_dokumen/[id]/page.tsx b/src/app/dev/(user)/investasi/upload_dokumen/[id]/page.tsx similarity index 100% rename from src/app/dev/investasi/upload_dokumen/[id]/page.tsx rename to src/app/dev/(user)/investasi/upload_dokumen/[id]/page.tsx diff --git a/src/app/dev/investasi/upload_prospektus/[id]/layout.tsx b/src/app/dev/(user)/investasi/upload_prospektus/[id]/layout.tsx similarity index 100% rename from src/app/dev/investasi/upload_prospektus/[id]/layout.tsx rename to src/app/dev/(user)/investasi/upload_prospektus/[id]/layout.tsx diff --git a/src/app/dev/investasi/upload_prospektus/[id]/page.tsx b/src/app/dev/(user)/investasi/upload_prospektus/[id]/page.tsx similarity index 100% rename from src/app/dev/investasi/upload_prospektus/[id]/page.tsx rename to src/app/dev/(user)/investasi/upload_prospektus/[id]/page.tsx diff --git a/src/app/dev/job/create/layout.tsx b/src/app/dev/(user)/job/create/layout.tsx similarity index 65% rename from src/app/dev/job/create/layout.tsx rename to src/app/dev/(user)/job/create/layout.tsx index e8e52d98..9272a8cd 100644 --- a/src/app/dev/job/create/layout.tsx +++ b/src/app/dev/(user)/job/create/layout.tsx @@ -1,11 +1,7 @@ import { LayoutJob_Create } from "@/app_modules/job"; import React from "react"; -export default async function Layout({ - children, -}: { - children: React.ReactNode; -}) { +export default function Layout({ children }: { children: React.ReactNode }) { return ( <> {children} diff --git a/src/app/dev/job/create/page.tsx b/src/app/dev/(user)/job/create/page.tsx similarity index 72% rename from src/app/dev/job/create/page.tsx rename to src/app/dev/(user)/job/create/page.tsx index 94c001b8..78a6d357 100644 --- a/src/app/dev/job/create/page.tsx +++ b/src/app/dev/(user)/job/create/page.tsx @@ -1,6 +1,6 @@ import { Job_Create } from "@/app_modules/job"; -export default async function Page() { +export default function Page() { return ( <> diff --git a/src/app/dev/job/detail/arsip/[id]/layout.tsx b/src/app/dev/(user)/job/detail/arsip/[id]/layout.tsx similarity index 67% rename from src/app/dev/job/detail/arsip/[id]/layout.tsx rename to src/app/dev/(user)/job/detail/arsip/[id]/layout.tsx index 835b852d..9ea9ae3f 100644 --- a/src/app/dev/job/detail/arsip/[id]/layout.tsx +++ b/src/app/dev/(user)/job/detail/arsip/[id]/layout.tsx @@ -1,11 +1,7 @@ import { LayoutJob_DetailArsip } from "@/app_modules/job"; import React from "react"; -export default async function Layout({ - children, -}: { - children: React.ReactNode; -}) { +export default function Layout({ children }: { children: React.ReactNode }) { return ( <> {children} diff --git a/src/app/dev/(user)/job/detail/arsip/[id]/page.tsx b/src/app/dev/(user)/job/detail/arsip/[id]/page.tsx new file mode 100644 index 00000000..44944aac --- /dev/null +++ b/src/app/dev/(user)/job/detail/arsip/[id]/page.tsx @@ -0,0 +1,9 @@ +import { Job_DetailArsip } from "@/app_modules/job"; + +export default function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/(user)/job/detail/draft/[id]/layout.tsx b/src/app/dev/(user)/job/detail/draft/[id]/layout.tsx new file mode 100644 index 00000000..0f48d9cb --- /dev/null +++ b/src/app/dev/(user)/job/detail/draft/[id]/layout.tsx @@ -0,0 +1,14 @@ +import { LayoutJob_DetailDraft } from "@/app_modules/job"; +import React from "react"; + +export default function Layout({ + children, +}: { + children: React.ReactNode; +}) { + return ( + <> + {children} + + ); +} diff --git a/src/app/dev/(user)/job/detail/draft/[id]/page.tsx b/src/app/dev/(user)/job/detail/draft/[id]/page.tsx new file mode 100644 index 00000000..9a3680f7 --- /dev/null +++ b/src/app/dev/(user)/job/detail/draft/[id]/page.tsx @@ -0,0 +1,9 @@ +import Job_DetailDraft from "@/app_modules/job/detail/draft/view"; + +export default function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/job/detail/main/[id]/layout.tsx b/src/app/dev/(user)/job/detail/main/[id]/layout.tsx similarity index 85% rename from src/app/dev/job/detail/main/[id]/layout.tsx rename to src/app/dev/(user)/job/detail/main/[id]/layout.tsx index 4e757aed..0f2012dd 100644 --- a/src/app/dev/job/detail/main/[id]/layout.tsx +++ b/src/app/dev/(user)/job/detail/main/[id]/layout.tsx @@ -1,7 +1,7 @@ import { LayoutJob_MainDetail } from "@/app_modules/job"; import React from "react"; -export default async function Layout({ +export default function Layout({ children, }: { children: React.ReactNode; diff --git a/src/app/dev/(user)/job/detail/main/[id]/page.tsx b/src/app/dev/(user)/job/detail/main/[id]/page.tsx new file mode 100644 index 00000000..40799780 --- /dev/null +++ b/src/app/dev/(user)/job/detail/main/[id]/page.tsx @@ -0,0 +1,9 @@ +import { Job_MainDetail } from "@/app_modules/job"; + +export default function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/job/detail/publish/[id]/layout.tsx b/src/app/dev/(user)/job/detail/publish/[id]/layout.tsx similarity index 86% rename from src/app/dev/job/detail/publish/[id]/layout.tsx rename to src/app/dev/(user)/job/detail/publish/[id]/layout.tsx index 204d05d8..8077d8be 100644 --- a/src/app/dev/job/detail/publish/[id]/layout.tsx +++ b/src/app/dev/(user)/job/detail/publish/[id]/layout.tsx @@ -1,7 +1,7 @@ import { LayoutJob_DetailPublish } from "@/app_modules/job"; import React from "react"; -export default async function Layout({ +export default function Layout({ children, }: { children: React.ReactNode; diff --git a/src/app/dev/(user)/job/detail/publish/[id]/page.tsx b/src/app/dev/(user)/job/detail/publish/[id]/page.tsx new file mode 100644 index 00000000..eab8c78b --- /dev/null +++ b/src/app/dev/(user)/job/detail/publish/[id]/page.tsx @@ -0,0 +1,9 @@ +import { Job_DetailPublish } from "@/app_modules/job"; + +export default function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/job/detail/reject/[id]/layout.tsx b/src/app/dev/(user)/job/detail/reject/[id]/layout.tsx similarity index 85% rename from src/app/dev/job/detail/reject/[id]/layout.tsx rename to src/app/dev/(user)/job/detail/reject/[id]/layout.tsx index f7ed9999..0840e170 100644 --- a/src/app/dev/job/detail/reject/[id]/layout.tsx +++ b/src/app/dev/(user)/job/detail/reject/[id]/layout.tsx @@ -1,7 +1,7 @@ import { LayoutJob_DetailReject } from "@/app_modules/job"; import React from "react"; -export default async function Layout({ +export default function Layout({ children, }: { children: React.ReactNode; diff --git a/src/app/dev/(user)/job/detail/reject/[id]/page.tsx b/src/app/dev/(user)/job/detail/reject/[id]/page.tsx new file mode 100644 index 00000000..149f146d --- /dev/null +++ b/src/app/dev/(user)/job/detail/reject/[id]/page.tsx @@ -0,0 +1,9 @@ +import Job_DetailReject from "@/app_modules/job/detail/reject/view"; + +export default function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/job/detail/review/[id]/layout.tsx b/src/app/dev/(user)/job/detail/review/[id]/layout.tsx similarity index 85% rename from src/app/dev/job/detail/review/[id]/layout.tsx rename to src/app/dev/(user)/job/detail/review/[id]/layout.tsx index ad8216c2..f7791c42 100644 --- a/src/app/dev/job/detail/review/[id]/layout.tsx +++ b/src/app/dev/(user)/job/detail/review/[id]/layout.tsx @@ -1,7 +1,7 @@ import { LayoutJob_DetailReview } from "@/app_modules/job"; import React from "react"; -export default async function Layout({ +export default function Layout({ children, }: { children: React.ReactNode; diff --git a/src/app/dev/(user)/job/detail/review/[id]/page.tsx b/src/app/dev/(user)/job/detail/review/[id]/page.tsx new file mode 100644 index 00000000..aa2b66b3 --- /dev/null +++ b/src/app/dev/(user)/job/detail/review/[id]/page.tsx @@ -0,0 +1,9 @@ +import Job_DetailReview from "@/app_modules/job/detail/review/view"; + +export default function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/job/edit/[id]/layout.tsx b/src/app/dev/(user)/job/edit/[id]/layout.tsx similarity index 64% rename from src/app/dev/job/edit/[id]/layout.tsx rename to src/app/dev/(user)/job/edit/[id]/layout.tsx index f2024656..719cd2e0 100644 --- a/src/app/dev/job/edit/[id]/layout.tsx +++ b/src/app/dev/(user)/job/edit/[id]/layout.tsx @@ -1,11 +1,7 @@ import { LayoutJob_Edit } from "@/app_modules/job"; import React from "react"; -export default async function Layout({ - children, -}: { - children: React.ReactNode; -}) { +export default function Layout({ children }: { children: React.ReactNode }) { return ( <> {children} diff --git a/src/app/dev/(user)/job/edit/[id]/page.tsx b/src/app/dev/(user)/job/edit/[id]/page.tsx new file mode 100644 index 00000000..e4d5e95d --- /dev/null +++ b/src/app/dev/(user)/job/edit/[id]/page.tsx @@ -0,0 +1,9 @@ +import { Job_Edit } from "@/app_modules/job"; + +export default function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/(user)/job/main/arsip/page.tsx b/src/app/dev/(user)/job/main/arsip/page.tsx new file mode 100644 index 00000000..fe90c783 --- /dev/null +++ b/src/app/dev/(user)/job/main/arsip/page.tsx @@ -0,0 +1,9 @@ +import { Job_Arsip } from "@/app_modules/job"; + +export default function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/(user)/job/main/beranda/page.tsx b/src/app/dev/(user)/job/main/beranda/page.tsx new file mode 100644 index 00000000..7a2bd101 --- /dev/null +++ b/src/app/dev/(user)/job/main/beranda/page.tsx @@ -0,0 +1,9 @@ +import { Job_ViewBeranda } from "@/app_modules/job"; + +export default function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/(user)/job/main/layout.tsx b/src/app/dev/(user)/job/main/layout.tsx new file mode 100644 index 00000000..d9815394 --- /dev/null +++ b/src/app/dev/(user)/job/main/layout.tsx @@ -0,0 +1,15 @@ +import NewLayoutJob_Main from "@/app_modules/job/main/new_layout"; +import React from "react"; + +export default function Layout({ + children, +}: { + children: React.ReactNode; +}) { + return ( + <> + {/* {children} */} + {children} + + ); +} diff --git a/src/app/dev/(user)/job/main/status/[id]/page.tsx b/src/app/dev/(user)/job/main/status/[id]/page.tsx new file mode 100644 index 00000000..3033a4e5 --- /dev/null +++ b/src/app/dev/(user)/job/main/status/[id]/page.tsx @@ -0,0 +1,9 @@ +import { Job_Status } from "@/app_modules/job"; + +export default function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/job/non_user_view/[id]/layout.tsx b/src/app/dev/(user)/job/non_user_view/[id]/layout.tsx similarity index 100% rename from src/app/dev/job/non_user_view/[id]/layout.tsx rename to src/app/dev/(user)/job/non_user_view/[id]/layout.tsx diff --git a/src/app/dev/job/non_user_view/[id]/page.tsx b/src/app/dev/(user)/job/non_user_view/[id]/page.tsx similarity index 100% rename from src/app/dev/job/non_user_view/[id]/page.tsx rename to src/app/dev/(user)/job/non_user_view/[id]/page.tsx diff --git a/src/app/dev/job/splash/page.tsx b/src/app/dev/(user)/job/splash/page.tsx similarity index 74% rename from src/app/dev/job/splash/page.tsx rename to src/app/dev/(user)/job/splash/page.tsx index 9e3d7f07..124f2255 100644 --- a/src/app/dev/job/splash/page.tsx +++ b/src/app/dev/(user)/job/splash/page.tsx @@ -1,6 +1,6 @@ import { Job_ViewSplash } from "@/app_modules/job"; -export default async function Page() { +export default function Page() { return ( <> diff --git a/src/app/dev/(user)/katalog/[id]/layout.tsx b/src/app/dev/(user)/katalog/[id]/layout.tsx new file mode 100644 index 00000000..9e9bf3e5 --- /dev/null +++ b/src/app/dev/(user)/katalog/[id]/layout.tsx @@ -0,0 +1,9 @@ +import { LayoutKatalogNew } from "@/app_modules/katalog/main"; + +export default function Layout({ children }: { children: any }) { + return ( + <> + {children} + + ); +} diff --git a/src/app/dev/(user)/katalog/[id]/page.tsx b/src/app/dev/(user)/katalog/[id]/page.tsx new file mode 100644 index 00000000..949476ce --- /dev/null +++ b/src/app/dev/(user)/katalog/[id]/page.tsx @@ -0,0 +1,9 @@ +import { ViewKatalogNew } from "@/app_modules/katalog"; + +export default function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/(user)/map/create/[id]/page.tsx b/src/app/dev/(user)/map/create/[id]/page.tsx new file mode 100644 index 00000000..68b93418 --- /dev/null +++ b/src/app/dev/(user)/map/create/[id]/page.tsx @@ -0,0 +1,9 @@ +import { Map_CreateNewPin } from "@/app_modules/map/view"; + +export default function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/(user)/map/custom-pin/[id]/page.tsx b/src/app/dev/(user)/map/custom-pin/[id]/page.tsx new file mode 100644 index 00000000..51bf28a8 --- /dev/null +++ b/src/app/dev/(user)/map/custom-pin/[id]/page.tsx @@ -0,0 +1,10 @@ +import { Map_CustomPin } from "@/app_modules/map/view"; + +const mapboxToken = process.env.MAPBOX_TOKEN!; +export default function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/(user)/map/edit/[id]/page.tsx b/src/app/dev/(user)/map/edit/[id]/page.tsx new file mode 100644 index 00000000..d837ee54 --- /dev/null +++ b/src/app/dev/(user)/map/edit/[id]/page.tsx @@ -0,0 +1,10 @@ +import { Map_EditPin } from "@/app_modules/map/view"; + +const mapboxToken = process.env.MAPBOX_TOKEN!; +export default function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/(user)/map/main/page.tsx b/src/app/dev/(user)/map/main/page.tsx new file mode 100644 index 00000000..67a8552e --- /dev/null +++ b/src/app/dev/(user)/map/main/page.tsx @@ -0,0 +1,10 @@ +import { Map_ViewNew } from "@/app_modules/map/view/main_view_new"; + +const mapboxToken = process.env.MAPBOX_TOKEN!; +export default function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/map/splash/page.tsx b/src/app/dev/(user)/map/splash/page.tsx similarity index 73% rename from src/app/dev/map/splash/page.tsx rename to src/app/dev/(user)/map/splash/page.tsx index 70882ba9..d5213f4c 100644 --- a/src/app/dev/map/splash/page.tsx +++ b/src/app/dev/(user)/map/splash/page.tsx @@ -1,7 +1,7 @@ import { Map_Splash } from "@/app_modules/map/view"; -export default async function Page() { +export default function Page() { return ( <> diff --git a/src/app/dev/(user)/notifikasi/collaboration/page.tsx b/src/app/dev/(user)/notifikasi/collaboration/page.tsx new file mode 100644 index 00000000..ca9f64eb --- /dev/null +++ b/src/app/dev/(user)/notifikasi/collaboration/page.tsx @@ -0,0 +1,9 @@ +import { Notifikasi_UiMain } from "@/app_modules/notifikasi/_ui"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/(user)/notifikasi/donasi/page.tsx b/src/app/dev/(user)/notifikasi/donasi/page.tsx new file mode 100644 index 00000000..e18a8246 --- /dev/null +++ b/src/app/dev/(user)/notifikasi/donasi/page.tsx @@ -0,0 +1,12 @@ +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; +import { Notifikasi_UiMain } from "@/app_modules/notifikasi/_ui"; + +export default async function Page() { + const userLoginId = await funGetUserIdByToken(); + + return ( + <> + + + ); +} diff --git a/src/app/dev/(user)/notifikasi/event/page.tsx b/src/app/dev/(user)/notifikasi/event/page.tsx new file mode 100644 index 00000000..d4f0d3a1 --- /dev/null +++ b/src/app/dev/(user)/notifikasi/event/page.tsx @@ -0,0 +1,9 @@ +import Notifikasi_UiMain from "@/app_modules/notifikasi/_ui/ui_notifikasi"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/(user)/notifikasi/forum/page.tsx b/src/app/dev/(user)/notifikasi/forum/page.tsx new file mode 100644 index 00000000..ca9f64eb --- /dev/null +++ b/src/app/dev/(user)/notifikasi/forum/page.tsx @@ -0,0 +1,9 @@ +import { Notifikasi_UiMain } from "@/app_modules/notifikasi/_ui"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/(user)/notifikasi/investasi/page.tsx b/src/app/dev/(user)/notifikasi/investasi/page.tsx new file mode 100644 index 00000000..ca9f64eb --- /dev/null +++ b/src/app/dev/(user)/notifikasi/investasi/page.tsx @@ -0,0 +1,9 @@ +import { Notifikasi_UiMain } from "@/app_modules/notifikasi/_ui"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/(user)/notifikasi/job/page.tsx b/src/app/dev/(user)/notifikasi/job/page.tsx new file mode 100644 index 00000000..ca9f64eb --- /dev/null +++ b/src/app/dev/(user)/notifikasi/job/page.tsx @@ -0,0 +1,9 @@ +import { Notifikasi_UiMain } from "@/app_modules/notifikasi/_ui"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/(user)/notifikasi/layout.tsx b/src/app/dev/(user)/notifikasi/layout.tsx new file mode 100644 index 00000000..180b94cc --- /dev/null +++ b/src/app/dev/(user)/notifikasi/layout.tsx @@ -0,0 +1,30 @@ +import { Component_Header } from "@/app_modules/_global/component/new/component_header"; +import UI_NewLayoutTamplate, { UI_NewChildren, UI_NewHeader } from "@/app_modules/_global/ui/V2_layout_tamplate"; +import { UIChildrenNotifikasi } from "@/app_modules/notifikasi/_ui/ui_new_layout_notifikasi"; + +export default async function Layout({ + children, +}: { + children: React.ReactNode; +}) { + return ( + <> + {/* } + > + {children} + */} + + + + + + + + {children} + + + + + ); +} diff --git a/src/app/dev/(user)/notifikasi/semua/page.tsx b/src/app/dev/(user)/notifikasi/semua/page.tsx new file mode 100644 index 00000000..aca69d02 --- /dev/null +++ b/src/app/dev/(user)/notifikasi/semua/page.tsx @@ -0,0 +1,11 @@ +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; +import { Notifikasi_UiMain } from "@/app_modules/notifikasi/_ui"; + +export default async function Page() { + const userLoginId = await funGetUserIdByToken(); + return ( + <> + + + ); +} diff --git a/src/app/dev/(user)/notifikasi/voting/page.tsx b/src/app/dev/(user)/notifikasi/voting/page.tsx new file mode 100644 index 00000000..ca9f64eb --- /dev/null +++ b/src/app/dev/(user)/notifikasi/voting/page.tsx @@ -0,0 +1,9 @@ +import { Notifikasi_UiMain } from "@/app_modules/notifikasi/_ui"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/(user)/portofolio/create/[id]/layout.tsx b/src/app/dev/(user)/portofolio/create/[id]/layout.tsx new file mode 100644 index 00000000..f85ba783 --- /dev/null +++ b/src/app/dev/(user)/portofolio/create/[id]/layout.tsx @@ -0,0 +1,10 @@ +import { CreatePortofolioLayout } from "@/app_modules/katalog/portofolio"; +import React from "react"; + +export default function Layout({ children }: { children: React.ReactNode }) { + return ( + <> + {children} + + ); +} diff --git a/src/app/dev/(user)/portofolio/create/[id]/page.tsx b/src/app/dev/(user)/portofolio/create/[id]/page.tsx new file mode 100644 index 00000000..94c12680 --- /dev/null +++ b/src/app/dev/(user)/portofolio/create/[id]/page.tsx @@ -0,0 +1,10 @@ +import Portofolio_V3_Create from "@/app_modules/katalog/portofolio/create/new_create"; + +export default function Page() { + return ( + <> + {/* */} + + + ); +} diff --git a/src/app/dev/(user)/portofolio/daftar-portofolio/[id]/page.tsx b/src/app/dev/(user)/portofolio/daftar-portofolio/[id]/page.tsx new file mode 100644 index 00000000..28e8e756 --- /dev/null +++ b/src/app/dev/(user)/portofolio/daftar-portofolio/[id]/page.tsx @@ -0,0 +1,9 @@ +import { ListDetailPortofolioNew } from "@/app_modules/katalog/portofolio"; + +export default function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/portofolio/edit/data/[id]/layout.tsx b/src/app/dev/(user)/portofolio/edit/data/[id]/layout.tsx similarity index 87% rename from src/app/dev/portofolio/edit/data/[id]/layout.tsx rename to src/app/dev/(user)/portofolio/edit/data/[id]/layout.tsx index d7afbec8..086540a6 100644 --- a/src/app/dev/portofolio/edit/data/[id]/layout.tsx +++ b/src/app/dev/(user)/portofolio/edit/data/[id]/layout.tsx @@ -1,7 +1,7 @@ import { LayoutPortofolio_EditDataBisnis } from "@/app_modules/katalog/portofolio"; import React from "react"; -export default async function Layout({ +export default function Layout({ children, }: { children: React.ReactNode; diff --git a/src/app/dev/(user)/portofolio/edit/data/[id]/page.tsx b/src/app/dev/(user)/portofolio/edit/data/[id]/page.tsx new file mode 100644 index 00000000..991d3519 --- /dev/null +++ b/src/app/dev/(user)/portofolio/edit/data/[id]/page.tsx @@ -0,0 +1,10 @@ +import Portofolio_V3_EditDataBisnis from "@/app_modules/katalog/portofolio/edit/data/ui_new_edit_data"; + +export default function Page() { + return ( + <> + {/* */} + + + ); +} diff --git a/src/app/dev/portofolio/edit/logo/[id]/layout.tsx b/src/app/dev/(user)/portofolio/edit/logo/[id]/layout.tsx similarity index 88% rename from src/app/dev/portofolio/edit/logo/[id]/layout.tsx rename to src/app/dev/(user)/portofolio/edit/logo/[id]/layout.tsx index 32425b82..0cc6189d 100644 --- a/src/app/dev/portofolio/edit/logo/[id]/layout.tsx +++ b/src/app/dev/(user)/portofolio/edit/logo/[id]/layout.tsx @@ -1,7 +1,7 @@ import { LayoutPortofolio_EditLogoBisnis } from "@/app_modules/katalog/portofolio"; import React from "react"; -export default async function Layout({ +export default function Layout({ children, }: { children: React.ReactNode; diff --git a/src/app/dev/(user)/portofolio/edit/logo/[id]/page.tsx b/src/app/dev/(user)/portofolio/edit/logo/[id]/page.tsx new file mode 100644 index 00000000..2c734e11 --- /dev/null +++ b/src/app/dev/(user)/portofolio/edit/logo/[id]/page.tsx @@ -0,0 +1,9 @@ +import { Portofolio_EditLogoBisnis } from "@/app_modules/katalog/portofolio"; + +export default function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/portofolio/edit/medsos/[id]/layout.tsx b/src/app/dev/(user)/portofolio/edit/medsos/[id]/layout.tsx similarity index 87% rename from src/app/dev/portofolio/edit/medsos/[id]/layout.tsx rename to src/app/dev/(user)/portofolio/edit/medsos/[id]/layout.tsx index 095732f9..52e7048d 100644 --- a/src/app/dev/portofolio/edit/medsos/[id]/layout.tsx +++ b/src/app/dev/(user)/portofolio/edit/medsos/[id]/layout.tsx @@ -1,7 +1,7 @@ import { LayoutPortofolio_EditMedsosBisnis } from "@/app_modules/katalog/portofolio"; import React from "react"; -export default async function Layout({ +export default function Layout({ children, }: { children: React.ReactNode; diff --git a/src/app/dev/(user)/portofolio/edit/medsos/[id]/page.tsx b/src/app/dev/(user)/portofolio/edit/medsos/[id]/page.tsx new file mode 100644 index 00000000..13bda6bb --- /dev/null +++ b/src/app/dev/(user)/portofolio/edit/medsos/[id]/page.tsx @@ -0,0 +1,9 @@ +import { Portofolio_EditMedsosBisnis } from "@/app_modules/katalog/portofolio"; + +export default function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/(user)/portofolio/main/[id]/layout.tsx b/src/app/dev/(user)/portofolio/main/[id]/layout.tsx new file mode 100644 index 00000000..d514ed1e --- /dev/null +++ b/src/app/dev/(user)/portofolio/main/[id]/layout.tsx @@ -0,0 +1,9 @@ +import { PortofolioLayoutNew } from "@/app_modules/katalog/portofolio"; + +export default function Layout({ children }: { children: any }) { + return ( + <> + {children} + + ); +} diff --git a/src/app/dev/(user)/portofolio/main/[id]/page.tsx b/src/app/dev/(user)/portofolio/main/[id]/page.tsx new file mode 100644 index 00000000..dc4954d3 --- /dev/null +++ b/src/app/dev/(user)/portofolio/main/[id]/page.tsx @@ -0,0 +1,10 @@ +import { Portofolio_UiDetailNew } from "@/app_modules/katalog/portofolio"; + +const mapboxToken = process.env.MAPBOX_TOKEN!; +export default function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/profile/create/layout.tsx b/src/app/dev/(user)/profile/create/layout.tsx similarity index 100% rename from src/app/dev/profile/create/layout.tsx rename to src/app/dev/(user)/profile/create/layout.tsx diff --git a/src/app/dev/profile/create/page.tsx b/src/app/dev/(user)/profile/create/page.tsx similarity index 75% rename from src/app/dev/profile/create/page.tsx rename to src/app/dev/(user)/profile/create/page.tsx index 26cf870f..ef90717f 100644 --- a/src/app/dev/profile/create/page.tsx +++ b/src/app/dev/(user)/profile/create/page.tsx @@ -1,6 +1,6 @@ import { CreateProfile } from "@/app_modules/katalog/profile"; -export default async function Page() { +export default function Page() { return ( <> diff --git a/src/app/dev/profile/edit/[id]/layout.tsx b/src/app/dev/(user)/profile/edit/[id]/layout.tsx similarity index 57% rename from src/app/dev/profile/edit/[id]/layout.tsx rename to src/app/dev/(user)/profile/edit/[id]/layout.tsx index dfe00c95..9b8d49f1 100644 --- a/src/app/dev/profile/edit/[id]/layout.tsx +++ b/src/app/dev/(user)/profile/edit/[id]/layout.tsx @@ -1,12 +1,6 @@ import { EditProfileLayout } from "@/app_modules/katalog/profile"; -export default async function Layout({ - children, - params, -}: { - children: any; - params: { id: string }; -}) { +export default function Layout({ children }: { children: any }) { return ( <> {children} diff --git a/src/app/dev/(user)/profile/edit/[id]/page.tsx b/src/app/dev/(user)/profile/edit/[id]/page.tsx new file mode 100644 index 00000000..bbd2c348 --- /dev/null +++ b/src/app/dev/(user)/profile/edit/[id]/page.tsx @@ -0,0 +1,9 @@ +import EditProfile from "@/app_modules/katalog/profile/edit/view"; + +export default function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/profile/upload/background/[id]/layout.tsx b/src/app/dev/(user)/profile/upload/background/[id]/layout.tsx similarity index 75% rename from src/app/dev/profile/upload/background/[id]/layout.tsx rename to src/app/dev/(user)/profile/upload/background/[id]/layout.tsx index 11f4cf1b..0a75f4af 100644 --- a/src/app/dev/profile/upload/background/[id]/layout.tsx +++ b/src/app/dev/(user)/profile/upload/background/[id]/layout.tsx @@ -1,11 +1,7 @@ import LayoutProfile_UpdateFotoBackground from "@/app_modules/katalog/profile/upload/foto_background/layout"; import React from "react"; -export default async function Layout({ - children, -}: { - children: React.ReactNode; -}) { +export default function Layout({ children }: { children: React.ReactNode }) { return ( <> diff --git a/src/app/dev/(user)/profile/upload/background/[id]/page.tsx b/src/app/dev/(user)/profile/upload/background/[id]/page.tsx new file mode 100644 index 00000000..30dd9aa9 --- /dev/null +++ b/src/app/dev/(user)/profile/upload/background/[id]/page.tsx @@ -0,0 +1,9 @@ +import Profile_UpdateFotoBackground from "@/app_modules/katalog/profile/upload/foto_background"; + +export default function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/profile/upload/foto/[id]/layout.tsx b/src/app/dev/(user)/profile/upload/foto/[id]/layout.tsx similarity index 69% rename from src/app/dev/profile/upload/foto/[id]/layout.tsx rename to src/app/dev/(user)/profile/upload/foto/[id]/layout.tsx index 5613eabd..a10335a4 100644 --- a/src/app/dev/profile/upload/foto/[id]/layout.tsx +++ b/src/app/dev/(user)/profile/upload/foto/[id]/layout.tsx @@ -1,11 +1,7 @@ import { UploadFotoProfileLayout } from "@/app_modules/katalog/profile"; import React from "react"; -export default async function Layout({ - children, -}: { - children: React.ReactNode; -}) { +export default function Layout({ children }: { children: React.ReactNode }) { return ( <> {children} diff --git a/src/app/dev/(user)/profile/upload/foto/[id]/page.tsx b/src/app/dev/(user)/profile/upload/foto/[id]/page.tsx new file mode 100644 index 00000000..da130aac --- /dev/null +++ b/src/app/dev/(user)/profile/upload/foto/[id]/page.tsx @@ -0,0 +1,9 @@ +import { UploadFotoProfile } from "@/app_modules/katalog/profile"; + +export default function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/splash/admin/page.tsx b/src/app/dev/(user)/splash/admin/page.tsx similarity index 100% rename from src/app/dev/splash/admin/page.tsx rename to src/app/dev/(user)/splash/admin/page.tsx diff --git a/src/app/dev/user-not-active/page.tsx b/src/app/dev/(user)/user-not-active/page.tsx similarity index 100% rename from src/app/dev/user-not-active/page.tsx rename to src/app/dev/(user)/user-not-active/page.tsx diff --git a/src/app/dev/(user)/user-search/page.tsx b/src/app/dev/(user)/user-search/page.tsx new file mode 100644 index 00000000..f534479b --- /dev/null +++ b/src/app/dev/(user)/user-search/page.tsx @@ -0,0 +1,5 @@ +import { UserSearch_MainView } from "@/app_modules/user_search"; + +export default async function Page() { + return ; +} diff --git a/src/app/dev/vote/create/layout.tsx b/src/app/dev/(user)/vote/create/layout.tsx similarity index 100% rename from src/app/dev/vote/create/layout.tsx rename to src/app/dev/(user)/vote/create/layout.tsx diff --git a/src/app/dev/vote/create/page.tsx b/src/app/dev/(user)/vote/create/page.tsx similarity index 100% rename from src/app/dev/vote/create/page.tsx rename to src/app/dev/(user)/vote/create/page.tsx diff --git a/src/app/dev/(user)/vote/detail/daftar-kontributor/[id]/page.tsx b/src/app/dev/(user)/vote/detail/daftar-kontributor/[id]/page.tsx new file mode 100644 index 00000000..97d0e1d5 --- /dev/null +++ b/src/app/dev/(user)/vote/detail/daftar-kontributor/[id]/page.tsx @@ -0,0 +1,9 @@ +import { Voting_UiDetailKontributorVoting } from "@/app_modules/vote/_ui"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/vote/detail/draft/[id]/layout.tsx b/src/app/dev/(user)/vote/detail/draft/[id]/layout.tsx similarity index 100% rename from src/app/dev/vote/detail/draft/[id]/layout.tsx rename to src/app/dev/(user)/vote/detail/draft/[id]/layout.tsx diff --git a/src/app/dev/(user)/vote/detail/draft/[id]/page.tsx b/src/app/dev/(user)/vote/detail/draft/[id]/page.tsx new file mode 100644 index 00000000..72e78acd --- /dev/null +++ b/src/app/dev/(user)/vote/detail/draft/[id]/page.tsx @@ -0,0 +1,10 @@ +import { Vote_DetailDraft } from "@/app_modules/vote"; + +export default async function Page() { + + return ( + <> + + + ); +} diff --git a/src/app/dev/(user)/vote/detail/kontribusi/[id]/layout.tsx b/src/app/dev/(user)/vote/detail/kontribusi/[id]/layout.tsx new file mode 100644 index 00000000..ca76dac8 --- /dev/null +++ b/src/app/dev/(user)/vote/detail/kontribusi/[id]/layout.tsx @@ -0,0 +1,14 @@ +import { LayoutVote_DetailKontribusi } from "@/app_modules/vote"; +import React from "react"; + +export default async function Layout({ + children, +}: { + children: React.ReactNode; +}) { + return ( + <> + {children} + + ); +} diff --git a/src/app/dev/(user)/vote/detail/kontribusi/[id]/page.tsx b/src/app/dev/(user)/vote/detail/kontribusi/[id]/page.tsx new file mode 100644 index 00000000..06ad3e1d --- /dev/null +++ b/src/app/dev/(user)/vote/detail/kontribusi/[id]/page.tsx @@ -0,0 +1,9 @@ +import { Vote_DetailKontribusi } from "@/app_modules/vote"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/(user)/vote/detail/main/[id]/layout.tsx b/src/app/dev/(user)/vote/detail/main/[id]/layout.tsx new file mode 100644 index 00000000..6e978bef --- /dev/null +++ b/src/app/dev/(user)/vote/detail/main/[id]/layout.tsx @@ -0,0 +1,14 @@ +import { LayoutVote_MainDetail } from "@/app_modules/vote"; +import React from "react"; + +export default async function Layout({ + children, +}: { + children: React.ReactNode; +}) { + return ( + <> + {children} + + ); +} diff --git a/src/app/dev/(user)/vote/detail/main/[id]/page.tsx b/src/app/dev/(user)/vote/detail/main/[id]/page.tsx new file mode 100644 index 00000000..6f1307de --- /dev/null +++ b/src/app/dev/(user)/vote/detail/main/[id]/page.tsx @@ -0,0 +1,9 @@ +import { Vote_MainDetail } from "@/app_modules/vote"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/(user)/vote/detail/publish/[id]/layout.tsx b/src/app/dev/(user)/vote/detail/publish/[id]/layout.tsx new file mode 100644 index 00000000..52d87354 --- /dev/null +++ b/src/app/dev/(user)/vote/detail/publish/[id]/layout.tsx @@ -0,0 +1,14 @@ +import { LayoutVote_DetailPublish } from "@/app_modules/vote"; +import React from "react"; + +export default async function Layout({ + children, +}: { + children: React.ReactNode; +}) { + return ( + <> + {children} + + ); +} diff --git a/src/app/dev/(user)/vote/detail/publish/[id]/page.tsx b/src/app/dev/(user)/vote/detail/publish/[id]/page.tsx new file mode 100644 index 00000000..36b9389e --- /dev/null +++ b/src/app/dev/(user)/vote/detail/publish/[id]/page.tsx @@ -0,0 +1,9 @@ +import { Vote_DetailPublish } from "@/app_modules/vote"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/(user)/vote/detail/reject/[id]/layout.tsx b/src/app/dev/(user)/vote/detail/reject/[id]/layout.tsx new file mode 100644 index 00000000..be22a097 --- /dev/null +++ b/src/app/dev/(user)/vote/detail/reject/[id]/layout.tsx @@ -0,0 +1,14 @@ +import { LayoutVote_DetailReject } from "@/app_modules/vote"; +import React from "react"; + +export default async function Layout({ + children, +}: { + children: React.ReactNode; +}) { + return ( + <> + {children} + + ); +} diff --git a/src/app/dev/(user)/vote/detail/reject/[id]/page.tsx b/src/app/dev/(user)/vote/detail/reject/[id]/page.tsx new file mode 100644 index 00000000..ed28eb42 --- /dev/null +++ b/src/app/dev/(user)/vote/detail/reject/[id]/page.tsx @@ -0,0 +1,9 @@ +import { Vote_DetailReject } from "@/app_modules/vote"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/vote/detail/review/[id]/layout.tsx b/src/app/dev/(user)/vote/detail/review/[id]/layout.tsx similarity index 100% rename from src/app/dev/vote/detail/review/[id]/layout.tsx rename to src/app/dev/(user)/vote/detail/review/[id]/layout.tsx diff --git a/src/app/dev/(user)/vote/detail/review/[id]/page.tsx b/src/app/dev/(user)/vote/detail/review/[id]/page.tsx new file mode 100644 index 00000000..6c820b2a --- /dev/null +++ b/src/app/dev/(user)/vote/detail/review/[id]/page.tsx @@ -0,0 +1,9 @@ +import { Vote_DetailReview } from "@/app_modules/vote"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/vote/detail/riwayat_saya/[id]/layout.tsx b/src/app/dev/(user)/vote/detail/riwayat_saya/[id]/layout.tsx similarity index 100% rename from src/app/dev/vote/detail/riwayat_saya/[id]/layout.tsx rename to src/app/dev/(user)/vote/detail/riwayat_saya/[id]/layout.tsx diff --git a/src/app/dev/(user)/vote/detail/riwayat_saya/[id]/page.tsx b/src/app/dev/(user)/vote/detail/riwayat_saya/[id]/page.tsx new file mode 100644 index 00000000..56807551 --- /dev/null +++ b/src/app/dev/(user)/vote/detail/riwayat_saya/[id]/page.tsx @@ -0,0 +1,9 @@ +import { Vote_DetailRiwayatSaya } from "@/app_modules/vote"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/(user)/vote/detail/semua_riwayat/[id]/layout.tsx b/src/app/dev/(user)/vote/detail/semua_riwayat/[id]/layout.tsx new file mode 100644 index 00000000..4723aa9d --- /dev/null +++ b/src/app/dev/(user)/vote/detail/semua_riwayat/[id]/layout.tsx @@ -0,0 +1,14 @@ +import { LayoutVote_DetailSemuaRiwayat } from "@/app_modules/vote"; +import React from "react"; + +export default async function Layout({ + children, +}: { + children: React.ReactNode; +}) { + return ( + <> + {children} + + ); +} diff --git a/src/app/dev/(user)/vote/detail/semua_riwayat/[id]/page.tsx b/src/app/dev/(user)/vote/detail/semua_riwayat/[id]/page.tsx new file mode 100644 index 00000000..e4637b7d --- /dev/null +++ b/src/app/dev/(user)/vote/detail/semua_riwayat/[id]/page.tsx @@ -0,0 +1,9 @@ +import { Vote_DetailSemuaRiwayat } from "@/app_modules/vote"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/vote/edit/[id]/layout.tsx b/src/app/dev/(user)/vote/edit/[id]/layout.tsx similarity index 100% rename from src/app/dev/vote/edit/[id]/layout.tsx rename to src/app/dev/(user)/vote/edit/[id]/layout.tsx diff --git a/src/app/dev/(user)/vote/edit/[id]/page.tsx b/src/app/dev/(user)/vote/edit/[id]/page.tsx new file mode 100644 index 00000000..afceaf2e --- /dev/null +++ b/src/app/dev/(user)/vote/edit/[id]/page.tsx @@ -0,0 +1,9 @@ +import { Vote_Edit } from "@/app_modules/vote"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/(user)/vote/main/beranda/page.tsx b/src/app/dev/(user)/vote/main/beranda/page.tsx new file mode 100644 index 00000000..4c507454 --- /dev/null +++ b/src/app/dev/(user)/vote/main/beranda/page.tsx @@ -0,0 +1,10 @@ +import { Vote_Beranda } from "@/app_modules/vote"; + +export default async function Page() { + + return ( + <> + + + ); +} diff --git a/src/app/dev/(user)/vote/main/kontribusi/page.tsx b/src/app/dev/(user)/vote/main/kontribusi/page.tsx new file mode 100644 index 00000000..2074ba5a --- /dev/null +++ b/src/app/dev/(user)/vote/main/kontribusi/page.tsx @@ -0,0 +1,9 @@ +import { Vote_Kontribusi } from "@/app_modules/vote"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/(user)/vote/main/layout.tsx b/src/app/dev/(user)/vote/main/layout.tsx new file mode 100644 index 00000000..2833de29 --- /dev/null +++ b/src/app/dev/(user)/vote/main/layout.tsx @@ -0,0 +1,16 @@ +import { LayoutVote_Main } from "@/app_modules/vote"; +import NewLayout_Voting from "@/app_modules/vote/main/new_layout_voting"; +import React from "react"; + +export default async function Layout({ + children, +}: { + children: React.ReactNode; +}) { + return ( + <> + {/* {children} */} + {children} + + ); +} diff --git a/src/app/dev/(user)/vote/main/riwayat/[id]/page.tsx b/src/app/dev/(user)/vote/main/riwayat/[id]/page.tsx new file mode 100644 index 00000000..2730d771 --- /dev/null +++ b/src/app/dev/(user)/vote/main/riwayat/[id]/page.tsx @@ -0,0 +1,9 @@ +import { Vote_Riwayat } from "@/app_modules/vote"; + +export default async function Page({ params }: { params: { id: string } }) { + return ( + <> + + + ); +} diff --git a/src/app/dev/(user)/vote/main/status/[id]/page.tsx b/src/app/dev/(user)/vote/main/status/[id]/page.tsx new file mode 100644 index 00000000..afed972f --- /dev/null +++ b/src/app/dev/(user)/vote/main/status/[id]/page.tsx @@ -0,0 +1,9 @@ +import { Vote_Status } from "@/app_modules/vote"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/vote/splash/page.tsx b/src/app/dev/(user)/vote/splash/page.tsx similarity index 100% rename from src/app/dev/vote/splash/page.tsx rename to src/app/dev/(user)/vote/splash/page.tsx diff --git a/src/app/dev/admin/app-information/bidang-bisnis/create/page.tsx b/src/app/dev/admin/app-information/bidang-bisnis/create/page.tsx new file mode 100644 index 00000000..d9993c7c --- /dev/null +++ b/src/app/dev/admin/app-information/bidang-bisnis/create/page.tsx @@ -0,0 +1,9 @@ +import AdminAppInformation_ViewCreateBidangBisnis from "@/app_modules/admin/app_info/view/view_create_bidang"; + +export default function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/admin/app-information/bidang-bisnis/page.tsx b/src/app/dev/admin/app-information/bidang-bisnis/page.tsx new file mode 100644 index 00000000..f794d9db --- /dev/null +++ b/src/app/dev/admin/app-information/bidang-bisnis/page.tsx @@ -0,0 +1,11 @@ +import { AdminAppInformation_ViewKategoriPortofolio } from "@/app_modules/admin/app_info/view"; +import { AdminAppInformation_V3_ViewKategoriBidangBisnis } from "@/app_modules/admin/app_info/view/new_kategori_bidang_bisnis"; + +export default function Page() { + return ( + <> + + {/* */} + + ); +} diff --git a/src/app/dev/admin/app-information/info-bank/page.tsx b/src/app/dev/admin/app-information/info-bank/page.tsx new file mode 100644 index 00000000..22642c1a --- /dev/null +++ b/src/app/dev/admin/app-information/info-bank/page.tsx @@ -0,0 +1,5 @@ +import { AdminAppInformation_ViewInfoBank } from "@/app_modules/admin/app_info/view"; + +export default function Page() { + return ; +} diff --git a/src/app/dev/admin/app-information/layout.tsx b/src/app/dev/admin/app-information/layout.tsx new file mode 100644 index 00000000..17050b24 --- /dev/null +++ b/src/app/dev/admin/app-information/layout.tsx @@ -0,0 +1,9 @@ +import AdminAppInformation_Layout from "@/app_modules/admin/app_info/ui/ui_layout_admin_app"; + +export default function Layout({ children }: { children: React.ReactNode }) { + return ( + <> + {children} + + ); +} diff --git a/src/app/dev/admin/app-information/main/page.tsx b/src/app/dev/admin/app-information/main/page.tsx index 42c3b5de..ae28eee7 100644 --- a/src/app/dev/admin/app-information/main/page.tsx +++ b/src/app/dev/admin/app-information/main/page.tsx @@ -1,20 +1,9 @@ -import { adminAppInformation_funGetBidangBisnis } from "@/app_modules/admin/app_info/fun"; -import adminAppInformation_getMasterBank from "@/app_modules/admin/app_info/fun/master/get_list_bank"; -import adminAppInformation_getNomorAdmin from "@/app_modules/admin/app_info/fun/master/get_nomor_admin"; import { AdminAppInformation_UiMain } from "@/app_modules/admin/app_info/ui"; export default async function Page() { - const nomorAdmin = await adminAppInformation_getNomorAdmin(); - const listBank = await adminAppInformation_getMasterBank(); - const dataBidangBisnis = await adminAppInformation_funGetBidangBisnis() - return ( <> - + ); } diff --git a/src/app/dev/admin/app-information/sticker/[id]/page.tsx b/src/app/dev/admin/app-information/sticker/[id]/page.tsx new file mode 100644 index 00000000..288ef4f6 --- /dev/null +++ b/src/app/dev/admin/app-information/sticker/[id]/page.tsx @@ -0,0 +1,9 @@ +import AdminAppInformation_ViewStickerDetail from "@/app_modules/admin/app_info/view/sticker/view_detail_sticker"; + +export default function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/admin/app-information/sticker/create/page.tsx b/src/app/dev/admin/app-information/sticker/create/page.tsx new file mode 100644 index 00000000..a1d9cd83 --- /dev/null +++ b/src/app/dev/admin/app-information/sticker/create/page.tsx @@ -0,0 +1,9 @@ +import AdminAppInformation_ViewCreateSticker from "@/app_modules/admin/app_info/view/sticker/view_create_sticker"; + +export default function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/admin/app-information/sticker/page.tsx b/src/app/dev/admin/app-information/sticker/page.tsx new file mode 100644 index 00000000..a9f1668d --- /dev/null +++ b/src/app/dev/admin/app-information/sticker/page.tsx @@ -0,0 +1,9 @@ +import AdminAppInformation_ViewSticker from "@/app_modules/admin/app_info/view/sticker/view_stiker"; + +export default function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/admin/colab/dashboard/page.tsx b/src/app/dev/admin/colab/dashboard/page.tsx index 033b565f..dc5b302b 100644 --- a/src/app/dev/admin/colab/dashboard/page.tsx +++ b/src/app/dev/admin/colab/dashboard/page.tsx @@ -4,16 +4,13 @@ import adminColab_countIsPublish from "@/app_modules/admin/colab/fun/count/count import adminColab_countIsReject from "@/app_modules/admin/colab/fun/count/count_reject"; export default async function Page() { - const countPublish = await adminColab_countIsPublish(); - const countRoom = await adminColab_countGroupChat(); - const countReject = await adminColab_countIsReject() + // const countPublish = await adminColab_countIsPublish(); + // const countRoom = await adminColab_countGroupChat(); + // const countReject = await adminColab_countIsReject() return ( <> ); diff --git a/src/app/dev/admin/colab/detail/group/[id]/page.tsx b/src/app/dev/admin/colab/detail/group/[id]/page.tsx new file mode 100644 index 00000000..1e03a6ff --- /dev/null +++ b/src/app/dev/admin/colab/detail/group/[id]/page.tsx @@ -0,0 +1,11 @@ +import DetailGroup from "@/app_modules/admin/colab/detail/detail_group"; + +async function Page() { + return ( + <> + + + ); +} + +export default Page; diff --git a/src/app/dev/admin/colab/detail/publish/[id]/page.tsx b/src/app/dev/admin/colab/detail/publish/[id]/page.tsx new file mode 100644 index 00000000..9004c86c --- /dev/null +++ b/src/app/dev/admin/colab/detail/publish/[id]/page.tsx @@ -0,0 +1,11 @@ +import DetailPublish from '@/app_modules/admin/colab/detail/detail_publish'; + +function Page() { + return ( + <> + + + ); +} + +export default Page; diff --git a/src/app/dev/admin/colab/detail/reject/[id]/page.tsx b/src/app/dev/admin/colab/detail/reject/[id]/page.tsx new file mode 100644 index 00000000..a81cf94e --- /dev/null +++ b/src/app/dev/admin/colab/detail/reject/[id]/page.tsx @@ -0,0 +1,11 @@ +import DetailReject from "@/app_modules/admin/colab/detail/detail_reject"; + +async function Page() { + return ( + <> + + + ); +} + +export default Page; diff --git a/src/app/dev/admin/colab/sub-menu/group/page.tsx b/src/app/dev/admin/colab/sub-menu/group/page.tsx index 8b499f57..115e6fc5 100644 --- a/src/app/dev/admin/colab/sub-menu/group/page.tsx +++ b/src/app/dev/admin/colab/sub-menu/group/page.tsx @@ -1,12 +1,9 @@ import { AdminColab_TableGroup } from "@/app_modules/admin/colab"; -import adminColab_getListAllGroupChat from "@/app_modules/admin/colab/fun/get/get_list_all_group_chat"; export default async function Page() { - const listGroup = await adminColab_getListAllGroupChat({page: 1}) - return ( <> - + ); } diff --git a/src/app/dev/admin/colab/sub-menu/publish/page.tsx b/src/app/dev/admin/colab/sub-menu/publish/page.tsx index 902b50c3..df606eb3 100644 --- a/src/app/dev/admin/colab/sub-menu/publish/page.tsx +++ b/src/app/dev/admin/colab/sub-menu/publish/page.tsx @@ -1,12 +1,9 @@ import { AdminColab_TablePublish } from "@/app_modules/admin/colab"; -import adminColab_getListAllPublish from "@/app_modules/admin/colab/fun/get/get_list_all_publish"; export default async function Page() { - const listData = await adminColab_getListAllPublish({ page: 1 }); - return ( <> - + ); } diff --git a/src/app/dev/admin/colab/sub-menu/reject/page.tsx b/src/app/dev/admin/colab/sub-menu/reject/page.tsx index 11e5c047..98928960 100644 --- a/src/app/dev/admin/colab/sub-menu/reject/page.tsx +++ b/src/app/dev/admin/colab/sub-menu/reject/page.tsx @@ -1,12 +1,11 @@ import { AdminColab_TableRejected } from "@/app_modules/admin/colab"; -import adminColab_getListAllRejected from "@/app_modules/admin/colab/fun/get/get_list_all_reject"; export default async function Page() { - const listReject = await adminColab_getListAllRejected({page: 1}) + return ( <> - + ); } \ No newline at end of file diff --git a/src/app/dev/admin/developer/page.tsx b/src/app/dev/admin/developer/page.tsx index 609d4b10..eed9b4b5 100644 --- a/src/app/dev/admin/developer/page.tsx +++ b/src/app/dev/admin/developer/page.tsx @@ -1,15 +1,12 @@ import AdminDeveloper from "@/app_modules/admin/developer"; -import adminDeveloper_funGetListAllAdmin from "@/app_modules/admin/developer/fun/get/fun_get_list_all_admin"; -import adminDeveloper_funGetListAllUser from "@/app_modules/admin/developer/fun/get/fun_get_list_all_user"; -import _ from "lodash"; export default async function Page() { - const listUser = await adminDeveloper_funGetListAllUser({ page: 1 }); - const listAdmin = await adminDeveloper_funGetListAllAdmin({ page: 1 }); + // const listUser = await adminDeveloper_funGetListAllUser({ page: 1 }); + // const listAdmin = await adminDeveloper_funGetListAllAdmin({ page: 1 }); return ( <> - + ); } diff --git a/src/app/dev/admin/donasi/detail/publish/[id]/page.tsx b/src/app/dev/admin/donasi/detail/publish/[id]/page.tsx index 6407215a..7e45a457 100644 --- a/src/app/dev/admin/donasi/detail/publish/[id]/page.tsx +++ b/src/app/dev/admin/donasi/detail/publish/[id]/page.tsx @@ -1,30 +1,11 @@ import { AdminDonasi_DetailPublish } from "@/app_modules/admin/donasi"; import { AdminDonasi_funCountDonatur } from "@/app_modules/admin/donasi/fun/count/fun_count_donatur"; -import { adminDonasi_getListDonatur } from "@/app_modules/admin/donasi/fun/get/get_list_donatur_by_id"; import { AdminDonasi_getListPencairanDana } from "@/app_modules/admin/donasi/fun/get/get_list_pencairan_dana_by_id"; -import { AdminDonasi_getOneById } from "@/app_modules/admin/donasi/fun/get/get_one_by_id"; -import adminDonasi_getMasterStatus from "@/app_modules/admin/donasi/fun/master/get_status_id"; - -export default async function Page({ params }: { params: { id: string } }) { - let donasiId = params.id; - const dataPublish = await AdminDonasi_getOneById(params.id); - const countDonatur = await AdminDonasi_funCountDonatur(params.id); - const listMasterStatus = await adminDonasi_getMasterStatus(); - const listDonatur = await adminDonasi_getListDonatur({ - donasiId: donasiId, - page: 1, - }); - const listPencairan = await AdminDonasi_getListPencairanDana(params.id); +export default async function Page() { return ( <> - + ); } diff --git a/src/app/dev/admin/donasi/detail/reject/[id]/page.tsx b/src/app/dev/admin/donasi/detail/reject/[id]/page.tsx index 515f1c91..22bc1ac5 100644 --- a/src/app/dev/admin/donasi/detail/reject/[id]/page.tsx +++ b/src/app/dev/admin/donasi/detail/reject/[id]/page.tsx @@ -1,12 +1,12 @@ import { AdminDonasi_DetailReject } from "@/app_modules/admin/donasi"; import { AdminDonasi_getOneById } from "@/app_modules/admin/donasi/fun/get/get_one_by_id"; -export default async function Page({ params }: { params: { id: string } }) { - const dataReject = await AdminDonasi_getOneById(params.id); +export default async function Page() { + // const dataReject = await AdminDonasi_getOneById(params.id); return ( <> - + ); } diff --git a/src/app/dev/admin/donasi/detail/review/[id]/page.tsx b/src/app/dev/admin/donasi/detail/review/[id]/page.tsx index 230bfefc..73ac4bd5 100644 --- a/src/app/dev/admin/donasi/detail/review/[id]/page.tsx +++ b/src/app/dev/admin/donasi/detail/review/[id]/page.tsx @@ -1,8 +1,5 @@ import { AdminDonasi_DetailReview } from "@/app_modules/admin/donasi"; -import { AdminDonasi_getOneById } from "@/app_modules/admin/donasi/fun/get/get_one_by_id"; -export default async function Page({ params }: { params: { id: string } }) { - const dataReview = await AdminDonasi_getOneById(params.id); - - return ; +export default async function Page() { + return ; } diff --git a/src/app/dev/admin/donasi/main/page.tsx b/src/app/dev/admin/donasi/main/page.tsx index 63f2c0ce..48821986 100644 --- a/src/app/dev/admin/donasi/main/page.tsx +++ b/src/app/dev/admin/donasi/main/page.tsx @@ -2,18 +2,14 @@ import { AdminDonasi_Main } from "@/app_modules/admin/donasi"; import AdminDonasi_funCountByStatus from "@/app_modules/admin/donasi/fun/count/fun_count_donasi_by_status"; export default async function Page() { - const countPublish = await AdminDonasi_funCountByStatus("1"); - const countReview = await AdminDonasi_funCountByStatus("2"); - const countDraft = await AdminDonasi_funCountByStatus("3"); - const countReject = await AdminDonasi_funCountByStatus("4"); + return ( <> ); diff --git a/src/app/dev/admin/donasi/pencairan_dana/[id]/page.tsx b/src/app/dev/admin/donasi/pencairan_dana/[id]/page.tsx index 10c8d4b7..d6229c17 100644 --- a/src/app/dev/admin/donasi/pencairan_dana/[id]/page.tsx +++ b/src/app/dev/admin/donasi/pencairan_dana/[id]/page.tsx @@ -1,18 +1,29 @@ import { AdminDonasi_PencairanDana } from "@/app_modules/admin/donasi"; import { AdminDonasi_getOneById } from "@/app_modules/admin/donasi/fun/get/get_one_by_id"; -export default async function Page({ params }: { params: { id: string } }) { - let donasiId = params.id; - const dataDonasi = await AdminDonasi_getOneById(donasiId); - const danaTerkumpul = dataDonasi?.terkumpul; - const totalPencairan = dataDonasi?.totalPencairan - +export default async function Page() { return ( ); } + +// import { AdminDonasi_PencairanDana } from "@/app_modules/admin/donasi"; +// import { AdminDonasi_getOneById } from "@/app_modules/admin/donasi/fun/get/get_one_by_id"; + +// export default async function Page({ params }: { params: { id: string } }) { +// let donasiId = params.id; +// const dataDonasi = await AdminDonasi_getOneById(donasiId); +// const danaTerkumpul = dataDonasi?.terkumpul; +// const totalPencairan = dataDonasi?.totalPencairan + + +// return ( +// +// ); +// } diff --git a/src/app/dev/admin/donasi/sub-menu/kategori/page.tsx b/src/app/dev/admin/donasi/sub-menu/kategori/page.tsx index 86c84d44..d1f397ff 100644 --- a/src/app/dev/admin/donasi/sub-menu/kategori/page.tsx +++ b/src/app/dev/admin/donasi/sub-menu/kategori/page.tsx @@ -2,11 +2,10 @@ import { AdminDonasi_TableKategori } from "@/app_modules/admin/donasi"; import adminDonasi_getMasterKategori from "@/app_modules/admin/donasi/fun/master/get_list_kategori"; export default async function Page() { - const listKategori = await adminDonasi_getMasterKategori(); return ( <> - + ); } diff --git a/src/app/dev/admin/donasi/sub-menu/publish/page.tsx b/src/app/dev/admin/donasi/sub-menu/publish/page.tsx index a0171588..45c8e7e9 100644 --- a/src/app/dev/admin/donasi/sub-menu/publish/page.tsx +++ b/src/app/dev/admin/donasi/sub-menu/publish/page.tsx @@ -1,12 +1,9 @@ import { AdminDonasi_TablePublish } from "@/app_modules/admin/donasi"; -import adminDonasi_getListPublish from "@/app_modules/admin/donasi/fun/get/get_list_publish"; export default async function Page() { - const listPublish = await adminDonasi_getListPublish({ - page: 1, - }); - // console.log(listPublish) - return<> - + return ( + <> + -} \ No newline at end of file + ); +} diff --git a/src/app/dev/admin/donasi/sub-menu/reject/page.tsx b/src/app/dev/admin/donasi/sub-menu/reject/page.tsx index 76c38ec8..e20a80d9 100644 --- a/src/app/dev/admin/donasi/sub-menu/reject/page.tsx +++ b/src/app/dev/admin/donasi/sub-menu/reject/page.tsx @@ -2,11 +2,10 @@ import { AdminDonasi_TableReject } from "@/app_modules/admin/donasi"; import adminDonasi_getListReject from "@/app_modules/admin/donasi/fun/get/get_list_reject"; export default async function Page() { - const dataReject = await adminDonasi_getListReject({ page: 1 }); - // console.log(dataReject) + return ( <> - + ); } diff --git a/src/app/dev/admin/donasi/sub-menu/review/page.tsx b/src/app/dev/admin/donasi/sub-menu/review/page.tsx index 6e25d7fe..3dbe1714 100644 --- a/src/app/dev/admin/donasi/sub-menu/review/page.tsx +++ b/src/app/dev/admin/donasi/sub-menu/review/page.tsx @@ -1,8 +1,6 @@ import { AdminDonasi_TableReview } from "@/app_modules/admin/donasi"; -import adminDonasi_getListReview from "@/app_modules/admin/donasi/fun/get/get_list_review"; export default async function Page() { - const listReview = await adminDonasi_getListReview({page: 1}); - // console.log(listReview); - return ; + + return ; } diff --git a/src/app/dev/admin/event/[id]/page.tsx b/src/app/dev/admin/event/[id]/page.tsx new file mode 100644 index 00000000..40905d23 --- /dev/null +++ b/src/app/dev/admin/event/[id]/page.tsx @@ -0,0 +1,11 @@ +import { AdminEvent_UiNewDetail } from "@/app_modules/admin/event/_ui/ui_new_detail"; + +async function Page() { + return ( + <> + + + ); +} + +export default Page; diff --git a/src/app/dev/admin/event/child/riwayat/page.tsx b/src/app/dev/admin/event/child/riwayat/page.tsx index a6923bad..084fede7 100644 --- a/src/app/dev/admin/event/child/riwayat/page.tsx +++ b/src/app/dev/admin/event/child/riwayat/page.tsx @@ -1,12 +1,10 @@ import { AdminEvent_Riwayat } from "@/app_modules/admin/event"; -import { adminEvent_funGetListAllRiwayat } from "@/app_modules/admin/event/fun/get/get_list_all_riwayat"; export default async function Page() { - const listRiwayat = await adminEvent_funGetListAllRiwayat({ page: 1 }); return ( <> - + ); } diff --git a/src/app/dev/admin/event/child/tipe_acara/page.tsx b/src/app/dev/admin/event/child/tipe_acara/page.tsx index b905136e..1ad22c10 100644 --- a/src/app/dev/admin/event/child/tipe_acara/page.tsx +++ b/src/app/dev/admin/event/child/tipe_acara/page.tsx @@ -1,12 +1,11 @@ import { AdminEvent_DetailTipeAcara } from "@/app_modules/admin/event"; -import { AdminEvent_getListTipeAcara } from "@/app_modules/admin/event/fun/get/get_list_tipe_acara"; export default async function Page() { - const listTipe = await AdminEvent_getListTipeAcara() + // const listTipe = await AdminEvent_getListTipeAcara() return ( <> - + ); } diff --git a/src/app/dev/admin/event/detail/detail_sponsor/page.tsx b/src/app/dev/admin/event/detail/detail_sponsor/page.tsx new file mode 100644 index 00000000..8da4fe25 --- /dev/null +++ b/src/app/dev/admin/event/detail/detail_sponsor/page.tsx @@ -0,0 +1,11 @@ +import AdminEvent_DetailSponsor from '@/app_modules/admin/event/table_status/detail_sponsor'; + +function Page() { + return ( + <> + + + ); +} + +export default Page; diff --git a/src/app/dev/admin/event/detail/peserta/[id]/page.tsx b/src/app/dev/admin/event/detail/peserta/[id]/page.tsx index 7038c519..18969dac 100644 --- a/src/app/dev/admin/event/detail/peserta/[id]/page.tsx +++ b/src/app/dev/admin/event/detail/peserta/[id]/page.tsx @@ -1,13 +1,10 @@ import { AdminEvent_UiDetailPeserta } from "@/app_modules/admin/event/_ui"; -import { adminEvent_getListPesertaById } from "@/app_modules/admin/event/fun/get/get_list_peserta_by_id"; -export default async function Page({ params }: { params: { id: string } }) { - const eventId = params.id; - const dataPeserta = await adminEvent_getListPesertaById({ eventId, page: 1 }); +export default async function Page(){ return ( <> - + ); } diff --git a/src/app/dev/admin/event/detail/publish/[id]/page.tsx b/src/app/dev/admin/event/detail/publish/[id]/page.tsx new file mode 100644 index 00000000..da2f5681 --- /dev/null +++ b/src/app/dev/admin/event/detail/publish/[id]/page.tsx @@ -0,0 +1,12 @@ +import AdminEvent_DetailPublish from '@/app_modules/admin/event/table_status/detail_publish'; +import React from 'react'; + +function Page() { + return ( + <> + + + ); +} + +export default Page; diff --git a/src/app/dev/admin/event/main/page.tsx b/src/app/dev/admin/event/main/page.tsx index abd71c1e..21e83625 100644 --- a/src/app/dev/admin/event/main/page.tsx +++ b/src/app/dev/admin/event/main/page.tsx @@ -1,26 +1,9 @@ import { AdminEvent_Main } from "@/app_modules/admin/event"; -import AdminEvent_funCountByStatusId from "@/app_modules/admin/event/fun/count/fun_count_event_by_status_id"; -import { AdminEvent_funCountRiwayat } from "@/app_modules/admin/event/fun/count/fun_count_riwayat"; -import { AdminEvent_funCountTipeAcara } from "@/app_modules/admin/event/fun/count/fun_count_tipe_acara"; export default async function Page() { - const countPublish = await AdminEvent_funCountByStatusId("1"); - const countReview = await AdminEvent_funCountByStatusId("2"); - const countDraft = await AdminEvent_funCountByStatusId("3"); - const countReject = await AdminEvent_funCountByStatusId("4"); - const countTipeAcara = await AdminEvent_funCountTipeAcara(); - const countRiwayat = await AdminEvent_funCountRiwayat(); - return ( <> - + ); } diff --git a/src/app/dev/admin/event/table/publish/page.tsx b/src/app/dev/admin/event/table/publish/page.tsx index a7c514dc..3e1641c4 100644 --- a/src/app/dev/admin/event/table/publish/page.tsx +++ b/src/app/dev/admin/event/table/publish/page.tsx @@ -1,12 +1,9 @@ import { AdminEvent_TablePublish } from "@/app_modules/admin/event"; -import { adminEvent_funGetListPublish } from "@/app_modules/admin/event/fun"; async function Page() { - const listPublish = await adminEvent_funGetListPublish({ page: 1 }); - return ( <> - + ); } diff --git a/src/app/dev/admin/event/table/reject/page.tsx b/src/app/dev/admin/event/table/reject/page.tsx index 236885b6..9cdeb92d 100644 --- a/src/app/dev/admin/event/table/reject/page.tsx +++ b/src/app/dev/admin/event/table/reject/page.tsx @@ -1,12 +1,10 @@ import { AdminEvent_TableReject } from "@/app_modules/admin/event"; -import { adminEvent_funGetListReject } from "@/app_modules/admin/event/fun"; export default async function Page() { - const listReject = await adminEvent_funGetListReject({ page: 1 }); return ( <> - + ); } diff --git a/src/app/dev/admin/event/table/review/page.tsx b/src/app/dev/admin/event/table/review/page.tsx index 3167dd30..b88afd26 100644 --- a/src/app/dev/admin/event/table/review/page.tsx +++ b/src/app/dev/admin/event/table/review/page.tsx @@ -1,12 +1,10 @@ import { AdminEvent_TableReview } from "@/app_modules/admin/event"; -import { adminEvent_funGetListReview } from "@/app_modules/admin/event/fun"; export default async function Page() { - const listReview = await adminEvent_funGetListReview({ page: 1 }); - + return ( <> - + ); } diff --git a/src/app/dev/admin/forum/detail/[id]/page.tsx b/src/app/dev/admin/forum/detail/[id]/page.tsx index 69063651..3466102b 100644 --- a/src/app/dev/admin/forum/detail/[id]/page.tsx +++ b/src/app/dev/admin/forum/detail/[id]/page.tsx @@ -1,26 +1,9 @@ import { AdminForum_LihatSemuaKomentar } from "@/app_modules/admin/forum"; -import adminForum_countKomentarByPostingId from "@/app_modules/admin/forum/fun/count/fun_count_komentar_by_id"; -import { adminForum_getListKomentarById } from "@/app_modules/admin/forum/fun/get/get_list_komentar_by_id"; -import { adminForum_getOnePostingById } from "@/app_modules/admin/forum/fun/get/get_one_posting_by_id"; - -export default async function Page({ params }: { params: { id: string } }) { - let postingId = params.id; - - const listKomentar = await adminForum_getListKomentarById({ - postingId: postingId, - page: 1, - }); - const dataPosting = await adminForum_getOnePostingById(postingId); - const countKomentar = await adminForum_countKomentarByPostingId({postingId: postingId}) - +export default async function Page() { return ( <> - + ); } diff --git a/src/app/dev/admin/forum/main/page.tsx b/src/app/dev/admin/forum/main/page.tsx index 9be61059..ffd816d2 100644 --- a/src/app/dev/admin/forum/main/page.tsx +++ b/src/app/dev/admin/forum/main/page.tsx @@ -1,23 +1,13 @@ import { AdminForum_Main } from "@/app_modules/admin/forum"; -import { adminForum_countLaporanKomentar } from "@/app_modules/admin/forum/fun/count/fun_count_laporan_komentar"; -import { adminForum_countLaporanPosting } from "@/app_modules/admin/forum/fun/count/fun_count_laporan_posting"; -import { adminForum_countPublish } from "@/app_modules/admin/forum/fun/count/fun_count_publish"; export default async function Page() { -// await new Promise((a, b) => { -// setTimeout(a, 4000); -// }); - const countPublish = await adminForum_countPublish(); - const countLaporanPosting = await adminForum_countLaporanPosting() - const countLaporanKomentar = await adminForum_countLaporanKomentar(); + // await new Promise((a, b) => { + // setTimeout(a, 4000); + // }); return ( <> - + ); } diff --git a/src/app/dev/admin/forum/sub-detail/report-komentar/[id]/page.tsx b/src/app/dev/admin/forum/sub-detail/report-komentar/[id]/page.tsx index 94f2bd0f..17c6f084 100644 --- a/src/app/dev/admin/forum/sub-detail/report-komentar/[id]/page.tsx +++ b/src/app/dev/admin/forum/sub-detail/report-komentar/[id]/page.tsx @@ -1,23 +1,21 @@ import { AdminForum_HasilReportKomentar } from "@/app_modules/admin/forum"; -import { adminForum_getListReportKomentarbyId } from "@/app_modules/admin/forum/fun/get/get_list_report_komentar_by_id"; -import adminForum_funGetOneKomentarById from "@/app_modules/admin/forum/fun/get/get_one_komentar_by_id"; export default async function Page({ params }: { params: { id: string } }) { - let komentarId = params.id; - const listReport = await adminForum_getListReportKomentarbyId({ - komentarId: komentarId, - page: 1, - }); - const dataKomentar = await adminForum_funGetOneKomentarById({ - komentarId: komentarId, - }); + // let komentarId = params.id; + // const listReport = await adminForum_getListReportKomentarbyId({ + // komentarId: komentarId, + // page: 1, + // }); + // const dataKomentar = await adminForum_funGetOneKomentarById({ + // komentarId: komentarId, + // }); return ( <> ); diff --git a/src/app/dev/admin/forum/sub-detail/report-posting/[id]/page.tsx b/src/app/dev/admin/forum/sub-detail/report-posting/[id]/page.tsx index a40c7fed..4d4fa163 100644 --- a/src/app/dev/admin/forum/sub-detail/report-posting/[id]/page.tsx +++ b/src/app/dev/admin/forum/sub-detail/report-posting/[id]/page.tsx @@ -3,19 +3,19 @@ import { adminForum_getListReportPostingById } from "@/app_modules/admin/forum/f import { adminForum_getOnePostingById } from "@/app_modules/admin/forum/fun/get/get_one_posting_by_id"; export default async function Page({ params }: { params: { id: string } }) { - let postingId = params.id; - const listReport = await adminForum_getListReportPostingById({ - postingId: postingId, - page: 1, - }); + // let postingId = params.id; + // const listReport = await adminForum_getListReportPostingById({ + // postingId: postingId, + // page: 1, + // }); - const dataPosting = await adminForum_getOnePostingById(postingId); + // const dataPosting = await adminForum_getOnePostingById(postingId); return ( <> ); diff --git a/src/app/dev/admin/forum/sub-menu/posting/page.tsx b/src/app/dev/admin/forum/sub-menu/posting/page.tsx index c6457777..bec91655 100644 --- a/src/app/dev/admin/forum/sub-menu/posting/page.tsx +++ b/src/app/dev/admin/forum/sub-menu/posting/page.tsx @@ -1,12 +1,9 @@ import { AdminForum_TablePublish } from "@/app_modules/admin/forum"; -import { adminForum_getListPosting } from "@/app_modules/admin/forum/fun/get/get_list_publish"; export default async function Page() { - const listPublish = await adminForum_getListPosting({page: 1}); - return ( <> - + ); } diff --git a/src/app/dev/admin/forum/sub-menu/report-komentar/page.tsx b/src/app/dev/admin/forum/sub-menu/report-komentar/page.tsx index dfff6d5b..52063831 100644 --- a/src/app/dev/admin/forum/sub-menu/report-komentar/page.tsx +++ b/src/app/dev/admin/forum/sub-menu/report-komentar/page.tsx @@ -1,12 +1,10 @@ -import adminForum_funGetAllReportKomentar from "@/app_modules/admin/forum/fun/get/get_all_report_komentar"; import AdminForum_TableReportKomentar from "@/app_modules/admin/forum/sub_menu/table_report_komentar"; export default async function Page() { - const listData = await adminForum_funGetAllReportKomentar({ page: 1 }); - + return ( <> - + ); } diff --git a/src/app/dev/admin/forum/sub-menu/report-posting/page.tsx b/src/app/dev/admin/forum/sub-menu/report-posting/page.tsx index 9d2e6dfb..82dd172e 100644 --- a/src/app/dev/admin/forum/sub-menu/report-posting/page.tsx +++ b/src/app/dev/admin/forum/sub-menu/report-posting/page.tsx @@ -1,12 +1,9 @@ import { AdminForum_TableReportPosting } from "@/app_modules/admin/forum"; -import adminForum_funGetAllReportPosting from "@/app_modules/admin/forum/fun/get/get_all_report_posting"; export default async function Page() { - const listData = await adminForum_funGetAllReportPosting({ page: 1 }); - return ( <> - + ); } diff --git a/src/app/dev/admin/investasi/detail/publish/[id]/page.tsx b/src/app/dev/admin/investasi/detail/publish/[id]/page.tsx index b87747e9..6bbcffbc 100644 --- a/src/app/dev/admin/investasi/detail/publish/[id]/page.tsx +++ b/src/app/dev/admin/investasi/detail/publish/[id]/page.tsx @@ -1,26 +1,19 @@ import { AdminInvestasi_DetailPublish } from "@/app_modules/admin/investasi"; -import { - adminInvestasi_funGetAllTransaksiById, - adminInvestasi_getStatusInvestasi, -} from "@/app_modules/admin/investasi/fun"; -import getOneInvestasiById from "@/app_modules/investasi/fun/get_one_investasi_by_id"; -export default async function Page({ params }: { params: { id: string } }) { - const investasiId = params.id; - const dataInvestasi = await getOneInvestasiById(investasiId); - const statusTransaksi = await adminInvestasi_getStatusInvestasi(); - const dataTransaksi = await adminInvestasi_funGetAllTransaksiById({ - investasiId, - page: 1, - }); +export default async function Page() { + + // export default async function Page({ params }: { params: { id: string } }) { + // const investasiId = params.id; + // const dataInvestasi = await getOneInvestasiById(investasiId); + // const statusTransaksi = await adminInvestasi_getStatusInvestasi(); + // const dataTransaksi = await adminInvestasi_funGetAllTransaksiById({ + // investasiId, + // page: 1, + // }); return ( <> - ); diff --git a/src/app/dev/admin/investasi/detail/reject/[id]/page.tsx b/src/app/dev/admin/investasi/detail/reject/[id]/page.tsx index d2a2743c..aa425741 100644 --- a/src/app/dev/admin/investasi/detail/reject/[id]/page.tsx +++ b/src/app/dev/admin/investasi/detail/reject/[id]/page.tsx @@ -2,12 +2,12 @@ import { AdminInvestasi_DetailReject } from "@/app_modules/admin/investasi"; import getOneInvestasiById from "@/app_modules/investasi/fun/get_one_investasi_by_id"; export default async function Page({ params }: { params: { id: string } }) { - const investasiId = params.id; - const dataInvestasi = await getOneInvestasiById(investasiId); + // const investasiId = params.id; + // const dataInvestasi = await getOneInvestasiById(investasiId); return ( <> - + ); } diff --git a/src/app/dev/admin/investasi/detail/review/[id]/page.tsx b/src/app/dev/admin/investasi/detail/review/[id]/page.tsx index 840957b1..b19f6d87 100644 --- a/src/app/dev/admin/investasi/detail/review/[id]/page.tsx +++ b/src/app/dev/admin/investasi/detail/review/[id]/page.tsx @@ -1,13 +1,12 @@ import { Admin_KonfirmasiInvestasi } from "@/app_modules/admin/investasi"; import getOneInvestasiById from "@/app_modules/investasi/fun/get_one_investasi_by_id"; -export default async function Page({ params }: { params: { id: string } }) { - const investasiId = params.id; - const dataInvestasi = await getOneInvestasiById(investasiId); +export default async function Page() { + return ( <> - + ); } diff --git a/src/app/dev/admin/investasi/detail/transaksi/[id]/page.tsx b/src/app/dev/admin/investasi/detail/transaksi/[id]/page.tsx new file mode 100644 index 00000000..c5d00c4c --- /dev/null +++ b/src/app/dev/admin/investasi/detail/transaksi/[id]/page.tsx @@ -0,0 +1,11 @@ +import DetailTransaksi from "@/app_modules/admin/investasi/_view/detail/view_detail_transaksi"; + +function Page() { + return ( + <> + + + ); +} + +export default Page; diff --git a/src/app/dev/admin/investasi/konfirmasi/[id]/page.tsx b/src/app/dev/admin/investasi/konfirmasi/[id]/page.tsx index 96111822..b31fb4a0 100644 --- a/src/app/dev/admin/investasi/konfirmasi/[id]/page.tsx +++ b/src/app/dev/admin/investasi/konfirmasi/[id]/page.tsx @@ -1,14 +1,9 @@ import { Admin_KonfirmasiInvestasi } from "@/app_modules/admin/investasi"; -import { adminInvestasi_getOneById } from "@/app_modules/admin/investasi/fun"; - -export default async function Page({ params }: { params: { id: string } }) { - const investasiId = params.id; - const dataInvestasi = await adminInvestasi_getOneById({investasiId}); - // console.log(dataUser) +export default async function Page() { return ( <> - + ); } diff --git a/src/app/dev/admin/investasi/main/page.tsx b/src/app/dev/admin/investasi/main/page.tsx index fdeee026..a58c0d4c 100644 --- a/src/app/dev/admin/investasi/main/page.tsx +++ b/src/app/dev/admin/investasi/main/page.tsx @@ -1,32 +1,9 @@ import { Admin_Investasi } from "@/app_modules/admin/investasi"; -import Admin_CountStatusInvestasi from "@/app_modules/admin/investasi/fun/count_status"; -import Admin_funGetAllInvestasi from "@/app_modules/admin/investasi/fun/get_all_investasi"; -import Admin_getPublishProgresInvestasi from "@/app_modules/admin/investasi/fun/get_publish_progres"; -import Admin_getTotalInvestasiByUser from "@/app_modules/admin/investasi/fun/get_total_investasi_by_user"; export default async function Page() { - const listInvestasi = await Admin_funGetAllInvestasi(); - const countDraft = await Admin_CountStatusInvestasi(1); - const countReview = await Admin_CountStatusInvestasi(2); - const countPublish = await Admin_CountStatusInvestasi(3); - const countReject = await Admin_CountStatusInvestasi(4); - const totalInvestasiByUser = await Admin_getTotalInvestasiByUser() - const publishProgres = await Admin_getPublishProgresInvestasi() - // console.log(targetTerbesar) - return ( <> - - {/*
{JSON.stringify(totalInvestasiByUser, null,2)}
*/} + ); } diff --git a/src/app/dev/admin/investasi/sub-menu/publish/page.tsx b/src/app/dev/admin/investasi/sub-menu/publish/page.tsx index 02de99d3..f5089589 100644 --- a/src/app/dev/admin/investasi/sub-menu/publish/page.tsx +++ b/src/app/dev/admin/investasi/sub-menu/publish/page.tsx @@ -1,12 +1,9 @@ import { Admin_TablePublishInvestasi } from "@/app_modules/admin/investasi"; -import { adminInvestasi_funGetAllPublish } from "@/app_modules/admin/investasi/fun/get/get_all_publish"; export default async function Page() { - const listInvestasi = await adminInvestasi_funGetAllPublish({page: 1}); - return ( <> - + ); } diff --git a/src/app/dev/admin/investasi/sub-menu/reject/page.tsx b/src/app/dev/admin/investasi/sub-menu/reject/page.tsx index 9f4af9e0..2d832e4b 100644 --- a/src/app/dev/admin/investasi/sub-menu/reject/page.tsx +++ b/src/app/dev/admin/investasi/sub-menu/reject/page.tsx @@ -2,10 +2,10 @@ import { Admin_TableRejectInvestasi } from "@/app_modules/admin/investasi"; import { adminInvestasi_funGetAllReject } from "@/app_modules/admin/investasi/fun/get/get_all_reject"; export default async function Page() { - const dataInvestsi = await adminInvestasi_funGetAllReject({page: 1}); + return ( <> - + ); } diff --git a/src/app/dev/admin/investasi/sub-menu/review/page.tsx b/src/app/dev/admin/investasi/sub-menu/review/page.tsx index 454397aa..08e46f1f 100644 --- a/src/app/dev/admin/investasi/sub-menu/review/page.tsx +++ b/src/app/dev/admin/investasi/sub-menu/review/page.tsx @@ -1,11 +1,9 @@ import { Admin_TableReviewInvestasi } from "@/app_modules/admin/investasi"; -import { adminInvestasi_funGetAllReview } from "@/app_modules/admin/investasi/fun/get/get_all_review"; export default async function Page() { - const dataInvestsi = await adminInvestasi_funGetAllReview({ page: 1 }); return ( <> - + ); } diff --git a/src/app/dev/admin/investasi/table_status/publish/page.tsx b/src/app/dev/admin/investasi/table_status/publish/page.tsx deleted file mode 100644 index 1d9f989c..00000000 --- a/src/app/dev/admin/investasi/table_status/publish/page.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import { Admin_TablePublishInvestasi } from "@/app_modules/admin/investasi"; -import Admin_funGetAllInvestasi from "@/app_modules/admin/investasi/fun/get_all_investasi"; - -export default async function Page() { - const listInvestasi = await Admin_funGetAllInvestasi(); - - return<> - - -} \ No newline at end of file diff --git a/src/app/dev/admin/investasi/table_status/reject/page.tsx b/src/app/dev/admin/investasi/table_status/reject/page.tsx deleted file mode 100644 index 55092f60..00000000 --- a/src/app/dev/admin/investasi/table_status/reject/page.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import { Admin_TableRejectInvestasi } from "@/app_modules/admin/investasi"; -import Admin_funGetAllInvestasi from "@/app_modules/admin/investasi/fun/get_all_investasi"; - -export default async function Page() { - const dataInvestsi = await Admin_funGetAllInvestasi() - return <> - - - -} \ No newline at end of file diff --git a/src/app/dev/admin/investasi/table_status/review/page.tsx b/src/app/dev/admin/investasi/table_status/review/page.tsx deleted file mode 100644 index 350245f7..00000000 --- a/src/app/dev/admin/investasi/table_status/review/page.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import { Admin_TableReviewInvestasi } from "@/app_modules/admin/investasi"; -import Admin_funGetAllInvestasi from "@/app_modules/admin/investasi/fun/get_all_investasi"; - -export default async function Page() { - const dataInvestsi = await Admin_funGetAllInvestasi() - return <> - - -} \ No newline at end of file diff --git a/src/app/dev/admin/job/[id]/page.tsx b/src/app/dev/admin/job/[id]/page.tsx new file mode 100644 index 00000000..770dba26 --- /dev/null +++ b/src/app/dev/admin/job/[id]/page.tsx @@ -0,0 +1,11 @@ +import { AdminJob_ViewDetailPublish } from "@/app_modules/admin/job/_view/detail"; + +async function Page() { + return ( + <> + + + ); +} + +export default Page; diff --git a/src/app/dev/admin/job/child/publish/page.tsx b/src/app/dev/admin/job/child/publish/page.tsx index 28a18d68..9b422249 100644 --- a/src/app/dev/admin/job/child/publish/page.tsx +++ b/src/app/dev/admin/job/child/publish/page.tsx @@ -1,13 +1,9 @@ import { AdminJob_TablePublish } from "@/app_modules/admin/job"; -import adminJob_getListPublish from "@/app_modules/admin/job/fun/get/get_list_publish"; -import { AdminJob_getListTableByStatusId } from "@/app_modules/admin/job/fun/get/get_list_table_by_status_id"; export default async function Page() { - const listPublish = await adminJob_getListPublish({page: 1}) - - return ( - <> - - - ); -} \ No newline at end of file + return ( + <> + + + ); +} diff --git a/src/app/dev/admin/job/child/reject/page.tsx b/src/app/dev/admin/job/child/reject/page.tsx index 79160dd7..19d5cadd 100644 --- a/src/app/dev/admin/job/child/reject/page.tsx +++ b/src/app/dev/admin/job/child/reject/page.tsx @@ -1,13 +1,9 @@ import { AdminJob_TableReject } from "@/app_modules/admin/job"; -import adminJob_getListReject from "@/app_modules/admin/job/fun/get/get_list_reject"; -import { AdminJob_getListTableByStatusId } from "@/app_modules/admin/job/fun/get/get_list_table_by_status_id"; export default async function Page() { - const listReject = await adminJob_getListReject({ page: 1 }); - return ( <> - + ); } diff --git a/src/app/dev/admin/job/child/review/page.tsx b/src/app/dev/admin/job/child/review/page.tsx index 84fd487f..bafef54f 100644 --- a/src/app/dev/admin/job/child/review/page.tsx +++ b/src/app/dev/admin/job/child/review/page.tsx @@ -1,12 +1,10 @@ import { AdminJob_TableReview } from "@/app_modules/admin/job"; -import adminJob_getListReview from "@/app_modules/admin/job/fun/get/get_list_review"; export default async function Page() { - const dataReview = await adminJob_getListReview({ page: 1 }); return ( <> - + ); } diff --git a/src/app/dev/admin/job/main/page.tsx b/src/app/dev/admin/job/main/page.tsx index 140eb795..ab68e029 100644 --- a/src/app/dev/admin/job/main/page.tsx +++ b/src/app/dev/admin/job/main/page.tsx @@ -1,23 +1,9 @@ import { AdminJob_Main } from "@/app_modules/admin/job"; -import { AdminJob_funCountStatusByStatusId } from "@/app_modules/admin/job/fun/count/fun_count_job_by_status_id"; export default async function Page() { - const countPublish = await AdminJob_funCountStatusByStatusId("1") - const countReview = await AdminJob_funCountStatusByStatusId("2"); - const countReject = await AdminJob_funCountStatusByStatusId("4"); - const countArsip = await AdminJob_funCountStatusByStatusId("0") - - - - - return ( - <> - - - ); -} \ No newline at end of file + return ( + <> + + + ); +} diff --git a/src/app/dev/admin/layout.tsx b/src/app/dev/admin/layout.tsx index 212636a4..bbbd7411 100644 --- a/src/app/dev/admin/layout.tsx +++ b/src/app/dev/admin/layout.tsx @@ -5,8 +5,10 @@ import adminNotifikasi_countNotifikasi from "@/app_modules/admin/notifikasi/fun/ import adminNotifikasi_getByUserId from "@/app_modules/admin/notifikasi/fun/get/get_notifikasi_by_user_id"; import React from "react"; import versionUpdate from "../../../../package.json"; +import { redirect } from "next/navigation"; +import { Admin_V3_MainLayout } from "@/app_modules/admin/_components_v3/main_layout"; -export default async function Layout({ +export default async function Layout({ children, }: { children: React.ReactNode; @@ -14,20 +16,32 @@ export default async function Layout({ const userLoginId = await funGetUserIdByToken(); const version = versionUpdate.version; - const dataUser = await funGlobal_getUserById({ userId: userLoginId as string}); - const listNotifikasi = await adminNotifikasi_getByUserId({page: 1}); - const countNotifikasi = await adminNotifikasi_countNotifikasi(); + // const listNotifikasi = await adminNotifikasi_getByUserId({ page: 1 }); + // const countNotifikasi = await adminNotifikasi_countNotifikasi(); + + // const dataUser = await funGlobal_getUserById({ + // userId: userLoginId as string, + // }); + // if (dataUser?.masterUserRoleId == "1") return redirect("/dev/home"); return ( <> - {children} - + */} + + + {children} + ); } diff --git a/src/app/dev/admin/main/dashboard/page.tsx b/src/app/dev/admin/main/dashboard/page.tsx index e046e03a..d7f84c83 100644 --- a/src/app/dev/admin/main/dashboard/page.tsx +++ b/src/app/dev/admin/main/dashboard/page.tsx @@ -1,14 +1,9 @@ import { AdminMain } from "@/app_modules/admin/main_dashboard"; -import { AdminMainDashboard_CountPOrtofolio } from "@/app_modules/admin/main_dashboard/fun/count/fun_count_portofolio"; -import { AdminMainDashboard_CountUser } from "@/app_modules/admin/main_dashboard/fun/count/fun_count_user"; export default async function Page() { - const countUser = await AdminMainDashboard_CountUser(); - const countPorto = await AdminMainDashboard_CountPOrtofolio(); - // await new Promise((a, b) => { // setTimeout(a, 4000); // }); - return ; + return ; } diff --git a/src/app/dev/admin/user-access/page.tsx b/src/app/dev/admin/user-access/page.tsx index ed337fdd..bbba6357 100644 --- a/src/app/dev/admin/user-access/page.tsx +++ b/src/app/dev/admin/user-access/page.tsx @@ -1,12 +1,9 @@ import { AdminUserAccess_View } from "@/app_modules/admin/user-access"; -import adminUserAccess_getListUser from "@/app_modules/admin/user-access/fun/get/get_list_all_user"; export default async function Page() { - const listUser = await adminUserAccess_getListUser({ page: 1 }); - return ( <> - + ); } diff --git a/src/app/dev/admin/vote/[id]/page.tsx b/src/app/dev/admin/vote/[id]/page.tsx new file mode 100644 index 00000000..28b62c71 --- /dev/null +++ b/src/app/dev/admin/vote/[id]/page.tsx @@ -0,0 +1,11 @@ +import { AdminVote_DetailVoting } from "@/app_modules/admin/vote/detail/detail_voting"; + +async function Page() { + return ( + <> + + + ); +} + +export default Page; diff --git a/src/app/dev/admin/vote/child/riwayat/page.tsx b/src/app/dev/admin/vote/child/riwayat/page.tsx index df211c60..32d281ea 100644 --- a/src/app/dev/admin/vote/child/riwayat/page.tsx +++ b/src/app/dev/admin/vote/child/riwayat/page.tsx @@ -1,13 +1,9 @@ import { AdminVote_Riwayat } from "@/app_modules/admin/vote"; -import { adminVote_funGetListRiwayat } from "@/app_modules/admin/vote/fun"; -import { AdminVote_getListTableByStatusId } from "@/app_modules/admin/vote/fun/get/get_list_table_by_status_id"; export default async function Page() { - const dataVote = await adminVote_funGetListRiwayat({page: 1}); - return ( <> - + ); } diff --git a/src/app/dev/admin/vote/child/table_publish/page.tsx b/src/app/dev/admin/vote/child/table_publish/page.tsx index 485a1e7b..94d2b239 100644 --- a/src/app/dev/admin/vote/child/table_publish/page.tsx +++ b/src/app/dev/admin/vote/child/table_publish/page.tsx @@ -1,13 +1,9 @@ import { AdminVote_TablePublish } from "@/app_modules/admin/vote"; -import { AdminVote_getListTableByStatusId } from "@/app_modules/admin/vote/fun/get/get_list_table_by_status_id"; -import { adminVote_funGetListPublish } from "@/app_modules/admin/vote/fun/get/status/get_list_publish"; export default async function Page() { - const dataVote = await adminVote_funGetListPublish({page: 1}); - - return ( - <> - - - ); -} \ No newline at end of file + return ( + <> + + + ); +} diff --git a/src/app/dev/admin/vote/child/table_reject/page.tsx b/src/app/dev/admin/vote/child/table_reject/page.tsx index a941804b..7d26522b 100644 --- a/src/app/dev/admin/vote/child/table_reject/page.tsx +++ b/src/app/dev/admin/vote/child/table_reject/page.tsx @@ -1,11 +1,9 @@ import { AdminVote_TableReject } from "@/app_modules/admin/vote"; -import { adminVote_funGetListReject } from "@/app_modules/admin/vote/fun"; export default async function Page() { - const dataVote = await adminVote_funGetListReject({ page: 1 }); return ( <> - + ); } diff --git a/src/app/dev/admin/vote/child/table_review/page.tsx b/src/app/dev/admin/vote/child/table_review/page.tsx index 2ce5111a..d6417422 100644 --- a/src/app/dev/admin/vote/child/table_review/page.tsx +++ b/src/app/dev/admin/vote/child/table_review/page.tsx @@ -1,12 +1,9 @@ import { AdminVote_TableReview } from "@/app_modules/admin/vote"; -import { adminVote_funGetListReview } from "@/app_modules/admin/vote/fun"; export default async function Page() { - const listVote = await adminVote_funGetListReview({ page: 1 }); - return ( <> - + ); } diff --git a/src/app/dev/admin/vote/main/page.tsx b/src/app/dev/admin/vote/main/page.tsx index 6fefc7ff..cf2dd932 100644 --- a/src/app/dev/admin/vote/main/page.tsx +++ b/src/app/dev/admin/vote/main/page.tsx @@ -2,18 +2,18 @@ import { AdminVote_Main } from "@/app_modules/admin/vote"; import AdminVote_funCountByStatusId from "@/app_modules/admin/vote/fun/count/fun_count_vote_by_status_id"; export default async function Page() { - const countPublish = await AdminVote_funCountByStatusId("1"); - const countReview = await AdminVote_funCountByStatusId("2"); - const countDraft = await AdminVote_funCountByStatusId("0"); - const countReject = await AdminVote_funCountByStatusId("4"); + // const countPublish = await AdminVote_funCountByStatusId("1"); + // const countReview = await AdminVote_funCountByStatusId("2"); + // const countDraft = await AdminVote_funCountByStatusId("0"); + // const countReject = await AdminVote_funCountByStatusId("4"); return ( <> ); diff --git a/src/app/dev/auth/login/page.tsx b/src/app/dev/auth/login/page.tsx deleted file mode 100644 index 9485d7d1..00000000 --- a/src/app/dev/auth/login/page.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import { Login } from "@/app_modules/auth"; -import versionUpdate from "../../../../../package.json"; -import { funCheckCookies } from "@/app_modules/_global/fun/get/fun_check_cookies"; -import { redirect } from "next/navigation"; - -export default async function Page() { - const version = versionUpdate.version; - - // const checkCookies = await funCheckCookies(); - // console.log(checkCookies, "ini halaman login"); - // if (!checkCookies) return redirect("/"); - - return ( - <> - - - ); -} diff --git a/src/app/dev/auth/register/[id]/page.tsx b/src/app/dev/auth/register/[id]/page.tsx deleted file mode 100644 index 04eebc10..00000000 --- a/src/app/dev/auth/register/[id]/page.tsx +++ /dev/null @@ -1,8 +0,0 @@ -import { Register } from "@/app_modules/auth"; -import { auth_getCodeOtpByNumber } from "@/app_modules/auth/fun/get_kode_otp_by_id"; - -export default async function Page({ params }: { params: { id: string } }) { - let otpId = params.id; - const dataOtp = await auth_getCodeOtpByNumber({ kodeId: otpId }); - return ; -} diff --git a/src/app/dev/auth/splash/page.tsx b/src/app/dev/auth/splash/page.tsx deleted file mode 100644 index 7ca33735..00000000 --- a/src/app/dev/auth/splash/page.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import { SplashScreen } from "@/app_modules/auth"; - -export default async function PageSplash() { - return ( - <> - - - ); -} diff --git a/src/app/dev/auth/validasi/[id]/page.tsx b/src/app/dev/auth/validasi/[id]/page.tsx deleted file mode 100644 index eb5cb931..00000000 --- a/src/app/dev/auth/validasi/[id]/page.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import { Validasi } from "@/app_modules/auth"; -import { auth_getCodeOtpByNumber } from "@/app_modules/auth/fun/get_kode_otp_by_id"; - -export default async function Page({ params }: { params: { id: string } }) { - let kodeId = params.id; - const dataOtp = await auth_getCodeOtpByNumber({ kodeId: kodeId }); - - return ; -} diff --git a/src/app/dev/check-cookies/page.tsx b/src/app/dev/check-cookies/page.tsx deleted file mode 100644 index b56d1956..00000000 --- a/src/app/dev/check-cookies/page.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import { RouterAdminDashboard } from "@/app/lib/router_hipmi/router_admin"; -import { RouterHome } from "@/app/lib/router_hipmi/router_home"; -import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; -import { funGlobal_getUserById } from "@/app_modules/_global/fun/get/fun_get_user_by_id"; -import { CheckCookies_UiView } from "@/app_modules/check_cookies"; -import { redirect } from "next/navigation"; - -export default async function Page() { - // const userLoginId = await funGetUserIdByToken(); - // const dataUser = await funGlobal_getUserById({ userId: userLoginId }); - - // if (dataUser?.masterUserRoleId === "1") { - // return redirect(RouterHome.main_home); - // } - - // if (dataUser?.masterUserRoleId !== "1") { - // return redirect(RouterAdminDashboard.splash_admin); - // } - - // return ; -} diff --git a/src/app/dev/colab/create/page.tsx b/src/app/dev/colab/create/page.tsx deleted file mode 100644 index f1d84a65..00000000 --- a/src/app/dev/colab/create/page.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import { Colab_Create } from "@/app_modules/colab"; -import colab_funGetMasterIndustri from "@/app_modules/colab/fun/master/fun_get_master_industri"; - -export default async function Page() { - const listIndustri = await colab_funGetMasterIndustri(); - - return ( - <> - - - ); -} diff --git a/src/app/dev/colab/detail/info-grup/[id]/page.tsx b/src/app/dev/colab/detail/info-grup/[id]/page.tsx deleted file mode 100644 index 375df71c..00000000 --- a/src/app/dev/colab/detail/info-grup/[id]/page.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import prisma from "@/app/lib/prisma"; -import { Colab_DetailInfoGrup } from "@/app_modules/colab"; -import colab_getListAnggotaByRoomId from "@/app_modules/colab/fun/get/room_chat/get_list_anggota_by_room_id"; - -export default async function Page({ params }: { params: { id: string } }) { - let roomId = params.id; - const dataRoom = await colab_getListAnggotaByRoomId(roomId); - - return ( - <> - - - ); -} diff --git a/src/app/dev/colab/detail/main_detail/[id]/page.tsx b/src/app/dev/colab/detail/main_detail/[id]/page.tsx deleted file mode 100644 index 9d3958da..00000000 --- a/src/app/dev/colab/detail/main_detail/[id]/page.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; -import { Colab_MainDetail } from "@/app_modules/colab"; -import colab_funCekPartisipasiById from "@/app_modules/colab/fun/get/cek_partisipasi_by_user_id"; -import colab_getListPartisipanByColabId from "@/app_modules/colab/fun/get/get_list_partisipan_by_id"; -import colab_getOneCollaborationById from "@/app_modules/colab/fun/get/get_one_by_id"; - -export default async function Page({ params }: { params: { id: string } }) { - let colabId = params.id; - const userLoginId = await funGetUserIdByToken(); - - const dataColab = await colab_getOneCollaborationById(colabId); - const listPartisipan = await colab_getListPartisipanByColabId(colabId); - const cekPartisipan = await colab_funCekPartisipasiById(colabId); - - return ( - <> - - - ); -} diff --git a/src/app/dev/colab/detail/proyek/partisipasi/[id]/page.tsx b/src/app/dev/colab/detail/proyek/partisipasi/[id]/page.tsx deleted file mode 100644 index 68b18d99..00000000 --- a/src/app/dev/colab/detail/proyek/partisipasi/[id]/page.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import { Colab_DetailPartisipasiProyek } from "@/app_modules/colab"; -import colab_getListPartisipanByColabId from "@/app_modules/colab/fun/get/get_list_partisipan_by_id"; -import colab_getOneCollaborationById from "@/app_modules/colab/fun/get/get_one_by_id"; - -export default async function Page({params}: {params: {id: string}}) { - const colabId = params.id - const dataColab = await colab_getOneCollaborationById(colabId) - const listPartisipan = await colab_getListPartisipanByColabId(colabId) - - return ( - <> - - - ); -} diff --git a/src/app/dev/colab/detail/proyek/saya/[id]/page.tsx b/src/app/dev/colab/detail/proyek/saya/[id]/page.tsx deleted file mode 100644 index 2c5d724f..00000000 --- a/src/app/dev/colab/detail/proyek/saya/[id]/page.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import { Colab_DetailProyekSaya } from "@/app_modules/colab"; -import colab_getListPartisipanByColabId from "@/app_modules/colab/fun/get/get_list_partisipan_by_id"; -import colab_getOneCollaborationById from "@/app_modules/colab/fun/get/get_one_by_id"; - -export default async function Page({ params }: { params: { id: string } }) { - const colabId = params.id; - const dataColab = await colab_getOneCollaborationById(colabId); - const listPartisipan = await colab_getListPartisipanByColabId(colabId); - - return ( - <> - {/*
{JSON.stringify(listPartisipan, null,2)}
*/} - - - ); -} diff --git a/src/app/dev/colab/edit/[id]/page.tsx b/src/app/dev/colab/edit/[id]/page.tsx deleted file mode 100644 index 40849fef..00000000 --- a/src/app/dev/colab/edit/[id]/page.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import { Colab_Edit } from "@/app_modules/colab"; -import colab_getOneCollaborationById from "@/app_modules/colab/fun/get/get_one_by_id"; -import colab_funGetMasterIndustri from "@/app_modules/colab/fun/master/fun_get_master_industri"; -import _ from "lodash"; - -export default async function Page({ params }: { params: { id: string } }) { - const colabId = params.id; - const dataColab = await colab_getOneCollaborationById(colabId); - const selectedData = _.omit(dataColab, [ - "ProjectCollaboration_Partisipasi", - "Author", - ]); -// console.log(selectedData); -const listIndustri = await colab_funGetMasterIndustri() - - return ( - <> - - - ); -} diff --git a/src/app/dev/colab/main/beranda/page.tsx b/src/app/dev/colab/main/beranda/page.tsx deleted file mode 100644 index c5143fa7..00000000 --- a/src/app/dev/colab/main/beranda/page.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; -import { Colab_Beranda } from "@/app_modules/colab"; -import colab_getListAllProyek from "@/app_modules/colab/fun/get/get_list_all_proyek"; - -export default async function Page() { - const listData = await colab_getListAllProyek({ page: 1 }); - const userLoginId = await funGetUserIdByToken(); - - return ( - <> - - - ); -} diff --git a/src/app/dev/colab/main/grup/page.tsx b/src/app/dev/colab/main/grup/page.tsx deleted file mode 100644 index 2d9237a9..00000000 --- a/src/app/dev/colab/main/grup/page.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import colab_getListRoomChatByAuthorId from "@/app_modules/colab/fun/get/room_chat/get_list_room_by_author_id"; -import Colab_GrupDiskus from "@/app_modules/colab/main/grup"; - -export default async function Page() { - const listRoom = await colab_getListRoomChatByAuthorId({page: 1}); - - return ( - <> - - - ); -} diff --git a/src/app/dev/colab/main/layout.tsx b/src/app/dev/colab/main/layout.tsx deleted file mode 100644 index 1405cf35..00000000 --- a/src/app/dev/colab/main/layout.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import { LayoutColab_Main } from "@/app_modules/colab"; -import colab_CekNotifikasi from "@/app_modules/colab/fun/get/cek_notifikasi"; -import React from "react"; - -export default async function Layout({ - children, -}: { - children: React.ReactNode; -}) { - const cekNotif = await colab_CekNotifikasi(); - - return ( - <> - {children} - - ); -} diff --git a/src/app/dev/colab/main/proyek/page.tsx b/src/app/dev/colab/main/proyek/page.tsx deleted file mode 100644 index abb00e7e..00000000 --- a/src/app/dev/colab/main/proyek/page.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import { Colab_Proyek } from "@/app_modules/colab"; -import colab_getListPartisipasiProyekByAuthorId from "@/app_modules/colab/fun/get/pasrtisipan/get_list_partisipasi_proyek_by_author_id"; -import colab_getListAllProyekSayaByAuthorId from "@/app_modules/colab/fun/get/pasrtisipan/get_list_proyek_saya_by_author_id"; - -export default async function Page() { - const listPartisipasiProyek = await colab_getListPartisipasiProyekByAuthorId({page: 1}) - const listProyekSaya = await colab_getListAllProyekSayaByAuthorId({page: 1}) - - return ( - <> - - - ); -} diff --git a/src/app/dev/donasi/cerita_penggalang/[id]/layout.tsx b/src/app/dev/donasi/cerita_penggalang/[id]/layout.tsx deleted file mode 100644 index 12339470..00000000 --- a/src/app/dev/donasi/cerita_penggalang/[id]/layout.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import { LayoutCeritaPenggalangDonasi } from "@/app_modules/donasi"; -import { Donasi_getOneById } from "@/app_modules/donasi/fun/get/get_one_donasi_by_id"; -import React from "react"; - -export default async function Layout({ - children, - params, -}: { - children: React.ReactNode; - params: { id: string }; -}) { - const dataDonasi = await Donasi_getOneById(params.id); - const statusDonasiId = dataDonasi?.donasiMaster_StatusDonasiId; - return ( - <> - - {children} - - - ); -} diff --git a/src/app/dev/donasi/cerita_penggalang/[id]/page.tsx b/src/app/dev/donasi/cerita_penggalang/[id]/page.tsx deleted file mode 100644 index b9518bed..00000000 --- a/src/app/dev/donasi/cerita_penggalang/[id]/page.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import { CeritaPenggalangDonasi } from "@/app_modules/donasi"; -import Donasi_getCeritaByDonasiId from "@/app_modules/donasi/fun/get/get_cerita_penggalang"; - -export default async function Page({ params }: { params: { id: string } }) { - const dataCerita = await Donasi_getCeritaByDonasiId(params.id); - // console.log(dataCerita) - return ( - <> - - - ); -} diff --git a/src/app/dev/donasi/create/cerita_penggalang/[id]/page.tsx b/src/app/dev/donasi/create/cerita_penggalang/[id]/page.tsx deleted file mode 100644 index 18757e91..00000000 --- a/src/app/dev/donasi/create/cerita_penggalang/[id]/page.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; -import { CreateCeritaPenggalangDonasi } from "@/app_modules/donasi"; -import { Donasi_getTemporaryCreate } from "@/app_modules/donasi/fun/get/get_temporary_create"; - -export default async function Page({ params }: { params: { id: string } }) { - const getTemporaryCreate = await Donasi_getTemporaryCreate(params.id); - const userLoginId = await funGetUserIdByToken(); - - return ( - <> - - - ); -} diff --git a/src/app/dev/donasi/create/create_donasi/page.tsx b/src/app/dev/donasi/create/create_donasi/page.tsx deleted file mode 100644 index 2202dfdf..00000000 --- a/src/app/dev/donasi/create/create_donasi/page.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import { CreateDonasi } from "@/app_modules/donasi"; -import { - Donasi_getMasterDurasi, - Donasi_getMasterKategori, -} from "@/app_modules/donasi/fun"; - -export default async function Page() { - const masterKategori = await Donasi_getMasterKategori(); - const masterDurasi = await Donasi_getMasterDurasi(); - - return ( - - ); -} diff --git a/src/app/dev/donasi/create/create_kabar/[id]/page.tsx b/src/app/dev/donasi/create/create_kabar/[id]/page.tsx deleted file mode 100644 index a9404a35..00000000 --- a/src/app/dev/donasi/create/create_kabar/[id]/page.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import { Donasi_CreateKabar } from "@/app_modules/donasi"; - -export default async function Page({ params }: { params: { id: string } }) { - const donasiId = params.id; - return ( - <> - - - ); -} diff --git a/src/app/dev/donasi/detail/donasi_saya/[id]/page.tsx b/src/app/dev/donasi/detail/donasi_saya/[id]/page.tsx deleted file mode 100644 index 270ca0ca..00000000 --- a/src/app/dev/donasi/detail/donasi_saya/[id]/page.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import { DetailDonasiSaya } from "@/app_modules/donasi"; -import { Donasi_getCountDonatur } from "@/app_modules/donasi/fun/count/get_count_donatur"; -import { Donasi_getOneById } from "@/app_modules/donasi/fun/get/get_one_donasi_by_id"; -import { Donasi_getOneInvoiceById } from "@/app_modules/donasi/fun/get/get_one_invoice_by_id"; - -export default async function Page({ params }: { params: { id: string } }) { - let invoiceId = params.id; - const dataDonasi = await Donasi_getOneInvoiceById(invoiceId); - const countDonatur= await Donasi_getCountDonatur(dataDonasi?.donasiId as any) - - - return ( - <> - - - ); -} diff --git a/src/app/dev/donasi/detail/draft/[id]/page.tsx b/src/app/dev/donasi/detail/draft/[id]/page.tsx deleted file mode 100644 index f15353f6..00000000 --- a/src/app/dev/donasi/detail/draft/[id]/page.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import { DetailDraftDonasi } from "@/app_modules/donasi"; -import { Donasi_getOneById } from "@/app_modules/donasi/fun/get/get_one_donasi_by_id"; - -export default async function Page({ params }: { params: { id: string } }) { - const donasiId = params.id - const dataDonasi = await Donasi_getOneById(donasiId); - - return ( - <> - - - ); -} diff --git a/src/app/dev/donasi/detail/kabar/[id]/page.tsx b/src/app/dev/donasi/detail/kabar/[id]/page.tsx deleted file mode 100644 index d67b5aec..00000000 --- a/src/app/dev/donasi/detail/kabar/[id]/page.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import { DetailKabarDonasi } from "@/app_modules/donasi"; -import { Donasi_getOneKabar } from "@/app_modules/donasi/fun/get/get_one_kabar"; - -export default async function Page({params}: {params: {id: string}}) { - - let kabarId = params.id - const dataDonasi = await Donasi_getOneKabar(kabarId) - - return -} \ No newline at end of file diff --git a/src/app/dev/donasi/detail/main/[id]/layout.tsx b/src/app/dev/donasi/detail/main/[id]/layout.tsx deleted file mode 100644 index ad394a61..00000000 --- a/src/app/dev/donasi/detail/main/[id]/layout.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; -import { LayoutDetailMainDonasi } from "@/app_modules/donasi"; -import { Donasi_getOneById } from "@/app_modules/donasi/fun/get/get_one_donasi_by_id"; -import React from "react"; - -export default async function Layout({ - children, - params, -}: { - children: React.ReactNode; - params: { id: string }; -}) { - const donasiId = params.id; - const getData = await Donasi_getOneById(donasiId); - const authorId = getData?.authorId; - const userLoginId = await funGetUserIdByToken(); - - return ( - <> - - {children} - - - ); -} diff --git a/src/app/dev/donasi/detail/main/[id]/page.tsx b/src/app/dev/donasi/detail/main/[id]/page.tsx deleted file mode 100644 index 6ea7e94c..00000000 --- a/src/app/dev/donasi/detail/main/[id]/page.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; -import { DetailMainDonasi } from "@/app_modules/donasi"; -import { Donasi_getCountDonatur } from "@/app_modules/donasi/fun/count/get_count_donatur"; -import { Donasi_getOneById } from "@/app_modules/donasi/fun/get/get_one_donasi_by_id"; - -export default async function Page({ params }: { params: { id: string } }) { - let donasiId = params.id; - const userLoginId = await funGetUserIdByToken(); - - const dataDonasi = await Donasi_getOneById(donasiId); - const countDonatur = await Donasi_getCountDonatur(donasiId); - - return ( - <> - - - ); -} diff --git a/src/app/dev/donasi/detail/publish/[id]/page.tsx b/src/app/dev/donasi/detail/publish/[id]/page.tsx deleted file mode 100644 index 0e354cb5..00000000 --- a/src/app/dev/donasi/detail/publish/[id]/page.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; -import { DetailPublishDonasi } from "@/app_modules/donasi"; -import { Donasi_getCountDonatur } from "@/app_modules/donasi/fun/count/get_count_donatur"; -import { Donasi_getOneById } from "@/app_modules/donasi/fun/get/get_one_donasi_by_id"; - -export default async function Page({ params }: { params: { id: string } }) { - const dataPublish = await Donasi_getOneById(params.id); - const countDonatur = await Donasi_getCountDonatur(params.id); - const userLoginId = await funGetUserIdByToken(); - - return ( - <> - - - ); -} diff --git a/src/app/dev/donasi/detail/reject/[id]/page.tsx b/src/app/dev/donasi/detail/reject/[id]/page.tsx deleted file mode 100644 index a3dfed4b..00000000 --- a/src/app/dev/donasi/detail/reject/[id]/page.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import { DetailRejectDonasi } from "@/app_modules/donasi"; -import { Donasi_getOneById } from "@/app_modules/donasi/fun/get/get_one_donasi_by_id"; - -export default async function Page({params}: {params: {id: string}}) { - let donasiId= params.id - const dataReject = await Donasi_getOneById(donasiId) - const fileIdImageCerita = dataReject?.CeritaDonasi?.imageId - - return ( - <> - - - ); -} \ No newline at end of file diff --git a/src/app/dev/donasi/detail/review/[id]/page.tsx b/src/app/dev/donasi/detail/review/[id]/page.tsx deleted file mode 100644 index c7a4279b..00000000 --- a/src/app/dev/donasi/detail/review/[id]/page.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import { DetailReviewDonasi } from "@/app_modules/donasi"; -import { Donasi_getOneById } from "@/app_modules/donasi/fun/get/get_one_donasi_by_id"; - -export default async function Page({ params }: { params: { id: string } }) { - const dataDonasi = await Donasi_getOneById(params.id); - - return ( - <> - - - ); -} diff --git a/src/app/dev/donasi/donatur/[id]/page.tsx b/src/app/dev/donasi/donatur/[id]/page.tsx deleted file mode 100644 index 37ecb4e6..00000000 --- a/src/app/dev/donasi/donatur/[id]/page.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import { DonaturDonasi } from "@/app_modules/donasi"; -import { donasi_funGetListDonaturById } from "@/app_modules/donasi/fun/get/get_list_donatur"; - -export default async function Page({ params }: { params: { id: string } }) { - const donasiId = params.id; - const listDonatur = await donasi_funGetListDonaturById({ - page: 1, - donasiId: donasiId, - }); - - return ( - <> - - - ); -} diff --git a/src/app/dev/donasi/edit/edit_cerita/[id]/page.tsx b/src/app/dev/donasi/edit/edit_cerita/[id]/page.tsx deleted file mode 100644 index c1997262..00000000 --- a/src/app/dev/donasi/edit/edit_cerita/[id]/page.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import { EditCeritaPenggalangDonasi } from "@/app_modules/donasi"; -import Donasi_getCeritaByDonasiId from "@/app_modules/donasi/fun/get/get_cerita_penggalang"; - -export default async function Page({ params }: { params: { id: string } }) { - const dataCerita = await Donasi_getCeritaByDonasiId(params.id) - - return ( - <> - - - ); -} diff --git a/src/app/dev/donasi/edit/edit_donasi/[id]/page.tsx b/src/app/dev/donasi/edit/edit_donasi/[id]/page.tsx deleted file mode 100644 index cb62d88a..00000000 --- a/src/app/dev/donasi/edit/edit_donasi/[id]/page.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import { EditDonasi } from "@/app_modules/donasi"; -import { Donasi_getMasterDurasi, Donasi_getMasterKategori } from "@/app_modules/donasi/fun"; -import { Donasi_getOneById } from "@/app_modules/donasi/fun/get/get_one_donasi_by_id"; - -export default async function Page({params}: {params: {id: string}}) { - const dataDonasi = await Donasi_getOneById(params.id) - const masterKategori = await Donasi_getMasterKategori() - const masterDurasi = await Donasi_getMasterDurasi() - - return ( - <> - - - ); -} diff --git a/src/app/dev/donasi/edit/edit_rekening/[id]/page.tsx b/src/app/dev/donasi/edit/edit_rekening/[id]/page.tsx deleted file mode 100644 index 69f198dc..00000000 --- a/src/app/dev/donasi/edit/edit_rekening/[id]/page.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import { Donasi_EditRekening } from "@/app_modules/donasi"; -import { Donasi_getOneById } from "@/app_modules/donasi/fun/get/get_one_donasi_by_id"; - -export default async function Page({ params }: { params: { id: string } }) { - let donasiId = params.id; - const data = await Donasi_getOneById(donasiId); - const dataDonasi = { - id: data?.id, - namaBank: data?.namaBank, - rekening: data?.rekening, - }; - return ( - <> - - - ); -} diff --git a/src/app/dev/donasi/edit/kabar/[id]/page.tsx b/src/app/dev/donasi/edit/kabar/[id]/page.tsx deleted file mode 100644 index d8990352..00000000 --- a/src/app/dev/donasi/edit/kabar/[id]/page.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import { Donasi_UiEditKabar } from "@/app_modules/donasi/_ui"; -import { Donasi_getOneKabar } from "@/app_modules/donasi/fun/get/get_one_kabar"; -import React from "react"; - -async function Page({ params }: { params: { id: string } }) { - const kabarId = params.id; - const dataKabar = await Donasi_getOneKabar(kabarId); - - return ( - <> - - - ); -} - -export default Page; diff --git a/src/app/dev/donasi/edit/update_kabar/[id]/page.tsx b/src/app/dev/donasi/edit/update_kabar/[id]/page.tsx deleted file mode 100644 index d89232dd..00000000 --- a/src/app/dev/donasi/edit/update_kabar/[id]/page.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import { UpdateKabarDonasi } from "@/app_modules/donasi"; -import { Donasi_getOneKabar } from "@/app_modules/donasi/fun/get/get_one_kabar"; - -export default async function Page({params}: {params: {id: string}}) { - let kabarId = params.id - const dataKabar = await Donasi_getOneKabar(kabarId) - - return<> - - -} \ No newline at end of file diff --git a/src/app/dev/donasi/kabar/[id]/page.tsx b/src/app/dev/donasi/kabar/[id]/page.tsx deleted file mode 100644 index 555f77bf..00000000 --- a/src/app/dev/donasi/kabar/[id]/page.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import { KabarDonasi } from "@/app_modules/donasi"; -import { Donasi_getOneKabar } from "@/app_modules/donasi/fun/get/get_one_kabar"; - -export default async function Page({ params }: { params: { id: string } }) { - let kabarId = params.id; - const dataDonasi = await Donasi_getOneKabar(kabarId); - - return ( - <> - - - ); -} diff --git a/src/app/dev/donasi/kabar/daftar/[id]/page.tsx b/src/app/dev/donasi/kabar/daftar/[id]/page.tsx deleted file mode 100644 index 3c942ef6..00000000 --- a/src/app/dev/donasi/kabar/daftar/[id]/page.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import { Donasi_UiDaftarKabar } from "@/app_modules/donasi/_ui"; -import { donasi_funGetListKabarById } from "@/app_modules/donasi/fun/get/get_list_kabar"; - -async function Page({ params }: { params: { id: string } }) { - const donasiId = params.id; - const listKabar = await donasi_funGetListKabarById({ - page: 1, - donasiId: donasiId, - }); - - return ( - <> - - - ); -} - -export default Page; diff --git a/src/app/dev/donasi/kabar/rekap/[id]/page.tsx b/src/app/dev/donasi/kabar/rekap/[id]/page.tsx deleted file mode 100644 index ceb97bab..00000000 --- a/src/app/dev/donasi/kabar/rekap/[id]/page.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import { Donasi_UiRekapKabar } from "@/app_modules/donasi/_ui"; -import { donasi_funGetListKabarById } from "@/app_modules/donasi/fun/get/get_list_kabar"; - -async function Page({ params }: { params: { id: string } }) { - const donasiId = params.id; - const listKabar = await donasi_funGetListKabarById({ - page: 1, - donasiId: donasiId, - }); - - return ( - <> - - - ); -} - -export default Page; diff --git a/src/app/dev/donasi/main/beranda/page.tsx b/src/app/dev/donasi/main/beranda/page.tsx deleted file mode 100644 index 21e01bd7..00000000 --- a/src/app/dev/donasi/main/beranda/page.tsx +++ /dev/null @@ -1,8 +0,0 @@ -import { MainDonasi } from "@/app_modules/donasi"; -import { donasi_funGetAllPublish } from "@/app_modules/donasi/fun/get/get_list_beranda"; - -export default async function Page() { - const listDonasi = await donasi_funGetAllPublish({ page: 1 }); - // console.log(listDonasi) - return ; -} diff --git a/src/app/dev/donasi/main/donasi_saya/page.tsx b/src/app/dev/donasi/main/donasi_saya/page.tsx deleted file mode 100644 index bbb25e4a..00000000 --- a/src/app/dev/donasi/main/donasi_saya/page.tsx +++ /dev/null @@ -1,8 +0,0 @@ -import { DonasiSayaDonasi } from "@/app_modules/donasi"; -import { donasi_funGetAllInvoiceByAuthorId } from "@/app_modules/donasi/fun/get/get_all_invoice_by_author_id"; - -export default async function Page() { - const listInvoice = await donasi_funGetAllInvoiceByAuthorId({ page: 1 }); - - return ; -} diff --git a/src/app/dev/donasi/main/galang_dana/[id]/page.tsx b/src/app/dev/donasi/main/galang_dana/[id]/page.tsx deleted file mode 100644 index e663633a..00000000 --- a/src/app/dev/donasi/main/galang_dana/[id]/page.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import { PostingDonasi } from "@/app_modules/donasi"; -import { donasi_funGetAllStatusById } from "@/app_modules/donasi/fun"; -import { donasi_funMasterStatusDonasi } from "@/app_modules/donasi/fun/master/get_status_donasi"; - -export default async function Page({ params }: { params: { id: string } }) { - const statusId = params.id; - - const listStatus = await donasi_funMasterStatusDonasi(); - const dataDonasi = await donasi_funGetAllStatusById({ - page: 1, - statusId: statusId, - }); - - return ( - <> - - - ); -} diff --git a/src/app/dev/donasi/penggalang_dana/[id]/page.tsx b/src/app/dev/donasi/penggalang_dana/[id]/page.tsx deleted file mode 100644 index a5f4c564..00000000 --- a/src/app/dev/donasi/penggalang_dana/[id]/page.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import { PenggalangDanaDonasi } from "@/app_modules/donasi"; -import { Donasi_getAuthorById } from "@/app_modules/donasi/fun/get/get_author_by_id"; - -export default async function Page({ params }: { params: { id: string } }) { - let authorId = params.id; - const dataPenggalang = await Donasi_getAuthorById(authorId); - - - return ( - <> - - - ); -} diff --git a/src/app/dev/donasi/proses_donasi/invoice/[id]/layout.tsx b/src/app/dev/donasi/proses_donasi/invoice/[id]/layout.tsx deleted file mode 100644 index fb862b01..00000000 --- a/src/app/dev/donasi/proses_donasi/invoice/[id]/layout.tsx +++ /dev/null @@ -1,8 +0,0 @@ -import { LayoutDonasi_InvoiceProses } from "@/app_modules/donasi"; -import React from "react"; - -export default async function Layout({children}: {children: React.ReactNode}) { - return<> - {children} - -} \ No newline at end of file diff --git a/src/app/dev/donasi/proses_donasi/invoice/[id]/page.tsx b/src/app/dev/donasi/proses_donasi/invoice/[id]/page.tsx deleted file mode 100644 index 291b81f7..00000000 --- a/src/app/dev/donasi/proses_donasi/invoice/[id]/page.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import { Donasi_InvoiceProses } from "@/app_modules/donasi"; -import { Donasi_getOneInvoiceById } from "@/app_modules/donasi/fun/get/get_one_invoice_by_id"; - -export default async function Page({ params }: { params: { id: string } }) { - let invoiceId = params.id; - const dataInvoice = await Donasi_getOneInvoiceById(invoiceId); - - return ; -} diff --git a/src/app/dev/donasi/proses_donasi/metode_pembayaran/[id]/layout.tsx b/src/app/dev/donasi/proses_donasi/metode_pembayaran/[id]/layout.tsx deleted file mode 100644 index 8e35d0c8..00000000 --- a/src/app/dev/donasi/proses_donasi/metode_pembayaran/[id]/layout.tsx +++ /dev/null @@ -1,8 +0,0 @@ -import { LayoutDonasi_MetodePembayaran } from "@/app_modules/donasi"; -import React from "react"; - -export default async function Layout({children}: {children: React.ReactNode}) { - return<> - {children} - -} \ No newline at end of file diff --git a/src/app/dev/donasi/proses_donasi/metode_pembayaran/[id]/page.tsx b/src/app/dev/donasi/proses_donasi/metode_pembayaran/[id]/page.tsx deleted file mode 100644 index 99490dec..00000000 --- a/src/app/dev/donasi/proses_donasi/metode_pembayaran/[id]/page.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; -import { Donasi_MetodePembayaran } from "@/app_modules/donasi"; -import { Donasi_getMasterBank } from "@/app_modules/donasi/fun/master/get_bank"; - -export default async function Page({ params }: { params: { id: string } }) { - let donasiId = params.id; - const listBank = await Donasi_getMasterBank(); - const userLoginId = await funGetUserIdByToken(); - - return ( - <> - - - ); -} diff --git a/src/app/dev/donasi/proses_donasi/proses_transaksi/[id]/layout.tsx b/src/app/dev/donasi/proses_donasi/proses_transaksi/[id]/layout.tsx deleted file mode 100644 index ffd6310d..00000000 --- a/src/app/dev/donasi/proses_donasi/proses_transaksi/[id]/layout.tsx +++ /dev/null @@ -1,8 +0,0 @@ -import { LayoutDonasi_ProsesTransaksi } from "@/app_modules/donasi"; -import React from "react"; - -export default async function Layout({children}:{children: React.ReactNode}) { - return<> - {children} - -} \ No newline at end of file diff --git a/src/app/dev/donasi/proses_donasi/proses_transaksi/[id]/page.tsx b/src/app/dev/donasi/proses_donasi/proses_transaksi/[id]/page.tsx deleted file mode 100644 index 3976b1aa..00000000 --- a/src/app/dev/donasi/proses_donasi/proses_transaksi/[id]/page.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import { Donasi_ProsesTransaksi } from "@/app_modules/donasi"; -import { Donasi_getOneInvoiceById } from "@/app_modules/donasi/fun/get/get_one_invoice_by_id"; -import { donasi_getOneStatusInvoiceById } from "@/app_modules/donasi/fun/get/get_one_status_invoice_by_id"; -import donasi_getMasterNomorAdmin from "@/app_modules/donasi/fun/master/get_nomor_admin"; - -export default async function Page({ params }: { params: { id: string } }) { - let invoiceId = params.id; - const nomorAdmin = await donasi_getMasterNomorAdmin(); - const statusInvoice = await donasi_getOneStatusInvoiceById({invoiceId: invoiceId}) - // console.log(statusInvoice) - - return ( - <> - - - ); -} diff --git a/src/app/dev/event/create/page.tsx b/src/app/dev/event/create/page.tsx deleted file mode 100644 index 5363ccb1..00000000 --- a/src/app/dev/event/create/page.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; -import { Event_Create } from "@/app_modules/event"; -import { Event_getMasterTipeAcara } from "@/app_modules/event/fun/master/get_tipe_acara"; - -export default async function Page() { - const userLoginId = await funGetUserIdByToken(); - const listTipeAcara = await Event_getMasterTipeAcara(); - - return ( - - ); -} diff --git a/src/app/dev/event/detail/draft/[id]/page.tsx b/src/app/dev/event/detail/draft/[id]/page.tsx deleted file mode 100644 index 87f94b9e..00000000 --- a/src/app/dev/event/detail/draft/[id]/page.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import { Event_DetailDraft } from "@/app_modules/event"; -import { event_getOneById } from "@/app_modules/event/fun/get/get_one_by_id"; - -export default async function Page({ params }: { params: { id: string } }) { - const eventId = params.id; - const dataEvent = await event_getOneById(eventId); - return ( - - ); -} diff --git a/src/app/dev/event/detail/kontribusi/[id]/page.tsx b/src/app/dev/event/detail/kontribusi/[id]/page.tsx deleted file mode 100644 index 5678dc7a..00000000 --- a/src/app/dev/event/detail/kontribusi/[id]/page.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import { Event_DetailKontribusi } from "@/app_modules/event"; -import { Event_countTotalPesertaById } from "@/app_modules/event/fun/count/count_total_peserta_by_id"; -import { Event_getListPesertaById } from "@/app_modules/event/fun/get/get_list_peserta_by_id"; -import { event_getOneById } from "@/app_modules/event/fun/get/get_one_by_id"; - -export default async function Page({ params }: { params: { id: string } }) { - let eventId = params.id; - const dataEvent = await event_getOneById(eventId); - const listKontributor = await Event_getListPesertaById(eventId); - const totalPeserta = await Event_countTotalPesertaById(eventId) - return ( - <> - - - ); -} diff --git a/src/app/dev/event/detail/main/[id]/page.tsx b/src/app/dev/event/detail/main/[id]/page.tsx deleted file mode 100644 index 9f42a181..00000000 --- a/src/app/dev/event/detail/main/[id]/page.tsx +++ /dev/null @@ -1,28 +0,0 @@ -import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; -import { Event_DetailMain } from "@/app_modules/event"; -import { Event_countTotalPesertaById } from "@/app_modules/event/fun/count/count_total_peserta_by_id"; -import { Event_CekUserJoinById } from "@/app_modules/event/fun/get/cek_user_join_by_id"; -import { Event_getListPesertaById } from "@/app_modules/event/fun/get/get_list_peserta_by_id"; -import { event_getOneById } from "@/app_modules/event/fun/get/get_one_by_id"; - -export default async function Page({ params }: { params: { id: string } }) { - let eventId = params.id; - const userLoginId : any= await funGetUserIdByToken(); - - const dataEvent = await event_getOneById(eventId); - const listPeserta = await Event_getListPesertaById(eventId); - const isJoin = await Event_CekUserJoinById(eventId, userLoginId); - const totalPeserta = await Event_countTotalPesertaById(eventId); - - return ( - <> - - - ); -} diff --git a/src/app/dev/event/detail/publish/[id]/page.tsx b/src/app/dev/event/detail/publish/[id]/page.tsx deleted file mode 100644 index 4388c255..00000000 --- a/src/app/dev/event/detail/publish/[id]/page.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import { Event_DetailPublish } from "@/app_modules/event"; -import { Event_countTotalPesertaById } from "@/app_modules/event/fun/count/count_total_peserta_by_id"; -import { Event_getListPesertaById } from "@/app_modules/event/fun/get/get_list_peserta_by_id"; -import { event_getOneById } from "@/app_modules/event/fun/get/get_one_by_id"; - -export default async function Page({ params }: { params: { id: string } }) { - let eventId = params.id; - const dataEvent = await event_getOneById(eventId); - const listPeserta = await Event_getListPesertaById(eventId); - const totalPeserta = await Event_countTotalPesertaById(eventId); - - - return ( - - ); -} diff --git a/src/app/dev/event/detail/reject/[id]/page.tsx b/src/app/dev/event/detail/reject/[id]/page.tsx deleted file mode 100644 index 9a8c6fd1..00000000 --- a/src/app/dev/event/detail/reject/[id]/page.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import { Event_DetailReject } from "@/app_modules/event"; -import { event_getOneById } from "@/app_modules/event/fun/get/get_one_by_id"; - -export default async function Page({params}: {params: {id: string}}) { - let eventId = params.id - const dataEvent = await event_getOneById(eventId) - - return ; -} diff --git a/src/app/dev/event/detail/review/[id]/page.tsx b/src/app/dev/event/detail/review/[id]/page.tsx deleted file mode 100644 index 8ac802ff..00000000 --- a/src/app/dev/event/detail/review/[id]/page.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import { Event_DetailReview } from "@/app_modules/event"; -import { event_getOneById } from "@/app_modules/event/fun/get/get_one_by_id"; - - -export default async function Page({params}: {params: {id: string}}) { - let eventId = params.id - const dataEvent = await event_getOneById(eventId) - - return ; -} diff --git a/src/app/dev/event/detail/riwayat/[id]/page.tsx b/src/app/dev/event/detail/riwayat/[id]/page.tsx deleted file mode 100644 index 2f506396..00000000 --- a/src/app/dev/event/detail/riwayat/[id]/page.tsx +++ /dev/null @@ -1,22 +0,0 @@ - -import { Event_DetailRiwayat } from "@/app_modules/event"; -import { Event_countTotalPesertaById } from "@/app_modules/event/fun/count/count_total_peserta_by_id"; -import { Event_getListPesertaById } from "@/app_modules/event/fun/get/get_list_peserta_by_id"; -import { event_getOneById } from "@/app_modules/event/fun/get/get_one_by_id"; - -export default async function Page({ params }: { params: { id: string } }) { - let eventId = params.id; - const dataEvent = await event_getOneById(eventId); - const listPeserta = await Event_getListPesertaById(eventId); - const totalPeserta = await Event_countTotalPesertaById(eventId); - - return ( - <> - - - ); -} diff --git a/src/app/dev/event/edit/[id]/layout.tsx b/src/app/dev/event/edit/[id]/layout.tsx deleted file mode 100644 index 2288974b..00000000 --- a/src/app/dev/event/edit/[id]/layout.tsx +++ /dev/null @@ -1,8 +0,0 @@ -import { LayoutEvent_Edit } from "@/app_modules/event"; -import React from "react"; - -export default async function Layout({children}: {children: React.ReactNode}) { - return <> - {children} - -} \ No newline at end of file diff --git a/src/app/dev/event/edit/[id]/page.tsx b/src/app/dev/event/edit/[id]/page.tsx deleted file mode 100644 index e1991957..00000000 --- a/src/app/dev/event/edit/[id]/page.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import { Event_Edit } from "@/app_modules/event"; -import { event_getOneById } from "@/app_modules/event/fun/get/get_one_by_id"; -import { Event_getMasterTipeAcara } from "@/app_modules/event/fun/master/get_tipe_acara"; -import _ from "lodash"; - -export default async function Page({ params }: { params: { id: string } }) { - let eventId = params.id; - const data = await event_getOneById(eventId); - const dataEvent = _.omit(data, [ - "Author", - "EventMaster_Status", - "Event_Peserta", - "createdAt", - "updatedAt", - "active", - ]); - - const listTipeAcara = await Event_getMasterTipeAcara() - - return ( - <> - - - ); -} diff --git a/src/app/dev/event/main/beranda/page.tsx b/src/app/dev/event/main/beranda/page.tsx deleted file mode 100644 index e5201847..00000000 --- a/src/app/dev/event/main/beranda/page.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import { Event_Beranda } from "@/app_modules/event"; -import { event_getListAllPublish } from "@/app_modules/event/fun/get/get_list_all_publish"; - -export default async function Page() { - const dataEvent = await event_getListAllPublish({ page: 1 }); - - return ( - <> - - - ); -} diff --git a/src/app/dev/event/main/layout.tsx b/src/app/dev/event/main/layout.tsx deleted file mode 100644 index f7a4ce5d..00000000 --- a/src/app/dev/event/main/layout.tsx +++ /dev/null @@ -1,8 +0,0 @@ -import { LayoutEvent_Main } from "@/app_modules/event"; -import React from "react"; - -export default async function Layout({children}:{children: React.ReactNode}) { - return<> - {children} - -} \ No newline at end of file diff --git a/src/app/dev/event/main/riwayat/[id]/page.tsx b/src/app/dev/event/main/riwayat/[id]/page.tsx deleted file mode 100644 index 024aa414..00000000 --- a/src/app/dev/event/main/riwayat/[id]/page.tsx +++ /dev/null @@ -1,32 +0,0 @@ -import { Event_Riwayat } from "@/app_modules/event"; -import { event_getListRiwayatSaya } from "@/app_modules/event/fun/get/riwayat/get_list_riwayat_saya"; -import { event_getListSemuaRiwayat } from "@/app_modules/event/fun/get/riwayat/get_list_semua_riwayat"; - -export default async function Page({ params }: { params: { id: string } }) { - let statusRiwayatId = params.id; - - const dataSemuaRiwayat = await event_getListSemuaRiwayat({ page: 1 }); - const dataRiwayatSaya = await event_getListRiwayatSaya({ page: 1 }); - - if (statusRiwayatId == "1") { - return ( - <> - - - ); - } - - if (statusRiwayatId == "2") { - return ( - <> - - - ); - } -} diff --git a/src/app/dev/event/main/status/[id]/page.tsx b/src/app/dev/event/main/status/[id]/page.tsx deleted file mode 100644 index b2c2c353..00000000 --- a/src/app/dev/event/main/status/[id]/page.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import { Event_StatusPage } from "@/app_modules/event"; -import { - event_getAllByStatusId, - event_getMasterStatus, -} from "@/app_modules/event/fun"; - -async function Page({ params }: { params: { id: string } }) { - let statusId = params.id; - const listStatus = await event_getMasterStatus(); - - const dataStatus = await event_getAllByStatusId({ - page: 1, - statusId: statusId, - }); - - return ( - <> - - - ); -} - -export default Page; diff --git a/src/app/dev/forum/create/page.tsx b/src/app/dev/forum/create/page.tsx deleted file mode 100644 index 68e10889..00000000 --- a/src/app/dev/forum/create/page.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import { Forum_Create } from "@/app_modules/forum"; - -export default async function Page() { - return ( - <> - - - ); -} diff --git a/src/app/dev/forum/detail/main-detail/[id]/page.tsx b/src/app/dev/forum/detail/main-detail/[id]/page.tsx deleted file mode 100644 index c47d7783..00000000 --- a/src/app/dev/forum/detail/main-detail/[id]/page.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import { RouterForum } from "@/app/lib/router_hipmi/router_forum"; -import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; -import Forum_MainDetail from "@/app_modules/forum/detail/main_detail"; -import { forum_countTotalKomenById } from "@/app_modules/forum/fun/count/count_total_komentar_by_id"; -import { forum_funGetAllKomentarById } from "@/app_modules/forum/fun/get/get_all_komentar_by_id"; -import { forum_getOnePostingById } from "@/app_modules/forum/fun/get/get_one_posting_by_id"; -import { redirect } from "next/navigation"; - -export default async function Page({ params }: { params: { id: string } }) { - let postingId = params.id; - const userLoginId = await funGetUserIdByToken(); - - const dataPosting = await forum_getOnePostingById(postingId); - const listKomentar = await forum_funGetAllKomentarById({ - postingId: postingId, - page: 1, - }); - - // dataPosting?.isActive === false && redirect(RouterForum.beranda); - - const countKomentar = await forum_countTotalKomenById(postingId); - - return ( - <> - - - ); -} diff --git a/src/app/dev/forum/detail/report-komentar/[id]/page.tsx b/src/app/dev/forum/detail/report-komentar/[id]/page.tsx deleted file mode 100644 index afb7f262..00000000 --- a/src/app/dev/forum/detail/report-komentar/[id]/page.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import { Forum_DetailReportKomentar } from "@/app_modules/forum"; -import forum_funGetOneReportKomentarById from "@/app_modules/forum/fun/get/get_one_report_komentar_by_id"; - -export default async function Page({ params }: { params: { id: string } }) { - const komentarId = params.id; - const dataKomentar = await forum_funGetOneReportKomentarById({ komentarId: komentarId }); - - return ( - <> - - - ); -} diff --git a/src/app/dev/forum/detail/report-posting/[id]/page.tsx b/src/app/dev/forum/detail/report-posting/[id]/page.tsx deleted file mode 100644 index faa3d24a..00000000 --- a/src/app/dev/forum/detail/report-posting/[id]/page.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import { Forum_DetailReportPosting } from "@/app_modules/forum"; -import forum_funGetOneReportedPostingById from "@/app_modules/forum/fun/get/get_one_posting_reported_by_id"; - -export default async function Page({params}: {params: {id: string}}) { - const postingId = params.id - const dataPosting = await forum_funGetOneReportedPostingById({postingId: postingId}) - return ( - <> - - - ); -} diff --git a/src/app/dev/forum/edit/komentar/[id]/loading.tsx b/src/app/dev/forum/edit/komentar/[id]/loading.tsx deleted file mode 100644 index 380b3fcd..00000000 --- a/src/app/dev/forum/edit/komentar/[id]/loading.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import ComponentGlobal_V2_LoadingPage from "@/app_modules/_global/loading_page_v2"; - -export default async function Page() { - return ( - <> - - - ); -} diff --git a/src/app/dev/forum/edit/posting/[id]/page.tsx b/src/app/dev/forum/edit/posting/[id]/page.tsx deleted file mode 100644 index 292059f4..00000000 --- a/src/app/dev/forum/edit/posting/[id]/page.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import { Forum_EditPosting } from "@/app_modules/forum"; -import { forum_getOnePostingById } from "@/app_modules/forum/fun/get/get_one_posting_by_id"; - -export default async function Page({ params }: { params: { id: string } }) { - let postingId = params.id; - const dataPosting = await forum_getOnePostingById(postingId) - - return ( - <> - - - ); -} diff --git a/src/app/dev/forum/forumku/[id]/layout.tsx b/src/app/dev/forum/forumku/[id]/layout.tsx deleted file mode 100644 index 1043a279..00000000 --- a/src/app/dev/forum/forumku/[id]/layout.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import { LayoutForum_Forumku } from "@/app_modules/forum"; -import { user_getOneByUserId } from "@/app_modules/home/fun/get/get_one_user_by_id"; -import React from "react"; - -export default async function Layout({ - children, - params, -}: { - children: React.ReactNode; - params: { id: string }; -}) { - const authorId = params.id; - const dataAuthor = await user_getOneByUserId(authorId); - - return ( - <> - - {children} - - - ); -} diff --git a/src/app/dev/forum/forumku/[id]/page.tsx b/src/app/dev/forum/forumku/[id]/page.tsx deleted file mode 100644 index b4d4391f..00000000 --- a/src/app/dev/forum/forumku/[id]/page.tsx +++ /dev/null @@ -1,44 +0,0 @@ -import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; -import { Forum_Forumku } from "@/app_modules/forum"; -import { forum_countPostingByAuthorId } from "@/app_modules/forum/fun/count/count_posting_by_author_id"; -import { forum_getAllPostingByAuhtorId } from "@/app_modules/forum/fun/get/get_list_posting_by_author_id"; -import { user_getOneByUserId } from "@/app_modules/home/fun/get/get_one_user_by_id"; -import _ from "lodash"; - -export default async function Page({ params }: { params: { id: string } }) { - const authorId = params.id; - const userLoginId = await funGetUserIdByToken(); - - const dataAuthor = await user_getOneByUserId(authorId); - const auhtorSelectedData = _.omit(dataAuthor, [ - "Profile.email", - "Profile.alamat", - "Profile.jenisKelamin", - "Profile.createdAt", - "Profile.updatedAt", - "Profile.imagesBackgroundId", - ]); - // console.log(dataAuthor) - // console.log(auhtorSelectedData) - - // await new Promise((a, b) => { - // setTimeout(a, 1000); - // }); - - const dataPosting = await forum_getAllPostingByAuhtorId({ - authorId: authorId, - page: 1, - }); - const totalPosting = await forum_countPostingByAuthorId(authorId); - - return ( - <> - - - ); -} diff --git a/src/app/dev/forum/main/layout.tsx b/src/app/dev/forum/main/layout.tsx deleted file mode 100644 index 12a9fc28..00000000 --- a/src/app/dev/forum/main/layout.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; -import { LayoutForum_Main } from "@/app_modules/forum"; -import { user_getOneByUserId } from "@/app_modules/home/fun/get/get_one_user_by_id"; -import React from "react"; - -export default async function Layout({ - children, -}: { - children: React.ReactNode; -}) { - const userLoginId = await funGetUserIdByToken(); - const dataAuthor = await user_getOneByUserId(userLoginId as string); - - return ( - <> - - {children} - - - ); -} diff --git a/src/app/dev/forum/main/page.tsx b/src/app/dev/forum/main/page.tsx deleted file mode 100644 index 45b09bac..00000000 --- a/src/app/dev/forum/main/page.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; -import { Forum_Beranda } from "@/app_modules/forum"; -import { forum_new_getAllPosting } from "@/app_modules/forum/fun/get/new_get_all_posting"; - -export default async function Page() { - const userLoginId = await funGetUserIdByToken(); - const listForum = await forum_new_getAllPosting({ page: 1 }); - - return ( - <> - - - ); -} diff --git a/src/app/dev/forum/report/komentar-lainnya/[id]/page.tsx b/src/app/dev/forum/report/komentar-lainnya/[id]/page.tsx deleted file mode 100644 index 4e39744a..00000000 --- a/src/app/dev/forum/report/komentar-lainnya/[id]/page.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; -import { Forum_ReportKomentarLainnya } from "@/app_modules/forum"; - -export default async function Page({ params }: { params: { id: string } }) { - let komentarId = params.id; - const userLoginId = await funGetUserIdByToken(); - - return ( - <> - - - ); -} diff --git a/src/app/dev/forum/report/komentar/[id]/page.tsx b/src/app/dev/forum/report/komentar/[id]/page.tsx deleted file mode 100644 index e88c332d..00000000 --- a/src/app/dev/forum/report/komentar/[id]/page.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; -import { Forum_ReportKomentar } from "@/app_modules/forum"; -import { forum_getMasterKategoriReport } from "@/app_modules/forum/fun/master/get_master_kategori_report"; - -export default async function Page({ params }: { params: { id: string } }) { - let komentarId = params.id; - const userLoginId = await funGetUserIdByToken(); - - const listReport = await forum_getMasterKategoriReport(); - - - - return ( - <> - - - ); -} diff --git a/src/app/dev/forum/report/posting-lainnya/[id]/page.tsx b/src/app/dev/forum/report/posting-lainnya/[id]/page.tsx deleted file mode 100644 index d376be6e..00000000 --- a/src/app/dev/forum/report/posting-lainnya/[id]/page.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; -import { Forum_ReportPostingLainnya } from "@/app_modules/forum"; - -export default async function Page({ params }: { params: { id: string } }) { - let postingId = params.id; - const userLoginId = await funGetUserIdByToken(); - - return ( - <> - - - ); -} diff --git a/src/app/dev/forum/report/posting/[id]/page.tsx b/src/app/dev/forum/report/posting/[id]/page.tsx deleted file mode 100644 index 4cecc0da..00000000 --- a/src/app/dev/forum/report/posting/[id]/page.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; -import { Forum_ReportPosting } from "@/app_modules/forum"; -import { forum_getMasterKategoriReport } from "@/app_modules/forum/fun/master/get_master_kategori_report"; - -export default async function Page({ params }: { params: { id: string } }) { - let postingId = params.id; - const userLoginId = await funGetUserIdByToken(); - - const listReport = await forum_getMasterKategoriReport(); - - return ( - <> - - - ); -} diff --git a/src/app/dev/home/page.tsx b/src/app/dev/home/page.tsx deleted file mode 100644 index 9e8826a8..00000000 --- a/src/app/dev/home/page.tsx +++ /dev/null @@ -1,35 +0,0 @@ -import { RouterAdminDashboard } from "@/app/lib/router_hipmi/router_admin"; -import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; -import { HomeView } from "@/app_modules/home"; -import { user_getOneByUserId } from "@/app_modules/home/fun/get/get_one_user_by_id"; -import { job_getTwoForHomeView } from "@/app_modules/job/fun/get/get_two_for_home_view"; -import notifikasi_countUserNotifikasi from "@/app_modules/notifikasi/fun/count/fun_count_by_id"; - -import { cookies } from "next/headers"; -import { redirect } from "next/navigation"; - -export default async function PageHome() { - const userLoginId = await funGetUserIdByToken(); - const dataUser = await user_getOneByUserId(userLoginId as string); - const dataJob = await job_getTwoForHomeView(); - const countNotifikasi = await notifikasi_countUserNotifikasi(); - - // console.log(userLoginId, "ini di home"); - // console.log(dataUser, "ini di home"); - - // if (dataUser?.active === false) { - // return redirect(RouterHome.home_user_non_active); - // } - if (dataUser?.masterUserRoleId === "2" || dataUser?.masterUserRoleId === "3") - return redirect(RouterAdminDashboard.main_admin); - - return ( - <> - - - ); -} diff --git a/src/app/dev/investasi/berita/[id]/page.tsx b/src/app/dev/investasi/berita/[id]/page.tsx deleted file mode 100644 index 6e6e573d..00000000 --- a/src/app/dev/investasi/berita/[id]/page.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import { investasi_funGetOneBeritaById } from "@/app_modules/investasi/_fun"; -import { Investasi_UiDetailBerita } from "@/app_modules/investasi/_ui"; - -export default async function Page({ params }: { params: { id: string } }) { - const beritaId = params.id; - const dataBerita = await investasi_funGetOneBeritaById({ beritaId }); - return ( - <> - - - ); -} diff --git a/src/app/dev/investasi/berita/daftar/[id]/page.tsx b/src/app/dev/investasi/berita/daftar/[id]/page.tsx deleted file mode 100644 index 62d40827..00000000 --- a/src/app/dev/investasi/berita/daftar/[id]/page.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import { investasi_funGetBeritaById } from "@/app_modules/investasi/_fun"; -import { Investasi_UiDaftarBerita } from "@/app_modules/investasi/_ui"; - -export default async function Page({ params }: { params: { id: string } }) { - const investasiId = params.id; - const dataBerita = await investasi_funGetBeritaById({ investasiId }); - - - return ( - <> - - - ); -} diff --git a/src/app/dev/investasi/berita/rekap/[id]/page.tsx b/src/app/dev/investasi/berita/rekap/[id]/page.tsx deleted file mode 100644 index 7075e1b7..00000000 --- a/src/app/dev/investasi/berita/rekap/[id]/page.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import { investasi_funGetBeritaById } from "@/app_modules/investasi/_fun"; -import { Investasi_UiRekapBerita } from "@/app_modules/investasi/_ui"; - -export default async function Page({ params }: { params: { id: string } }) { - const investasiId = params.id; - const dataBerita = await investasi_funGetBeritaById({ investasiId }); - - - return ( - <> - - - ); -} diff --git a/src/app/dev/investasi/create/berita/[id]/page.tsx b/src/app/dev/investasi/create/berita/[id]/page.tsx deleted file mode 100644 index b4d9a4f6..00000000 --- a/src/app/dev/investasi/create/berita/[id]/page.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import { Investasi_UiCreateBerita } from "@/app_modules/investasi/_ui"; - -export default async function Page({ params }: { params: { id: string } }) { - const investasiId = params.id; - return ( - <> - - - ); -} diff --git a/src/app/dev/investasi/create/dokumen/[id]/page.tsx b/src/app/dev/investasi/create/dokumen/[id]/page.tsx deleted file mode 100644 index 66a66f7c..00000000 --- a/src/app/dev/investasi/create/dokumen/[id]/page.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import { Investasi_UiCreateDocument } from "@/app_modules/investasi/_ui"; - -export default async function Page({ params }: { params: { id: string } }) { - const investasiId = params.id; - - return ( - <> - - - ); -} diff --git a/src/app/dev/investasi/create/investasi/page.tsx b/src/app/dev/investasi/create/investasi/page.tsx deleted file mode 100644 index ba8af421..00000000 --- a/src/app/dev/investasi/create/investasi/page.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import { InvestasiCreate } from "@/app_modules/investasi"; -import getPembagianDeviden from "@/app_modules/investasi/fun/master/get_pembagian_deviden"; -import getPencarianInvestor from "@/app_modules/investasi/fun/master/get_pencarian_investor"; -import getPeriodeDeviden from "@/app_modules/investasi/fun/master/get_periode_deviden"; -import getStatusInvestasi from "@/app_modules/investasi/fun/master/get_status_investasi"; - -export default async function Page() { - - const pencarianInvestor = await getPencarianInvestor(); - const periodeDeviden = await getPeriodeDeviden(); - const pembagianDeviden = await getPembagianDeviden(); - const statusInvestasi = await getStatusInvestasi(); - - return ( - <> - - - ); -} diff --git a/src/app/dev/investasi/detail/[id]/page.tsx b/src/app/dev/investasi/detail/[id]/page.tsx deleted file mode 100644 index 24d16617..00000000 --- a/src/app/dev/investasi/detail/[id]/page.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; -import { investasi_funGetOneInvestasiById } from "@/app_modules/investasi/_fun"; -import { Investasi_UiDetailMain } from "@/app_modules/investasi/_ui"; - - -export default async function Page({ params }: { params: { id: string } }) { - const investasiId = params.id; - const userLoginId = await funGetUserIdByToken(); - - const dataInvestasi = await investasi_funGetOneInvestasiById({ investasiId }); - - return ( - <> - - - ); -} diff --git a/src/app/dev/investasi/detail/portofolio/[id]/page.tsx b/src/app/dev/investasi/detail/portofolio/[id]/page.tsx deleted file mode 100644 index 5b9ff1a6..00000000 --- a/src/app/dev/investasi/detail/portofolio/[id]/page.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; -import { investasi_funGetOneInvestasiById } from "@/app_modules/investasi/_fun"; -import { Investasi_UiDetailPortofolio } from "@/app_modules/investasi/_ui"; - -export default async function Page({ params }: { params: { id: string } }) { - const investasiId = params.id; - const userLoginId = await funGetUserIdByToken(); - - const dataPortofolio = await investasi_funGetOneInvestasiById({ - investasiId, - }); - - return ( - <> - - - ); -} diff --git a/src/app/dev/investasi/detail/prospektus/[id]/page.tsx b/src/app/dev/investasi/detail/prospektus/[id]/page.tsx deleted file mode 100644 index a42503a5..00000000 --- a/src/app/dev/investasi/detail/prospektus/[id]/page.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import { investasi_funGetOneInvestasiById } from "@/app_modules/investasi/_fun"; -import { Investasi_UiDetailProspektus } from "@/app_modules/investasi/_ui"; - -export default async function Page({ params }: { params: { id: string } }) { - const investasiId = params.id; - const dataInvestasi = await investasi_funGetOneInvestasiById({ investasiId }); - - return ( - <> - - - ); -} diff --git a/src/app/dev/investasi/detail/saham/[id]/page.tsx b/src/app/dev/investasi/detail/saham/[id]/page.tsx deleted file mode 100644 index 0b3edcea..00000000 --- a/src/app/dev/investasi/detail/saham/[id]/page.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import { investasi_funGetOneInvoiceById } from "@/app_modules/investasi/_fun/get/fun_get_one_invoice_by_id"; -import { Investasi_UiDetailSahamSaya } from "@/app_modules/investasi/_ui"; - -export default async function Page({ params }: { params: { id: string } }) { - const invoiceId = params.id; - const dataSaham = await investasi_funGetOneInvoiceById({ invoiceId }); - - return ( - <> - - - ); -} diff --git a/src/app/dev/investasi/dialog_page/create/loading.tsx b/src/app/dev/investasi/dialog_page/create/loading.tsx deleted file mode 100644 index d8a1c040..00000000 --- a/src/app/dev/investasi/dialog_page/create/loading.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import ComponentGlobal_V2_LoadingPage from "@/app_modules/_global/loading_page_v2"; - -export default async function Page() { - return ( - <> - - - ); -} diff --git a/src/app/dev/investasi/dokumen/daftar/[id]/page.tsx b/src/app/dev/investasi/dokumen/daftar/[id]/page.tsx deleted file mode 100644 index e9337215..00000000 --- a/src/app/dev/investasi/dokumen/daftar/[id]/page.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import { - investasi_funGetAllDocumentById -} from "@/app_modules/investasi/_fun"; -import { Investasi_UiDaftarDokmen } from "@/app_modules/investasi/_ui"; - -export default async function Page({ params }: { params: { id: string } }) { - const investasiId = params.id; - const dataDokumen = await investasi_funGetAllDocumentById({ - investasiId: investasiId, - page: 1, - }); - - return ( - <> - - - ); -} diff --git a/src/app/dev/investasi/dokumen/rekap/[id]/page.tsx b/src/app/dev/investasi/dokumen/rekap/[id]/page.tsx deleted file mode 100644 index 074777ab..00000000 --- a/src/app/dev/investasi/dokumen/rekap/[id]/page.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import { investasi_funGetAllDocumentById } from "@/app_modules/investasi/_fun"; -import { Investasi_UiRekapDokumen } from "@/app_modules/investasi/_ui"; - -export default async function Page({ params }: { params: { id: string } }) { - const investasiId = params.id; - const dataDokumen = await investasi_funGetAllDocumentById({ - investasiId, - page: 1, - }); - - return ( - <> - - - ); -} diff --git a/src/app/dev/investasi/edit/[id]/page.tsx b/src/app/dev/investasi/edit/[id]/page.tsx deleted file mode 100644 index 5d91e4d2..00000000 --- a/src/app/dev/investasi/edit/[id]/page.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import { investasi_funGetOneInvestasiById } from "@/app_modules/investasi/_fun"; -import { Investasi_UiEditInvestasi } from "@/app_modules/investasi/_ui"; -import getPembagianDeviden from "@/app_modules/investasi/fun/master/get_pembagian_deviden"; -import getPencarianInvestor from "@/app_modules/investasi/fun/master/get_pencarian_investor"; -import getPeriodeDeviden from "@/app_modules/investasi/fun/master/get_periode_deviden"; -import _ from "lodash"; - -export default async function Page({ params }: { params: { id: string } }) { - const investasiId = params.id; - // console.log(investasiId); - - const allData = await investasi_funGetOneInvestasiById({ investasiId }); - const dataInvestasi = _.omit(allData, [ - "BeritaInvestasi", - "DokumenInvestasi", - "MasterPembagianDeviden", - "MasterPencarianInvestor", - "MasterProgresInvestasi", - "MasterStatusInvestasi", - "ProspektusInvestasi", - "MasterPeriodeDeviden", - "author", - ]); - - const listPencarian = await getPencarianInvestor(); - const listPeriode = await getPeriodeDeviden(); - const listPembagian = await getPembagianDeviden(); - - return ( - <> - - - ); -} diff --git a/src/app/dev/investasi/edit/dokumen/[id]/page.tsx b/src/app/dev/investasi/edit/dokumen/[id]/page.tsx deleted file mode 100644 index 95da1b64..00000000 --- a/src/app/dev/investasi/edit/dokumen/[id]/page.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import { investasi_funGetOneDocumentById } from "@/app_modules/investasi/_fun"; -import { Investasi_UiEditDokumen } from "@/app_modules/investasi/_ui"; - -export default async function Page({ params }: { params: { id: string } }) { - const documentId = params.id; - const dataDokumen = await investasi_funGetOneDocumentById({ documentId }); - - - return ( - <> - - - ); -} diff --git a/src/app/dev/investasi/edit/prospektus/[id]/page.tsx b/src/app/dev/investasi/edit/prospektus/[id]/page.tsx deleted file mode 100644 index 519debdf..00000000 --- a/src/app/dev/investasi/edit/prospektus/[id]/page.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import { Investasi_UiEditProspektus } from "@/app_modules/investasi/_ui"; - -export default async function Page({ params }: { params: { id: string } }) { - const investasiId = params.id; - - return ( - <> - - - ); -} diff --git a/src/app/dev/investasi/edit_dokumen/[id]/layout.tsx b/src/app/dev/investasi/edit_dokumen/[id]/layout.tsx deleted file mode 100644 index e051bfc5..00000000 --- a/src/app/dev/investasi/edit_dokumen/[id]/layout.tsx +++ /dev/null @@ -1,8 +0,0 @@ -import { LayoutEditDokumenInvestasi } from "@/app_modules/investasi"; -import React from "react"; - -export default async function Layout({children, params}: {children: React.ReactNode, params: {id: string}}) { - return<> - {children} - -} \ No newline at end of file diff --git a/src/app/dev/investasi/edit_dokumen/[id]/page.tsx b/src/app/dev/investasi/edit_dokumen/[id]/page.tsx deleted file mode 100644 index b7100cfe..00000000 --- a/src/app/dev/investasi/edit_dokumen/[id]/page.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import { EditDokumenInvestasi } from "@/app_modules/investasi"; -import getOneInvestasiById from "@/app_modules/investasi/fun/get_one_investasi_by_id"; - -export default async function Page({params}: {params: {id: string}}) { - const dataInvestasi = await getOneInvestasiById(params.id) - // console.log(dataInvestasi) - return<> - - -} \ No newline at end of file diff --git a/src/app/dev/investasi/edit_prospektus/[id]/layout.tsx b/src/app/dev/investasi/edit_prospektus/[id]/layout.tsx deleted file mode 100644 index 0c6a45a1..00000000 --- a/src/app/dev/investasi/edit_prospektus/[id]/layout.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import { LayoutEditProspektusInvestasi } from "@/app_modules/investasi"; -import getOneInvestasiById from "@/app_modules/investasi/fun/get_one_investasi_by_id"; -import React from "react"; - -export default async function Layout({ - children, - params, -}: { - children: React.ReactNode; - params: { id: string }; -}) { - const dataInvestasi = await getOneInvestasiById(params.id); - - return ( - <> - - {children} - - - ); -} diff --git a/src/app/dev/investasi/edit_prospektus/[id]/page.tsx b/src/app/dev/investasi/edit_prospektus/[id]/page.tsx deleted file mode 100644 index 521d1475..00000000 --- a/src/app/dev/investasi/edit_prospektus/[id]/page.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import { EditProspektusInvestasi } from "@/app_modules/investasi"; -import getOneInvestasiById from "@/app_modules/investasi/fun/get_one_investasi_by_id"; - -export default async function Page({ params }: { params: { id: string } }) { - const dataInvestasi = await getOneInvestasiById(params.id); -// console.log(dataInvestasi); - return ( - <> - - - ); -} diff --git a/src/app/dev/investasi/file-view/dokumen/[id]/page.tsx b/src/app/dev/investasi/file-view/dokumen/[id]/page.tsx deleted file mode 100644 index 446fef71..00000000 --- a/src/app/dev/investasi/file-view/dokumen/[id]/page.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import { Investasi_UiFileViewDokumen } from "@/app_modules/investasi/_ui"; - -export default async function Page({ params }: { params: { id: string } }) { - const dokumenId = params.id; - - return ( - <> - - - ); -} diff --git a/src/app/dev/investasi/file-view/prospektus/[id]/page.tsx b/src/app/dev/investasi/file-view/prospektus/[id]/page.tsx deleted file mode 100644 index 25de80fd..00000000 --- a/src/app/dev/investasi/file-view/prospektus/[id]/page.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import { investasi_funGetProspekById } from "@/app_modules/investasi/_fun"; -import { Investasi_UiFileView } from "@/app_modules/investasi/_ui"; - -export default async function Page({ params }: { params: { id: string } }) { - const pospektusId = params.id; - - return ( - <> - - - ); -} diff --git a/src/app/dev/investasi/main/page.tsx b/src/app/dev/investasi/main/page.tsx deleted file mode 100644 index bc3fe278..00000000 --- a/src/app/dev/investasi/main/page.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import { Investasi_UiBeranda } from "@/app_modules/investasi/_ui"; -import { investasi_funGetAllPublish } from "@/app_modules/investasi/fun/get_all_investasi"; - -export default async function Page() { - const allData = await investasi_funGetAllPublish({ page: 1 }); - - return ( - <> - - - ); -} diff --git a/src/app/dev/investasi/main/portofolio/[id]/page.tsx b/src/app/dev/investasi/main/portofolio/[id]/page.tsx deleted file mode 100644 index b8378bd8..00000000 --- a/src/app/dev/investasi/main/portofolio/[id]/page.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import { investasi_funGetPortofolioByStatusId } from "@/app_modules/investasi/_fun"; -import { Investasi_UiPortofolio } from "@/app_modules/investasi/_ui"; -import getStatusInvestasi from "@/app_modules/investasi/fun/master/get_status_investasi"; - -export default async function Page({ params }: { params: { id: string } }) { - const statusId = params.id; - const listStatus = await getStatusInvestasi(); - const dataPortofolio = await investasi_funGetPortofolioByStatusId({ - page: 1, - statusId: statusId, - }); - - return ( - <> - - - ); -} diff --git a/src/app/dev/investasi/main/saham_saya/page.tsx b/src/app/dev/investasi/main/saham_saya/page.tsx deleted file mode 100644 index fcf6570f..00000000 --- a/src/app/dev/investasi/main/saham_saya/page.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import { investasi_funGetSuccessTransactionById } from "@/app_modules/investasi/_fun"; -import { Investasi_UiSahamSaya } from "@/app_modules/investasi/_ui"; - -export default async function Page() { - const dataSaham = await investasi_funGetSuccessTransactionById({ page: 1 }); - - return ( - <> - {/* */} - - - ); -} diff --git a/src/app/dev/investasi/main/transaksi/page.tsx b/src/app/dev/investasi/main/transaksi/page.tsx deleted file mode 100644 index 78150c82..00000000 --- a/src/app/dev/investasi/main/transaksi/page.tsx +++ /dev/null @@ -1,28 +0,0 @@ -import getListAllTransaksiById_Investasi from "@/app_modules/investasi/fun/get_list_all_transaksi_by_id"; -import getMaster_StatusTransaksiInvestasi from "@/app_modules/investasi/fun/master/get_status_transaksi"; - -import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; -import { investasi_funGetTransaksiByUserId } from "@/app_modules/investasi/_fun"; -import { Investasi_UiDaftarTransaksi } from "@/app_modules/investasi/_ui"; - -export default async function Page() { - const userLoginId = await funGetUserIdByToken(); - - const statusTransaksi = await getMaster_StatusTransaksiInvestasi(); - const listTransaksi = await getListAllTransaksiById_Investasi( - userLoginId as string - ); - - // NEW - const dataTransaksi = await investasi_funGetTransaksiByUserId({ page: 1 }); - - return ( - <> - {/* */} - - - ); -} diff --git a/src/app/dev/investasi/status-transaksi/berhasil/[id]/page.tsx b/src/app/dev/investasi/status-transaksi/berhasil/[id]/page.tsx deleted file mode 100644 index 6015c0e9..00000000 --- a/src/app/dev/investasi/status-transaksi/berhasil/[id]/page.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import { StatusTransaksiInvestasi } from "@/app_modules/investasi"; -import { investasi_funGetOneInvoiceById } from "@/app_modules/investasi/_fun/get/fun_get_one_invoice_by_id"; -import { Investasi_UiTransaksiBerhasil } from "@/app_modules/investasi/_ui"; - -export default async function Page({params}: {params: {id: string}}) { - const invoiceId = params.id; - const dataTransaksi = await investasi_funGetOneInvoiceById({ invoiceId }); - return ( - <> - - - ); -} diff --git a/src/app/dev/investasi/transaksi/invoice/[id]/page.tsx b/src/app/dev/investasi/transaksi/invoice/[id]/page.tsx deleted file mode 100644 index 11d9fd8f..00000000 --- a/src/app/dev/investasi/transaksi/invoice/[id]/page.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import { investasi_funGetOneInvoiceById } from "@/app_modules/investasi/_fun/get/fun_get_one_invoice_by_id"; -import { Investasi_UiInvoice } from "@/app_modules/investasi/_ui"; - -export default async function Page({ params }: { params: { id: string } }) { - const invoiceId = params.id; - const dataInvoice = await investasi_funGetOneInvoiceById({ invoiceId: invoiceId }); - - return ( - <> - - - ); -} diff --git a/src/app/dev/investasi/transaksi/metode-pembayaran/[id]/page.tsx b/src/app/dev/investasi/transaksi/metode-pembayaran/[id]/page.tsx deleted file mode 100644 index 7553f2ef..00000000 --- a/src/app/dev/investasi/transaksi/metode-pembayaran/[id]/page.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import { funGlobal_getAllBank } from "@/app_modules/_global/fun/get/fun_get_all_bank"; -import { Investasi_UiMetodePembayaran } from "@/app_modules/investasi/_ui"; -import getMaster_NamaBank from "@/app_modules/investasi/fun/master/get_nama_bank"; - -export default async function Page({ params }: { params: { id: string } }) { - const investasiId = params.id; - const listBank = await funGlobal_getAllBank(); - - return ( - <> - - - ); -} diff --git a/src/app/dev/investasi/transaksi/pembelian/[id]/page.tsx b/src/app/dev/investasi/transaksi/pembelian/[id]/page.tsx deleted file mode 100644 index ff9e0b90..00000000 --- a/src/app/dev/investasi/transaksi/pembelian/[id]/page.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import { investasi_funGetOneInvestasiById } from "@/app_modules/investasi/_fun"; -import { Investasi_UiProsesPembelian } from "@/app_modules/investasi/_ui"; - - -export default async function Page({ params }: { params: { id: string } }) { - const investasiId = params.id; - const dataInvestasi = await investasi_funGetOneInvestasiById({ investasiId }); - - return ( - <> - - - ); -} diff --git a/src/app/dev/investasi/transaksi/proses-transaksi/[id]/page.tsx b/src/app/dev/investasi/transaksi/proses-transaksi/[id]/page.tsx deleted file mode 100644 index 7fb5988e..00000000 --- a/src/app/dev/investasi/transaksi/proses-transaksi/[id]/page.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import { funGlobal_getNomorAdmin } from "@/app_modules/_global/fun/get"; -import { Investasi_UiProsesTransaksi } from "@/app_modules/investasi/_ui"; - -export default async function Page({ params }: { params: { id: string } }) { - const invoiceId = params.id; - const nomorAdmin = await funGlobal_getNomorAdmin(); - - return ( - <> - - - ); -} diff --git a/src/app/dev/job/detail/arsip/[id]/page.tsx b/src/app/dev/job/detail/arsip/[id]/page.tsx deleted file mode 100644 index b37f2fd6..00000000 --- a/src/app/dev/job/detail/arsip/[id]/page.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import { Job_DetailArsip } from "@/app_modules/job"; -import { job_getOneById } from "@/app_modules/job/fun/get/get_one_by_id"; - -export default async function Page({params}:{params: {id: string}}) { - let jobId = params.id - const dataJob = await job_getOneById(jobId) - return ( - <> - - - ); -} diff --git a/src/app/dev/job/detail/draft/[id]/layout.tsx b/src/app/dev/job/detail/draft/[id]/layout.tsx deleted file mode 100644 index 27205e01..00000000 --- a/src/app/dev/job/detail/draft/[id]/layout.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import { LayoutJob_DetailDraft } from "@/app_modules/job"; -import React from "react"; - -export default async function Layout({ - children, - params -}: { - children: React.ReactNode; - params: {id: string} -}) { - let jobId = params.id - return ( - <> - {children} - - ); -} diff --git a/src/app/dev/job/detail/draft/[id]/page.tsx b/src/app/dev/job/detail/draft/[id]/page.tsx deleted file mode 100644 index 646e6ab3..00000000 --- a/src/app/dev/job/detail/draft/[id]/page.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import Job_DetailDraft from "@/app_modules/job/detail/draft/view"; -import { job_getOneById } from "@/app_modules/job/fun/get/get_one_by_id"; - - -export default async function Page({params}: {params: {id: string}}) { - let jobId = params.id - const dataJob = await job_getOneById(jobId) - - return ( - <> - - - ); -} diff --git a/src/app/dev/job/detail/main/[id]/page.tsx b/src/app/dev/job/detail/main/[id]/page.tsx deleted file mode 100644 index 2928fe5d..00000000 --- a/src/app/dev/job/detail/main/[id]/page.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import { Job_MainDetail } from "@/app_modules/job"; -import { job_getOneById } from "@/app_modules/job/fun/get/get_one_by_id"; - -export default async function Page({ params }: { params: { id: string } }) { - const idJob = params.id; - const dataJob = await job_getOneById(idJob); - - return ( - <> - - - ); -} diff --git a/src/app/dev/job/detail/publish/[id]/page.tsx b/src/app/dev/job/detail/publish/[id]/page.tsx deleted file mode 100644 index 6dd30830..00000000 --- a/src/app/dev/job/detail/publish/[id]/page.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import { Job_DetailPublish } from "@/app_modules/job"; -import { job_getOneById } from "@/app_modules/job/fun/get/get_one_by_id"; - -export default async function Page({params}: {params: {id: string}}) { - let jobId = params.id - const dataJob = await job_getOneById(jobId) - - return ( - <> - - - ); -} diff --git a/src/app/dev/job/detail/reject/[id]/page.tsx b/src/app/dev/job/detail/reject/[id]/page.tsx deleted file mode 100644 index cd6f0206..00000000 --- a/src/app/dev/job/detail/reject/[id]/page.tsx +++ /dev/null @@ -1,14 +0,0 @@ - -import Job_DetailReject from "@/app_modules/job/detail/reject/view"; -import { job_getOneById } from "@/app_modules/job/fun/get/get_one_by_id"; - -export default async function Page({params}: {params: {id: string}}) { - let jobId = params.id - const dataJob = await job_getOneById(jobId) - - return ( - <> - - - ); -} diff --git a/src/app/dev/job/detail/review/[id]/page.tsx b/src/app/dev/job/detail/review/[id]/page.tsx deleted file mode 100644 index 6dda171e..00000000 --- a/src/app/dev/job/detail/review/[id]/page.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import Job_DetailReview from "@/app_modules/job/detail/review/view"; -import { job_getOneById } from "@/app_modules/job/fun/get/get_one_by_id"; -import React from "react"; - -export default async function Page({ - params, -}: { - params: { id: React.ReactNode }; -}) { - let jobId = params.id; - const dataJob = await job_getOneById(jobId) - - return ( - <> - - - ); -} diff --git a/src/app/dev/job/edit/[id]/page.tsx b/src/app/dev/job/edit/[id]/page.tsx deleted file mode 100644 index baba6e04..00000000 --- a/src/app/dev/job/edit/[id]/page.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import { Job_Edit } from "@/app_modules/job"; -import { job_getOneById } from "@/app_modules/job/fun/get/get_one_by_id"; - -export default async function Page({ params }: { params: { id: string } }) { - let jobId = params.id; - const dataJob = await job_getOneById(jobId); - - return ( - <> - - - ); -} diff --git a/src/app/dev/job/main/arsip/page.tsx b/src/app/dev/job/main/arsip/page.tsx deleted file mode 100644 index f46dce88..00000000 --- a/src/app/dev/job/main/arsip/page.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import { Job_Arsip } from "@/app_modules/job"; -import { job_getAllArsipById } from "@/app_modules/job/fun/get/get_all_arsip"; - -export default async function Page() { - const dataJob = await job_getAllArsipById({ page: 1 }); - - return ( - <> - - - ); -} diff --git a/src/app/dev/job/main/beranda/page.tsx b/src/app/dev/job/main/beranda/page.tsx deleted file mode 100644 index 1a4bce82..00000000 --- a/src/app/dev/job/main/beranda/page.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import { Job_ViewBeranda } from "@/app_modules/job"; -import { job_getAllListPublish } from "@/app_modules/job/fun/get/get_all_publish"; - -export default async function Page() { - const listJob = await job_getAllListPublish({ page: 1 }); - - return ( - <> - - - ); -} diff --git a/src/app/dev/job/main/status/[id]/page.tsx b/src/app/dev/job/main/status/[id]/page.tsx deleted file mode 100644 index 7ba51670..00000000 --- a/src/app/dev/job/main/status/[id]/page.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import { Job_Status } from "@/app_modules/job"; -import { job_funGetAllByStatusId } from "@/app_modules/job/fun"; -import { job_funGetMasterStatus } from "@/app_modules/job/fun/get/get_master_status"; - -export default async function Page({ params }: { params: { id: string } }) { - let statusId = params.id; - - const dataJob = await job_funGetAllByStatusId({ - page: 1, - statusId: statusId, - }); - const listStatus = await job_funGetMasterStatus(); - - return ( - <> - - - ); -} diff --git a/src/app/dev/katalog/[id]/layout.tsx b/src/app/dev/katalog/[id]/layout.tsx deleted file mode 100644 index fd0d7fd4..00000000 --- a/src/app/dev/katalog/[id]/layout.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; -import { KatalogLayout } from "@/app_modules/katalog/main"; -import { Profile_getOneProfileAndUserById } from "@/app_modules/katalog/profile/fun/get/get_one_user_profile"; - -export default async function Layout({ - children, - params, -}: { - children: any; - params: { id: string }; -}) { - const profileId = params.id; - const dataProfile = await Profile_getOneProfileAndUserById(profileId); - const authorId = dataProfile?.userId; - - const userLoginId = await funGetUserIdByToken(); - - return ( - <> - - {children} - - - ); -} diff --git a/src/app/dev/katalog/[id]/page.tsx b/src/app/dev/katalog/[id]/page.tsx deleted file mode 100644 index 24cccdab..00000000 --- a/src/app/dev/katalog/[id]/page.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; -import { Katalog_MainView } from "@/app_modules/katalog"; -import { funGetListPortofolio } from "@/app_modules/katalog/portofolio/fun/get/get_list_portofolio"; -import { Profile_getOneProfileAndUserById } from "@/app_modules/katalog/profile/fun/get/get_one_user_profile"; - -export default async function Page({ params }: { params: { id: string } }) { - let profileId = params.id; - const userLoginId = await funGetUserIdByToken(); - - const listPorto = await funGetListPortofolio(profileId); - const dataProfile = await Profile_getOneProfileAndUserById(profileId); - - return ( - <> - - - ); -} diff --git a/src/app/dev/layout.tsx b/src/app/dev/layout.tsx index 0ea9defe..ea8277bf 100644 --- a/src/app/dev/layout.tsx +++ b/src/app/dev/layout.tsx @@ -1,36 +1,25 @@ import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; -import { funGlobal_getUserById } from "@/app_modules/_global/fun/get/fun_get_user_by_id"; -import { redirect } from "next/navigation"; -import { RealtimeProvider } from "../lib"; -import { ServerEnv } from "../lib/server_env"; -import { RouterAdminDashboard } from "../lib/router_hipmi/router_admin"; -import { funGlobal_checkActivationUseById } from "@/app_modules/_global/fun/get/fun_check_activation_use_by_id"; +import { RealtimeProvider } from "../../lib"; +import { ServerEnv } from "../../lib/server_env"; +export const dynamic = "force-dynamic"; export default async function Layout({ children, }: { children: React.ReactNode; }) { - const userLoginId = await funGetUserIdByToken(); - const activationUser = await funGlobal_checkActivationUseById({ - userId: userLoginId as string, - }); + // const userId = await funGetUserIdByToken(); - if (activationUser == false) return redirect("/waiting-room"); - return ( <> {children} - {/* - {children} - */} ); } diff --git a/src/app/dev/map/create/[id]/page.tsx b/src/app/dev/map/create/[id]/page.tsx deleted file mode 100644 index 5a27ae8e..00000000 --- a/src/app/dev/map/create/[id]/page.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import { Map_CreateNewPin } from "@/app_modules/map/view"; - -export default async function Page({ params }: { params: { id: string } }) { - let portofolioId = params.id; - return ( - <> - - - ); -} diff --git a/src/app/dev/map/custom-pin/[id]/page.tsx b/src/app/dev/map/custom-pin/[id]/page.tsx deleted file mode 100644 index 40347ba6..00000000 --- a/src/app/dev/map/custom-pin/[id]/page.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import { map_funGetOneBusinessMapByPortofolioId } from "@/app_modules/map/fun/get/fun_get_one_by_portofolio_id"; -import { Map_CustomPin } from "@/app_modules/map/view"; - -export default async function Page({ params }: { params: { id: string } }) { - const portofolioId = params.id; - const dataMap = await map_funGetOneBusinessMapByPortofolioId({ - portofolioId: portofolioId, - }); - - - return ( - <> - - - ); -} diff --git a/src/app/dev/map/edit/[id]/page.tsx b/src/app/dev/map/edit/[id]/page.tsx deleted file mode 100644 index 13a5758d..00000000 --- a/src/app/dev/map/edit/[id]/page.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import { map_funGetOneBusinessMapByPortofolioId } from "@/app_modules/map/fun/get/fun_get_one_by_portofolio_id"; -import { Map_EditPin } from "@/app_modules/map/view"; - -export default async function Page({ params }: { params: { id: string } }) { - const portofolioId = params.id; - const dataMap = await map_funGetOneBusinessMapByPortofolioId({portofolioId: portofolioId}) - - return ( - <> - - - ); -} diff --git a/src/app/dev/map/main/page.tsx b/src/app/dev/map/main/page.tsx deleted file mode 100644 index 8b1b6fd6..00000000 --- a/src/app/dev/map/main/page.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import { map_funGetAllMap } from "@/app_modules/map/fun/get/fun_get_all_map"; -import { Map_View } from "@/app_modules/map/view"; - -const mapboxToken = process.env.MAPBOX_TOKEN!; -export default async function Page() { - const dataMap = await map_funGetAllMap(); - - return ( - <> - - - ); -} diff --git a/src/app/dev/notifikasi/collaboration/page.tsx b/src/app/dev/notifikasi/collaboration/page.tsx deleted file mode 100644 index 78f26b83..00000000 --- a/src/app/dev/notifikasi/collaboration/page.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import { - Notifikasi_UiCollaboration -} from "@/app_modules/notifikasi/_ui"; -import notifikasi_getByUserId from "@/app_modules/notifikasi/fun/get/get_notifiaksi_by_id"; - -export default async function Page() { - const listNotifikasi = await notifikasi_getByUserId({ - page: 1, - kategoriApp: "Collaboration", - }); - - return ( - <> - - - ); -} diff --git a/src/app/dev/notifikasi/donasi/page.tsx b/src/app/dev/notifikasi/donasi/page.tsx deleted file mode 100644 index 9af63325..00000000 --- a/src/app/dev/notifikasi/donasi/page.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import { Notifikasi_UiDonasi } from "@/app_modules/notifikasi/_ui"; -import notifikasi_getByUserId from "@/app_modules/notifikasi/fun/get/get_notifiaksi_by_id"; - -export default async function Page() { - const listNotifikasi = await notifikasi_getByUserId({ - page: 1, - kategoriApp: "Donasi", - }); - - return ( - <> - - - ); -} diff --git a/src/app/dev/notifikasi/event/page.tsx b/src/app/dev/notifikasi/event/page.tsx deleted file mode 100644 index fa2ce235..00000000 --- a/src/app/dev/notifikasi/event/page.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import { Notifikasi_UiEvent } from "@/app_modules/notifikasi/_ui"; -import notifikasi_getByUserId from "@/app_modules/notifikasi/fun/get/get_notifiaksi_by_id"; - -export default async function Page() { - const listNotifikasi = await notifikasi_getByUserId({ - page: 1, - kategoriApp: "Event", - }); - - return ( - <> - - - ); -} diff --git a/src/app/dev/notifikasi/forum/page.tsx b/src/app/dev/notifikasi/forum/page.tsx deleted file mode 100644 index a27ffea2..00000000 --- a/src/app/dev/notifikasi/forum/page.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import { Notifikasi_UiForum } from "@/app_modules/notifikasi/_ui"; -import notifikasi_getByUserId from "@/app_modules/notifikasi/fun/get/get_notifiaksi_by_id"; - -export default async function Page() { - const listNotifikasi = await notifikasi_getByUserId({ - page: 1, - kategoriApp: "Forum", - }); - - return ( - <> - - - ); -} diff --git a/src/app/dev/notifikasi/investasi/page.tsx b/src/app/dev/notifikasi/investasi/page.tsx deleted file mode 100644 index d5704862..00000000 --- a/src/app/dev/notifikasi/investasi/page.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import { Notifikasi_UiDonasi, Notifikasi_UiInvestasi } from "@/app_modules/notifikasi/_ui"; -import notifikasi_getByUserId from "@/app_modules/notifikasi/fun/get/get_notifiaksi_by_id"; - -export default async function Page() { - const listNotifikasi = await notifikasi_getByUserId({ - page: 1, - kategoriApp: "Investasi", - }); - - return ( - <> - - - ); -} diff --git a/src/app/dev/notifikasi/job/page.tsx b/src/app/dev/notifikasi/job/page.tsx deleted file mode 100644 index 029dbb80..00000000 --- a/src/app/dev/notifikasi/job/page.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import { Notifikasi_UiJob } from "@/app_modules/notifikasi/_ui"; -import notifikasi_getByUserId from "@/app_modules/notifikasi/fun/get/get_notifiaksi_by_id"; - -export default async function Page() { - const listNotifikasi = await notifikasi_getByUserId({ - page: 1, - kategoriApp: "Job", - }); - - return ( - <> - - - ); -} diff --git a/src/app/dev/notifikasi/layout.tsx b/src/app/dev/notifikasi/layout.tsx deleted file mode 100644 index 8b1e90fc..00000000 --- a/src/app/dev/notifikasi/layout.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import { UIGlobal_LayoutHeaderTamplate } from "@/app_modules/_global/ui"; -import { Notifikasi_UiNewLayout } from "@/app_modules/notifikasi/_ui"; -import { notifikasi_funGetKategoriApp } from "@/app_modules/notifikasi/fun/get/fun_get_kategori_app"; - -export default async function Layout({ - children, -}: { - children: React.ReactNode; -}) { - const masterKategori = await notifikasi_funGetKategoriApp(); - - return ( - <> - } - masterKategori={masterKategori} - > - {children} - - - ); -} diff --git a/src/app/dev/notifikasi/semua/page.tsx b/src/app/dev/notifikasi/semua/page.tsx deleted file mode 100644 index f9fad445..00000000 --- a/src/app/dev/notifikasi/semua/page.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import { Notifikasi_UiAll } from "@/app_modules/notifikasi/_ui"; -import notifikasi_getByUserId from "@/app_modules/notifikasi/fun/get/get_notifiaksi_by_id"; - -export default async function Page() { - const listNotifikasi = await notifikasi_getByUserId({ - page: 1, - kategoriApp: "Semua", - }); - - return ( - <> - - - ); -} diff --git a/src/app/dev/notifikasi/voting/page.tsx b/src/app/dev/notifikasi/voting/page.tsx deleted file mode 100644 index 1dd4b042..00000000 --- a/src/app/dev/notifikasi/voting/page.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import { Notifikasi_UiVoting } from "@/app_modules/notifikasi/_ui"; -import notifikasi_getByUserId from "@/app_modules/notifikasi/fun/get/get_notifiaksi_by_id"; - -export default async function Page() { - const listNotifikasi = await notifikasi_getByUserId({ - page: 1, - kategoriApp: "Voting", - }); - - return ( - <> - - - ); -} diff --git a/src/app/dev/portofolio/create/[id]/layout.tsx b/src/app/dev/portofolio/create/[id]/layout.tsx deleted file mode 100644 index 537ae898..00000000 --- a/src/app/dev/portofolio/create/[id]/layout.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import { CreatePortofolioLayout } from "@/app_modules/katalog/portofolio"; -import React from "react"; - -export default async function Layout({ - children, - params, -}: { - children: React.ReactNode; - params: { id: string }; -}) { - return ( - <> - - {children} - - - ); -} diff --git a/src/app/dev/portofolio/create/[id]/page.tsx b/src/app/dev/portofolio/create/[id]/page.tsx deleted file mode 100644 index 652a81d1..00000000 --- a/src/app/dev/portofolio/create/[id]/page.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import { CreatePortofolio } from "@/app_modules/katalog/portofolio"; -import { Portofolio_getMasterBidangBisnis } from "@/app_modules/katalog/portofolio/fun/master/get_bidang_bisnis"; - -export default async function Page({ params }: { params: { id: string } }) { - const profileId = params.id; - const bidangBisnis = await Portofolio_getMasterBidangBisnis(); - - return ( - <> - - - ); -} diff --git a/src/app/dev/portofolio/daftar-portofolio/[id]/page.tsx b/src/app/dev/portofolio/daftar-portofolio/[id]/page.tsx deleted file mode 100644 index 45a30f23..00000000 --- a/src/app/dev/portofolio/daftar-portofolio/[id]/page.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import { Portofolio_ViewListDetail } from "@/app_modules/katalog/portofolio"; -import { portofolio_funGetAllDaftarByid } from "@/app_modules/katalog/portofolio/fun/get/get_all_portofolio"; - -export default async function Page({ params }: { params: { id: string } }) { - const profileId = params.id; - const dataPortofolio = await portofolio_funGetAllDaftarByid({ - profileId, - page: 1, - }); - - - return ( - <> - - - ); -} diff --git a/src/app/dev/portofolio/edit/data/[id]/page.tsx b/src/app/dev/portofolio/edit/data/[id]/page.tsx deleted file mode 100644 index 6d23121d..00000000 --- a/src/app/dev/portofolio/edit/data/[id]/page.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import { Portofolio_EditDataBisnis } from "@/app_modules/katalog/portofolio"; -import { portofolio_getOneById } from "@/app_modules/katalog/portofolio/fun/get/get_one_portofolio"; -import { Portofolio_getMasterBidangBisnis } from "@/app_modules/katalog/portofolio/fun/master/get_bidang_bisnis"; -import _ from "lodash"; - -export default async function Page({ params }: { params: { id: string } }) { - let portoId = params.id; - const data = await portofolio_getOneById(portoId); - const dataPorto = _.omit(data, [ - "Logo", - "Portofolio_MediaSosial", - "Portofolio_MediaSosial", - "logoId", - "profileId", - ]); - - const listBidang = await Portofolio_getMasterBidangBisnis() - - return ( - <> - - - ); -} diff --git a/src/app/dev/portofolio/edit/logo/[id]/page.tsx b/src/app/dev/portofolio/edit/logo/[id]/page.tsx deleted file mode 100644 index 11d25a47..00000000 --- a/src/app/dev/portofolio/edit/logo/[id]/page.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import { Portofolio_EditLogoBisnis } from "@/app_modules/katalog/portofolio"; -import { portofolio_getOneById } from "@/app_modules/katalog/portofolio/fun/get/get_one_portofolio"; -import _ from "lodash"; - -export default async function Page({ params }: { params: { id: string } }) { - let portoId = params.id; - const dataPorto = await portofolio_getOneById(portoId).then((res) => - _.omit(res, [ - "Logo", - "MasterBidangBisnis", - "Portofolio_MediaSosial", - "active", - "alamatKantor", - "deskripsi", - "masterBidangBisnisId", - "profileId", - "tlpn", - "namaBisnis" - ]) - ); - - return ( - <> - - - ); -} diff --git a/src/app/dev/portofolio/edit/medsos/[id]/page.tsx b/src/app/dev/portofolio/edit/medsos/[id]/page.tsx deleted file mode 100644 index c65bcd2a..00000000 --- a/src/app/dev/portofolio/edit/medsos/[id]/page.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import { Portofolio_EditMedsosBisnis } from "@/app_modules/katalog/portofolio"; -import { Portofolio_geOnetMedsosById } from "@/app_modules/katalog/portofolio/fun/get/get_one_medsos_by_id"; -import _ from "lodash"; - -export default async function Page({ params }: { params: { id: string } }) { - let portoId = params.id; - const dataMedsos = await Portofolio_geOnetMedsosById(portoId).then((res) => - _.omit(res, ["active", "createdAt", "updatedAt", "portofolioId"]) - ); - - return ( - <> - - - ); -} diff --git a/src/app/dev/portofolio/main/[id]/layout.tsx b/src/app/dev/portofolio/main/[id]/layout.tsx deleted file mode 100644 index 42f4bc01..00000000 --- a/src/app/dev/portofolio/main/[id]/layout.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; -import { PortofolioLayout } from "@/app_modules/katalog/portofolio"; -import { portofolio_getOneById } from "@/app_modules/katalog/portofolio/fun/get/get_one_portofolio"; - -export default async function Layout({ - children, - params, -}: { - children: any; - params: { id: string }; -}) { - let portoId = params.id; - const getPorto = await portofolio_getOneById(portoId); - const userLoginId = await funGetUserIdByToken(); - - return ( - <> - - {children} - - - ); -} diff --git a/src/app/dev/portofolio/main/[id]/page.tsx b/src/app/dev/portofolio/main/[id]/page.tsx deleted file mode 100644 index 61d37c14..00000000 --- a/src/app/dev/portofolio/main/[id]/page.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; -import { ViewPortofolio } from "@/app_modules/katalog/portofolio"; -import { portofolio_getOneById } from "@/app_modules/katalog/portofolio/fun/get/get_one_portofolio"; - -const mapboxToken = process.env.MAPBOX_TOKEN!; -export default async function Page({ params }: { params: { id: string } }) { - const portofolioId = params.id; - const dataPortofolio = await portofolio_getOneById(portofolioId); - const userLoginId = await funGetUserIdByToken(); - - return ( - <> - - - ); -} diff --git a/src/app/dev/profile/edit/[id]/page.tsx b/src/app/dev/profile/edit/[id]/page.tsx deleted file mode 100644 index 53e6ca6d..00000000 --- a/src/app/dev/profile/edit/[id]/page.tsx +++ /dev/null @@ -1,15 +0,0 @@ - -import EditProfile from "@/app_modules/katalog/profile/edit/view"; -import { Profile_getOneProfileAndUserById } from "@/app_modules/katalog/profile/fun/get/get_one_user_profile"; - -export default async function Page({ params }: { params: { id: string } }) { - let profileId = params.id - const dataProfile = await Profile_getOneProfileAndUserById(profileId) - - return ( - <> - {/* {JSON.stringify(data)} */} - - - ); -} diff --git a/src/app/dev/profile/upload/background/[id]/page.tsx b/src/app/dev/profile/upload/background/[id]/page.tsx deleted file mode 100644 index ef64703e..00000000 --- a/src/app/dev/profile/upload/background/[id]/page.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import { Profile_getOneById } from "@/app_modules/katalog/profile/fun/get/get_one_profile" -import Profile_UpdateFotoBackground from "@/app_modules/katalog/profile/upload/foto_background" - -export default async function Page({params}:{params: {id: string}}) { - let profileId = params.id - const dataProfile = await Profile_getOneById(profileId) - - return <> - - - -} \ No newline at end of file diff --git a/src/app/dev/profile/upload/foto/[id]/page.tsx b/src/app/dev/profile/upload/foto/[id]/page.tsx deleted file mode 100644 index ea595412..00000000 --- a/src/app/dev/profile/upload/foto/[id]/page.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import { UploadFotoProfile } from "@/app_modules/katalog/profile"; -import { Profile_getOneById } from "@/app_modules/katalog/profile/fun/get/get_one_profile"; - -export default async function Page({params}: {params: {id: string}}) { - let profileId = params.id - const dataProfile = await Profile_getOneById(profileId) - - return <> - - -} \ No newline at end of file diff --git a/src/app/dev/user-search/page.tsx b/src/app/dev/user-search/page.tsx deleted file mode 100644 index 7305259d..00000000 --- a/src/app/dev/user-search/page.tsx +++ /dev/null @@ -1,8 +0,0 @@ -import { UserSearch_MainView } from "@/app_modules/user_search"; -import { userSearch_getAllUser } from "@/app_modules/user_search/fun/get/get_all_user"; - -export default async function Page() { - const listUser = await userSearch_getAllUser({ page: 1 }); - - return ; -} diff --git a/src/app/dev/vote/detail/daftar-kontributor/[id]/page.tsx b/src/app/dev/vote/detail/daftar-kontributor/[id]/page.tsx deleted file mode 100644 index 451b4a9a..00000000 --- a/src/app/dev/vote/detail/daftar-kontributor/[id]/page.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import { Voting_UiDetailKontributorVoting } from "@/app_modules/vote/_ui"; -import { Vote_getListKontributorById } from "@/app_modules/vote/fun/get/get_list_kontributor_by_id"; - -export default async function Page({ params }: { params: { id: string } }) { - const votingId = params.id; - const listKontributor = await Vote_getListKontributorById(votingId); - - return ( - <> - - - ); -} diff --git a/src/app/dev/vote/detail/draft/[id]/page.tsx b/src/app/dev/vote/detail/draft/[id]/page.tsx deleted file mode 100644 index 6403bd9f..00000000 --- a/src/app/dev/vote/detail/draft/[id]/page.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import { Vote_DetailDraft } from "@/app_modules/vote"; -import { voting_funGetOneVotingbyId } from "@/app_modules/vote/fun/get/fun_get_one_by_id"; - -export default async function Page({ params }: { params: { id: string } }) { - const voteId = params.id; - const dataVote = await voting_funGetOneVotingbyId(voteId); - - return ( - <> - - - ); -} diff --git a/src/app/dev/vote/detail/kontribusi/[id]/layout.tsx b/src/app/dev/vote/detail/kontribusi/[id]/layout.tsx deleted file mode 100644 index 99ce0157..00000000 --- a/src/app/dev/vote/detail/kontribusi/[id]/layout.tsx +++ /dev/null @@ -1,28 +0,0 @@ -import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; -import { LayoutVote_DetailKontribusi } from "@/app_modules/vote"; -import { voting_funGetOneVotingbyId } from "@/app_modules/vote/fun/get/fun_get_one_by_id"; -import React from "react"; - -export default async function Layout({ - children, - params, -}: { - children: React.ReactNode; - params: { id: string }; -}) { - const votingId = params.id; - const userLoginId = await funGetUserIdByToken(); - const dataVoting = await voting_funGetOneVotingbyId(votingId); - - return ( - <> - - {children} - - - ); -} diff --git a/src/app/dev/vote/detail/kontribusi/[id]/page.tsx b/src/app/dev/vote/detail/kontribusi/[id]/page.tsx deleted file mode 100644 index d42fc576..00000000 --- a/src/app/dev/vote/detail/kontribusi/[id]/page.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import { Vote_DetailKontribusi } from "@/app_modules/vote"; -import { voting_funGetOneVotingbyId } from "@/app_modules/vote/fun/get/fun_get_one_by_id"; - -export default async function Page({ params }: { params: { id: string } }) { - let voteId = params.id; - const dataVote = await voting_funGetOneVotingbyId(voteId); - - return ( - <> - - - ); -} diff --git a/src/app/dev/vote/detail/main/[id]/layout.tsx b/src/app/dev/vote/detail/main/[id]/layout.tsx deleted file mode 100644 index 52e73baa..00000000 --- a/src/app/dev/vote/detail/main/[id]/layout.tsx +++ /dev/null @@ -1,28 +0,0 @@ -import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; -import { LayoutVote_MainDetail } from "@/app_modules/vote"; -import { voting_funGetOneVotingbyId } from "@/app_modules/vote/fun/get/fun_get_one_by_id"; -import React from "react"; - -export default async function Layout({ - children, - params, -}: { - children: React.ReactNode; - params: { id: string }; -}) { - const votingId = params.id; - const userLoginId = await funGetUserIdByToken(); - const dataVoting = await voting_funGetOneVotingbyId(votingId); - - return ( - <> - - {children} - - - ); -} diff --git a/src/app/dev/vote/detail/main/[id]/page.tsx b/src/app/dev/vote/detail/main/[id]/page.tsx deleted file mode 100644 index cd88b898..00000000 --- a/src/app/dev/vote/detail/main/[id]/page.tsx +++ /dev/null @@ -1,31 +0,0 @@ -import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; -import { Vote_MainDetail } from "@/app_modules/vote"; -import { Vote_cekKontributorById } from "@/app_modules/vote/fun/get/cek_kontributor_by_id"; -import { voting_funGetOneVotingbyId } from "@/app_modules/vote/fun/get/fun_get_one_by_id"; -import { Vote_getHasilVoteById } from "@/app_modules/vote/fun/get/get_list_hasil_by_id"; -import { Vote_getListKontributorById } from "@/app_modules/vote/fun/get/get_list_kontributor_by_id"; -import { Vote_getOnePilihanVotingByUserId } from "@/app_modules/vote/fun/get/get_one_pilihan_voting_by_user_id"; - -export default async function Page({ params }: { params: { id: string } }) { - const voteId = params.id; - const userLoginId = await funGetUserIdByToken(); - - const dataVote = await voting_funGetOneVotingbyId(voteId); - const hasilVoting = await Vote_getHasilVoteById(voteId as any); - const isKontributor = await Vote_cekKontributorById(voteId); - const pilihanKontributor = await Vote_getOnePilihanVotingByUserId(voteId); - const listKontributor = await Vote_getListKontributorById(voteId); - - return ( - <> - - - ); -} diff --git a/src/app/dev/vote/detail/publish/[id]/layout.tsx b/src/app/dev/vote/detail/publish/[id]/layout.tsx deleted file mode 100644 index e2359ded..00000000 --- a/src/app/dev/vote/detail/publish/[id]/layout.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; -import { LayoutVote_DetailPublish } from "@/app_modules/vote"; -import { voting_funGetOneVotingbyId } from "@/app_modules/vote/fun/get/fun_get_one_by_id"; -import React from "react"; - -export default async function Layout({ - children, - params, -}: { - children: React.ReactNode; - params: { id: string }; -}) { - const votingId = params.id; - const userLoginId = await funGetUserIdByToken(); - - const dataVoting = await voting_funGetOneVotingbyId(votingId); - - return ( - <> - - {children} - - - ); -} diff --git a/src/app/dev/vote/detail/publish/[id]/page.tsx b/src/app/dev/vote/detail/publish/[id]/page.tsx deleted file mode 100644 index df0477dc..00000000 --- a/src/app/dev/vote/detail/publish/[id]/page.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import { Vote_DetailPublish } from "@/app_modules/vote"; -import { Vote_getListKontributorById } from "@/app_modules/vote/fun/get/get_list_kontributor_by_id"; -import { voting_funGetOneVotingbyId } from "@/app_modules/vote/fun/get/fun_get_one_by_id"; - -export default async function Page({ params }: { params: { id: string } }) { - let voteId = params.id; - const dataVote = await voting_funGetOneVotingbyId(voteId); - - return ( - <> - - - ); -} diff --git a/src/app/dev/vote/detail/reject/[id]/layout.tsx b/src/app/dev/vote/detail/reject/[id]/layout.tsx deleted file mode 100644 index 469f132a..00000000 --- a/src/app/dev/vote/detail/reject/[id]/layout.tsx +++ /dev/null @@ -1,8 +0,0 @@ -import { LayoutVote_DetailReject } from "@/app_modules/vote"; -import React from "react"; - -export default async function Layout({children}: {children: React.ReactNode}) { - return<> - {children} - -} \ No newline at end of file diff --git a/src/app/dev/vote/detail/reject/[id]/page.tsx b/src/app/dev/vote/detail/reject/[id]/page.tsx deleted file mode 100644 index e7b2ea93..00000000 --- a/src/app/dev/vote/detail/reject/[id]/page.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import { Vote_DetailReject } from "@/app_modules/vote"; -import { voting_funGetOneVotingbyId } from "@/app_modules/vote/fun/get/fun_get_one_by_id"; - -export default async function Page({ params }: { params: { id: string } }) { - let voteId = params.id; - const dataVote = await voting_funGetOneVotingbyId(voteId); - - return ( - <> - - - ); -} diff --git a/src/app/dev/vote/detail/review/[id]/page.tsx b/src/app/dev/vote/detail/review/[id]/page.tsx deleted file mode 100644 index f0febb86..00000000 --- a/src/app/dev/vote/detail/review/[id]/page.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import { Vote_DetailReview } from "@/app_modules/vote"; -import { voting_funGetOneVotingbyId } from "@/app_modules/vote/fun/get/fun_get_one_by_id"; - -export default async function Page({ params }: { params: { id: string } }) { - let voteId = params.id; - const dataVote = await voting_funGetOneVotingbyId(voteId); - - return ( - <> - - - ); -} diff --git a/src/app/dev/vote/detail/riwayat_saya/[id]/page.tsx b/src/app/dev/vote/detail/riwayat_saya/[id]/page.tsx deleted file mode 100644 index f4542ad0..00000000 --- a/src/app/dev/vote/detail/riwayat_saya/[id]/page.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import { Vote_DetailRiwayatSaya } from "@/app_modules/vote"; -import { Vote_getListKontributorById } from "@/app_modules/vote/fun/get/get_list_kontributor_by_id"; -import { Vote_getOnePublishbyId } from "@/app_modules/vote/fun/get/get_one_publish_by_id"; - -export default async function Page({params}: {params: {id: string}}) { - let voteId = params.id; - const dataVote = await Vote_getOnePublishbyId(voteId); - const listKontributor = await Vote_getListKontributorById(voteId); - - - return ( - <> - - - ); -} diff --git a/src/app/dev/vote/detail/semua_riwayat/[id]/layout.tsx b/src/app/dev/vote/detail/semua_riwayat/[id]/layout.tsx deleted file mode 100644 index 29d02c51..00000000 --- a/src/app/dev/vote/detail/semua_riwayat/[id]/layout.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; -import { LayoutVote_DetailSemuaRiwayat } from "@/app_modules/vote"; -import React from "react"; - -export default async function Layout({ - children, - params, -}: { - children: React.ReactNode; - params: { id: string }; -}) { - const votingId = params.id; - const userLoginId = await funGetUserIdByToken(); - - return ( - <> - - {children} - - - ); -} diff --git a/src/app/dev/vote/detail/semua_riwayat/[id]/page.tsx b/src/app/dev/vote/detail/semua_riwayat/[id]/page.tsx deleted file mode 100644 index 6d943acd..00000000 --- a/src/app/dev/vote/detail/semua_riwayat/[id]/page.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import { Vote_DetailSemuaRiwayat } from "@/app_modules/vote"; -import { Vote_getListKontributorById } from "@/app_modules/vote/fun/get/get_list_kontributor_by_id"; -import { Vote_getOnePublishbyId } from "@/app_modules/vote/fun/get/get_one_publish_by_id"; - - -export default async function Page({params}: {params: {id: string}}) { - let voteId = params.id - const dataVote = await Vote_getOnePublishbyId(voteId) - const listKontributor = await Vote_getListKontributorById(voteId) - - return ( - <> - - - ); -} diff --git a/src/app/dev/vote/edit/[id]/page.tsx b/src/app/dev/vote/edit/[id]/page.tsx deleted file mode 100644 index a5fb255e..00000000 --- a/src/app/dev/vote/edit/[id]/page.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import { Vote_Edit } from "@/app_modules/vote"; -import { Vote_getListDaftarNamaById } from "@/app_modules/vote/fun/get/get_list_daftar_vote_by_id"; -import { voting_funGetOneVotingbyId } from "@/app_modules/vote/fun/get/fun_get_one_by_id"; -import _ from "lodash"; - -export default async function Page({ params }: { params: { id: string } }) { - let voteId = params.id; - const dataVote = await voting_funGetOneVotingbyId(voteId); - const data = _.omit(dataVote, ["Voting_DaftarNamaVote"]); - const listDaftarVote = await Vote_getListDaftarNamaById(voteId); - - return ( - <> - - - ); -} diff --git a/src/app/dev/vote/main/beranda/page.tsx b/src/app/dev/vote/main/beranda/page.tsx deleted file mode 100644 index 28904aca..00000000 --- a/src/app/dev/vote/main/beranda/page.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import { Vote_Beranda } from "@/app_modules/vote"; -import { vote_getAllListPublish } from "@/app_modules/vote/fun/get/get_all_list_publish"; - -export default async function Page() { - const dataVote = await vote_getAllListPublish({ page: 1 }); - - return ( - <> - - - ); -} diff --git a/src/app/dev/vote/main/kontribusi/page.tsx b/src/app/dev/vote/main/kontribusi/page.tsx deleted file mode 100644 index 31e1f35f..00000000 --- a/src/app/dev/vote/main/kontribusi/page.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import { Vote_Kontribusi } from "@/app_modules/vote"; -import { vote_getAllListKontribusiByAuthorId } from "@/app_modules/vote/fun/get/get_list_kontribusi_by_author_id"; - -export default async function Page() { - const dataKontribusi = await vote_getAllListKontribusiByAuthorId({ page: 1 }); - return ( - <> - - - ); -} diff --git a/src/app/dev/vote/main/riwayat/[id]/page.tsx b/src/app/dev/vote/main/riwayat/[id]/page.tsx deleted file mode 100644 index 10988a8f..00000000 --- a/src/app/dev/vote/main/riwayat/[id]/page.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import { Vote_Riwayat } from "@/app_modules/vote"; -import { vote_getAllListRiwayat } from "@/app_modules/vote/fun/get/get_all_list_riwayat"; -import { Vote_getAllListRiwayatSaya as vote_getAllListRiwayatSaya } from "@/app_modules/vote/fun/get/get_all_list_riwayat_saya"; - -export default async function Page({ params }: { params: { id: string } }) { - let statusRiwayatId = params.id; - - const listRiwayat = await vote_getAllListRiwayat({ page: 1 }); - const listRiwayatSaya = await vote_getAllListRiwayatSaya({ page: 1 }); - - if (statusRiwayatId == "1") { - return ( - <> - - - ); - } - if (statusRiwayatId == "2") { - return ( - <> - - - ); - } - - // return ( - // <> - // - // - // ); -} diff --git a/src/app/dev/vote/main/status/[id]/page.tsx b/src/app/dev/vote/main/status/[id]/page.tsx deleted file mode 100644 index 9e3fa9a2..00000000 --- a/src/app/dev/vote/main/status/[id]/page.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import { Vote_Status } from "@/app_modules/vote"; -import { - vote_funGetAllByStatusId, - voting_getMasterStatus, -} from "@/app_modules/vote/fun"; - -export default async function Page({ params }: { params: { id: string } }) { - const statusId = params.id; - - const listStatus = await voting_getMasterStatus(); - const dataVoting = await vote_funGetAllByStatusId({ - page: 1, - statusId: statusId, - }); - - return ( - <> - - - ); -} diff --git a/src/app/emotion.tsx b/src/app/emotion.tsx index 303639ae..22d5cd2f 100644 --- a/src/app/emotion.tsx +++ b/src/app/emotion.tsx @@ -1,10 +1,8 @@ "use client"; +import { MainColor } from "@/app_modules/_global/color"; // import './globals.css' import { CacheProvider } from "@emotion/react"; -import { - MantineProvider, - useEmotionCache -} from "@mantine/core"; +import { MantineProvider, useEmotionCache } from "@mantine/core"; import { Notifications } from "@mantine/notifications"; import { Provider } from "jotai"; import { useServerInsertedHTML } from "next/navigation"; @@ -30,9 +28,16 @@ export default function RootStyleRegistry({ return ( + HIPMI - + diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 29bdfe8f..a126e831 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,8 +1,8 @@ import RootStyleRegistry from "./emotion"; // import "./globals.css"; import dotenv from "dotenv"; -import { ServerEnv } from "./lib/server_env"; -import { TokenProvider } from "./lib/token"; +import { ServerEnv } from "../lib/server_env"; +import { TokenProvider } from "../lib/token"; dotenv.config({ path: ".env", }); diff --git a/src/app/lib/prisma.ts b/src/app/lib/prisma.ts deleted file mode 100644 index 553b19ad..00000000 --- a/src/app/lib/prisma.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { PrismaClient } from '@prisma/client' - -const prismaClientSingleton = () => { - return new PrismaClient() -} - -type PrismaClientSingleton = ReturnType - -const globalForPrisma = globalThis as unknown as { - prisma: PrismaClientSingleton | undefined -} - -const prisma = globalForPrisma.prisma ?? prismaClientSingleton() - -export default prisma - -if (process.env.NODE_ENV !== 'production') globalForPrisma.prisma = prisma \ No newline at end of file diff --git a/src/app/lib/realtime_provider.tsx b/src/app/lib/realtime_provider.tsx deleted file mode 100644 index 6468a0a0..00000000 --- a/src/app/lib/realtime_provider.tsx +++ /dev/null @@ -1,209 +0,0 @@ -"use client"; - -import { useShallowEffect } from "@mantine/hooks"; -import { useAtom } from "jotai"; -import { WibuRealtime } from "wibu-pkg"; -import { - gs_admin_ntf, - gs_adminDonasi_triggerReview, - gs_adminEvent_triggerReview, - gs_adminJob_triggerReview, - gs_adminVoting_triggerReview, - gs_donasiTriggerBeranda, - gs_eventTriggerBeranda, - gs_jobTiggerBeranda, - gs_realtimeData, - gs_user_ntf, - gs_votingTiggerBeranda, - IRealtimeData, -} from "./global_state"; - -// const WIBU_REALTIME_TOKEN: string | undefined = -// process.env.NEXT_PUBLIC_WIBU_REALTIME_TOKEN; - -// Pasang tipe data di package WibuRealtime sebagai type adata setData -export type TypeNotification = { - type: "message" | "notification" | "trigger"; - pushNotificationTo: "ADMIN" | "USER"; - dataMessage?: IRealtimeData; - userLoginId?: string; -}; - -export default function RealtimeProvider({ - userLoginId, - WIBU_REALTIME_TOKEN, -}: { - userLoginId: string; - WIBU_REALTIME_TOKEN: string; -}) { - const [dataRealtime, setDataRealtime] = useAtom(gs_realtimeData); - const [newAdminNtf, setNewAdminNtf] = useAtom(gs_admin_ntf); - const [newUserNtf, setNewUserNtf] = useAtom(gs_user_ntf); - - // JOB - const [isTriggerJobBeranda, setIsTriggerJobBeranda] = - useAtom(gs_jobTiggerBeranda); - const [isAdminJob_TriggerReview, setIsAdminJob_TriggerReview] = useAtom( - gs_adminJob_triggerReview - ); - - // EVENT - const [isTriggerEventBeranda, setIsTriggerEventBeranda] = useAtom( - gs_eventTriggerBeranda - ); - const [isAdminEvent_TriggerReview, setIsAdminEvent_TriggerReview] = useAtom( - gs_adminEvent_triggerReview - ); - - // VOTING - const [isTriggerVotingBeranda, setIsTriggerVotingBeranda] = useAtom( - gs_votingTiggerBeranda - ); - const [isAdminVoting_TriggerReview, setIsAdminVoting_TriggerReview] = useAtom( - gs_adminVoting_triggerReview - ); - - // DONASI - const [isAdminDonasi_TriggerReview, setIsAdminDonasi_TriggerReview] = useAtom( - gs_adminDonasi_triggerReview - ); - const [isTriggerDonasiBeranda, setIsTriggerDonasiBeranda] = useAtom( - gs_donasiTriggerBeranda - ); - - useShallowEffect(() => { - // if (WIBU_REALTIME_TOKEN === undefined) return alert("gak dapet key"); - try { - WibuRealtime.init({ - project: "hipmi", - WIBU_REALTIME_TOKEN: WIBU_REALTIME_TOKEN, - onData(data: TypeNotification) { - if ( - data.type == "notification" && - data.pushNotificationTo == "ADMIN" - ) { - setNewAdminNtf((e) => e + 1); - } - - // Notifikasi ke semua user , yang datanya di acc admin - if ( - data.type == "notification" && - data.pushNotificationTo == "USER" && - data.dataMessage?.userId == userLoginId - ) { - setNewUserNtf((e) => e + 1); - setDataRealtime(data.dataMessage as any); - } - - // ---------------------- JOB ------------------------- // - if ( - data.type == "trigger" && - data.pushNotificationTo == "ADMIN" && - data.dataMessage?.kategoriApp == "JOB" - ) { - setIsAdminJob_TriggerReview(true); - } - - if ( - data.type == "trigger" && - data.pushNotificationTo == "USER" && - data.dataMessage?.kategoriApp == "JOB" && - data.dataMessage.status == "Publish" - ) { - setIsTriggerJobBeranda(true); - } - // ---------------------- JOB ------------------------- // - - // ---------------------- EVENT ------------------------- // - if ( - data.type == "trigger" && - data.pushNotificationTo == "ADMIN" && - data.dataMessage?.kategoriApp == "EVENT" - ) { - setIsAdminEvent_TriggerReview(true); - } - - if ( - data.type == "trigger" && - data.pushNotificationTo == "USER" && - data.dataMessage?.kategoriApp == "EVENT" && - data.dataMessage.status == "Publish" - ) { - setIsTriggerEventBeranda(true); - } - - if ( - data.type == "notification" && - data.pushNotificationTo == "USER" && - data.dataMessage?.status == "Peserta Event" && - userLoginId !== data.dataMessage?.userId - ) { - setNewUserNtf((e) => e + 1); - } - // ---------------------- EVENT ------------------------- // - - // ---------------------- VOTING ------------------------- // - if ( - data.type == "trigger" && - data.pushNotificationTo == "ADMIN" && - data.dataMessage?.kategoriApp == "VOTING" - ) { - setIsAdminVoting_TriggerReview(true); - } - - if ( - data.type == "trigger" && - data.pushNotificationTo == "USER" && - data.dataMessage?.kategoriApp == "VOTING" && - data.dataMessage.status == "Publish" - ) { - setIsTriggerVotingBeranda(true); - } - - if ( - data.type == "notification" && - data.pushNotificationTo == "USER" && - data.dataMessage?.status == "Voting Masuk" && - userLoginId !== data.dataMessage?.userId - ) { - setNewUserNtf((e) => e + 1); - } - // ---------------------- VOTING ------------------------- // - - // ---------------------- DONASI ------------------------- // - if ( - data.type == "trigger" && - data.pushNotificationTo == "ADMIN" && - data.dataMessage?.kategoriApp == "DONASI" - ) { - setIsAdminDonasi_TriggerReview(true); - } - - if ( - data.type == "trigger" && - data.pushNotificationTo == "USER" && - data.dataMessage?.kategoriApp == "DONASI" && - data.dataMessage.status == "Publish" - ) { - setIsTriggerDonasiBeranda(true); - } - - // if ( - // data.type == "notification" && - // data.pushNotificationTo == "ADMIN" && - // data.dataMessage?.status == "Menunggu" && - // userLoginId !== data.dataMessage?.userId - // ) { - // console.log("yes"); - // } - - // ---------------------- DONASI ------------------------- // - }, - }); - } catch (error) { - console.log(error); - } - }, []); - - return null; -} diff --git a/src/app/lib/router_admin/router_app_information.ts b/src/app/lib/router_admin/router_app_information.ts deleted file mode 100644 index 07575544..00000000 --- a/src/app/lib/router_admin/router_app_information.ts +++ /dev/null @@ -1,3 +0,0 @@ -export const RouterAdminAppInformation = { - main: "/dev/admin/app-information/main", -}; diff --git a/src/app/page.tsx b/src/app/page.tsx index 3a1f99a2..6fc3a06d 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -2,11 +2,14 @@ import { SplashScreen } from "@/app_modules/auth"; import { useShallowEffect } from "@mantine/hooks"; +import { useRouter } from "next/navigation"; export default function Page() { + const router = useRouter(); useShallowEffect(() => { setTimeout(() => { - window.location.replace("/dev/home"); + // window.location.replace("/dev/home"); + router.replace("/dev/home", { scroll: false }); }, 1000); }, []); diff --git a/src/app/zCoba/home/page.tsx b/src/app/zCoba/home/page.tsx new file mode 100644 index 00000000..437474b1 --- /dev/null +++ b/src/app/zCoba/home/page.tsx @@ -0,0 +1,10 @@ +import ClientLayout from "./v2_coba_tamplate"; +import ViewV2 from "./v2_view"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/zCoba/home/test_children.tsx b/src/app/zCoba/home/test_children.tsx new file mode 100644 index 00000000..e3a96278 --- /dev/null +++ b/src/app/zCoba/home/test_children.tsx @@ -0,0 +1,127 @@ +"use client"; + +import { AccentColor, MainColor } from "@/app_modules/_global/color"; +import { + listMenuHomeBody, + menuHomeJob, +} from "@/app_modules/home/component/list_menu_home"; +import { + ActionIcon, + Box, + Group, + Image, + Paper, + SimpleGrid, + Stack, + Text +} from "@mantine/core"; +import { IconUserSearch } from "@tabler/icons-react"; + +export function Test_Children() { + return ( + <> + + logo + + {Array.from(new Array(2)).map((e, i) => ( + + + {listMenuHomeBody.map((e, i) => ( + {}} + > + + + {e.icon} + + + {e.name} + + + + ))} + + + {/* Job View */} + + {}}> + + + {menuHomeJob.icon} + + + {menuHomeJob.name} + + + + {Array.from({ length: 2 }).map((e, i) => ( + + + + + + + + nama {i} + + + judulnya {i} + + + + + ))} + + + + + ))} + + + ); +} diff --git a/src/app/zCoba/home/test_footer.tsx b/src/app/zCoba/home/test_footer.tsx new file mode 100644 index 00000000..baa2368a --- /dev/null +++ b/src/app/zCoba/home/test_footer.tsx @@ -0,0 +1,75 @@ +"use client" + +import { MainColor } from "@/app_modules/_global/color"; +import { listMenuHomeFooter } from "@/app_modules/home"; +import { + ActionIcon, + Box, + Center, + SimpleGrid, + Stack, + Text, +} from "@mantine/core"; +import { IconUserCircle } from "@tabler/icons-react"; +import { useRouter } from "next/navigation"; + +export default function Test_FooterHome() { + const router = useRouter(); + + return ( + + + {listMenuHomeFooter.map((e) => ( +
+ { + console.log("test") + }} + > + + {e.icon} + + + {e.name} + + +
+ ))} + +
+ + + console.log("test") + } + > + + + + Profile + + +
+
+
+ ); +} diff --git a/src/app/zCoba/home/test_header.tsx b/src/app/zCoba/home/test_header.tsx new file mode 100644 index 00000000..df65017a --- /dev/null +++ b/src/app/zCoba/home/test_header.tsx @@ -0,0 +1,130 @@ +"use client"; + +import { AccentColor, MainColor } from "@/app_modules/_global/color"; +import { + Header, + Group, + ActionIcon, + Text, + Title, + Box, + Loader, +} from "@mantine/core"; +import { IconArrowLeft, IconChevronLeft } from "@tabler/icons-react"; +import { useRouter } from "next/navigation"; +import React, { useState } from "react"; + + +export default function Test_LayoutHeaderTamplate({ + title, + posotion, + // left button + hideButtonLeft, + iconLeft, + routerLeft, + customButtonLeft, + // right button + iconRight, + routerRight, + customButtonRight, + backgroundColor, +}: { + title: string; + posotion?: any; + // left button + hideButtonLeft?: boolean; + iconLeft?: any; + routerLeft?: any; + customButtonLeft?: React.ReactNode; + // right button + iconRight?: any; + routerRight?: any; + customButtonRight?: React.ReactNode; + backgroundColor?: string; +}) { + const router = useRouter(); + const [isLoading, setIsLoading] = useState(false); + const [isRightLoading, setRightLoading] = useState(false); + + return ( + <> + + + {hideButtonLeft ? ( + + ) : customButtonLeft ? ( + customButtonLeft + ) : ( + { + setIsLoading(true); + routerLeft === undefined + ? router.back() + : router.push(routerLeft, { scroll: false }); + }} + > + {/* PAKE LOADING SAAT KLIK BACK */} + {/* {isLoading ? ( + + ) : iconLeft ? ( + iconLeft + ) : ( + + )} */} + + + {/* GA PAKE LOADING SAAT KLIK BACK */} + {iconLeft ? ( + iconLeft + ) : ( + + )} + + )} + + + {title} + + + {customButtonRight ? ( + customButtonRight + ) : iconRight === undefined ? ( + + ) : routerRight === undefined ? ( + {iconRight} + ) : ( + { + setRightLoading(true); + router.push(routerRight); + }} + > + {isRightLoading ? ( + + ) : ( + iconRight + )} + + )} + + + + ); +} diff --git a/src/app/zCoba/home/test_tamplate.tsx b/src/app/zCoba/home/test_tamplate.tsx new file mode 100644 index 00000000..ff55f50a --- /dev/null +++ b/src/app/zCoba/home/test_tamplate.tsx @@ -0,0 +1,127 @@ +"use client"; + +import { AccentColor, MainColor } from "@/app_modules/_global/color"; +import { + BackgroundImage, + Box, + Container, + rem, + ScrollArea, +} from "@mantine/core"; + +export function Test_Tamplate({ + children, + header, + footer, +}: { + children: React.ReactNode; + header: React.ReactNode; + footer?: React.ReactNode; +}) { + return ( + <> + + + {/* */} + + + {children} + + + {/* */} + + + + ); +} + +export function TestHeader({ header }: { header: React.ReactNode }) { + return ( + <> + + {header} + + + ); +} + +export function TestChildren({ + children, + footer, +}: { + children: React.ReactNode; + footer: React.ReactNode; +}) { + return ( + <> + + {children} + + + ); +} + +function TestFooter({ footer }: { footer: React.ReactNode }) { + return ( + <> + {footer ? ( + + + {footer} + + + ) : ( + "" + )} + + ); +} diff --git a/src/app/zCoba/home/v2_children.tsx b/src/app/zCoba/home/v2_children.tsx new file mode 100644 index 00000000..7942ba69 --- /dev/null +++ b/src/app/zCoba/home/v2_children.tsx @@ -0,0 +1,26 @@ +"use client"; + +import { Box, ScrollArea } from "@mantine/core"; + +export function V2_Children({ + children, + height, +}: { + children: React.ReactNode; + height?: number; +}) { + return ( + <> + + {children} + {/* + */} + + + ); +} diff --git a/src/app/zCoba/home/v2_coba_tamplate.tsx b/src/app/zCoba/home/v2_coba_tamplate.tsx new file mode 100644 index 00000000..58fec604 --- /dev/null +++ b/src/app/zCoba/home/v2_coba_tamplate.tsx @@ -0,0 +1,159 @@ +"use client"; + +import { AccentColor, MainColor } from "@/app_modules/_global/color"; +import { + ActionIcon, + BackgroundImage, // Import BackgroundImage dari Mantine + Box, + Button, + Container, + Group, + Text, + Title, +} from "@mantine/core"; +import { useDisclosure, useShallowEffect } from "@mantine/hooks"; +import { createStyles } from "@mantine/styles"; +import { IconBell, IconSearch } from "@tabler/icons-react"; +import { ReactNode, useEffect, useState } from "react"; + +// Styling langsung didefinisikan di dalam komponen +const useStyles = createStyles((theme) => ({ + pageContainer: { + display: "flex", + flexDirection: "column", + minHeight: "100dvh", // dynamic viewport height untuk mobile + width: "100%", + maxWidth: "500px", // Batasi lebar maksimum + margin: "0 auto", // Pusatkan layout + boxShadow: "0 0 10px rgba(0, 0, 0, 0.1)", // Tambahkan shadow untuk efek mobile-like + backgroundColor: MainColor.darkblue, // Warna latar belakang fallback + + [`@media (max-width: 768px)`]: { + maxWidth: "100%", // Pada layar mobile, gunakan lebar penuh + boxShadow: "none", // Hilangkan shadow pada mobile + }, + }, + + header: { + position: "sticky", + top: 0, + width: "100%", + maxWidth: "500px", // Batasi lebar header sesuai container + margin: "0 auto", // Pusatkan header + backgroundColor: MainColor.darkblue, + boxShadow: "0 1px 3px rgba(0, 0, 0, 0.1)", + zIndex: 1000, // Pastikan z-index tinggi + transition: "all 0.3s ease", + color: MainColor.yellow, + }, + + scrolled: { + boxShadow: "0 2px 8px rgba(0, 0, 0, 0.15)", + }, + + headerContainer: { + height: "8vh", + display: "flex", + alignItems: "center", + padding: "0 16px", // Padding untuk mobile view + + [`@media (max-width: 768px)`]: { + height: "8vh", + }, + borderBottom: `1px solid ${AccentColor.blue}`, + borderBottomLeftRadius: "10px", + borderBottomRightRadius: "10px", + }, + + content: { + flex: 1, + width: "100%", + overflowY: "auto", // Izinkan scrolling pada konten + paddingBottom: "15vh", // Sesuaikan dengan tinggi footer + }, + + footer: { + width: "100%", + backgroundColor: MainColor.darkblue, + borderTop: `1px solid ${AccentColor.blue}`, + height: "10vh", // Tinggi footer + display: "flex", + alignItems: "center", + justifyContent: "center", + position: "fixed", + bottom: 0, + left: "50%", // Pusatkan footer + transform: "translateX(-50%)", // Pusatkan footer + maxWidth: "500px", // Batasi lebar footer + color: MainColor.white, + borderTopLeftRadius: "10px", + borderTopRightRadius: "10px", + }, +})); + +interface ClientLayoutProps { + children: ReactNode; +} + +export default function ClientLayout({ children }: ClientLayoutProps) { + const [scrolled, setScrolled] = useState(false); + const { classes, cx } = useStyles(); + + // Effect untuk mendeteksi scroll + useEffect(() => { + function handleScroll() { + if (window.scrollY > 10) { + setScrolled(true); + } else { + setScrolled(false); + } + } + + window.addEventListener("scroll", handleScroll); + return () => window.removeEventListener("scroll", handleScroll); + }, []); + + return ( + + {/* Header - tetap di atas */} + + + + + + + Home Test + + + + + + + + {/* Konten utama - bisa di-scroll */} + + {children} + + + {/* Footer - tetap di bawah */} + + + + © 2025 Nama Perusahaan + + + + + + + + + ); +} diff --git a/src/app/zCoba/home/v2_header.tsx b/src/app/zCoba/home/v2_header.tsx new file mode 100644 index 00000000..38a72361 --- /dev/null +++ b/src/app/zCoba/home/v2_header.tsx @@ -0,0 +1,42 @@ +"use client"; + +import { MainColor } from "@/app_modules/_global/color"; +import { ActionIcon, Box, Group, Title } from "@mantine/core"; +import { IconBell, IconChevronLeft } from "@tabler/icons-react"; + +export function V2_Header() { + return ( + <> + + + {}} + > + + + + + Test Tamplate + + + {}}> + + + + + + ); +} diff --git a/src/app/zCoba/home/v2_home_view.tsx b/src/app/zCoba/home/v2_home_view.tsx new file mode 100644 index 00000000..90e0fc9a --- /dev/null +++ b/src/app/zCoba/home/v2_home_view.tsx @@ -0,0 +1,127 @@ +"use client"; + +import { AccentColor, MainColor } from "@/app_modules/_global/color"; +import { + listMenuHomeBody, + menuHomeJob, +} from "@/app_modules/home/component/list_menu_home"; +import { + Box, + Stack, + SimpleGrid, + Paper, + ActionIcon, + Group, + Image, + Text, +} from "@mantine/core"; +import { IconUserSearch } from "@tabler/icons-react"; + +export function V2_HomeView() { + return ( + <> + + logo + + {Array.from(new Array(2)).map((e, i) => ( + + + {listMenuHomeBody.map((e, i) => ( + {}} + > + + + {e.icon} + + + {e.name} + + + + ))} + + + {/* Job View */} + + {}}> + + + {menuHomeJob.icon} + + + {menuHomeJob.name} + + + + {Array.from({ length: 2 }).map((e, i) => ( + + + + + + + + nama {i} + + + judulnya {i} + + + + + ))} + + + + + ))} + + + ); +} diff --git a/src/app/zCoba/home/v2_view.tsx b/src/app/zCoba/home/v2_view.tsx new file mode 100644 index 00000000..34b8933f --- /dev/null +++ b/src/app/zCoba/home/v2_view.tsx @@ -0,0 +1,117 @@ +// app/page.tsx +"use client"; + +import { + Badge, + Box, + Button, + Card, + Group, + Image, + Paper, + Stack, + Text, + Title, +} from "@mantine/core"; +import ClientLayout from "./v2_coba_tamplate"; + +export default function ViewV2() { + return ( + + + + Selamat Datang + + + + Aplikasi dengan layout yang dioptimalkan untuk tampilan mobile + + + + {[...Array(5)].map((_, index) => ( + + + {`Produk + + + + Produk {index + 1} + + Baru + + + + + Deskripsi produk yang singkat dan padat untuk tampilan mobile. + Fokus pada informasi penting saja. + + + + + ))} + + + + {[...Array(5)].map((_, index) => ( + + Test + + ))} + + + {[...Array(5)].map((_, index) => ( +
+ Test +
+ ))} + + + + Promo Spesial + + + Dapatkan diskon 20% untuk pembelian pertama + + + +
+
+ ); +} diff --git a/src/app/zCoba/page.tsx b/src/app/zCoba/page.tsx index f07fb56c..8c65e79c 100644 --- a/src/app/zCoba/page.tsx +++ b/src/app/zCoba/page.tsx @@ -1,18 +1,60 @@ -import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; -import Coba_TestLoading from "@/app_modules/zCoba"; +"use client"; -export default async function Page() { - await new Promise((a, b) => { - setTimeout(a, 3000); +import { MainColor } from "@/app_modules/_global/color"; +import { + Avatar, + Button, + Center, + FileButton, + Paper, + Stack, +} from "@mantine/core"; +import { IconCamera } from "@tabler/icons-react"; +import { useState } from "react"; +import { DIRECTORY_ID } from "../../lib"; + +export default function Page() { + const [data, setData] = useState({ + name: "bagas", + hobi: [ + { + id: "1", + name: "mancing", + }, + { + id: "2", + name: "game", + }, + ], }); - const userLoginId = await funGetUserIdByToken(); - return ( <> - {/* */} - - {/* */} + +
{JSON.stringify(data, null, 2)}
+ + +
); } diff --git a/src/app/zCoba/pdf/_view.tsx b/src/app/zCoba/pdf/_view.tsx new file mode 100644 index 00000000..fc7378ef --- /dev/null +++ b/src/app/zCoba/pdf/_view.tsx @@ -0,0 +1,46 @@ +"use client"; + +import { Button } from "@mantine/core"; + +interface DownloadButtonProps { + fileUrl: string; + fileName: string; +} + +export default function Coba() { + const fileUrl = + "https://wibu-storage.wibudev.com/api/pdf-to-image?url=https://wibu-storage.wibudev.com/api/files/cm7liew81000t3y8ax1v6yo02"; + const fileName = "example.pdf"; // Nama file yang akan diunduh + + return ( +
+

Download File Example

+ +
+ ); +} + +export function DownloadButton({ fileUrl, fileName }: DownloadButtonProps) { + const handleDownloadFromAPI = async () => { + try { + const response = await fetch("https://wibu-storage.wibudev.com/api/files/cm7liew81000t3y8ax1v6yo02") + const blob = await response.blob(); // Konversi respons ke Blob + const url = window.URL.createObjectURL(blob); // Buat URL untuk Blob + const link = document.createElement("a"); + link.href = url; + link.download = "generated-file.pdf"; // Nama file yang akan diunduh + document.body.appendChild(link); + link.click(); + document.body.removeChild(link); + window.URL.revokeObjectURL(url); // Bersihkan URL + } catch (error) { + console.error("Error downloading file:", error); + } + }; + + return ( + + ); +} diff --git a/src/app/zCoba/pdf/page.tsx b/src/app/zCoba/pdf/page.tsx new file mode 100644 index 00000000..a645fa5d --- /dev/null +++ b/src/app/zCoba/pdf/page.tsx @@ -0,0 +1,13 @@ +import Coba from "./_view"; + + + +async function Page() { + return ( + <> + + + ); +} + +export default Page; diff --git a/src/app/zCoba/scroll/_comp/ui_scroll.tsx b/src/app/zCoba/scroll/_comp/ui_scroll.tsx new file mode 100644 index 00000000..4d0651f7 --- /dev/null +++ b/src/app/zCoba/scroll/_comp/ui_scroll.tsx @@ -0,0 +1,79 @@ +/* eslint-disable react-hooks/exhaustive-deps */ +import React, { useState, useEffect } from "react"; + +// Tipe untuk data item (sesuaikan sesuai API kamu) +interface Item { + id: number; + name: string; +} + +// Props komponen +interface InfiniteScrollProps { + fetchFunction: (page: number) => Promise; + renderItem: (item: T) => React.ReactNode; + itemsPerPage?: number; + threshold?: number; // Jarak dari bawah halaman untuk memicu load +} + +const InfiniteScroll = ({ + fetchFunction, + renderItem, + itemsPerPage = 10, + threshold = 50, +}: InfiniteScrollProps) => { + const [items, setItems] = useState([]); + const [hasMore, setHasMore] = useState(true); + const [page, setPage] = useState(1); + + // Load data awal + useEffect(() => { + const loadInitialData = async () => { + const data = await fetchFunction(page); + if (data.length === 0) setHasMore(false); + setItems(data); + }; + + loadInitialData(); + }, [fetchFunction, page]); + + // Handle scroll event + useEffect(() => { + const handleScroll = () => { + const isBottom = + window.innerHeight + window.scrollY >= + document.body.offsetHeight - threshold; + + if (isBottom && hasMore) { + loadMoreItems(); + } + }; + + window.addEventListener("scroll", handleScroll); + return () => window.removeEventListener("scroll", handleScroll); + }, [hasMore, threshold]); + + const loadMoreItems = async () => { + const nextPage = page + 1; + const newItems = await fetchFunction(nextPage); + + if (newItems.length === 0) { + setHasMore(false); + } + + setItems((prev) => [...prev, ...newItems]); + setPage(nextPage); + }; + + return ( +
+
    + {items.map((item, index) => ( +
  • {renderItem(item)}
  • + ))} +
+ {!hasMore &&

🎉 Semua data telah dimuat.

} +
+ ); +}; + +export default InfiniteScroll; diff --git a/src/app/zCoba/scroll/page.tsx b/src/app/zCoba/scroll/page.tsx new file mode 100644 index 00000000..8adcf1d7 --- /dev/null +++ b/src/app/zCoba/scroll/page.tsx @@ -0,0 +1,46 @@ +"use client" + +import React, { useState } from "react"; +import InfiniteScroll from "./_comp/ui_scroll"; +import { apiGetMessageByRoomId } from "@/app_modules/colab/_lib/api_collaboration"; +import { ChatMessage } from "@/app/dev/(user)/colab/_comp/interface"; + +// Definisikan tipe data +interface User { + id: number; + name: string; + email: string; +} + + + +// Komponen App +function App() { + const [data, setData] = useState([]); + // Simulasi API call + const fetchUsers = async (page: number): Promise => { + const response = await apiGetMessageByRoomId({ + id: "cmb5x31dt0001tl7y7vj26pfy", + }); + setData(response.data); + return response.data; + }; + + return ( +
+

Infinite Scroll with TypeScript

+ + fetchFunction={fetchUsers} + itemsPerPage={10} + threshold={100} + renderItem={(item) => ( +
+ {item.User?.Profile?.name} - {item.message} +
+ )} + /> +
+ ); +} + +export default App; diff --git a/src/app/zCoba/skeleton/page.tsx b/src/app/zCoba/skeleton/page.tsx new file mode 100644 index 00000000..df2e7133 --- /dev/null +++ b/src/app/zCoba/skeleton/page.tsx @@ -0,0 +1,56 @@ +"use client"; + +import { ComponentGlobal_CardStyles } from "@/app_modules/_global/component"; +import { + UIGlobal_LayoutHeaderTamplate, + UIGlobal_LayoutTamplate, +} from "@/app_modules/_global/ui"; +import CustomSkeleton from "@/app_modules/components/CustomSkeleton"; +import { Button, Center, Grid, Group, Skeleton, Stack } from "@mantine/core"; +import Link from "next/link"; + +export default function Voting_ComponentSkeletonViewPuh() { + return ( + <> + } + > + + +
+ +
+ + +
+ + {/* + + + + + + + + + + + + + + + + + */} + + {/* + {Array.from({ length: 4 }).map((_, i) => ( + + ))} + + + */} +
+ + ); +} diff --git a/src/app/zCoba/test1/page.tsx b/src/app/zCoba/test1/page.tsx deleted file mode 100644 index 7f7cfd74..00000000 --- a/src/app/zCoba/test1/page.tsx +++ /dev/null @@ -1,54 +0,0 @@ -"use client"; -import { - gs_admin_ntf, - gs_realtimeData, - IRealtimeData, -} from "@/app/lib/global_state"; -import { Button, Stack } from "@mantine/core"; -import { useShallowEffect } from "@mantine/hooks"; -import { useAtom } from "jotai"; -import { WibuRealtime } from "wibu-pkg"; -import { v4 } from "uuid"; -import { useState } from "react"; -const angka = 10; -export default function Page() { - const [dataRealtime, setDataRealtime] = useAtom(gs_realtimeData); - const [adminNtf, setAdminNtf] = useAtom(gs_admin_ntf); - const [notif, setNotif] = useState(angka); - - useShallowEffect(() => { - if (adminNtf) { - setNotif((e) => e + 1); - } - }, [adminNtf]); - - async function onSend() { - const newData: IRealtimeData = { - appId: v4(), - status: "Publish", - userId: "user1", - pesan: "apa kabar", - title: "coba", - kategoriApp: "INVESTASI", - }; - - WibuRealtime.setData({ - type: "message", - pushNotificationTo: "USER", - dataMessage: newData, - }); - } - - return ( - - {notif} - - - ); -} diff --git a/src/app/zCoba/test2/page.tsx b/src/app/zCoba/test2/page.tsx index c0fbf7ba..d010f19e 100644 --- a/src/app/zCoba/test2/page.tsx +++ b/src/app/zCoba/test2/page.tsx @@ -1,5 +1,5 @@ "use client"; -import { gs_realtimeData, IRealtimeData } from "@/app/lib/global_state"; +import { gs_realtimeData, IRealtimeData } from "@/lib/global_state"; import { Button, Stack } from "@mantine/core"; import { useShallowEffect } from "@mantine/hooks"; import { useAtom } from "jotai"; diff --git a/src/app/zCoba/text_editor/page.tsx b/src/app/zCoba/text_editor/page.tsx new file mode 100644 index 00000000..76fc18ac --- /dev/null +++ b/src/app/zCoba/text_editor/page.tsx @@ -0,0 +1,140 @@ +"use client"; + +import { useEditor, EditorContent } from "@tiptap/react"; +import StarterKit from "@tiptap/starter-kit"; +import Image from "@tiptap/extension-image"; +import { useState } from "react"; +import { + Box, + Button, + Group, + Image as MantineImage, + Stack, + Text, +} from "@mantine/core"; +import Underline from "@tiptap/extension-underline"; +import { MainColor } from "@/app_modules/_global/color"; + +const listStiker = [ + { + id: 2, + name: "stiker2", + url: "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQN9AKmsBY4yqdn3GueJJEVPJbfmf853gDL4cN8uc9eqsCTiJ1fzhcpywzVP68NCJEA5NQ&usqp=CAU", + }, + { + id: 3, + name: "stiker3", + url: "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcS2lkV3ZiQ8m-OELSui2JGVy80vnh1cyRUV7NrgFNluPVVs2HUAyCHwCMAKGe2s5jk2sn8&usqp=CAU", + }, + { + id: 4, + name: "stiker4", + url: "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQHy9ZdsPc6dHgVTl5yIGpRJ-KtpTIsXA2_kbfO1Oc-pv_f7CNKGxhO56RjKujE3xCyb9k&usqp=CAU", + }, +]; + +export default function RichTextWithStickers() { + const [chat, setChat] = useState([]); + + const editor = useEditor({ + extensions: [ + StarterKit, // Sudah include Bold, Italic, dll + Underline, // Tambahan untuk underline + Image, + ], + content: "", + }); + + const insertSticker = (url: string) => { + editor?.chain().focus().setImage({ src: url }).run(); + }; + + return ( + + Tiptap Editor dengan Stiker Inline + + + + + + + + + + + + + + {listStiker.map((item) => ( + insertSticker(item.url)} + style={{ + border: "none", + background: "transparent", + cursor: "pointer", + }} + > + + + ))} + + + {/* + {chat.map((item, index) => ( + + ))} + */} + + ); +} diff --git a/src/app/zCoba/text_editor2/page.tsx b/src/app/zCoba/text_editor2/page.tsx new file mode 100644 index 00000000..580423c3 --- /dev/null +++ b/src/app/zCoba/text_editor2/page.tsx @@ -0,0 +1,210 @@ +"use client"; +import React, { useState, useEffect } from "react"; +import { + Box, + Button, + Group, + Image, + Paper, + ScrollArea, + SimpleGrid, + Stack, + Text, + Tooltip, + Modal, +} from "@mantine/core"; +import { useDisclosure } from "@mantine/hooks"; +import dynamic from "next/dynamic"; +import { MainColor } from "@/app_modules/_global/color"; +import { listStiker } from "@/app_modules/_global/lib/stiker"; + +// Dynamic import ReactQuill dengan SSR disabled +const ReactQuill = dynamic( + async () => { + const { default: RQ } = await import("react-quill"); + // Tidak perlu import CSS dengan import statement + return function comp({ forwardedRef, ...props }: any) { + return ; + }; + }, + { ssr: false, loading: () =>

Loading Editor...

} +); + + +type ChatItem = { + content: string; // HTML content including text and stickers +}; + +export default function Page() { + const [editorContent, setEditorContent] = useState(""); + const [chat, setChat] = useState([]); + const [opened, { open, close }] = useDisclosure(false); + const quillRef = React.useRef(null); + const [quillLoaded, setQuillLoaded] = useState(false); + + // Load CSS on client-side only + useEffect(() => { + // Add Quill CSS via tag + const link = document.createElement("link"); + link.href = "https://cdn.quilljs.com/1.3.6/quill.snow.css"; + link.rel = "stylesheet"; + document.head.appendChild(link); + + // Add custom style for stickers inside Quill editor + const style = document.createElement("style"); + style.textContent = ` + .ql-editor img { + max-width: 100px !important; + max-height: 100px !important; + } + .chat-content img { + max-width: 70px !important; + max-height: 70px !important; + } + `; + document.head.appendChild(style); + + setQuillLoaded(true); + + return () => { + // Clean up when component unmounts + document.head.removeChild(link); + document.head.removeChild(style); + }; + }, []); + + // Custom toolbar options for ReactQuill + const modules = { + toolbar: [ + [{ header: [1, 2, false] }], + ["bold", "italic", "underline", "strike", "blockquote"], + [{ list: "ordered" }, { list: "bullet" }], + ["link", "image"], + ["clean"], + ], + }; + + const formats = [ + "header", + "bold", + "italic", + "underline", + "strike", + "blockquote", + "list", + "bullet", + "link", + "image", + ]; + + const insertSticker = (stickerUrl: string) => { + if (!quillRef.current) return; + + const quill = quillRef.current.getEditor(); + const range = quill.getSelection(true); + + // Custom image insertion with size + // Use custom blot or HTML string with size attributes + const stickerHtml = `sticker`; + + // Insert HTML at cursor position + quill.clipboard.dangerouslyPasteHTML(range.index, stickerHtml); + + // Move cursor after inserted sticker + quill.setSelection(range.index + 1, 0); + + // Focus back on editor + quill.focus(); + + // Close sticker modal + close(); + }; + + // Function to send message + const sendMessage = () => { + if (editorContent.trim() !== "") { + setChat((prev) => [...prev, { content: editorContent }]); + setEditorContent(""); // Clear after sending + } + }; + + return ( + + + + + + {chat.map((item, index) => ( + +
+ + ))} + + + + + + Chat Preview Data: + + +
+              {JSON.stringify(chat, null, 2)}
+            
+
+
+ + + + + {quillLoaded && ( + + )} + + + + + + + + + + {/* Sticker Modal */} + + + {listStiker.map((item) => ( + + + {item.name} insertSticker(item.url)} + /> + + + ))} + + + + ); +} diff --git a/src/app/zCoba/upload/page.tsx b/src/app/zCoba/upload/page.tsx new file mode 100644 index 00000000..34ee4314 --- /dev/null +++ b/src/app/zCoba/upload/page.tsx @@ -0,0 +1,133 @@ +"use client"; + +import { MainColor } from "@/app_modules/_global/color"; +import { ComponentGlobal_BoxUploadImage } from "@/app_modules/_global/component"; +import { funGlobal_UploadToStorage } from "@/app_modules/_global/fun"; +import { + UIGlobal_LayoutHeaderTamplate, + UIGlobal_LayoutTamplate, +} from "@/app_modules/_global/ui"; +import { clientLogger } from "@/util/clientLogger"; +import { + AspectRatio, + Button, + Center, + FileButton, + Image, + Stack, +} from "@mantine/core"; +import { IconImageInPicture, IconUpload } from "@tabler/icons-react"; +import { useState } from "react"; + +export default function Page() { + return ( + <> + } + > + + + + ); +} + +function Upload() { + const [file, setFile] = useState(null); + const [image, setImage] = useState(null); + const [isLoading, setLoading] = useState(false); + + async function onUpload() { + if (!file) return alert("File Kosong"); + try { + setLoading(true); + const formData = new FormData(); + formData.append("file", file as File); + + const uploadPhoto = await funGlobal_UploadToStorage({ + file: file, + dirId: "cm5ohsepe002bq4nlxeejhg7q", + }); + + if (uploadPhoto.success) { + setLoading(false); + alert("berhasil upload"); + console.log("uploadPhoto", uploadPhoto); + } else { + setLoading(false); + console.log("gagal upload", uploadPhoto); + } + } catch (error) { + console.error("Error upload img:", error); + } + } + + return ( + <> + + + {image ? ( + + Avatar + + ) : ( +
+ +
+ )} +
+ +
+ { + try { + const buffer = URL.createObjectURL( + new Blob([new Uint8Array(await files.arrayBuffer())]) + ); + + // if (files.size > MAX_SIZE) { + // ComponentGlobal_NotifikasiPeringatan( + // PemberitahuanMaksimalFile + // ); + // return; + // } else { + + // } + + console.log("ini buffer", buffer); + + setFile(files); + setImage(buffer); + } catch (error) { + clientLogger.error("Upload error:", error); + } + }} + accept="image/png,image/jpeg" + > + {(props) => ( + + )} + +
+ + +
+ + ); +} diff --git a/src/app/zz-makuro/LoadDataContoh.tsx b/src/app/zz-makuro/LoadDataContoh.tsx new file mode 100644 index 00000000..adf8a237 --- /dev/null +++ b/src/app/zz-makuro/LoadDataContoh.tsx @@ -0,0 +1,30 @@ +"use client"; +import { Stack } from "@mantine/core"; +import useSwr from "swr"; + +const fether = (url: string) => + fetch("https://jsonplaceholder.typicode.com" + url, { + cache: "force-cache", + next: { + revalidate: 60, + }, + }).then((res) => res.json()); + +export default function LoadDataContoh() { + const { data, isLoading, error, mutate, isValidating } = useSwr( + "/posts/1", + fether, + { + revalidateOnFocus: false, + revalidateOnReconnect: false, + refreshInterval: 1000, + } + ); + return ( + + {isLoading &&
Loading...
} + LoadDataContoh + {JSON.stringify(data, null, 2)} +
+ ); +} diff --git a/src/app/zz-makuro/get-data-example.ts b/src/app/zz-makuro/get-data-example.ts new file mode 100644 index 00000000..d52d9586 --- /dev/null +++ b/src/app/zz-makuro/get-data-example.ts @@ -0,0 +1,9 @@ +async function getDataExample() { + const res = await fetch("https://jsonplaceholder.typicode.com/posts", { + next: { + revalidate: 60, + }, + }); + + return res.json(); +} diff --git a/src/app/zz-makuro/page.tsx b/src/app/zz-makuro/page.tsx index 665c3a1f..a1df80ba 100644 --- a/src/app/zz-makuro/page.tsx +++ b/src/app/zz-makuro/page.tsx @@ -1,14 +1,51 @@ -"use client"; -import { useHookstate } from "@hookstate/core"; -import { Button, Stack } from "@mantine/core"; +import { Suspense } from "react"; +import LoadDataContoh from "./LoadDataContoh"; +const listMenu = [ + { + name: "Dashboard", + url: "/dashboard", + icon: "dashboard", + }, + { + name: "Event", + url: "/event", + icon: "event", + }, + { + name: "Donasi", + url: "/donasi", + icon: "donasi", + }, +]; -export default function Page() { +const fether = async (url: string) => + fetch("https://jsonplaceholder.typicode.com" + url, { + next: { + revalidate: 2, + }, + }).then(async (res) => { + const data = await res.json(); + // console.log(data); + return data; + }); +export default async function Page() { + const data = await fether("/posts/1"); + return ( - - - - +
+ {listMenu.map((item) => { + return ( + + ); + })} + {/* */} + Loading...
}> + {JSON.stringify(data, null, 2)} + +
); } diff --git a/src/app_modules/_global/button/comp_button_upload_photo.tsx b/src/app_modules/_global/button/comp_button_upload_photo.tsx index 642feddc..59103c6c 100644 --- a/src/app_modules/_global/button/comp_button_upload_photo.tsx +++ b/src/app_modules/_global/button/comp_button_upload_photo.tsx @@ -1,42 +1,66 @@ "use client"; +import { clientLogger } from "@/util/clientLogger"; import { Button, FileButton } from "@mantine/core"; -import { IconCamera } from "@tabler/icons-react"; -import { MainColor } from "../color"; +import { IconUpload } from "@tabler/icons-react"; +import { useState } from "react"; +import { AccentColor, MainColor } from "../color"; +import { ComponentGlobal_NotifikasiPeringatan } from "../notif_global"; export function ComponentGlobal_ButtonUploadFileImage({ onSetFile, onSetImage, + text, + icon, + accept, }: { - onSetFile: File | any; - onSetImage: any | null; + onSetFile: File | null | any; + onSetImage?: any | null; + text?: string; + icon?: string | any + accept?: string; }) { + const [isLoading, setIsLoading] = useState(false); + return ( { try { + setIsLoading(true); const buffer = URL.createObjectURL( new Blob([new Uint8Array(await files.arrayBuffer())]) ); + if (files.size > 100 * 1024 * 1024) { + setIsLoading(false); + ComponentGlobal_NotifikasiPeringatan("File terlalu besar"); + return + } + onSetFile(files); onSetImage(buffer); } catch (error) { - console.log(error); + clientLogger.error("Upload image error:", error); + } finally { + setIsLoading(false); } }} - accept="image/png,image/jpeg" + accept={accept ? accept : "image/png,image/png,image/jpeg,image/gif"} > {(props) => ( )} diff --git a/src/app_modules/_global/color/color_pallet.ts b/src/app_modules/_global/color/color_pallet.ts index 3f2efc9d..64f15f64 100644 --- a/src/app_modules/_global/color/color_pallet.ts +++ b/src/app_modules/_global/color/color_pallet.ts @@ -1,14 +1,44 @@ export const MainColor = { black: "#202020", darkblue: "#001D3D", - yellow: "#FFC300", + soft_darkblue: "#0e3763", + yellow: "#E1B525", + white: "#D4D0D0", + red: "#FF4B4C", + orange: "#FF7043", + green: "#4CAF4F", + login: "#EDEBEBFF", }; export const AccentColor = { - blackgray: "#333533", + blackgray: "#333533FF", darkblue: "#002E59", blue: "#00447D", softblue: "#007CBA", skyblue: "#00BFFF", - yellow: "#FFD60A", + yellow: "#F8A824", + white: "#FEFFFE" + }; + +export const AdminColor = { + yellow: "#FFEB99", + green: "#A7DCA5", + orange: "#F7C69B", + red: "#F4A8A8", + bgAdmin: "#182c47", + white: "#D6D9DCFF", + dividerWhite: "#D6D9DC2E", + softBlue: "#163C64FF" + +} +//yellow: "#FFC300" +//yellow: "#FFD60A" +// white: "#FEFFFE" + +// Warna Terang: #80a7c4 +// Warna Sedang: #40738d +// Warna Asli: #002e59 +// Warna Lebih Gelap: #001f3b +// Warna Tergelap: #001323 + diff --git a/src/app_modules/_global/component/box_information.tsx b/src/app_modules/_global/component/box_information.tsx index 5f3f0643..618789f4 100644 --- a/src/app_modules/_global/component/box_information.tsx +++ b/src/app_modules/_global/component/box_information.tsx @@ -1,5 +1,7 @@ -import { Center, Grid, Group, Paper, Stack, Text, Title } from "@mantine/core"; -import { AccentColor, MainColor } from "../color/color_pallet"; +import { Grid, Stack, Text } from "@mantine/core"; +import { IconInfoCircle } from "@tabler/icons-react"; +import { MainColor } from "../color/color_pallet"; +import { ComponentGlobal_CardStyles } from "./comp_card_box_and_background"; export default function ComponentGlobal_BoxInformation({ informasi, @@ -12,15 +14,7 @@ export default function ComponentGlobal_BoxInformation({ }) { return ( <> - + {isReport ? ( * Report - + {informasi} ) : ( - - - *{" "} - + + + + + + {informasi} - - + + )} - + ); - - } diff --git a/src/app_modules/_global/component/button_create.tsx b/src/app_modules/_global/component/button_create.tsx index 892cc258..874f25c5 100644 --- a/src/app_modules/_global/component/button_create.tsx +++ b/src/app_modules/_global/component/button_create.tsx @@ -1,50 +1,70 @@ "use client"; -import { RouterJob } from "@/app/lib/router_hipmi/router_job"; +import { RouterJob } from "@/lib/router_hipmi/router_job"; import { AccentColor, MainColor, } from "@/app_modules/_global/color/color_pallet"; -import { ActionIcon, Loader } from "@mantine/core"; +import { ActionIcon, createStyles, Loader } from "@mantine/core"; import { IconPencilPlus } from "@tabler/icons-react"; import { useRouter } from "next/navigation"; import { useState } from "react"; +const useStyles = createStyles((theme) => ({ + button: { + position: "fixed", // Menggunakan fixed untuk memastikan posisi tetap + zIndex: 10, // Pastikan z-index tinggi + bottom: "150px", // Jarak dari bawah + right: "20px", // Jarak dari kanan + transition: "0.5s", + border: `1px solid ${AccentColor.skyblue}`, + backgroundColor: AccentColor.softblue, + padding: 3, + // maxWidth: "500px", // Batasi lebar maksimum + // margin: "0 auto", // Pusatkan layout + borderRadius: "50%", + + // Media query untuk desktop + [`@media (min-width: 769px)`]: { + right: "calc(50% - 250px + 20px)", // Sesuaikan dengan lebar container (500px) + }, + [":hover"]: { + backgroundColor: AccentColor.blue, + }, + }, +})); + export default function ComponentGlobal_CreateButton({ path, }: { path: string; }) { const router = useRouter(); + const { classes, cx } = useStyles(); const [isLoading, setLoading] = useState(false); return ( <> { - setLoading(true); router.push(path); }} > - {isLoading ? ( - - ) : ( - - )} + ); diff --git a/src/app_modules/_global/component/comp_avatar_and_username.tsx b/src/app_modules/_global/component/comp_avatar_and_username.tsx index 9269be4a..5f0b7f1d 100644 --- a/src/app_modules/_global/component/comp_avatar_and_username.tsx +++ b/src/app_modules/_global/component/comp_avatar_and_username.tsx @@ -1,14 +1,15 @@ "use client"; +import { apiGetOneProfileById } from "@/app_modules/katalog/profile/lib/api_fetch_profile"; +import { RouterProfile } from "@/lib/router_hipmi/router_katalog"; import { ActionIcon, Avatar, Grid, Stack, Text } from "@mantine/core"; import { Prisma } from "@prisma/client"; import { useRouter } from "next/navigation"; import React, { useState } from "react"; +import { MainColor } from "../color"; +import { ComponentGlobal_NotifikasiPeringatan } from "../notif_global"; import { ComponentGlobal_LoaderAvatar } from "./comp_load_avatar"; import ComponentGlobal_Loader from "./loader"; -import { funGlobal_CheckProfile } from "../fun/get"; -import { RouterProfile } from "@/app/lib/router_hipmi/router_katalog"; -import { ComponentGlobal_NotifikasiPeringatan } from "../notif_global"; type IFontSize = "xs" | "sm" | "md" | "lg" | "xl"; export function ComponentGlobal_AvatarAndUsername({ @@ -26,13 +27,17 @@ export function ComponentGlobal_AvatarAndUsername({ const [visible, setVisible] = useState(false); async function onCheckProfile() { - const res = await funGlobal_CheckProfile({ profileId: profile.id as any }); + try { + const res = await apiGetOneProfileById({ id: profile.id as any }); - if (res !== null) { - setVisible(true); - router.push(RouterProfile.katalog({ id: profile.id as any })); - } else { - ComponentGlobal_NotifikasiPeringatan("Id tidak ditemukan"); + if (res && res.success) { + setVisible(true); + router.push(RouterProfile.katalog({ id: profile.id as any })); + } else { + ComponentGlobal_NotifikasiPeringatan("Id tidak ditemukan"); + } + } catch (error) { + console.log(error); } } @@ -51,7 +56,7 @@ export function ComponentGlobal_AvatarAndUsername({ ) : ( )} @@ -60,8 +65,9 @@ export function ComponentGlobal_AvatarAndUsername({ onCheckProfile()} > diff --git a/src/app_modules/_global/component/comp_box_upload_image.tsx b/src/app_modules/_global/component/comp_box_upload_image.tsx index 97b05beb..1deef182 100644 --- a/src/app_modules/_global/component/comp_box_upload_image.tsx +++ b/src/app_modules/_global/component/comp_box_upload_image.tsx @@ -1,5 +1,6 @@ import { ComponentGlobal_CardStyles } from "@/app_modules/_global/component"; import { Box } from "@mantine/core"; +import { MainColor } from "../color"; /** * @@ -28,6 +29,7 @@ export function ComponentGlobal_BoxUploadImage({ height: "100%", borderStyle: "dashed", borderRadius: "5px", + borderColor: MainColor.white, }} > {children} diff --git a/src/app_modules/_global/component/comp_card_box_and_background.tsx b/src/app_modules/_global/component/comp_card_box_and_background.tsx index c3064edd..b7f26570 100644 --- a/src/app_modules/_global/component/comp_card_box_and_background.tsx +++ b/src/app_modules/_global/component/comp_card_box_and_background.tsx @@ -1,7 +1,21 @@ -import { AccentColor } from "@/app_modules/_global/color"; +import { AccentColor, MainColor } from "@/app_modules/_global/color"; import { Card } from "@mantine/core"; import React from "react"; +/** + * ComponentGlobal_CardStyles + * + * A React component that renders a customizable card element. + * + * Props: + * - children (React.ReactNode): Content to be displayed inside the card. + * - backgroundColor (string, optional): Background color of the card. Defaults to AccentColor.darkblue. + * - border (string, optional): Border color of the card. Defaults to AccentColor.blue. + * - marginBottom (string | number, optional): Margin below the card. Defaults to "15px". + * - height (string | number, optional): Height of the card. Defaults to "auto". + * - color (string, optional): Text color inside the card. Defaults to MainColor.white. + * - onClickHandler (React.MouseEventHandler, optional): Function to handle click events on the card. + */ export function ComponentGlobal_CardStyles({ children, backgroundColor, @@ -10,6 +24,7 @@ export function ComponentGlobal_CardStyles({ height, color, onClickHandler, + style, }: { children: React.ReactNode; backgroundColor?: string; @@ -18,11 +33,13 @@ export function ComponentGlobal_CardStyles({ height?: string | number; color?: string; onClickHandler?: React.MouseEventHandler; + style?: React.CSSProperties; }) { return ( <> (null); - const url = APIs.GET({ fileId: fileId, size: imageSize }); + const url = APIs.GET({ fileId: fileId, size: imageSize ? imageSize : "400" }); useShallowEffect(() => { onLoadImage(); diff --git a/src/app_modules/_global/component/comp_load_image.tsx b/src/app_modules/_global/component/comp_load_image.tsx index 03bcbcdb..97f8084c 100644 --- a/src/app_modules/_global/component/comp_load_image.tsx +++ b/src/app_modules/_global/component/comp_load_image.tsx @@ -1,30 +1,32 @@ "use client"; -import { APIs } from "@/app/lib"; -import { pathAssetImage } from "@/app/lib/path_asset_image"; -import { RouterImagePreview } from "@/app/lib/router_hipmi/router_image_preview"; -import { Center, Image, Skeleton } from "@mantine/core"; +import { APIs } from "@/lib"; +import { pathAssetImage } from "@/lib/path_asset_image"; +import { RouterImagePreview } from "@/lib/router_hipmi/router_image_preview"; +import { Center, Image, MantineNumberSize, Skeleton } from "@mantine/core"; import { useShallowEffect } from "@mantine/hooks"; import { useRouter } from "next/navigation"; import { useState } from "react"; -type IRadius = "xs" | "sm" | "md" | "lg" | "xl"; +type IRadius = MantineNumberSize | undefined export function ComponentGlobal_LoadImage({ fileId, maw, h, radius, + style, }: { fileId: string; maw?: number | string; h?: number; radius?: IRadius; + style?: React.CSSProperties; }) { const router = useRouter(); const [isImage, setIsImage] = useState(null); const [isLoading, setIsLoading] = useState(false); - const url = APIs.GET({ fileId: fileId }); + const url = APIs.GET({ fileId: fileId, size: "500" }); useShallowEffect(() => { onLoadImage(); @@ -44,7 +46,7 @@ export function ComponentGlobal_LoadImage({ if (isImage === null) return ( - +
@@ -63,6 +65,9 @@ export function ComponentGlobal_LoadImage({ <>
{ setIsLoading(true); router.push(RouterImagePreview.main({ id: fileId }), { diff --git a/src/app_modules/_global/component/comp_load_image_custom.tsx b/src/app_modules/_global/component/comp_load_image_custom.tsx index 9cfd3b73..8392089b 100644 --- a/src/app_modules/_global/component/comp_load_image_custom.tsx +++ b/src/app_modules/_global/component/comp_load_image_custom.tsx @@ -1,7 +1,7 @@ "use client"; -import { APIs } from "@/app/lib"; -import { pathAssetImage } from "@/app/lib/path_asset_image"; +import { APIs } from "@/lib"; +import { pathAssetImage } from "@/lib/path_asset_image"; import { Center, Image, Skeleton } from "@mantine/core"; import { useShallowEffect } from "@mantine/hooks"; import { useRouter } from "next/navigation"; @@ -15,7 +15,7 @@ export function ComponentGlobal_LoadImageCustom({ height: number; }) { const [isImage, setIsImage] = useState(null); - const url = APIs.GET({ fileId: fileId }); + const url = APIs.GET({ fileId: fileId, size: "500" }); useShallowEffect(() => { onLoadImage(); diff --git a/src/app_modules/_global/component/comp_load_image_landscape.tsx b/src/app_modules/_global/component/comp_load_image_landscape.tsx index 0fc435b3..61f5bb60 100644 --- a/src/app_modules/_global/component/comp_load_image_landscape.tsx +++ b/src/app_modules/_global/component/comp_load_image_landscape.tsx @@ -1,12 +1,14 @@ "use client"; -import { APIs } from "@/app/lib"; -import { pathAssetImage } from "@/app/lib/path_asset_image"; -import { RouterImagePreview } from "@/app/lib"; -import { Center, Image, Skeleton } from "@mantine/core"; +import { APIs } from "@/lib"; +import { pathAssetImage } from "@/lib/path_asset_image"; +import { RouterImagePreview } from "@/lib"; +import { Center, Image } from "@mantine/core"; import { useShallowEffect } from "@mantine/hooks"; import { useRouter } from "next/navigation"; import { useState } from "react"; +import { MainColor } from "../color"; +import CustomSkeleton from "@/app_modules/components/CustomSkeleton"; export function ComponentGlobal_LoadImageLandscape({ fileId, @@ -16,7 +18,7 @@ export function ComponentGlobal_LoadImageLandscape({ const router = useRouter(); const [isImage, setIsImage] = useState(null); const [isLoading, setLoading] = useState(false); - const url = APIs.GET({ fileId: fileId }); + const url = APIs.GET({ fileId: fileId, size: "500" }); useShallowEffect(() => { onLoadImage(); @@ -34,12 +36,12 @@ export function ComponentGlobal_LoadImageLandscape({ } } - if (isImage === null) return ; + if (isImage === null) return ; if (!isImage) return ( <> -
+
No Image(null); const [isLoading, setIsLoading] = useState(false); - const url = APIs.GET({ fileId: fileId }); + const url = APIs.GET({ fileId: fileId , size: "500" }); useShallowEffect(() => { onLoadImage(); diff --git a/src/app_modules/_global/component/comp_tampilan_angka_ratusan.tsx b/src/app_modules/_global/component/comp_tampilan_angka_ratusan.tsx index aa7b2565..ccf3c540 100644 --- a/src/app_modules/_global/component/comp_tampilan_angka_ratusan.tsx +++ b/src/app_modules/_global/component/comp_tampilan_angka_ratusan.tsx @@ -1,4 +1,5 @@ import { Group, Text } from "@mantine/core"; +import { MainColor } from "../color"; export default function ComponentGlobal_TampilanAngkaRatusan({ nominal, @@ -32,7 +33,7 @@ export default function ComponentGlobal_TampilanAngkaRatusan({ fw={fontWeight ? fontWeight : "bold"} fz={fontSize ? fontSize : "md"} style={{ - color: color ? color : "white", + color: color ? color : MainColor.white, }} > {new Intl.NumberFormat("id-ID", { maximumFractionDigits: 10 }).format( @@ -43,6 +44,9 @@ export default function ComponentGlobal_TampilanAngkaRatusan({ {textAfter} diff --git a/src/app_modules/_global/component/comp_tampilan_rupiah.tsx b/src/app_modules/_global/component/comp_tampilan_rupiah.tsx index 9271882f..8c617cc0 100644 --- a/src/app_modules/_global/component/comp_tampilan_rupiah.tsx +++ b/src/app_modules/_global/component/comp_tampilan_rupiah.tsx @@ -1,4 +1,5 @@ -import { Text } from "@mantine/core"; +import { MantineStyleSystemProps, SystemProp, Text } from "@mantine/core"; +import { MainColor } from "../color"; export default function ComponentGlobal_TampilanRupiah({ nominal, @@ -14,10 +15,10 @@ export default function ComponentGlobal_TampilanRupiah({ return ( <> Rp.{" "} diff --git a/src/app_modules/_global/component/input_countdown.tsx b/src/app_modules/_global/component/input_countdown.tsx index 7aaa444b..4c06080b 100644 --- a/src/app_modules/_global/component/input_countdown.tsx +++ b/src/app_modules/_global/component/input_countdown.tsx @@ -12,9 +12,14 @@ export default function ComponentGlobal_InputCountDown({ }) { return ( <> - - {maxInput - lengthInput < 0 ? 0 : maxInput - lengthInput} /{" "} - + + {maxInput - lengthInput} / + {maxInput} diff --git a/src/app_modules/_global/component/new/comp_V3_grid_detail_data.tsx b/src/app_modules/_global/component/new/comp_V3_grid_detail_data.tsx new file mode 100644 index 00000000..3eb6bfc9 --- /dev/null +++ b/src/app_modules/_global/component/new/comp_V3_grid_detail_data.tsx @@ -0,0 +1,29 @@ +import { MainColor } from "@/app_modules/_global/color"; +import { Grid, Paper, Text } from "@mantine/core"; + +export function Component_V3_GridDetailData({ + item, +}: { + item: Record; +}) { + return ( + <> + + + + {item.title || item.label} + + + + {item.value} + + + + + ); +} diff --git a/src/app_modules/_global/component/new/comp_V3_label_text_input.tsx b/src/app_modules/_global/component/new/comp_V3_label_text_input.tsx new file mode 100644 index 00000000..fe29952e --- /dev/null +++ b/src/app_modules/_global/component/new/comp_V3_label_text_input.tsx @@ -0,0 +1,19 @@ +import { Text } from "@mantine/core"; +import { MainColor } from "../../color"; + +export default function Component_V3_Label_TextInput({ + text, +}: { + text: string; +}) { + return ( + <> + + {text} + + * + + + + ); +} diff --git a/src/app_modules/_global/component/new/comp_V3_moment_date_and_time.tsx b/src/app_modules/_global/component/new/comp_V3_moment_date_and_time.tsx new file mode 100644 index 00000000..b2b04826 --- /dev/null +++ b/src/app_modules/_global/component/new/comp_V3_moment_date_and_time.tsx @@ -0,0 +1,26 @@ +import { Text } from "@mantine/core"; +import moment from "moment"; +import "moment/locale/id"; +import { MainColor } from "../../color/color_pallet"; + +export const Component_V3_MomentDateAndTime = ({ + dateTime, + color, +}: { + dateTime: Date | string | undefined + color?: string; +}) => { + return ( + <> + + {dateTime + ? moment( + dateTime.toLocaleString("id-ID", { + dateStyle: "full", + }) + ).format("dddd, DD MMMM YYYY, LT") + : "-"} + + + ); +}; diff --git a/src/app_modules/_global/component/new/comp_V3_set_html_with_stiker.css b/src/app_modules/_global/component/new/comp_V3_set_html_with_stiker.css new file mode 100644 index 00000000..d5be43c0 --- /dev/null +++ b/src/app_modules/_global/component/new/comp_V3_set_html_with_stiker.css @@ -0,0 +1,4 @@ +.sticker-content .chat-content img { + max-width: 70px; + max-height: 70px; +} diff --git a/src/app_modules/_global/component/new/comp_V3_set_html_with_stiker.tsx b/src/app_modules/_global/component/new/comp_V3_set_html_with_stiker.tsx new file mode 100644 index 00000000..fea78a19 --- /dev/null +++ b/src/app_modules/_global/component/new/comp_V3_set_html_with_stiker.tsx @@ -0,0 +1,53 @@ +import { MainColor } from "../../color"; + +export function Comp_V3_SetInnerHTMLWithStiker({ + props, + className, + color, + style, +}: { + props: string | undefined; + className?: string; + color?: string; + style?: React.CSSProperties; +}) { + const baseStyle: React.CSSProperties = { + color: color ?? MainColor.white, + }; + + return ( + <> +
+ + + + ); +} diff --git a/src/app_modules/_global/component/new/comp_V3_text_editor.tsx b/src/app_modules/_global/component/new/comp_V3_text_editor.tsx new file mode 100644 index 00000000..52349b66 --- /dev/null +++ b/src/app_modules/_global/component/new/comp_V3_text_editor.tsx @@ -0,0 +1,64 @@ +import { useState } from "react"; +import "react-quill/dist/quill.snow.css"; +import dynamic from "next/dynamic"; +import { useShallowEffect } from "@mantine/hooks"; +import CustomSkeleton from "@/app_modules/components/CustomSkeleton"; +import { Paper, ScrollArea } from "@mantine/core"; +import { MainColor } from "../../color"; +import { maxInputLength } from "../../lib/maximal_setting"; +const ReactQuill = dynamic(() => import("react-quill"), { ssr: false }); + + +export function Component_V3_TextEditor({ + data, + onSetData, +}: { + data: string; + onSetData: (value: string) => void; +}) { + const [isReady, setIsReady] = useState(false); + + useShallowEffect(() => { + setIsReady(true); // Set ready on client-side mount + }, []); + + const handleChange = (input: string) => { + const text = input.replace(/<[^>]+>/g, "").trim(); // Remove HTML tags and trim + // if (text.length <= maxInputLength) { + // } + onSetData(input); + // Input diabaikan jika panjang > maxLength + }; + + return ( + <> + {isReady ? ( + + + + + + ) : ( + + )} + + ); +} diff --git a/src/app_modules/_global/component/new/comp_V3_text_editor_stiker.tsx b/src/app_modules/_global/component/new/comp_V3_text_editor_stiker.tsx new file mode 100644 index 00000000..e0affdfc --- /dev/null +++ b/src/app_modules/_global/component/new/comp_V3_text_editor_stiker.tsx @@ -0,0 +1,284 @@ +import CustomSkeleton from "@/app_modules/components/CustomSkeleton"; +import { + ActionIcon, + Box, + Button, + Group, + Image, + Paper, + ScrollArea, + SimpleGrid, + Stack, + Text, + Tooltip, +} from "@mantine/core"; +import { useDisclosure, useShallowEffect } from "@mantine/hooks"; +import React, { useState } from "react"; +import dynamic from "next/dynamic"; +import { MainColor } from "../../color"; +import { maxInputLength } from "../../lib/maximal_setting"; +import ComponentGlobal_InputCountDown from "../input_countdown"; +import { funReplaceHtml } from "../../fun/fun_replace_html"; +import { forum_funCreate } from "@/app_modules/forum/fun/create/fun_create"; +import { + ComponentGlobal_NotifikasiBerhasil, + ComponentGlobal_NotifikasiGagal, +} from "../../notif_global"; +import { useRouter } from "next/navigation"; +import { IconMoodSmileFilled } from "@tabler/icons-react"; +import { listStiker } from "../../lib/stiker"; +import { UIGlobal_Modal } from "../../ui"; + +const ReactQuill = dynamic( + async () => { + const { default: RQ } = await import("react-quill"); + // Tidak perlu import CSS dengan import statement + return function comp({ forwardedRef, ...props }: any) { + return ; + }; + }, + { + ssr: false, + loading: () => ( + + Ketik pesan di sini atau tambahkan stiker... + + ), + } +); + +export function Component_V3_TextEditorWithStiker({ + data, + onSetData, + onSetLengthData, +}: { + data: string; + onSetData: (value: string) => void; + onSetLengthData: (value: number) => void; +}) { + const router = useRouter(); + const [editorContent, setEditorContent] = useState(""); + const [opened, { open, close }] = useDisclosure(false); + const quillRef = React.useRef(null); + const [quillLoaded, setQuillLoaded] = useState(false); + const [isReady, setIsReady] = useState(false); + + useShallowEffect(() => { + setIsReady(true); // Set ready on client-side mount + }, []); + + useShallowEffect(() => { + setQuillLoaded(true); // Set ready on client-side mount + }, []); + + const handleChange = (input: string) => { + const text = input.replace(/<[^>]+>/g, "").trim(); // Remove HTML tags and trim + // if (text.length <= maxInputLength) { + // } + onSetData(input); + onSetLengthData(text.length); + // Input diabaikan jika panjang > maxLength + }; + + useShallowEffect(() => { + // Add Quill CSS via tag + const link = document.createElement("link"); + link.href = "https://cdn.quilljs.com/1.3.6/quill.snow.css"; + link.rel = "stylesheet"; + document.head.appendChild(link); + + // Add custom style for stickers inside Quill editor + const style = document.createElement("style"); + style.textContent = ` + .ql-editor img { + max-width: 70px !important; + max-height: 70px !important; + } + // .chat-content img { + // max-width: 70px !important; + // max-height: 70px !important; + // } + `; + document.head.appendChild(style); + + setQuillLoaded(true); + + return () => { + // Clean up when component unmounts + document.head.removeChild(link); + document.head.removeChild(style); + }; + }, []); + + // Custom toolbar options for ReactQuill + const modules = { + toolbar: [ + [{ header: [1, 2, false] }], + ["bold", "italic", "underline", "strike", "blockquote"], + [{ list: "ordered" }, { list: "bullet" }], + ["link"], + ["clean"], + ], + }; + + const formats = [ + "header", + "bold", + "italic", + "underline", + "strike", + "blockquote", + "list", + "bullet", + "link", + "image", + ]; + + const insertSticker = (stickerUrl: string) => { + if (!quillRef.current) return; + + const quill = quillRef.current.getEditor(); + const range = quill.getSelection(true); + + // Custom image insertion with size + // Use custom blot or HTML string with size attributes + const stickerHtml = `sticker`; + + // Insert HTML at cursor position + quill.clipboard.dangerouslyPasteHTML(range.index, stickerHtml); + + // Move cursor after inserted sticker + quill.setSelection(range.index + 1, 0); + + // Focus back on editor + quill.focus(); + + // Close sticker modal + close(); + }; + + return ( + <> + {isReady ? ( + + {quillLoaded && ( + + + + + + )} + + + + + + + + + + + + + + + + {listStiker.map((item) => ( + + + {item.name} insertSticker(item.url)} + /> + + + ))} + + + + ) : ( + + )} + + ); +} + +interface ButtonActionProps { + value: string; + lengthData: number; +} + +function ButtonAction({ value, lengthData }: ButtonActionProps) { + const router = useRouter(); + const [loading, setLoading] = useState(false); + + async function onCreate() { + try { + setLoading(true); + const create = await forum_funCreate(value); + if (create.status === 201) { + ComponentGlobal_NotifikasiBerhasil(create.message); + router.back(); + + mqtt_client.publish( + "Forum_create_new", + JSON.stringify({ isNewPost: true, count: 1 }) + ); + } else { + ComponentGlobal_NotifikasiGagal(create.message); + } + } catch (error) { + console.log(error); + } finally { + setLoading(false); + } + } + + return ( + + ); +} diff --git a/src/app_modules/_global/component/new/comp_set_inner_html.tsx b/src/app_modules/_global/component/new/comp_set_inner_html.tsx new file mode 100644 index 00000000..b4215289 --- /dev/null +++ b/src/app_modules/_global/component/new/comp_set_inner_html.tsx @@ -0,0 +1,52 @@ +import { MainColor } from "../../color"; + +export const Comp_SetInnerHTML = ({ + props, + color, + style: styleInput, +}: { + props: string | undefined; + color?: string; + style?: React.CSSProperties; +}) => { + const baseStyle: React.CSSProperties = { + color: color ?? MainColor.white, + // wordBreak: "break-word", + // overflow: "hidden", + }; + + return ( + <> +
+ + + + ); +}; diff --git a/src/app_modules/_global/component/new/component_header.tsx b/src/app_modules/_global/component/new/component_header.tsx new file mode 100644 index 00000000..bb2fd0af --- /dev/null +++ b/src/app_modules/_global/component/new/component_header.tsx @@ -0,0 +1,106 @@ +"use client" + +import { ActionIcon, Box, Group, Title, Loader } from "@mantine/core"; +import { useRouter } from "next/navigation"; +import { useState } from "react"; +import { IconChevronLeft } from "@tabler/icons-react"; +import { AccentColor, MainColor } from "../../color"; + +export function Component_Header({ + title, + posotion, + // left button + hideButtonLeft, + iconLeft, + routerLeft, + customButtonLeft, + // right button + iconRight, + routerRight, + customButtonRight, + backgroundColor, +}: { + title: string; + posotion?: any; + // left button + hideButtonLeft?: boolean; + iconLeft?: any; + routerLeft?: any; + customButtonLeft?: React.ReactNode; + // right button + iconRight?: any; + routerRight?: any; + customButtonRight?: React.ReactNode; + backgroundColor?: string; +}) { + const router = useRouter(); + const [isLoading, setIsLoading] = useState(false); + const [isRightLoading, setRightLoading] = useState(false); + + return ( + <> + + {hideButtonLeft ? ( + + ) : customButtonLeft ? ( + customButtonLeft + ) : ( + { + setIsLoading(true); + routerLeft === undefined + ? router.back() + : router.push(routerLeft, { scroll: false }); + }} + > + {/* PAKE LOADING SAAT KLIK BACK */} + {/* {isLoading ? ( + + ) : iconLeft ? ( + iconLeft + ) : ( + + )} */} + + {/* GA PAKE LOADING SAAT KLIK BACK */} + {iconLeft ? iconLeft : } + + )} + + + {title} + + + {customButtonRight ? ( + customButtonRight + ) : iconRight === undefined ? ( + + ) : routerRight === undefined ? ( + {iconRight} + ) : ( + { + setRightLoading(true); + router.push(routerRight); + }} + > + {isRightLoading ? ( + + ) : ( + iconRight + )} + + )} + + + ); +} diff --git a/src/app_modules/_global/component/new/new_button_create.tsx b/src/app_modules/_global/component/new/new_button_create.tsx new file mode 100644 index 00000000..f6fba7c1 --- /dev/null +++ b/src/app_modules/_global/component/new/new_button_create.tsx @@ -0,0 +1,51 @@ +"use client"; + +import { RouterJob } from "@/lib/router_hipmi/router_job"; +import { + AccentColor, + MainColor, +} from "@/app_modules/_global/color/color_pallet"; +import { ActionIcon, Loader } from "@mantine/core"; +import { IconPencilPlus } from "@tabler/icons-react"; +import { useRouter } from "next/navigation"; +import { useState } from "react"; + +export default function Component_NewCreateButton({ path }: { path: string }) { + const router = useRouter(); + const [isLoading, setLoading] = useState(false); + + return ( + <> + { + setLoading(true); + router.push(path); + }} + > + {/* PAKE LOADING */} + {/* {isLoading ? ( + + ) : ( + + )} */} + + {/* GA PAKE LOADING */} + + + + ); +} diff --git a/src/app_modules/_global/fun/delete/fun_delete_file_by_id.tsx b/src/app_modules/_global/fun/delete/fun_delete_file_by_id.tsx index a31df82d..568f3657 100644 --- a/src/app_modules/_global/fun/delete/fun_delete_file_by_id.tsx +++ b/src/app_modules/_global/fun/delete/fun_delete_file_by_id.tsx @@ -1,24 +1,42 @@ -export async function funGlobal_DeleteFileById({ fileId }: { fileId: string }) { - try { - const res = await fetch( - `https://wibu-storage.wibudev.com/api/files/${fileId}/delete`, - { - method: "DELETE", - headers: { - Authorization: `Bearer ${process.env.WS_APIKEY}`, - }, - } - ); +import { clientLogger } from "@/util/clientLogger"; - if (res.ok) { - const hasil = await res.json(); - return { success: true }; +export async function funDeteleteFileById({ + fileId, + dirId, +}: { + fileId: string; + dirId?: string; +}) { + try { + const tokenResponse = await fetch("/api/get-cookie"); + if (!tokenResponse.ok) { + return { success: false, message: "Token not found" }; + } + const { token } = await tokenResponse.json(); + + if (!token) { + return { success: false, message: "Token not found" }; + } + + const res = await fetch("/api/image/delete", { + method: "DELETE", + body: JSON.stringify({ fileId, dirId }), + headers: { + "Content-Type": "application/json", + Authorization: `Bearer ${token}`, + }, + }); + + const data = await res.json(); + + if (data.success) { + clientLogger.info(`File ${fileId} deleted successfully`); + return { success: true, message: "File berhasil dihapus" }; } else { - const errorText = await res.json(); - return { success: false }; + return { success: false, message: data.message }; } } catch (error) { - return { success: false }; - console.error("Upload error:", error); + clientLogger.error("Upload error:", error); + return { success: false, message: "An unexpected error occurred" }; } } diff --git a/src/app_modules/_global/fun/fun_replace_html.ts b/src/app_modules/_global/fun/fun_replace_html.ts new file mode 100644 index 00000000..9fc66768 --- /dev/null +++ b/src/app_modules/_global/fun/fun_replace_html.ts @@ -0,0 +1,3 @@ +export function funReplaceHtml({html}:{ html: string }) { + return html.replace(/<[^>]+>/g, ""); +} \ No newline at end of file diff --git a/src/app_modules/_global/fun/generate_seeder.ts b/src/app_modules/_global/fun/generate_seeder.ts index c1f89d11..2595028d 100644 --- a/src/app_modules/_global/fun/generate_seeder.ts +++ b/src/app_modules/_global/fun/generate_seeder.ts @@ -1,4 +1,4 @@ -import prisma from "@/app/lib/prisma"; +import prisma from "@/lib/prisma"; import bidangBisnis from "../../../bin/seeder/bidang_bisnis.json"; import collaboration_industri from "../../../bin/seeder/colab/master_industri.json"; import collaboration_status from "../../../bin/seeder/colab/master_status.json"; @@ -25,8 +25,12 @@ import voting_status from "../../../bin/seeder/voting/master_status.json"; import { master_kategori_app } from "@/bin/seeder/master"; import { new_status_transaksi_investasi } from "@/bin/seeder/investasi"; import { master_nama_bank } from "@/bin/seeder/master"; +import { master_status_transaksi } from "@/bin/seeder/master"; +import pLimit from "p-limit"; +import { master_new_bidang_bisnis } from "@/bin/seeder/master"; +import { master_emotions } from "@/bin/seeder/master"; -export async function generate_seeder() { +async function masterUserRole() { for (let i of userRole) { await prisma.masterUserRole.upsert({ where: { @@ -42,7 +46,10 @@ export async function generate_seeder() { }, }); } + console.log("masterUserRole success"); +} +async function seederUser() { for (let i of userSeeder) { await prisma.user.upsert({ where: { @@ -52,31 +59,88 @@ export async function generate_seeder() { nomor: i.nomor, username: i.name, masterUserRoleId: i.masterUserRoleId, + active: i.active, }, update: { nomor: i.nomor, username: i.name, masterUserRoleId: i.masterUserRoleId, + active: i.active, }, }); } + console.log("user seeder success"); +} - for (let i of bidangBisnis) { - await prisma.masterBidangBisnis.upsert({ - where: { - id: i.id.toString(), - }, - update: { - id: i.id.toString(), - name: i.name, - }, - create: { - id: i.id.toString(), - name: i.name, - }, - }); +// async function masterBisnis() { +// for (let i of bidangBisnis) { +// await prisma.masterBidangBisnis.upsert({ +// where: { +// id: i.id.toString(), +// }, +// update: { +// id: i.id.toString(), +// name: i.name, +// }, +// create: { +// id: i.id.toString(), +// name: i.name, +// }, +// }); +// } +// console.log("masterBisnis success"); +// } + +async function masterNewBidangBisnis() { + for (let i of master_new_bidang_bisnis) { + try { + // Upsert MasterBidangBisnis + const masterBidangBisnis = await prisma.masterBidangBisnis.upsert({ + where: { + id: i.id.toString(), + }, + update: { + name: i.name, + slug: i.slug, + }, + create: { + id: i.id.toString(), + name: i.name, + slug: i.slug, + }, + }); + + // Upsert untuk setiap subBidangBisnis dengan await untuk memastikan urutan tetap terjaga + for (let sub of i.subBidangBisnis) { + await prisma.masterSubBidangBisnis.upsert({ + where: { + id: sub.id, + }, + update: { + name: sub.name, + slug: sub.slug, + masterBidangBisnisId: masterBidangBisnis.id, + }, + create: { + id: sub.id, + name: sub.name, + slug: sub.slug, + masterBidangBisnisId: masterBidangBisnis.id, + }, + }); + } + } catch (error) { + console.error( + `Terjadi error saat upserting bidang bisnis ${i.name}:`, + error + ); + } } + console.log("Semua masterBidangBisnis dan subBidangBisnis berhasil di-seed"); +} + +async function masterPencarianInvestor() { for (let i of pencarianInvestor) { await prisma.masterPencarianInvestor.upsert({ where: { @@ -93,6 +157,10 @@ export async function generate_seeder() { }); } + console.log("masterPencarianInvestor success"); +} + +async function masterPembagianDeviden() { for (let i of pembagianDeviden) { await prisma.masterPembagianDeviden.upsert({ where: { @@ -109,6 +177,10 @@ export async function generate_seeder() { }); } + console.log("masterPembagianDeviden success"); +} + +async function masterPeriodeDeviden() { for (let i of periodeDeviden) { await prisma.masterPeriodeDeviden.upsert({ where: { @@ -125,6 +197,10 @@ export async function generate_seeder() { }); } + console.log("masterPeriodeDeviden success"); +} + +async function masterStatusInvestasi() { for (let i of statusInvestasi) { await prisma.masterStatusInvestasi.upsert({ where: { @@ -143,6 +219,10 @@ export async function generate_seeder() { }); } + console.log("masterStatusInvestasi success"); +} + +async function masterNamaBank() { for (let i of master_nama_bank) { await prisma.masterBank.upsert({ where: { @@ -162,7 +242,11 @@ export async function generate_seeder() { }, }); } - + + console.log("masterNamaBank success"); +} + +async function masterStatusTransaksiInvestasi() { for (let i of statusTransaksiInvestasi) { await prisma.masterStatusTransaksiInvestasi.upsert({ where: { @@ -181,6 +265,10 @@ export async function generate_seeder() { }); } + console.log("masterStatusTransaksiInvestasi success"); +} + +async function masterProgressInvestasi() { for (let i of jenisProgres) { await prisma.masterProgresInvestasi.upsert({ where: { @@ -196,6 +284,10 @@ export async function generate_seeder() { }); } + console.log("masterProgressInvestasi success"); +} + +async function masterStatusDonasi() { for (let d of donasi_status) { await prisma.donasiMaster_StatusDonasi.upsert({ where: { @@ -211,6 +303,10 @@ export async function generate_seeder() { }); } + console.log("masterStatusDonasi success"); +} + +async function masterKategoriDonasi() { for (let d of donasi_kategori) { await prisma.donasiMaster_Kategori.upsert({ where: { @@ -226,6 +322,10 @@ export async function generate_seeder() { }); } + console.log("masterKategoriDonasi success"); +} + +async function masterDurasiDonasi() { for (let d of donasi_durasi) { await prisma.donasiMaster_Durasi.upsert({ where: { @@ -241,6 +341,10 @@ export async function generate_seeder() { }); } + console.log("masterDurasiDonasi success"); +} + +async function masterDonasiNamaBank() { for (let i of donasi_namaBank) { await prisma.donasiMaster_Bank.upsert({ where: { @@ -259,6 +363,10 @@ export async function generate_seeder() { }); } + console.log("masterDonasiBank success"); +} + +async function masterDonasiStatusInvoice() { for (let d of donasi_status_invoice) { await prisma.donasiMaster_StatusInvoice.upsert({ where: { @@ -274,6 +382,10 @@ export async function generate_seeder() { }); } + console.log("masterDonasiStatusInvoice success"); +} + +async function masterEventStatus() { for (let e of event_status) { await prisma.eventMaster_Status.upsert({ where: { @@ -289,6 +401,10 @@ export async function generate_seeder() { }); } + console.log("masterEventStatus success"); +} + +async function masterEventTipeAcara() { for (let e of event_tipe_acara) { await prisma.eventMaster_TipeAcara.upsert({ where: { @@ -304,6 +420,10 @@ export async function generate_seeder() { }); } + console.log("masterEventTipeAcara success"); +} + +async function masterVotingStatus() { for (let v of voting_status) { await prisma.voting_Status.upsert({ where: { @@ -319,6 +439,10 @@ export async function generate_seeder() { }); } + console.log("masterVotingStatus success"); +} + +async function masterStatusProses() { for (let m of master_status) { await prisma.masterStatus.upsert({ where: { @@ -334,6 +458,10 @@ export async function generate_seeder() { }); } + console.log("masterStatusProses success"); +} + +async function masterForumKategoriReport() { for (let m of forum_kategori_report) { await prisma.forumMaster_KategoriReport.upsert({ where: { @@ -350,6 +478,10 @@ export async function generate_seeder() { }); } + console.log("masterForumKategoriReport success"); +} + +async function masterForumStatusPosting() { for (let s of forum_status_posting) { await prisma.forumMaster_StatusPosting.upsert({ where: { @@ -364,6 +496,10 @@ export async function generate_seeder() { }); } + console.log("masterForumStatusPosting success"); +} + +async function masterCollaborationIndustri() { for (let p of collaboration_industri) { await prisma.projectCollaborationMaster_Industri.upsert({ where: { @@ -378,6 +514,10 @@ export async function generate_seeder() { }); } + console.log("masterCollaborationIndustri success"); +} + +async function masterCollaborationStatus() { for (let p of collaboration_status) { await prisma.projectCollaborationMaster_Status.upsert({ where: { @@ -392,6 +532,10 @@ export async function generate_seeder() { }); } + console.log("masterCollaborationStatus success"); +} + +async function seederNomorAdmin() { for (let a of nomor_admin) { await prisma.nomorAdmin.upsert({ where: { @@ -408,6 +552,10 @@ export async function generate_seeder() { }); } + console.log("seederNomorAdmin success"); +} + +async function masterKategoriApp() { for (let a of master_kategori_app) { await prisma.masterKategoriApp.upsert({ where: { @@ -424,6 +572,10 @@ export async function generate_seeder() { }); } + console.log("masterKategoriApp success"); +} + +async function masterInvestasiNewTransaksiStatus() { for (let a of new_status_transaksi_investasi) { await prisma.investasiMaster_StatusInvoice.upsert({ where: { @@ -440,5 +592,84 @@ export async function generate_seeder() { }); } + console.log("masterInvestasiNewTransaksiStatus success"); +} + +async function masterStatusTransaksi() { + for (let a of master_status_transaksi) { + await prisma.masterStatusTransaksi.upsert({ + where: { + id: a.id, + }, + create: { + id: a.id, + name: a.name, + }, + update: { + id: a.id, + name: a.name, + }, + }); + } + + console.log("masterStatusTransaksi success"); +} + +async function masterEmotions() { + await Promise.all( + master_emotions.map((a) => + prisma.masterEmotions.upsert({ + where: { value: a.value }, + create: { value: a.value, label: a.label }, + update: { value: a.value, label: a.label }, + }) + ) + ); + + console.log("masterEmotions success"); +} + +const listSeederQueue = [ + masterUserRole, + seederUser, + // masterBisnis, + masterNewBidangBisnis, + masterPencarianInvestor, + masterPembagianDeviden, + masterPeriodeDeviden, + masterStatusInvestasi, + masterNamaBank, + masterStatusTransaksiInvestasi, + masterProgressInvestasi, + masterStatusDonasi, + masterKategoriDonasi, + masterDurasiDonasi, + masterDonasiNamaBank, + masterDonasiStatusInvoice, + masterEventStatus, + masterEventTipeAcara, + masterVotingStatus, + masterStatusProses, + masterForumKategoriReport, + masterForumStatusPosting, + masterCollaborationIndustri, + masterCollaborationStatus, + seederNomorAdmin, + masterKategoriApp, + masterInvestasiNewTransaksiStatus, + masterStatusTransaksi, + masterEmotions, +]; +const limit = pLimit(1); + +export async function generate_seeder() { + try { + await Promise.all(listSeederQueue.map((fn) => limit(fn))); + await prisma.$disconnect(); + } catch (error) { + console.error("error generate seeder", error); + await prisma.$disconnect(); + } + return { status: 200, success: true }; } diff --git a/src/app_modules/_global/fun/generete_seeder.back.txt b/src/app_modules/_global/fun/generete_seeder.back.txt new file mode 100644 index 00000000..52a39d86 --- /dev/null +++ b/src/app_modules/_global/fun/generete_seeder.back.txt @@ -0,0 +1,465 @@ +import prisma from "@/app/lib/prisma"; +import bidangBisnis from "../../../bin/seeder/bidang_bisnis.json"; +import collaboration_industri from "../../../bin/seeder/colab/master_industri.json"; +import collaboration_status from "../../../bin/seeder/colab/master_status.json"; +import donasi_namaBank from "../../../bin/seeder/donasi/master_bank.json"; +import donasi_durasi from "../../../bin/seeder/donasi/master_durasi.json"; +import donasi_kategori from "../../../bin/seeder/donasi/master_kategori.json"; +import donasi_status from "../../../bin/seeder/donasi/master_status.json"; +import donasi_status_invoice from "../../../bin/seeder/donasi/master_status_invoice.json"; +import event_status from "../../../bin/seeder/event/master_status.json"; +import event_tipe_acara from "../../../bin/seeder/event/master_tipe_acara.json"; +import forum_kategori_report from "../../../bin/seeder/forum/master_report.json"; +import forum_status_posting from "../../../bin/seeder/forum/master_status.json"; +import jenisProgres from "../../../bin/seeder/investasi/master_progres.json"; +import pembagianDeviden from "../../../bin/seeder/investasi/pembagian_deviden.json"; +import pencarianInvestor from "../../../bin/seeder/investasi/pencarian_investor.json"; +import periodeDeviden from "../../../bin/seeder/investasi/periode_deviden.json"; +import statusInvestasi from "../../../bin/seeder/investasi/status_investasi.json"; +import statusTransaksiInvestasi from "../../../bin/seeder/investasi/status_transaksi_investasi.json"; +import master_status from "../../../bin/seeder/master_status.json"; +import nomor_admin from "../../../bin/seeder/nomor_admin.json"; +import userRole from "../../../bin/seeder/user_role.json"; +import userSeeder from "../../../bin/seeder/user_seeder.json"; +import voting_status from "../../../bin/seeder/voting/master_status.json"; +import { master_kategori_app } from "@/bin/seeder/master"; +import { new_status_transaksi_investasi } from "@/bin/seeder/investasi"; +import { master_nama_bank } from "@/bin/seeder/master"; +import pLimit from "p-limit"; + +// PAKEK p-limit + +async function masterUserRole() { + for (let i of userRole) { + await prisma.masterUserRole.upsert({ + where: { + id: i.id.toString(), + }, + update: { + id: i.id.toString(), + name: i.name, + }, + create: { + id: i.id.toString(), + name: i.name, + }, + }); + } + await new Promise((resolve) => setTimeout(resolve, 10000)); + console.log("masterUserRole success"); +} + +async function user() { + for (let i of userSeeder) { + await prisma.user.upsert({ + where: { + nomor: i.nomor, + }, + create: { + nomor: i.nomor, + username: i.name, + masterUserRoleId: i.masterUserRoleId, + active: i.active, + }, + update: { + nomor: i.nomor, + username: i.name, + masterUserRoleId: i.masterUserRoleId, + active: i.active, + }, + }); + } + console.log("user success"); +} + +const listAntrean = [masterUserRole, user]; +const limit = pLimit(1); + +(async () => { + console.log("start generate seeder"); + await Promise.all(listAntrean.map((fn) => limit(fn))); + console.log("success generate seeder"); +})(); + +export async function generate_seeder() { + for (let i of bidangBisnis) { + await prisma.masterBidangBisnis.upsert({ + where: { + id: i.id.toString(), + }, + update: { + id: i.id.toString(), + name: i.name, + }, + create: { + id: i.id.toString(), + name: i.name, + }, + }); + } + + for (let i of pencarianInvestor) { + await prisma.masterPencarianInvestor.upsert({ + where: { + id: i.id.toString(), + }, + update: { + id: i.id.toString(), + name: i.name, + }, + create: { + id: i.id.toString(), + name: i.name, + }, + }); + } + + for (let i of pembagianDeviden) { + await prisma.masterPembagianDeviden.upsert({ + where: { + id: i.id.toString(), + }, + update: { + id: i.id.toString(), + name: i.name, + }, + create: { + id: i.id.toString(), + name: i.name, + }, + }); + } + + for (let i of periodeDeviden) { + await prisma.masterPeriodeDeviden.upsert({ + where: { + id: i.id.toString(), + }, + update: { + id: i.id.toString(), + name: i.name, + }, + create: { + id: i.id.toString(), + name: i.name, + }, + }); + } + + for (let i of statusInvestasi) { + await prisma.masterStatusInvestasi.upsert({ + where: { + id: i.id, + }, + create: { + id: i.id, + name: i.name, + color: i.color, + }, + update: { + id: i.id, + name: i.name, + color: i.color, + }, + }); + } + + for (let i of master_nama_bank) { + await prisma.masterBank.upsert({ + where: { + id: i.id.toString(), + }, + create: { + id: i.id.toString(), + namaBank: i.namaBank, + namaAkun: i.namaAkun, + norek: i.norek.toString(), + }, + update: { + id: i.id.toString(), + namaBank: i.namaBank, + namaAkun: i.namaAkun, + norek: i.norek.toString(), + }, + }); + } + + for (let i of statusTransaksiInvestasi) { + await prisma.masterStatusTransaksiInvestasi.upsert({ + where: { + id: i.id, + }, + create: { + id: i.id, + name: i.name, + color: i.color, + }, + update: { + id: i.id, + name: i.name, + color: i.color, + }, + }); + } + + for (let i of jenisProgres) { + await prisma.masterProgresInvestasi.upsert({ + where: { + id: i.id, + }, + create: { + id: i.id, + name: i.name, + }, + update: { + name: i.name, + }, + }); + } + + for (let d of donasi_status) { + await prisma.donasiMaster_StatusDonasi.upsert({ + where: { + id: d.id, + }, + create: { + id: d.id, + name: d.name, + }, + update: { + name: d.name, + }, + }); + } + + for (let d of donasi_kategori) { + await prisma.donasiMaster_Kategori.upsert({ + where: { + id: d.id, + }, + create: { + id: d.id, + name: d.name, + }, + update: { + name: d.name, + }, + }); + } + + for (let d of donasi_durasi) { + await prisma.donasiMaster_Durasi.upsert({ + where: { + id: d.id, + }, + create: { + id: d.id, + name: d.name, + }, + update: { + name: d.name, + }, + }); + } + + for (let i of donasi_namaBank) { + await prisma.donasiMaster_Bank.upsert({ + where: { + id: i.id, + }, + create: { + id: i.id, + name: i.name, + norek: i.norek, + }, + update: { + id: i.id, + name: i.name, + norek: i.norek, + }, + }); + } + + for (let d of donasi_status_invoice) { + await prisma.donasiMaster_StatusInvoice.upsert({ + where: { + id: d.id, + }, + create: { + id: d.id, + name: d.name, + }, + update: { + name: d.name, + }, + }); + } + + for (let e of event_status) { + await prisma.eventMaster_Status.upsert({ + where: { + id: e.id, + }, + create: { + id: e.id, + name: e.name, + }, + update: { + name: e.name, + }, + }); + } + + for (let e of event_tipe_acara) { + await prisma.eventMaster_TipeAcara.upsert({ + where: { + id: e.id, + }, + create: { + id: e.id, + name: e.name, + }, + update: { + name: e.name, + }, + }); + } + + for (let v of voting_status) { + await prisma.voting_Status.upsert({ + where: { + id: v.id, + }, + create: { + id: v.id, + name: v.name, + }, + update: { + name: v.name, + }, + }); + } + + for (let m of master_status) { + await prisma.masterStatus.upsert({ + where: { + id: m.id, + }, + create: { + id: m.id, + name: m.name, + }, + update: { + name: m.name, + }, + }); + } + + for (let m of forum_kategori_report) { + await prisma.forumMaster_KategoriReport.upsert({ + where: { + id: m.id as number, + }, + create: { + title: m.title, + deskripsi: m.deskripsi, + }, + update: { + title: m.title, + deskripsi: m.deskripsi, + }, + }); + } + + for (let s of forum_status_posting) { + await prisma.forumMaster_StatusPosting.upsert({ + where: { + id: s.id, + }, + create: { + status: s.status, + }, + update: { + status: s.status, + }, + }); + } + + for (let p of collaboration_industri) { + await prisma.projectCollaborationMaster_Industri.upsert({ + where: { + id: p.id, + }, + create: { + name: p.name, + }, + update: { + name: p.name, + }, + }); + } + + for (let p of collaboration_status) { + await prisma.projectCollaborationMaster_Status.upsert({ + where: { + id: p.id, + }, + create: { + name: p.name, + }, + update: { + name: p.name, + }, + }); + } + + for (let a of nomor_admin) { + await prisma.nomorAdmin.upsert({ + where: { + id: a.id, + }, + create: { + id: a.id, + nomor: a.nomor, + }, + update: { + id: a.id, + nomor: a.nomor, + }, + }); + } + + for (let a of master_kategori_app) { + await prisma.masterKategoriApp.upsert({ + where: { + id: a.id, + }, + create: { + id: a.id, + name: a.name, + }, + update: { + id: a.id, + name: a.name, + }, + }); + } + + for (let a of new_status_transaksi_investasi) { + await prisma.investasiMaster_StatusInvoice.upsert({ + where: { + id: a.id, + }, + create: { + id: a.id, + name: a.name, + }, + update: { + id: a.id, + name: a.name, + }, + }); + } + + return { status: 200, success: true }; +} diff --git a/src/app_modules/_global/fun/get/fun_check_activation_use_by_id.ts b/src/app_modules/_global/fun/get/fun_check_activation_use_by_id.ts index 010902fe..d3368e63 100644 --- a/src/app_modules/_global/fun/get/fun_check_activation_use_by_id.ts +++ b/src/app_modules/_global/fun/get/fun_check_activation_use_by_id.ts @@ -1,7 +1,7 @@ "use server"; -import { prisma } from "@/app/lib"; -import { RouterAuth } from "@/app/lib/router_hipmi/router_auth"; +import { prisma } from "@/lib"; +import { RouterAuth } from "@/lib/router_hipmi/router_auth"; import { permanentRedirect } from "next/navigation"; export async function funGlobal_checkActivationUseById({ diff --git a/src/app_modules/_global/fun/get/fun_check_cookies.ts b/src/app_modules/_global/fun/get/fun_check_cookies.ts index e1ac9caa..beb6ebdf 100644 --- a/src/app_modules/_global/fun/get/fun_check_cookies.ts +++ b/src/app_modules/_global/fun/get/fun_check_cookies.ts @@ -1,6 +1,6 @@ "use server"; -import { ServerEnv } from "@/app/lib/server_env"; +import { ServerEnv } from "@/lib/server_env"; import { unsealData } from "iron-session"; import _ from "lodash"; import { cookies } from "next/headers"; diff --git a/src/app_modules/_global/fun/get/fun_check_profile.tsx b/src/app_modules/_global/fun/get/fun_check_profile.tsx index d103f9fc..a550675a 100644 --- a/src/app_modules/_global/fun/get/fun_check_profile.tsx +++ b/src/app_modules/_global/fun/get/fun_check_profile.tsx @@ -1,6 +1,6 @@ "use server"; -import { prisma } from "@/app/lib"; +import { prisma } from "@/lib"; export async function funGlobal_CheckProfile({ profileId, diff --git a/src/app_modules/_global/fun/get/fun_get_all_bank.ts b/src/app_modules/_global/fun/get/fun_get_all_bank.ts index 59ede53a..04dea190 100644 --- a/src/app_modules/_global/fun/get/fun_get_all_bank.ts +++ b/src/app_modules/_global/fun/get/fun_get_all_bank.ts @@ -1,6 +1,6 @@ "use server"; -import prisma from "@/app/lib/prisma"; +import prisma from "@/lib/prisma"; export async function funGlobal_getAllBank() { const data = await prisma.masterBank.findMany({ diff --git a/src/app_modules/_global/fun/get/fun_get_directory_name.ts b/src/app_modules/_global/fun/get/fun_get_directory_name.ts new file mode 100644 index 00000000..83ec55cd --- /dev/null +++ b/src/app_modules/_global/fun/get/fun_get_directory_name.ts @@ -0,0 +1,11 @@ +import { DIRECTORY_ID } from "@/lib"; + +export async function funGetDirectoryNameByValue({ + value, +}: { + value?: string | null; +}) { + if (!value) return null; + const object: any = DIRECTORY_ID; + return Object.keys(object).find((key) => object[key] === value); +} diff --git a/src/app_modules/_global/fun/get/fun_get_nomor_admin.ts b/src/app_modules/_global/fun/get/fun_get_nomor_admin.ts index 7b98da50..12195f0e 100644 --- a/src/app_modules/_global/fun/get/fun_get_nomor_admin.ts +++ b/src/app_modules/_global/fun/get/fun_get_nomor_admin.ts @@ -1,6 +1,6 @@ "use server"; -import prisma from "@/app/lib/prisma"; +import prisma from "@/lib/prisma"; export async function funGlobal_getNomorAdmin() { const data = await prisma.nomorAdmin.findFirst({ diff --git a/src/app_modules/_global/fun/get/fun_get_user_by_id.ts b/src/app_modules/_global/fun/get/fun_get_user_by_id.ts index 1eb01da0..0e8908ce 100644 --- a/src/app_modules/_global/fun/get/fun_get_user_by_id.ts +++ b/src/app_modules/_global/fun/get/fun_get_user_by_id.ts @@ -1,7 +1,7 @@ "use server"; -import { prisma } from "@/app/lib"; -import { RouterAuth } from "@/app/lib/router_hipmi/router_auth"; +import { prisma } from "@/lib"; +import { RouterAuth } from "@/lib/router_hipmi/router_auth"; import { permanentRedirect } from "next/navigation"; export async function funGlobal_getUserById({ userId }: { userId: string }) { diff --git a/src/app_modules/_global/fun/get/fun_get_user_id_by_token.ts b/src/app_modules/_global/fun/get/fun_get_user_id_by_token.ts index 22249f85..6bc4b6c2 100644 --- a/src/app_modules/_global/fun/get/fun_get_user_id_by_token.ts +++ b/src/app_modules/_global/fun/get/fun_get_user_id_by_token.ts @@ -1,27 +1,33 @@ "use server"; -import { prisma } from "@/app/lib"; -import { ServerEnv } from "@/app/lib/server_env"; -import { unsealData } from "iron-session"; import { cookies } from "next/headers"; +import { decrypt } from "../../../../app/(auth)/_lib/decrypt"; export async function funGetUserIdByToken() { - const c = cookies().get(process.env.NEXT_PUBLIC_BASE_SESSION_KEY!); + const SESSION_KEY = process.env.NEXT_PUBLIC_BASE_SESSION_KEY; - // const token = JSON.parse( - // await unsealData(c?.value as string, { - // password: process.env.WIBU_PWD as string, - // }) - // ); - // return token.id; + if (!SESSION_KEY) { + console.warn("SESSION_KEY tidak ditemukan"); + return null; + } - const token = c?.value - const cekToken = await prisma.userSession.findFirst({ - where: { - token: token, - }, - }); + const cookieStore = cookies(); + const c = cookieStore.get(SESSION_KEY); - // if (cekToken === null) return null - return cekToken?.userId + if (!c?.value) { + console.warn("Cookie tidak ditemukan"); + return null; + } + + try { + const cekUser = await decrypt({ + token: c.value, + encodedKey: process.env.NEXT_PUBLIC_BASE_TOKEN_KEY!, + }); + + return cekUser?.id || null; + } catch (error) { + console.error("Gagal mendekripsi token:", error); + return null; + } } diff --git a/src/app_modules/_global/fun/get/fun_master_kategori_app.ts b/src/app_modules/_global/fun/get/fun_master_kategori_app.ts index a47a70ea..66841b5d 100644 --- a/src/app_modules/_global/fun/get/fun_master_kategori_app.ts +++ b/src/app_modules/_global/fun/get/fun_master_kategori_app.ts @@ -1,6 +1,6 @@ "use server"; -import prisma from "@/app/lib/prisma"; +import prisma from "@/lib/prisma"; export async function funGlobal_getMasterKategoriApp() { const data = await prisma.masterKategoriApp.findMany({ diff --git a/src/app_modules/_global/fun/get/index.ts b/src/app_modules/_global/fun/get/index.ts index b71aacbe..25d8ace9 100644 --- a/src/app_modules/_global/fun/get/index.ts +++ b/src/app_modules/_global/fun/get/index.ts @@ -1,5 +1,5 @@ - import { funGlobal_CheckProfile } from "./fun_check_profile"; +import { funGetDirectoryNameByValue } from "./fun_get_directory_name"; import { funGlobal_getNomorAdmin } from "./fun_get_nomor_admin"; import { funGetUserIdByToken } from "./fun_get_user_id_by_token"; import { funGlobal_getMasterKategoriApp } from "./fun_master_kategori_app"; @@ -8,3 +8,4 @@ export { funGlobal_getMasterKategoriApp }; export { funGlobal_getNomorAdmin }; export { funGetUserIdByToken }; export { funGlobal_CheckProfile }; +export { funGetDirectoryNameByValue }; diff --git a/src/app_modules/_global/fun/index.ts b/src/app_modules/_global/fun/index.ts index 809afd9b..7a6106b5 100644 --- a/src/app_modules/_global/fun/index.ts +++ b/src/app_modules/_global/fun/index.ts @@ -1,5 +1,7 @@ -import { funGlobal_DeleteFileById } from "./delete/fun_delete_file_by_id"; -import { funGlobal_UploadToStorage } from "./upload/fun_upload_to_storage"; +import { funDeteleteFileById } from "./delete/fun_delete_file_by_id"; +import { funUploadFileToStorage } from "./upload/fun_upload_to_storage"; +import { funValidasiUploadCreatedFile } from "./upload/fun_validasi_upload_created_file"; -export { funGlobal_UploadToStorage }; -export { funGlobal_DeleteFileById }; +export { funUploadFileToStorage as funGlobal_UploadToStorage }; +export { funDeteleteFileById as funGlobal_DeleteFileById }; +export { funValidasiUploadCreatedFile }; diff --git a/src/app_modules/_global/fun/upload/fun_upload_to_storage.ts b/src/app_modules/_global/fun/upload/fun_upload_to_storage.ts index 30bc8a51..1b81245f 100644 --- a/src/app_modules/_global/fun/upload/fun_upload_to_storage.ts +++ b/src/app_modules/_global/fun/upload/fun_upload_to_storage.ts @@ -1,59 +1,40 @@ -import { ServerEnv } from "@/app/lib/server_env"; -import { TokenStorage } from "@/app/lib/token"; -import { envs } from "@/lib/envs"; - -export async function funGlobal_UploadToStorage({ +export async function funUploadFileToStorage({ file, dirId, }: { file: File; dirId: string; }) { - const Env_WS_APIKEY = TokenStorage.value; - - const allowedMimeTypes = [ - "image/png", - "image/jpeg", - "image/gif", - "text/csv", - "application/pdf", - "application/msword", - "application/vnd.openxmlformats-officedocument.wordprocessingml.document", - "application/vnd.ms-excel", - "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", - "text/plain", - ]; - - if (!allowedMimeTypes.includes(file.type)) console.log("File tidak sesuai"); - - if (file.size > 100 * 1024 * 1024) console.log("File terlalu besar"); - - const formData = new FormData(); - formData.append("file", file); - formData.append("dirId", dirId); - try { - const res = await fetch("https://wibu-storage.wibudev.com/api/upload", { + const tokenResponse = await fetch("/api/get-cookie"); + if (!tokenResponse.ok) { + throw new Error("Failed to get token"); + } + const { token } = await tokenResponse.json(); + + if (!token) { + return { success: false, message: "Token not found" }; + } + + const formData = new FormData(); + formData.append("file", file); + formData.append("dirId", dirId); + + const upload = await fetch("/api/image/upload", { method: "POST", body: formData, headers: { - Authorization: `Bearer ${Env_WS_APIKEY}`, + Authorization: `Bearer ${token}`, }, }); - const dataRes = await res.json(); + const res = await upload.json(); - if (res.ok) { - return { success: true, data: dataRes.data }; - } else { - const errorText = await res.text(); - console.error("Error:", errorText); - return { success: false, data: {} }; - } + return upload.ok + ? { success: true, data: res.data, message: res.message } + : { success: false, data: {}, message: res.message }; } catch (error) { - console.error("Error:", error); - return { success: false, data: {} }; + console.log(error); + return { success: false, message: "An unexpected error occurred" }; } - - return { success: false, data: { id: "" } }; } diff --git a/src/app_modules/_global/fun/upload/fun_validasi_upload_created_file.ts b/src/app_modules/_global/fun/upload/fun_validasi_upload_created_file.ts new file mode 100644 index 00000000..9aa680b1 --- /dev/null +++ b/src/app_modules/_global/fun/upload/fun_validasi_upload_created_file.ts @@ -0,0 +1,106 @@ +import { clientLogger } from "@/util/clientLogger"; +import { MAX_SIZE } from "../../lib"; +import { PemberitahuanMaksimalFile } from "../../lib/maximal_setting"; +import { ComponentGlobal_NotifikasiPeringatan } from "../../notif_global"; +import { funDeteleteFileById } from "../delete/fun_delete_file_by_id"; +import { funUploadFileToStorage } from "./fun_upload_to_storage"; + +export async function funValidasiUploadCreatedFile({ + files, + dirId, + fileId, + onSetFileId, + onSetImageBuffer, +}: { + files: any | null; + dirId: string; + fileId: string; + onSetFileId: (val: string) => void; + onSetImageBuffer: (val: any | null) => void; +}) { + try { + const buffer = URL.createObjectURL( + new Blob([new Uint8Array(await files.arrayBuffer())]) + ); + + if (files.size > MAX_SIZE) { + ComponentGlobal_NotifikasiPeringatan(PemberitahuanMaksimalFile); + onSetImageBuffer(null); + + return false; + } + + if (fileId != "") { + const deleteFotoProfile = await funDeteleteFileById({ + fileId: fileId, + dirId: dirId, + }); + + if (!deleteFotoProfile.success) { + console.log( + `Client failed delete ${dirId}:` + deleteFotoProfile.message + ); + onSetImageBuffer(null); + + return false; + } + + if (deleteFotoProfile.success) { + onSetFileId(""); + onSetImageBuffer(null); + + const uploadPhoto = await funUploadFileToStorage({ + file: files, + dirId: dirId, + }); + + if (!uploadPhoto.success) { + clientLogger.error( + `Client failed upload ${dirId}:` + uploadPhoto.message + ); + return false; + } + + if (uploadPhoto.success) { + clientLogger.info(`Client success upload ${dirId}`); + onSetFileId(""); + onSetImageBuffer(buffer); + + return true; + } else { + clientLogger.error("Client failed upload foto:", uploadPhoto.message); + ComponentGlobal_NotifikasiPeringatan(`Gagal upload ${dirId}`); + } + } + } else { + const uploadPhoto = await funUploadFileToStorage({ + file: files, + dirId: dirId, + }); + + if (!uploadPhoto.success) { + clientLogger.error( + `Client failed upload ${dirId}:` + uploadPhoto.message + ); + return false; + } + + if (uploadPhoto.success) { + clientLogger.info(`Client success upload ${dirId}`); + onSetFileId(""); + onSetImageBuffer(buffer); + + return true; + } else { + clientLogger.error("Client failed upload foto:", uploadPhoto.message); + ComponentGlobal_NotifikasiPeringatan(`Gagal upload ${dirId}`); + + return false; + } + } + } catch (error) { + console.log(error); + + return false; + } +} diff --git a/src/app_modules/_global/lib/api_fetch_global.ts b/src/app_modules/_global/lib/api_fetch_global.ts new file mode 100644 index 00000000..fd89e9e0 --- /dev/null +++ b/src/app_modules/_global/lib/api_fetch_global.ts @@ -0,0 +1,144 @@ +export { apiGetPdfToImage, apiCreatedNotificationToAdmin, apiGetSeasonUserId }; + +export interface PageData { + imageUrl: string; + pageNumber: number; +} + +interface PdfResponse { + pages: PageData[]; + totalPages: number; +} +const apiGetPdfToImage = async ({ id }: { id: string }) => { + try { + // Fetch token from cookie + // const { token } = await fetch("/api/get-cookie").then((res) => res.json()); + // if (!token) { + // console.error("No token found"); + // return null; + // } + + const token = + "eyJhbGciOiJIUzI1NiJ9.eyJ1c2VyIjp7ImlkIjoiY20wdXIxeXh3MDAwMDU2bnNqbHI2MTg3cCIsIm5hbWUiOiJiYWdhcyIsImVtYWlsIjoiYmFnYXNAZ21haWwuY29tIn0sImlhdCI6MTcyNTg3MTAzNiwiZXhwIjo0ODgxNjMxMDM2fQ.wFQLcrJj66wFeqIMYk2esMx3ULaHK6RFxkiToaLCuko"; + + // Anda bisa menggunakan prospektusId di URL jika diperlukan + const pdfUrl = `https://wibu-storage.wibudev.com/api/pdf-to-image?url=https://wibu-storage.wibudev.com/api/files/${id}`; + + const response = await fetch(pdfUrl, { + method: "GET", + headers: { + "Content-Type": "application/json", + Authorization: `Bearer ${token}`, + }, + }); + + // Check if the response is OK + if (!response.ok) { + const errorData = await response.json().catch(() => null); + console.error("Failed get file", errorData?.message || "Unknown error"); + + return null; + } + + const jsonData: PdfResponse = await response.json(); + return jsonData; + } catch (error) { + console.error("Error get file", error); + throw error; // Re-throw the error to handle it in the calling function + } +}; + +const apiCreatedNotificationToAdmin = async ({ data }: { data: any }) => { + try { + const { token } = await fetch("/api/get-cookie").then((res) => res.json()); + if (!token) { + console.error("No token found"); + return null; + } + + const response = await fetch(`/api/notifications/to-admin`, { + method: "POST", + body: JSON.stringify({ data }), + headers: { + "Content-Type": "application/json", + Accept: "application/json", + Authorization: `Bearer ${token}`, + }, + }); + + // Check if the response is OK + if (!response.ok) { + const errorData = await response.json().catch(() => null); + console.error( + "Failed to created notifications", + response.statusText, + errorData + ); + throw new Error(errorData?.message || "Failed to created notifications"); + } + + // Return the JSON response + return await response.json(); + } catch (error) { + console.error("Error to created notifications", error); + throw error; // Re-throw the error to handle it in the calling function + } +}; + +const apiGetSeasonUserId = async () => { + try { + const response = await fetch(`/api/season`, { + method: "GET", + headers: { + "Content-Type": "application/json", + Accept: "application/json", + }, + }); + + // Check if the response is OK + if (!response.ok) { + const errorData = await response.json().catch(() => null); + console.error( + "Failed to created notifications", + response.statusText, + errorData + ); + throw new Error(errorData?.message || "Failed to created notifications"); + } + + return await response.json(); + } catch (error) { + console.error("Error get user id", error); + throw error; // Re-throw the error to handle it in the calling function + } +}; + +export const apiNewGetUserIdByToken = async () => { + try { + const response = await fetch(`/api/user/id`, { + method: "GET", + headers: { + "Content-Type": "application/json", + Accept: "application/json", + }, + }); + + // Check if the response is OK + if (!response.ok) { + const errorData = await response.json().catch(() => null); + console.error( + "Failed to get user id", + response.statusText, + errorData + ); + throw new Error(errorData?.message || "Failed to get user id"); + } + + const data = await response.json(); + return data; + } catch (error) { + console.error("Error get user id", error); + throw error; // Re-throw the error to handle it in the calling function + } +} + \ No newline at end of file diff --git a/src/app_modules/_global/lib/api_fetch_master.ts b/src/app_modules/_global/lib/api_fetch_master.ts new file mode 100644 index 00000000..cd437086 --- /dev/null +++ b/src/app_modules/_global/lib/api_fetch_master.ts @@ -0,0 +1,145 @@ +export { + apiGetMasterBank, + apiGetMasterBidangBisnis, + apiGetMasterStatusTransaksi, + apiGetAdminContact, + apiGetMasterEmotions, + apiGetMasterIndustri, +}; + +const apiGetMasterBank = async () => { + const { token } = await fetch("/api/get-cookie").then((res) => res.json()); + if (!token) return await token.json().catch(() => null); + + const respone = await fetch(`/api/master/bank`, { + headers: { + "Content-Type": "application/json", + Accept: "application/json", + "Access-Control-Allow-Origin": "*", + Authorization: `Bearer ${token}`, + }, + }); + + return await respone.json().catch(() => null); +}; + +const apiGetMasterBidangBisnis = async () => { + const { token } = await fetch("/api/get-cookie").then((res) => res.json()); + if (!token) return await token.json().catch(() => null); + + const respone = await fetch(`/api/master/bidang-bisnis`, { + headers: { + "Content-Type": "application/json", + Accept: "application/json", + "Access-Control-Allow-Origin": "*", + Authorization: `Bearer ${token}`, + }, + }); + + return await respone.json().catch(() => null); +}; + +const apiGetMasterStatusTransaksi = async () => { + const { token } = await fetch("/api/get-cookie").then((res) => res.json()); + if (!token) return await token.json().catch(() => null); + + const response = await fetch(`/api/master/status_transaksi`, { + method: "GET", + headers: { + "Content-Type": "application/json", + Accept: "application/json", + "Access-Control-Allow-Origin": "*", + Authorization: `Bearer ${token}`, + }, + }); + + return await response.json().catch(() => null); +}; + +const apiGetAdminContact = async () => { + try { + // Fetch token from cookie + const { token } = await fetch("/api/get-cookie").then((res) => res.json()); + if (!token) { + console.error("No token found"); + return null; + } + + // Send PUT request to update portfolio logo + const response = await fetch(`/api/master/admin-contact`, { + method: "GET", + headers: { + "Content-Type": "application/json", + Accept: "application/json", + Authorization: `Bearer ${token}`, + }, + }); + + // Check if the response is OK + if (!response.ok) { + const errorData = await response.json().catch(() => null); + console.error( + "Error get admin contact:", + errorData?.message || "Unknown error" + ); + + return null; + } + + return await response.json(); + } catch (error) { + console.error("Error get admin contact:", error); + throw error; // Re-throw the error to handle it in the calling function + } +}; + +const apiGetMasterEmotions = async () => { + const { token } = await fetch("/api/get-cookie").then((res) => res.json()); + if (!token) return await token.json().catch(() => null); + + const response = await fetch(`/api/master/emotions`, { + method: "GET", + headers: { + "Content-Type": "application/json", + Accept: "application/json", + "Access-Control-Allow-Origin": "*", + Authorization: `Bearer ${token}`, + }, + }); + + return await response.json().catch(() => null); +}; +const apiGetMasterIndustri = async () => { + try { + // Fetch token from cookie + const { token } = await fetch("/api/get-cookie").then((res) => res.json()); + if (!token) { + console.error("No token found"); + return null; + } + + const response = await fetch(`/api/master/industri`, { + method: "GET", + headers: { + "Content-Type": "application/json", + Accept: "application/json", + Authorization: `Bearer ${token}`, + }, + }); + + if (!response.ok) { + const errorData = await response.json().catch(() => null); + console.error( + "Error get master industri:", + errorData?.message || "Unknown error" + ); + + return null; + } + + return await response.json(); + } catch (error) { + console.error("Error get master industri:", error); + throw error; + } +}; \ No newline at end of file diff --git a/src/app_modules/_global/lib/api_fetch_not_user.tsx b/src/app_modules/_global/lib/api_fetch_not_user.tsx new file mode 100644 index 00000000..5795eb99 --- /dev/null +++ b/src/app_modules/_global/lib/api_fetch_not_user.tsx @@ -0,0 +1,16 @@ +export async function apiGetNotUserForJob({ id }: { id: string }) { + try { + const response = await fetch(`/api/not-user/job/${id}`); + if (!response.ok) { + const errorData = await response.json().catch(() => null); + console.error("Failed to get job", response.statusText, errorData); + throw new Error(errorData?.message || "Failed to get job"); + } + + const data = await response.json(); + return data; + } catch (error) { + console.error("Error get job:", error); + throw error; + } +} diff --git a/src/app_modules/_global/lib/api_user.ts b/src/app_modules/_global/lib/api_user.ts new file mode 100644 index 00000000..a2009553 --- /dev/null +++ b/src/app_modules/_global/lib/api_user.ts @@ -0,0 +1,99 @@ +import { apiGetUserProfile } from './../../user/lib/api_user'; +export const apiGetUserId = async () => { + const { token } = await fetch("/api/get-cookie").then((res) => res.json()); + if (!token) return await token.json().catch(() => null); + + const response = await fetch(`/api/user`, { + headers: { + "Content-Type": "application/json", + Accept: "application/json", + "Access-Control-Allow-Origin": "*", + Authorization: `Bearer ${token}`, + }, + }); + + if (!response.ok) return null; + const data: Record = await response.json(); + return data; +}; + +export const apiGetCookiesUser = async () => { + const response = await fetch(`/api/user/get`); + return await response.json().catch(() => null); +}; + +export const apiGetACtivationUser = async () => { + const { token } = await fetch("/api/get-cookie").then((res) => res.json()); + if (!token) return await token.json().catch(() => null); + + const response = await fetch(`/api/user/activation`, { + headers: { + "Content-Type": "application/json", + Accept: "application/json", + "Access-Control-Allow-Origin": "*", + Authorization: `Bearer ${token}`, + }, + }); + return await response.json().catch(() => null); +}; + +export const apiGetAllUserWithExceptId = async ({ + exceptId, +}: { + exceptId?: string; +}) => { + const { token } = await fetch("/api/get-cookie").then((res) => res.json()); + if (!token) return await token.json().catch(() => null); + + const isExceptId = exceptId ? `?except-id=${exceptId}` : ""; + + const response = await fetch(`/api/user/all${isExceptId}`, { + headers: { + "Content-Type": "application/json", + Accept: "application/json", + "Access-Control-Allow-Origin": "*", + Authorization: `Bearer ${token}`, + }, + }); + return await response.json().catch(() => null); +}; + +export const apiGetUserById = async ({ id }: { id: string }) => { + try { + // Fetch token from cookie + const { token } = await fetch("/api/get-cookie").then((res) => res.json()); + if (!token) { + console.error("No token found"); + return null; + } + + // Send PUT request to update portfolio logo + const response = await fetch(`/api/user/${id}`, { + method: "GET", + headers: { + "Content-Type": "application/json", + Accept: "application/json", + Authorization: `Bearer ${token}`, + }, + }); + + // Check if the response is OK + if (!response.ok) { + const errorData = await response.json().catch(() => null); + console.error( + "Failed to get user", + response.statusText, + errorData + ); + throw new Error( + errorData?.message || "Failed to get user" + ); + } + + // Return the JSON response + return await response.json(); + } catch (error) { + console.error("Error get user:", error); + throw error; // Re-throw the error to handle it in the calling function + } +}; \ No newline at end of file diff --git a/src/app_modules/_global/lib/base_style_text_input.tsx b/src/app_modules/_global/lib/base_style_text_input.tsx new file mode 100644 index 00000000..722711b6 --- /dev/null +++ b/src/app_modules/_global/lib/base_style_text_input.tsx @@ -0,0 +1,15 @@ +import { Styles } from "@mantine/core"; +import { BaseSelectStylesNames } from "@mantine/core/lib/Select/types"; +import { MainColor } from "../color"; + +export const baseStylesTextInput: Styles< + BaseSelectStylesNames, + Record +> = { + label: { + color: MainColor.white, + }, + input: { + backgroundColor: MainColor.white, + }, +}; diff --git a/src/app_modules/_global/lib/index.ts b/src/app_modules/_global/lib/index.ts new file mode 100644 index 00000000..45e3c358 --- /dev/null +++ b/src/app_modules/_global/lib/index.ts @@ -0,0 +1,5 @@ +import { globalStatusApp } from "./master_list_app"; +import { MAX_SIZE } from "./maximal_setting"; + +export { MAX_SIZE }; +export { globalStatusApp }; diff --git a/src/app_modules/_global/lib/interface/stiker.ts b/src/app_modules/_global/lib/interface/stiker.ts new file mode 100644 index 00000000..ee7756e5 --- /dev/null +++ b/src/app_modules/_global/lib/interface/stiker.ts @@ -0,0 +1,17 @@ +import { Prisma } from "@prisma/client"; + +export type ISticker = Prisma.StickerGetPayload<{ + select: { + id: true; + name: true; + fileId: true; + emotions: true; + }; + include: { + MasterEmotions: { + select: { + value: true; + }; + }; + }; +}>; \ No newline at end of file diff --git a/src/app_modules/_global/lib/master_jenis_kelamin.tsx b/src/app_modules/_global/lib/master_jenis_kelamin.tsx new file mode 100644 index 00000000..4390edbb --- /dev/null +++ b/src/app_modules/_global/lib/master_jenis_kelamin.tsx @@ -0,0 +1,4 @@ +export const masterJenisKelamin = [ + { value: "laki-laki", label: "Laki-laki" }, + { value: "perempuan", label: "Perempuan" }, +]; diff --git a/src/app_modules/_global/lib/master_list_app.ts b/src/app_modules/_global/lib/master_list_app.ts new file mode 100644 index 00000000..6b08101b --- /dev/null +++ b/src/app_modules/_global/lib/master_list_app.ts @@ -0,0 +1,55 @@ +import statusTransaksi from "../../../../src/bin/seeder/master/master_status_transaksi.json"; +import masterKategoriApp from "../../../../src/bin/seeder/master/master_kategori_app.json"; + +export const globalStatusApp = [ + { + id: "1", + name: "Publish", + }, + { + id: "2", + name: "Review", + }, + { + id: "3", + name: "Draft", + }, + { + id: "4", + name: "Reject", + }, +]; + +export const globalStatusTransaksi = statusTransaksi; + +export const globalMasterApp = [ + { id: "0", name: "Semua" }, + { + id: "1", + name: "Event", + }, + { + id: "2", + name: "Job", + }, + { + id: "3", + name: "Voting", + }, + { + id: "4", + name: "Donasi", + }, + { + id: "5", + name: "Investasi", + }, + { + id: "6", + name: "Forum", + }, + { + id: "7", + name: "Collaboration", + }, +]; diff --git a/src/app_modules/_global/lib/maximal_setting.ts b/src/app_modules/_global/lib/maximal_setting.ts new file mode 100644 index 00000000..fb020b3e --- /dev/null +++ b/src/app_modules/_global/lib/maximal_setting.ts @@ -0,0 +1,8 @@ +// Maksimal ukuran file dalam byte (3 MB) +export const MAX_SIZE = 3 * 1024 * 1024; // 3 MB +export const PemberitahuanMaksimalFile = "Ukuran file terlalu besar. Maksimal 3 MB."; + +/** + * Maksimal panjang input 1000 karakter + */ +export const maxInputLength = 1000; \ No newline at end of file diff --git a/src/app_modules/_global/lib/stiker.ts b/src/app_modules/_global/lib/stiker.ts new file mode 100644 index 00000000..32c86160 --- /dev/null +++ b/src/app_modules/_global/lib/stiker.ts @@ -0,0 +1,89 @@ +const dummyStiker = [ + { + id: 1, + name: "stiker1", + url: "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQN9AKmsBY4yqdn3GueJJEVPJbfmf853gDL4cN8uc9eqsCTiJ1fzhcpywzVP68NCJEA5NQ&usqp=CAU", + }, + { + id: 2, + name: "stiker2", + url: "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcS2lkV3ZiQ8m-OELSui2JGVy80vnh1cyRUV7NrgFNluPVVs2HUAyCHwCMAKGe2s5jk2sn8&usqp=CAU", + }, + { + id: 3, + name: "stiker3", + url: "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQHy9ZdsPc6dHgVTl5yIGpRJ-KtpTIsXA2_kbfO1Oc-pv_f7CNKGxhO56RjKujE3xCyb9k&usqp=CAU", + }, + { + id: 4, + name: "stiker4", + url: "https://i.pinimg.com/236x/0a/2e/54/0a2e544c9a908beed6b544d031a444ca.jpg", + }, + { + id: 5, + name: "stiker5", + url: "https://i.pinimg.com/564x/ff/d3/f7/ffd3f7498d09e4fdf48967fb4651b70b.jpg", + }, + { + id: 6, + name: "stiker6", + url: "https://s.cafebazaar.ir/images/icons/com.apikdev.stickerwapentol-4febefdb-b3d4-4436-a241-e5e140ba3e0a_512x512.png?x-img=v1/resize,h_256,w_256,lossless_false/optimize", + }, + { + id: 7, + name: "stiker7", + url: "https://down-id.img.susercontent.com/file/39fbca466b027a644d8386f265330365", + }, + { + id: 8, + name: "stiker8", + url: "https://i.pinimg.com/236x/34/73/91/3473915a7434885e80ca11728e9b376a.jpg", + }, + { + id: 9, + name: "stiker9", + url: "https://i.pinimg.com/736x/ae/8b/29/ae8b29377f241616e57e5d5745a8984a.jpg", + }, + { + id: 10, + name: "stiker10", + url: "https://i.pinimg.com/564x/cd/da/68/cdda68c895e9e74382d912cbf1161634.jpg", + }, + { + id: 11, + name: "stiker11", + url: "https://i.pinimg.com/564x/7c/af/41/7caf412dd8f5336951a45ca5f8105423.jpg", + }, + { + id: 12, + name: "stiker12", + url: "https://i.pinimg.com/736x/43/55/5a/43555a618afc52331fd9a8effbbb33b1.jpg", + }, + { + id: 13, + name: "stiker13", + url: "https://i.pinimg.com/564x/77/52/b1/7752b14b010db94a40132bf4f7aede8f.jpg", + }, + { + id: 14, + name: "stiker14", + url: "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSEeCX_gq9XpK9CwQvEtIwWXlciBHFBP5IpB5YPWR6QqD4TFIs8xj2ezCGzJfMgH4vR34Q&usqp=CAU", + }, + { + id: 15, + name: "stiker15", + url: "https://i.pinimg.com/originals/03/a5/2f/03a52faa637fe35f33316e95b9e3f1ee.gif", + }, + { + id: 16, + name: "stiker16", + url: "https://teknogram.id/gallery/stiker-wa/kartun-bergerak/stiker-kartun-bergerak-3.png", + }, + { + id: 17, + name: "stiker17", + url: "https://id-live-01.slatic.net/p/1cbe0e62964c31030d12cfdf9dadb96b.jpg", + }, +]; + +export const listStiker = dummyStiker; \ No newline at end of file diff --git a/src/app_modules/_global/lib/stiker/api_fecth_stiker_for_user.tsx b/src/app_modules/_global/lib/stiker/api_fecth_stiker_for_user.tsx new file mode 100644 index 00000000..76724e9d --- /dev/null +++ b/src/app_modules/_global/lib/stiker/api_fecth_stiker_for_user.tsx @@ -0,0 +1,32 @@ +export const apiGetStickerForUser = async ({ gender }: { gender: string }) => { + try { + // Fetch token from cookie + const { token } = await fetch("/api/get-cookie").then((res) => res.json()); + if (!token) { + console.error("No token found"); + return null; + } + + const response = await fetch(`/api/sticker?gender=${gender}`, { + method: "GET", + headers: { + "Content-Type": "application/json", + Accept: "application/json", + Authorization: `Bearer ${token}`, + }, + }); + + // Check if the response is OK + if (!response.ok) { + const errorData = await response.json().catch(() => null); + console.error("Failed to get sticker", response.statusText, errorData); + throw new Error(errorData?.message || "Failed to get sticker"); + } + + // Return the JSON response + return await response.json(); + } catch (error) { + console.error("Error get sticker", error); + throw error; // Re-throw the error to handle it in the calling function + } +}; diff --git a/src/app_modules/_global/lib/stiker/comp_V3_text_editor_stiker.tsx b/src/app_modules/_global/lib/stiker/comp_V3_text_editor_stiker.tsx new file mode 100644 index 00000000..5b3e84c6 --- /dev/null +++ b/src/app_modules/_global/lib/stiker/comp_V3_text_editor_stiker.tsx @@ -0,0 +1,45 @@ +import { Paper, ScrollArea } from "@mantine/core"; +import React from "react"; +import { MainColor } from "../../color"; +import { ReactQuillDynamic } from "./react_quill_dynamix"; +import { + formatsReactQuill, + modulesReactQuill, +} from "./react_quill_format_for_stiker"; + +const ReactQuill = ReactQuillDynamic; + +export function Component_V3_TextEditorWithSticker({ + quillRef, + data, + onSetData, +}: { + quillRef: React.MutableRefObject; + data: any; + onSetData: (value: any) => void; +}) { + return ( + <> + + + { + onSetData(val); + }} + modules={modulesReactQuill} + formats={formatsReactQuill} + placeholder="Ketik pesan di sini atau tambahkan stiker..." + style={{ + color: "black", + backgroundColor: MainColor.white, + border: "none", + }} + /> + + + + ); +} diff --git a/src/app_modules/_global/lib/stiker/comp_button_sticker.tsx b/src/app_modules/_global/lib/stiker/comp_button_sticker.tsx new file mode 100644 index 00000000..8ca66dbc --- /dev/null +++ b/src/app_modules/_global/lib/stiker/comp_button_sticker.tsx @@ -0,0 +1,95 @@ +import { APIs } from "@/lib"; +import { + ActionIcon, + Box, + Center, + Image, + Loader, + ScrollArea, + SimpleGrid, + Stack, + Text, + Tooltip +} from "@mantine/core"; +import { IconMoodSmileFilled } from "@tabler/icons-react"; +import _ from "lodash"; +import { MainColor } from "../../color"; +import { UIGlobal_Modal } from "../../ui"; +import { ISticker } from "../interface/stiker"; +import { insertStickerReactQuill } from "./react_quill_format_for_stiker"; + +interface Props { + open: () => void; + close: () => void; + opened: boolean; + quillRef: any; + dataSticker: ISticker[] | null; +} + +export const Comp_ButtonSticker = ({ + open, + close, + opened, + quillRef, + dataSticker, +}: Props) => { + return ( + <> + + + + + + + + {_.isEmpty(dataSticker) ? ( +
+ + + Sticker belum tersedia + + + Silahkan hubungi admin + + +
+ ) : ( + + {dataSticker?.map((item: any) => ( + + + } + src={APIs.GET({ fileId: item.fileId })} + height={100} + width={100} + alt={item.name} + style={{ cursor: "pointer" }} + onClick={() => + insertStickerReactQuill({ + stickerUrl: APIs.GET({ fileId: item.fileId }), + quillRef: quillRef, + close: close, + }) + } + /> + + + ))} + + )} +
+
+
+ + ); +}; diff --git a/src/app_modules/_global/lib/stiker/react_quill_dynamix.tsx b/src/app_modules/_global/lib/stiker/react_quill_dynamix.tsx new file mode 100644 index 00000000..d95ede3a --- /dev/null +++ b/src/app_modules/_global/lib/stiker/react_quill_dynamix.tsx @@ -0,0 +1,20 @@ +import { Text } from "@mantine/core"; +import dynamic from "next/dynamic"; + +export const ReactQuillDynamic = dynamic( + async () => { + const { default: RQ } = await import("react-quill"); + // Tidak perlu import CSS dengan import statement + return function comp({ forwardedRef, ...props }: any) { + return ; + }; + }, + { + ssr: false, + loading: () => ( + + Ketik pesan di sini atau tambahkan stiker... + + ), + } +); diff --git a/src/app_modules/_global/lib/stiker/react_quill_format_for_stiker.ts b/src/app_modules/_global/lib/stiker/react_quill_format_for_stiker.ts new file mode 100644 index 00000000..c8af8914 --- /dev/null +++ b/src/app_modules/_global/lib/stiker/react_quill_format_for_stiker.ts @@ -0,0 +1,61 @@ +import React from "react"; + +export { + modulesReactQuill, + formatsReactQuill, + insertStickerReactQuill +}; + +const modulesReactQuill = { + toolbar: [ + [{ header: [1, 2, 3, 4, 5, 6, false] }], + ["bold", "italic", "underline", "strike", "blockquote"], + [{ list: "ordered" }, { list: "bullet" }], + ["link"], + ["clean"], + ], +}; + +const formatsReactQuill = [ + "header", + "bold", + "italic", + "underline", + "strike", + "blockquote", + "list", + "bullet", + "link", + "image", +]; + + const insertStickerReactQuill = ({ + stickerUrl, + quillRef, + close, + }: { + stickerUrl: string; + quillRef: React.MutableRefObject; + close: () => void; + }) => { + if (!quillRef.current) return; + + const quill = quillRef.current.getEditor(); + const range = quill.getSelection(true); + + // Custom image insertion with size + // Use custom blot or HTML string with size attributes + const stickerHtml = `sticker`; + + // Insert HTML at cursor position + quill.clipboard.dangerouslyPasteHTML(range.index, stickerHtml); + + // Move cursor after inserted sticker + quill.setSelection(range.index + 1, 0); + + // Focus back on editor + quill.focus(); + + // Close sticker modal + close(); + }; \ No newline at end of file diff --git a/src/app_modules/_global/ui/V2_layout_tamplate.tsx b/src/app_modules/_global/ui/V2_layout_tamplate.tsx new file mode 100644 index 00000000..4f8a0daa --- /dev/null +++ b/src/app_modules/_global/ui/V2_layout_tamplate.tsx @@ -0,0 +1,151 @@ +"use client"; + +import { AccentColor, MainColor } from "@/app_modules/_global/color"; +import { + ActionIcon, + Box, + Button, + Container, + Group, + Text, + Title, +} from "@mantine/core"; +import { useDisclosure } from "@mantine/hooks"; +import { createStyles } from "@mantine/styles"; +import { IconBell, IconSearch } from "@tabler/icons-react"; +import { ReactNode, useEffect, useState } from "react"; + +// Styling langsung didefinisikan di dalam komponen +const useStyles = createStyles((theme) => ({ + pageContainer: { + display: "flex", + flexDirection: "column", + minHeight: "100dvh", // dynamic viewport height untuk mobile + width: "100%", + maxWidth: "500px", // Batasi lebar maksimum + margin: "0 auto", // Pusatkan layout + boxShadow: "0 0 10px rgba(0, 0, 0, 0.1)", // Tambahkan shadow untuk efek mobile-like + backgroundColor: MainColor.darkblue, // Warna latar belakang fallback + + [`@media (max-width: 768px)`]: { + maxWidth: "100%", // Pada layar mobile, gunakan lebar penuh + boxShadow: "none", // Hilangkan shadow pada mobile + }, + }, + + header: { + position: "sticky", + top: 0, + width: "100%", + maxWidth: "500px", // Batasi lebar header sesuai container + margin: "0 auto", // Pusatkan header + backgroundColor: MainColor.darkblue, + boxShadow: "0 1px 3px rgba(0, 0, 0, 0.1)", + zIndex: 100, // Pastikan z-index tinggi + transition: "all 0.3s ease", + color: MainColor.yellow, + }, + + scrolled: { + boxShadow: "0 2px 8px rgba(0, 0, 0, 0.15)", + }, + + headerContainer: { + height: "8vh", + display: "flex", + alignItems: "center", + padding: "0 16px", // Padding untuk mobile view + + [`@media (max-width: 768px)`]: { + height: "8vh", + }, + borderBottom: `2px solid ${AccentColor.blue}`, + borderBottomLeftRadius: "20px", + borderBottomRightRadius: "20px", + }, + + content: { + flex: 1, + width: "100%", + overflowY: "hidden", // Izinkan scrolling pada konten + paddingBottom: "8vh", // Sesuaikan dengan tinggi footer + }, + + footer: { + width: "100%", + backgroundColor: MainColor.darkblue, + borderTop: `2px solid ${AccentColor.blue}`, + height: "10vh", // Tinggi footer + display: "flex", + alignItems: "center", + justifyContent: "center", + position: "fixed", + bottom: 0, + left: "50%", // Pusatkan footer + transform: "translateX(-50%)", // Pusatkan footer + maxWidth: "500px", // Batasi lebar footer + color: MainColor.white, + borderTopLeftRadius: "20px", + borderTopRightRadius: "20px", + }, +})); + +interface ClientLayoutProps { + children: ReactNode; +} + +export default function UI_NewLayoutTamplate({ children }: ClientLayoutProps) { + const { classes } = useStyles(); + + return {children}; +} + +export function UI_NewHeader({ children }: { children: ReactNode }) { + const { classes, cx } = useStyles(); + const [scrolled, setScrolled] = useState(false); + + // Effect untuk mendeteksi scroll + useEffect(() => { + function handleScroll() { + if (window.scrollY > 10) { + setScrolled(true); + } else { + setScrolled(false); + } + } + + window.addEventListener("scroll", handleScroll); + return () => window.removeEventListener("scroll", handleScroll); + }, []); + + return ( + + + {children} + + + ); +} + +export function UI_NewChildren({ children }: { children: ReactNode }) { + const { classes } = useStyles(); + return ( + + + {children} + + + ); +} + +export function UI_NewFooter({ children }: { children: ReactNode }) { + const { classes } = useStyles(); + return ( + + {children} + + ); +} diff --git a/src/app_modules/_global/ui/new_ui_content.tsx b/src/app_modules/_global/ui/new_ui_content.tsx new file mode 100644 index 00000000..e3e00a8e --- /dev/null +++ b/src/app_modules/_global/ui/new_ui_content.tsx @@ -0,0 +1,28 @@ +import { Box } from "@mantine/core"; + +export function NewUI_Content({ + children, + isScroll, +}: { + children: React.ReactNode; + isScroll?: React.CSSProperties["overflowY"]; +}) { + return ( + <> + + {children} + + + ); +} diff --git a/src/app_modules/_global/ui/new_ui_footer.tsx b/src/app_modules/_global/ui/new_ui_footer.tsx new file mode 100644 index 00000000..645dd94f --- /dev/null +++ b/src/app_modules/_global/ui/new_ui_footer.tsx @@ -0,0 +1,30 @@ +import { Box, rem } from "@mantine/core"; +import { AccentColor } from "../color"; + +export function NewUI_Footer({ children }: { children: React.ReactNode }) { + return ( + <> + + {children} + + + ); +} diff --git a/src/app_modules/_global/ui/new_ui_header.tsx b/src/app_modules/_global/ui/new_ui_header.tsx new file mode 100644 index 00000000..7bf251e4 --- /dev/null +++ b/src/app_modules/_global/ui/new_ui_header.tsx @@ -0,0 +1,123 @@ +import { ActionIcon, Box, Group, Title, Loader } from "@mantine/core"; +import { AccentColor, MainColor } from "../color"; +import { useRouter } from "next/navigation"; +import { useState } from "react"; +import { IconChevronLeft } from "@tabler/icons-react"; + +export function NewUI_Header({ + title, + posotion, + // left button + hideButtonLeft, + iconLeft, + routerLeft, + customButtonLeft, + // right button + iconRight, + routerRight, + customButtonRight, + backgroundColor, +}: { + title: string; + posotion?: any; + // left button + hideButtonLeft?: boolean; + iconLeft?: any; + routerLeft?: any; + customButtonLeft?: React.ReactNode; + // right button + iconRight?: any; + routerRight?: any; + customButtonRight?: React.ReactNode; + backgroundColor?: string; +}) { + const router = useRouter(); + const [isLoading, setIsLoading] = useState(false); + const [isRightLoading, setRightLoading] = useState(false); + + return ( + <> + + + {hideButtonLeft ? ( + + ) : customButtonLeft ? ( + customButtonLeft + ) : ( + { + setIsLoading(true); + routerLeft === undefined + ? router.back() + : router.push(routerLeft, { scroll: false }); + }} + > + {/* PAKE LOADING SAAT KLIK BACK */} + {/* {isLoading ? ( + + ) : iconLeft ? ( + iconLeft + ) : ( + + )} */} + + {/* GA PAKE LOADING SAAT KLIK BACK */} + {iconLeft ? iconLeft : } + + )} + + + {title} + + + {customButtonRight ? ( + customButtonRight + ) : iconRight === undefined ? ( + + ) : routerRight === undefined ? ( + {iconRight} + ) : ( + { + setRightLoading(true); + router.push(routerRight); + }} + > + {isRightLoading ? ( + + ) : ( + iconRight + )} + + )} + + + + ); +} diff --git a/src/app_modules/_global/ui/new_ui_tamplate.tsx b/src/app_modules/_global/ui/new_ui_tamplate.tsx new file mode 100644 index 00000000..2e292795 --- /dev/null +++ b/src/app_modules/_global/ui/new_ui_tamplate.tsx @@ -0,0 +1,40 @@ +"use client"; + +import { BackgroundImage, Box } from "@mantine/core"; +import { MainColor } from "../color"; + +export function NewUI_Tamplate({ children }: { children: React.ReactNode }) { + return ( + + + {children} + + + ); +} diff --git a/src/app_modules/_global/ui/ui_drawer.tsx b/src/app_modules/_global/ui/ui_drawer.tsx index e15e2bea..6129be67 100644 --- a/src/app_modules/_global/ui/ui_drawer.tsx +++ b/src/app_modules/_global/ui/ui_drawer.tsx @@ -11,7 +11,7 @@ import { import { IconX } from "@tabler/icons-react"; import { useRouter } from "next/navigation"; import { useState } from "react"; -import { AccentColor } from "../color/color_pallet"; +import { AccentColor, MainColor } from "../color/color_pallet"; import ComponentGlobal_Loader from "../component/loader"; interface MODEL_DRAWER { @@ -28,13 +28,13 @@ export default function UIGlobal_Drawer({ opened: boolean; close: () => void; component: - | { - id: string; - name: string; - icon: string; - path: string; - }[] - | any[]; + | { + id: string; + name: string; + icon: string; + path: string; + }[] + | any[]; }) { const router = useRouter(); const [isLoading, setIsLoading] = useState(false); @@ -64,7 +64,7 @@ export default function UIGlobal_Drawer({ borderRight: `1px solid ${AccentColor.blue}`, borderLeft: `1px solid ${AccentColor.blue}`, borderRadius: "20px 20px 0px 0px", - color: "white", + color: MainColor.white, paddingBottom: "5%", }, }} @@ -72,28 +72,35 @@ export default function UIGlobal_Drawer({ - + {component.map((e, i) => ( - + { + setPageId(e?.id); + setIsLoading(true); + router.push(e?.path, { scroll: false }); + }} + > { - setPageId(e?.id); - setIsLoading(true); - router.push(e?.path, {scroll: false}); - }} + c={MainColor.white} > - {isLoading && e?.id === pageId ? ( + {/* PAKE LOADING */} + {/* {isLoading && e?.id === pageId ? ( ) : ( e?.icon - )} + )} */} + + + {/* GA PAKE LOADING */} + {e?.icon} + - + {e?.name} diff --git a/src/app_modules/_global/ui/ui_drawer_custom.tsx b/src/app_modules/_global/ui/ui_drawer_custom.tsx index 034670b2..08b9a624 100644 --- a/src/app_modules/_global/ui/ui_drawer_custom.tsx +++ b/src/app_modules/_global/ui/ui_drawer_custom.tsx @@ -25,7 +25,7 @@ export default function UIGlobal_DrawerCustom({ }: { opened: boolean; close: () => void; - component: React.ReactNode; + component: React.ReactNode; }) { return ( <> @@ -44,6 +44,7 @@ export default function UIGlobal_DrawerCustom({ left: 0, right: 0, width: 500, + zIndex:10 }, body: { backgroundColor: AccentColor.darkblue, diff --git a/src/app_modules/_global/ui/ui_header_tamplate.tsx b/src/app_modules/_global/ui/ui_header_tamplate.tsx index 6126711c..ef2e4fd2 100644 --- a/src/app_modules/_global/ui/ui_header_tamplate.tsx +++ b/src/app_modules/_global/ui/ui_header_tamplate.tsx @@ -49,12 +49,11 @@ export default function UIGlobal_LayoutHeaderTamplate({ <> { @@ -77,13 +76,17 @@ export default function UIGlobal_LayoutHeaderTamplate({ : router.push(routerLeft, { scroll: false }); }} > - {isLoading ? ( + {/* PAKE LOADING SAAT KLIK BACK */} + {/* {isLoading ? ( ) : iconLeft ? ( iconLeft ) : ( - )} + )} */} + + {/* GA PAKE LOADING SAAT KLIK BACK */} + {iconLeft ? iconLeft : } )} diff --git a/src/app_modules/_global/ui/ui_image_preview.tsx b/src/app_modules/_global/ui/ui_image_preview.tsx index 9f37411a..d867ebed 100644 --- a/src/app_modules/_global/ui/ui_image_preview.tsx +++ b/src/app_modules/_global/ui/ui_image_preview.tsx @@ -1,7 +1,7 @@ "use client"; -import { APIs } from "@/app/lib"; -import { pathAssetImage } from "@/app/lib/path_asset_image"; +import { APIs } from "@/lib"; +import { pathAssetImage } from "@/lib/path_asset_image"; import { ActionIcon, Box, @@ -10,25 +10,23 @@ import { Image, rem, ScrollArea, - Skeleton, - Text, - Title, + Skeleton } from "@mantine/core"; import { useShallowEffect } from "@mantine/hooks"; import { IconX } from "@tabler/icons-react"; import { useRouter } from "next/navigation"; import { useState } from "react"; import { MainColor } from "../color"; +import ComponentGlobal_Loader from "../component/loader"; import UIGlobal_LayoutHeaderTamplate from "./ui_header_tamplate"; import { UIHeader } from "./ui_layout_tamplate"; -import ComponentGlobal_Loader from "../component/loader"; export function UIGlobal_ImagePreview({ fileId }: { fileId: string }) { const router = useRouter(); const [isImage, setIsImage] = useState(null); const [isLoading, setIsLoading] = useState(false); - const url = APIs.GET({ fileId: fileId }); + const url = APIs.GET({ fileId: fileId, size: "500" }); useShallowEffect(() => { onLoadImage(); @@ -82,7 +80,7 @@ export function UIGlobal_ImagePreview({ fileId }: { fileId: string }) { } /> - + {isImage === null ? ( ) : isImage ? ( diff --git a/src/app_modules/_global/ui/ui_layout_tamplate.tsx b/src/app_modules/_global/ui/ui_layout_tamplate.tsx index 393a8f25..201a93fa 100644 --- a/src/app_modules/_global/ui/ui_layout_tamplate.tsx +++ b/src/app_modules/_global/ui/ui_layout_tamplate.tsx @@ -32,17 +32,17 @@ export default function UIGlobal_LayoutTamplate({ }} > - + > */} {children} - + {/* */} @@ -78,7 +78,7 @@ export function UIChildren({ return ( <> - + {children} diff --git a/src/app_modules/_global/ui/ui_modal.tsx b/src/app_modules/_global/ui/ui_modal.tsx index e6f33b7d..35547dc3 100644 --- a/src/app_modules/_global/ui/ui_modal.tsx +++ b/src/app_modules/_global/ui/ui_modal.tsx @@ -1,7 +1,17 @@ "use client"; -import { Modal, Stack, Title, Group, Button, Box } from "@mantine/core"; +import { + Modal, + Stack, + Title, + Group, + Button, + Box, + ActionIcon, +} from "@mantine/core"; import { MainColor, AccentColor } from "../color/color_pallet"; +import React from "react"; +import { IconX } from "@tabler/icons-react"; export default function UIGlobal_Modal({ opened, @@ -9,12 +19,18 @@ export default function UIGlobal_Modal({ title, buttonKiri, buttonKanan, + children, + closeButton, + closeOnClickOutside, }: { opened: any; close: any; title: any; - buttonKiri: any; - buttonKanan: any; + buttonKiri?: any; + buttonKanan?: any; + children?: React.ReactNode; + closeButton?: boolean; + closeOnClickOutside?: boolean; }) { return ( <> @@ -25,6 +41,7 @@ export default function UIGlobal_Modal({ }} centered withCloseButton={false} + closeOnClickOutside={closeOnClickOutside} styles={{ content: { backgroundColor: MainColor.darkblue, @@ -32,14 +49,25 @@ export default function UIGlobal_Modal({ }, }} > - - - {title} - - - {buttonKiri} - {buttonKanan} + + + + {title} + + {closeButton ? ( + + + + ) : null} + {children ? ( + children + ) : ( + + {buttonKiri} + {buttonKanan} + + )} diff --git a/src/app_modules/_global/ui/ui_new_image_preview.tsx b/src/app_modules/_global/ui/ui_new_image_preview.tsx new file mode 100644 index 00000000..11bb080b --- /dev/null +++ b/src/app_modules/_global/ui/ui_new_image_preview.tsx @@ -0,0 +1,187 @@ +"use client"; + +import { APIs } from "@/lib"; +import { pathAssetImage } from "@/lib/path_asset_image"; +import { + ActionIcon, + Box, + Center, + Container, + Image, + rem, + ScrollArea, + Skeleton, +} from "@mantine/core"; +import { useShallowEffect } from "@mantine/hooks"; +import { IconX } from "@tabler/icons-react"; +import { useRouter } from "next/navigation"; +import { useState } from "react"; +import { MainColor } from "../color"; +import ComponentGlobal_Loader from "../component/loader"; +import UIGlobal_LayoutHeaderTamplate from "./ui_header_tamplate"; +import { UIHeader } from "./ui_layout_tamplate"; +import { Component_Header } from "../component/new/component_header"; +import UI_NewLayoutTamplate, { UI_NewHeader, UI_NewChildren } from "./V2_layout_tamplate"; + +export function UIGlobal_NewImagePreview({ fileId }: { fileId: string }) { + const router = useRouter(); + const [isImage, setIsImage] = useState(null); + const [isLoading, setIsLoading] = useState(false); + + const url = APIs.GET({ fileId: fileId, size: "500" }); + + useShallowEffect(() => { + onLoadImage(); + }, []); + + async function onLoadImage() { + const res = await fetch(url); + try { + if (res.ok) { + return setIsImage(true); + } + setIsImage(false); + } catch (error) { + console.log(error); + } + } + + return ( + <> + + + { + router.back(), setIsLoading(true); + }} + variant="transparent" + > + {isLoading ? ( + + ) : ( + + )} + + } + /> + + + + {isImage === null ? ( + + ) : isImage ? ( + +
+ Image +
+
+ ) : ( + +
+ Image +
+
+ )} +
+
+
+ + {/* + + { + router.back(), setIsLoading(true); + }} + variant="transparent" + > + {isLoading ? ( + + ) : ( + + )} + + } + /> + } + /> + + + {isImage === null ? ( + + ) : isImage ? ( + +
+ Image +
+
+ ) : ( + +
+ Image +
+
+ )} +
+
+
*/} + + ); +} diff --git a/src/app_modules/_global/ui/ui_not_user_image_preview.tsx b/src/app_modules/_global/ui/ui_not_user_image_preview.tsx index 134c594f..6fad617c 100644 --- a/src/app_modules/_global/ui/ui_not_user_image_preview.tsx +++ b/src/app_modules/_global/ui/ui_not_user_image_preview.tsx @@ -1,7 +1,7 @@ "use client"; -import { APIs } from "@/app/lib"; -import { pathAssetImage } from "@/app/lib/path_asset_image"; +import { APIs } from "@/lib"; +import { pathAssetImage } from "@/lib/path_asset_image"; import { ActionIcon, Box, @@ -23,7 +23,7 @@ export function UIGlobal_NotUserImagePreview({ fileId }: { fileId: string }) { const router = useRouter(); const [isImage, setIsImage] = useState(null); - const url = APIs.GET({ fileId: fileId }); + const url = APIs.GET({ fileId: fileId, size: "500" }); useShallowEffect(() => { onLoadImage(); diff --git a/src/app_modules/_global/ui/ui_splash.tsx b/src/app_modules/_global/ui/ui_splash.tsx index 0dc8657b..2a4d570b 100644 --- a/src/app_modules/_global/ui/ui_splash.tsx +++ b/src/app_modules/_global/ui/ui_splash.tsx @@ -2,16 +2,17 @@ import { Loader, Stack, ThemeIcon } from "@mantine/core"; import UIGlobal_LayoutDefault from "./ui_layout_default"; +import { MainColor } from "../color"; export default function UIGlobal_SplashScreen({ icon }: { icon: any }) { return ( <> - + {icon} - + diff --git a/src/app_modules/admin/_admin_global/_component/button/detail_button.tsx b/src/app_modules/admin/_admin_global/_component/button/detail_button.tsx new file mode 100644 index 00000000..2a6ebda6 --- /dev/null +++ b/src/app_modules/admin/_admin_global/_component/button/detail_button.tsx @@ -0,0 +1,28 @@ +import { Button } from "@mantine/core"; +import { IconEye } from "@tabler/icons-react"; +import { useRouter } from "next/navigation"; +import { useState } from "react"; + +export default function Admin_DetailButton({ path }: { path: string }) { + const router = useRouter(); + const [isLoading, setLoading] = useState(false); + + return ( + <> + + + ); +} diff --git a/src/app_modules/admin/_admin_global/_component/comp_admin_boxstyle.tsx b/src/app_modules/admin/_admin_global/_component/comp_admin_boxstyle.tsx new file mode 100644 index 00000000..7324985a --- /dev/null +++ b/src/app_modules/admin/_admin_global/_component/comp_admin_boxstyle.tsx @@ -0,0 +1,26 @@ +import { AdminColor } from "@/app_modules/_global/color/color_pallet"; +import { Paper } from "@mantine/core"; + +export function Admin_ComponentBoxStyle({ + children, + style, +}: { + children: React.ReactNode; + style?: React.CSSProperties; +}) { + return ( + <> + + {children} + + + ); +} diff --git a/src/app_modules/admin/_admin_global/_component/comp_admin_load_image.tsx b/src/app_modules/admin/_admin_global/_component/comp_admin_load_image.tsx index 1e74a89e..497bde54 100644 --- a/src/app_modules/admin/_admin_global/_component/comp_admin_load_image.tsx +++ b/src/app_modules/admin/_admin_global/_component/comp_admin_load_image.tsx @@ -1,7 +1,7 @@ "use client"; -import { APIs, RouterAdminGlobal } from "@/app/lib"; -import { pathAssetImage } from "@/app/lib/path_asset_image"; +import { APIs, RouterAdminGlobal } from "@/lib"; +import { pathAssetImage } from "@/lib/path_asset_image"; import { Center, Image, Skeleton } from "@mantine/core"; import { useShallowEffect } from "@mantine/hooks"; import { useRouter } from "next/navigation"; @@ -15,7 +15,7 @@ export function Admin_ComponentLoadImageLandscape({ const router = useRouter(); const [isImage, setIsImage] = useState(null); const [isLoading, setLoading] = useState(false); - const url = APIs.GET({ fileId: fileId }); + const url = APIs.GET({ fileId: fileId, size: "500" }); useShallowEffect(() => { onLoadImage(); diff --git a/src/app_modules/admin/_admin_global/_component/comp_admin_modal.tsx b/src/app_modules/admin/_admin_global/_component/comp_admin_modal.tsx new file mode 100644 index 00000000..168e4d9c --- /dev/null +++ b/src/app_modules/admin/_admin_global/_component/comp_admin_modal.tsx @@ -0,0 +1,41 @@ +import { AdminColor } from "@/app_modules/_global/color/color_pallet"; +import { Modal } from "@mantine/core"; + +export function Admin_ComponentModal({ + children, + opened, + onClose, + title, + size, + withCloseButton, + closeOnClickOutside, +}: { + children: React.ReactNode; + opened: boolean; + onClose: () => void; + size?: "sm" | "md" | "lg" | "xl"; + title?: any; + withCloseButton?: boolean | undefined; + closeOnClickOutside?: boolean | undefined; +}) { + return ( + <> + + {children} + + + ); +} diff --git a/src/app_modules/admin/_admin_global/_component/comp_admin_modal_publish.tsx b/src/app_modules/admin/_admin_global/_component/comp_admin_modal_publish.tsx new file mode 100644 index 00000000..d962a119 --- /dev/null +++ b/src/app_modules/admin/_admin_global/_component/comp_admin_modal_publish.tsx @@ -0,0 +1,34 @@ +import { AdminColor } from '@/app_modules/_global/color/color_pallet'; +import { Group, Modal, Stack } from '@mantine/core'; +import React from 'react'; + +function Admin_ComponentModalPublish({ onClose, opened, title, buttonKiri, buttonKanan, }: { + onClose: () => void; + opened: any; + title: string; + buttonKiri: React.ReactNode; + buttonKanan: React.ReactNode; +}) { + return ( + <> + + + + {buttonKiri} + {buttonKanan} + + + + + ); +} + +export default Admin_ComponentModalPublish; diff --git a/src/app_modules/admin/_admin_global/_component/comp_admin_modal_report.tsx b/src/app_modules/admin/_admin_global/_component/comp_admin_modal_report.tsx index aed01faf..9abdc037 100644 --- a/src/app_modules/admin/_admin_global/_component/comp_admin_modal_report.tsx +++ b/src/app_modules/admin/_admin_global/_component/comp_admin_modal_report.tsx @@ -1,5 +1,6 @@ "use client"; +import { AdminColor } from "@/app_modules/_global/color/color_pallet"; import { Group, Modal, Stack, Textarea } from "@mantine/core"; import React from "react"; @@ -25,6 +26,8 @@ export function Admin_ComponentModalReport({ return ( <> Rp.{" "} diff --git a/src/app_modules/admin/_admin_global/_component/comp_button_user_on_navbar.tsx b/src/app_modules/admin/_admin_global/_component/comp_button_user_on_navbar.tsx index 787b63ce..0f8e5a2f 100644 --- a/src/app_modules/admin/_admin_global/_component/comp_button_user_on_navbar.tsx +++ b/src/app_modules/admin/_admin_global/_component/comp_button_user_on_navbar.tsx @@ -1,6 +1,6 @@ "use client"; -import { Warna } from "@/app/lib/warna"; +import { Warna } from "@/lib/warna"; import { AccentColor } from "@/app_modules/_global/color"; import { ComponentGlobal_NotifikasiBerhasil } from "@/app_modules/_global/notif_global"; import { MODEL_USER } from "@/app_modules/home/model/interface"; @@ -14,6 +14,7 @@ import { Menu, Modal, Popover, + SimpleGrid, Stack, Text, Title, @@ -21,6 +22,7 @@ import { import { IconPhone, IconUser, IconUserCircle } from "@tabler/icons-react"; import { useRouter } from "next/navigation"; import { useState } from "react"; +import { Admin_ComponentModal } from "./comp_admin_modal"; export function Admin_ComponentButtonUserCircle({ dataUser, @@ -35,7 +37,7 @@ export function Admin_ComponentButtonUserCircle({ async function onClickLogout() { setLoadingLogout(true); - const res = await fetch(`/api/auth/logout?id=${dataUser.id}`, { + const res = await fetch(`/api/auth/logout?id=${dataUser?.id}`, { method: "GET", }); @@ -67,7 +69,7 @@ export function Admin_ComponentButtonUserCircle({ - {dataUser.username} + {dataUser?.username} @@ -76,22 +78,32 @@ export function Admin_ComponentButtonUserCircle({ - +{dataUser.nomor} + +{dataUser?.nomor} -
- + -
+
- setOpenModal(false)} centered @@ -121,7 +133,38 @@ export function Admin_ComponentButtonUserCircle({ - + */} + + setOpenModal(false)} + title={"Anda yakin ingin keluar ?"} + withCloseButton={false} + closeOnClickOutside={false} + > + + + + + + + ); @@ -165,7 +208,7 @@ export function Admin_ComponentButtonUserCircle({ - {dataUser.username} + {dataUser?.username} @@ -175,7 +218,7 @@ export function Admin_ComponentButtonUserCircle({ - +{dataUser.nomor} + +{dataUser?.nomor} diff --git a/src/app_modules/admin/_admin_global/_component/skeleton/customSkeletonAdmin.tsx b/src/app_modules/admin/_admin_global/_component/skeleton/customSkeletonAdmin.tsx new file mode 100644 index 00000000..a1461a53 --- /dev/null +++ b/src/app_modules/admin/_admin_global/_component/skeleton/customSkeletonAdmin.tsx @@ -0,0 +1,34 @@ +import { Skeleton, SkeletonProps, createStyles } from '@mantine/core'; + +interface CustomSkeletonProps extends SkeletonProps { + isLoading?: boolean; + className?: string; +} + +const useStyles = createStyles((theme) => ({ + skeleton: { + '&::before': { + backgroundColor: "#1F5B9E", + }, + '&::after': { + backgroundColor: "#0F3055", + }, + }, +})); + +const CustomSkeletonAdmin: React.FC = ({ + isLoading = true, + className, + ...props +}) => { + const { classes, cx } = useStyles(); + return ( + + ); +}; + +export default CustomSkeletonAdmin; \ No newline at end of file diff --git a/src/app_modules/admin/_admin_global/_component/skeleton/main_dashboard_skeleton.tsx b/src/app_modules/admin/_admin_global/_component/skeleton/main_dashboard_skeleton.tsx new file mode 100644 index 00000000..47a7d59e --- /dev/null +++ b/src/app_modules/admin/_admin_global/_component/skeleton/main_dashboard_skeleton.tsx @@ -0,0 +1,53 @@ +import { MainColor, AccentColor } from '@/app_modules/_global/color'; +import { AdminColor } from '@/app_modules/_global/color/color_pallet'; +import { Flex, Grid, Paper, Stack, Text, ThemeIcon, Title } from '@mantine/core'; +import React from 'react'; +import CustomSkeletonAdmin from './customSkeletonAdmin'; +import ComponentAdminGlobal_HeaderTamplate from '../../header_tamplate'; +import { IconFileText, IconUsers } from '@tabler/icons-react'; + +function MainDashboardSkeleton() { + const listBox = [ + { + id: 1, + name: "User", + jumlah: "", + link: "", + icon: + }, + { + id: 2, + name: "Portofolio", + jumlah: "countPortofolio", + link: "", + icon: + }, + ]; + return ( + <> + + + + {listBox.map((e) => ( + + + + {e.name} + + + {e.icon} + + + + + ))} + + + {/* */} + + + + + ); +} +export default MainDashboardSkeleton; diff --git a/src/app_modules/admin/_admin_global/_component/title_page.tsx b/src/app_modules/admin/_admin_global/_component/title_page.tsx index adf4b7f1..49070859 100644 --- a/src/app_modules/admin/_admin_global/_component/title_page.tsx +++ b/src/app_modules/admin/_admin_global/_component/title_page.tsx @@ -1,5 +1,6 @@ "use client"; +import { AdminColor } from "@/app_modules/_global/color/color_pallet"; import { Group, Title, TextInput } from "@mantine/core"; import { IconSearch } from "@tabler/icons-react"; import React from "react"; @@ -9,7 +10,7 @@ export function ComponentAdminGlobal_TitlePage({ color, component, }: { - name: string; + name: React.ReactNode | string color?: string; component?: React.ReactNode; }) { @@ -17,11 +18,11 @@ export function ComponentAdminGlobal_TitlePage({ <> - {name} + {name} {component ? component : ""} diff --git a/src/app_modules/admin/_admin_global/_ui/ui_navbar_admin.tsx b/src/app_modules/admin/_admin_global/_ui/ui_navbar_admin.tsx index d71b65f8..9669cd7c 100644 --- a/src/app_modules/admin/_admin_global/_ui/ui_navbar_admin.tsx +++ b/src/app_modules/admin/_admin_global/_ui/ui_navbar_admin.tsx @@ -14,7 +14,7 @@ export default function Admin_UiNavbar({ setActiveId, setActiveChildId, }: { - userRoleId: string; + userRoleId: string | null; activeId: string; activeChildId: string; setActiveId: (val: any) => void; @@ -199,5 +199,5 @@ export default function Admin_UiNavbar({ )); - return userRoleId == "2" ? adminNavbar : developerNavbar; + return userRoleId == "3" ? developerNavbar : adminNavbar; } diff --git a/src/app_modules/admin/_admin_global/back_button.tsx b/src/app_modules/admin/_admin_global/back_button.tsx index 3012652a..28f0ed33 100644 --- a/src/app_modules/admin/_admin_global/back_button.tsx +++ b/src/app_modules/admin/_admin_global/back_button.tsx @@ -1,11 +1,12 @@ "use client"; +import { AccentColor, AdminColor } from "@/app_modules/_global/color/color_pallet"; import { Group, Button, Loader } from "@mantine/core"; import { IconChevronLeft } from "@tabler/icons-react"; import { useRouter } from "next/navigation"; import { useState } from "react"; -export default function AdminGlobal_ComponentBackButton({ +export default function Admin_ComponentBackButton({ path, }: { path?: string; @@ -17,7 +18,8 @@ export default function AdminGlobal_ComponentBackButton({ <> + + + + + + setOpenModalReplaceUser(false)} + withCloseButton={false} + closeOnClickOutside={false} + > + + + Anda yakin ingin pindah ke tampilan user ? + + + + + + + + + ); +} diff --git a/src/app_modules/admin/_components_v3/comp_detail_data.tsx b/src/app_modules/admin/_components_v3/comp_detail_data.tsx new file mode 100644 index 00000000..8de45ed3 --- /dev/null +++ b/src/app_modules/admin/_components_v3/comp_detail_data.tsx @@ -0,0 +1,29 @@ +import { MainColor } from "@/app_modules/_global/color"; +import { Grid, Paper, Text } from "@mantine/core"; + +export function Admin_V3_ComponentDetail({ + item, +}: { + item: Record; +}) { + return ( + <> + + + + {item.title || item.label} + + + + {item.value} + + + + + ); +} diff --git a/src/app_modules/admin/_components_v3/comp_pagination_breakpoint.tsx b/src/app_modules/admin/_components_v3/comp_pagination_breakpoint.tsx new file mode 100644 index 00000000..80723cb3 --- /dev/null +++ b/src/app_modules/admin/_components_v3/comp_pagination_breakpoint.tsx @@ -0,0 +1,35 @@ +import { Pagination } from "@mantine/core"; +import { useMediaQuery } from "@mantine/hooks"; + +export function Admin_V3_ComponentPaginationBreakpoint({ + value, + total, + onChange, +}: { + value: number; + total: number; + onChange: (val: number) => void; +}) { + // Dalam komponen Anda + const isMobile = useMediaQuery("(max-width: 480px)"); + const isTablet = useMediaQuery("(max-width: 768px)"); + + return ( + <> + { + onChange(val); + }} + position="center" + size={isMobile ? "xs" : isTablet ? "sm" : "md"} + radius={isMobile ? "xl" : "md"} + siblings={isMobile ? 0 : 1} + boundaries={isMobile ? 1 : 2} + withEdges + /> + + ); +} diff --git a/src/app_modules/admin/_components_v3/comp_simple_grid_breakpoint.tsx b/src/app_modules/admin/_components_v3/comp_simple_grid_breakpoint.tsx new file mode 100644 index 00000000..7d1883b0 --- /dev/null +++ b/src/app_modules/admin/_components_v3/comp_simple_grid_breakpoint.tsx @@ -0,0 +1,34 @@ +import { SimpleGrid } from "@mantine/core"; + +export function Admin_V3_ComponentBreakpoint({ + children, + cols, + sm, + md, + lg, + allCols, +}: { + children: React.ReactNode; + cols?: number; + sm?: number; + md?: number; + lg?: number; + allCols?: number; +}) { + return ( + <> + + {children} + + + ); +} diff --git a/src/app_modules/admin/_components_v3/comp_skeleton_breakpoint.tsx b/src/app_modules/admin/_components_v3/comp_skeleton_breakpoint.tsx new file mode 100644 index 00000000..1358f0e6 --- /dev/null +++ b/src/app_modules/admin/_components_v3/comp_skeleton_breakpoint.tsx @@ -0,0 +1,25 @@ +import CustomSkeleton from "@/app_modules/components/CustomSkeleton"; +import { SimpleGrid } from "@mantine/core"; + +export function Admin_V3_ComponentSkeletonBreakpoint({ + skeletonRequest, +}: { + skeletonRequest?: number; +}) { + return ( + <> + + {Array.from({ length: skeletonRequest || 1 }, (_, index) => ( + + ))} + + + ); +} diff --git a/src/app_modules/admin/_components_v3/main_layout.tsx b/src/app_modules/admin/_components_v3/main_layout.tsx new file mode 100644 index 00000000..19e1fb4c --- /dev/null +++ b/src/app_modules/admin/_components_v3/main_layout.tsx @@ -0,0 +1,247 @@ +"use client"; + +import { AccentColor, MainColor } from "@/app_modules/_global/color"; +import { apiGetUserById } from "@/app_modules/_global/lib/api_user"; +import { MODEL_USER } from "@/app_modules/home/model/interface"; +import { gs_admin_ntf } from "@/lib/global_state"; +import { + AppShell, + Burger, + Divider, + Drawer, + Group, + Header, + MediaQuery, + Navbar, + ScrollArea, + Stack, + Text +} from "@mantine/core"; +import { useDisclosure, useShallowEffect } from "@mantine/hooks"; +import { useAtom } from "jotai"; +import type React from "react"; +import { useState } from "react"; +import { Admin_UiNavbar } from "../_admin_global"; +import { + gs_admin_navbar_menu, + gs_admin_navbar_subMenu, +} from "../_admin_global/new_global_state"; +import { apiGetCountNotifikasiByUserId } from "../notifikasi/lib/api_fetch_notifikasi"; +import { Admin_V3_ComponentButtonUserCircle } from "./comp_button_user_circle"; +import { Admin_V3_ViewDrawerNotifikasi } from "./notifikasi/view_drawer_notifikasi"; +import { Admin_V3_SkeletonNavbar } from "./skeleton_navbar"; + +export function Admin_V3_MainLayout({ + children, + userLoginId, + countNotifikasi, + + version, +}: { + children: React.ReactNode; + userLoginId: string; + countNotifikasi: number; + version: string; +}) { + const [dataUser, setDataUser] = useState(null); + const userRoleId = dataUser?.masterUserRoleId; + const [activeId, setActiveId] = useAtom(gs_admin_navbar_menu); + const [activeChildId, setActiveChildId] = useAtom(gs_admin_navbar_subMenu); + + // Notifikasi + const [countNtf, setCountNtf] = useState(countNotifikasi); + const [newAdminNtf, setNewAdminNtf] = useAtom(gs_admin_ntf); + const [reloadNtf, setReloadNtf] = useState(false); + const [openPop, setOpenPop] = useState(false); + const [opened, handlers] = useDisclosure(false); + const [openedDrawer, handlersDrawer] = useDisclosure(false); + + useShallowEffect(() => { + handleLoadUser(); + }, []); + + async function handleLoadUser() { + try { + const response = await apiGetUserById({ id: userLoginId }); + if (response && response.success) { + setDataUser(response.data); + } else { + console.error("Failed to fetch user data", response); + setDataUser(null); + } + } catch (error) { + console.error("Error fetching user data", error); + setDataUser(null); + } + } + + useShallowEffect(() => { + setCountNtf((e) => e + newAdminNtf); + setNewAdminNtf(0); + }, [newAdminNtf, setNewAdminNtf]); + + useShallowEffect(() => { + handleLoadCountNotifikasi(); + }, [reloadNtf]); + + async function handleLoadCountNotifikasi() { + try { + const response = await apiGetCountNotifikasiByUserId({ id: userLoginId }); + if (response && response.success) { + setCountNtf(response.data); + setReloadNtf(false); + } else { + console.error("Failed to fetch count notifikasi", response); + setCountNtf(0); + setReloadNtf(false); + } + } catch (error) { + console.error("Error fetching count notifikasi", error); + setCountNtf(0); + setReloadNtf(false); + } + } + + return ( + <> + + + + + Notifikasi + + + } + opened={openedDrawer} + onClose={handlersDrawer.toggle} + position="right" + size={"sm"} + > + { + setActiveId(val.id as any); + setActiveChildId(val.childId); + }} + onToggleNavbar={(val: any) => { + val === false && handlersDrawer.close(); + }} + onLoadCountNotif={(val: boolean) => { + setReloadNtf(val); + }} + /> + {/* { + setActiveId(val.id as any); + setActiveChildId(val.childId); + }} + onToggleNavbar={(val: any) => { + setDrawerNotifikasi(val); + }} + onLoadCountNotif={(val: any) => { + setCountNtf(val); + }} + /> */} + + + ); +} diff --git a/src/app_modules/admin/_components_v3/notifikasi/comp_card_notifikasi.tsx b/src/app_modules/admin/_components_v3/notifikasi/comp_card_notifikasi.tsx new file mode 100644 index 00000000..01856bbf --- /dev/null +++ b/src/app_modules/admin/_components_v3/notifikasi/comp_card_notifikasi.tsx @@ -0,0 +1,343 @@ +import { AccentColor } from "@/app_modules/_global/color"; +import { ComponentGlobal_CardLoadingOverlay } from "@/app_modules/_global/component"; +import { MODEL_NOTIFIKASI } from "@/app_modules/notifikasi/model/interface"; +import { + gs_adminDonasi_triggerReview, + gs_adminEvent_triggerReview, + gs_adminJob_triggerReview, + gs_adminVoting_triggerReview, + ITypeStatusNotifikasi, +} from "@/lib/global_state"; +import { clientLogger } from "@/util/clientLogger"; +import { Badge, Card, Divider, Group, Stack, Text } from "@mantine/core"; +import { IconCheck, IconChecks, IconSpeakerphone } from "@tabler/icons-react"; +import { useAtom } from "jotai"; +import moment from "moment"; +import "moment/locale/id"; +import { useRouter } from "next/navigation"; +import { useState } from "react"; +import { ComponentAdminGlobal_NotifikasiPeringatan } from "../../_admin_global/admin_notifikasi/notifikasi_peringatan"; +import adminNotifikasi_findRouterDonasi from "../../notifikasi/route_setting/donasi"; +import { adminNotifikasi_findRouterEvent } from "../../notifikasi/route_setting/event"; +import adminNotifikasi_findRouterForum from "../../notifikasi/route_setting/forum"; +import adminNotifikasi_findRouterInvestasi from "../../notifikasi/route_setting/investasi"; +import { adminNotifikasi_findRouterJob } from "../../notifikasi/route_setting/job"; +import { + IAdmin_ActiveChildId, + IAdmin_ActivePage, +} from "../../notifikasi/route_setting/type_of_select_page"; +import { adminNotifikasi_findRouterVoting } from "../../notifikasi/route_setting/voting"; + +export default function Admin_V3_ComponentCardNotifikasi({ + data, + activePage, + onChangeNavbar, + onToggleNavbar, + onLoadCountNotif, + // onLoadDataNotifikasi, +}: { + data: MODEL_NOTIFIKASI; + activePage: number; + onChangeNavbar: (val: { + id: IAdmin_ActivePage; + childId: IAdmin_ActiveChildId; + }) => void; + onToggleNavbar: (val: any) => void; + onLoadCountNotif: (val: boolean) => void; + // onLoadDataNotifikasi: (val: any) => void; +}) { + const router = useRouter(); + const [visible, setVisible] = useState(false); + const [dataId, setDataId] = useState(""); + + // Realtime + const [isAdminJob_TriggerReview, setIsAdminJob_TriggerReview] = useAtom( + gs_adminJob_triggerReview + ); + const [isAdminEvent_TriggerReview, setIsAdminEvent_TriggerReview] = useAtom( + gs_adminEvent_triggerReview + ); + const [isAdminVoting_TriggerReview, setIsAdminVoting_TriggerReview] = useAtom( + gs_adminVoting_triggerReview + ); + const [isAdminDonasi_TriggerReview, setIsAdminDonasi_TriggerReview] = useAtom( + gs_adminDonasi_triggerReview + ); + + async function onRead() { + // ========================== JOB ========================== // + try { + setVisible(true); + + if (data?.kategoriApp === "JOB") { + setDataId(data.id); + + const checkJob = await adminNotifikasi_findRouterJob({ + appId: data.appId, + notifikasiId: data.id, + router: router, + onChangeNavbar(val) { + onChangeNavbar({ + id: val.id, + childId: val.childId, + }); + }, + }); + + if (checkJob) { + setIsAdminJob_TriggerReview(false); + setVisible(false); + setDataId(""); + onToggleNavbar(false); + onLoadCountNotif(true); + } + + return; + } + // ========================== JOB ========================== // + + // ========================== FORUM ==============================// + + if (data.kategoriApp === "FORUM") { + setDataId(data.id); + + const checkForum = await adminNotifikasi_findRouterForum({ + data: data, + router: router, + onChangeNavbar(val) { + onChangeNavbar(val); + }, + }); + + if (checkForum !== "") { + router.push(checkForum); + setDataId(""); + setVisible(false); + onToggleNavbar(false); + onLoadCountNotif(true); + } else { + ComponentAdminGlobal_NotifikasiPeringatan("Gagal memuat forum"); + } + } + // ========================== FORUM ==============================// + + // ========================== EVENT ========================== // + + if (data.kategoriApp == "EVENT") { + setDataId(data.id); + + const checkEvent = await adminNotifikasi_findRouterEvent({ + appId: data.appId, + notifikasiId: data.id, + router: router, + onChangeNavbar(val) { + onChangeNavbar({ + id: val.id, + childId: val.childId, + }); + }, + }); + + if (checkEvent) { + setIsAdminEvent_TriggerReview(false); + setVisible(false); + setDataId(""); + onToggleNavbar(false); + onLoadCountNotif(true); + } + + return; + } + // ========================== EVENT ========================== // + + // ========================== VOTING ========================== // + + if (data.kategoriApp == "VOTING") { + setDataId(data.id); + + const checkVoting = await adminNotifikasi_findRouterVoting({ + router: router, + appId: data.appId, + notifikasiId: data.id, + onChangeNavbar(val) { + onChangeNavbar({ + id: val.id, + childId: val.childId, + }); + }, + }); + + if (checkVoting) { + setIsAdminVoting_TriggerReview(false); + setVisible(false); + setDataId(""); + onToggleNavbar(false); + onLoadCountNotif(true); + } + + return; + } + // ========================== VOTING ========================== // + + // ========================== DONASI ========================== // + + if (data.kategoriApp == "DONASI") { + setDataId(data.id); + + const checkDonasi = await adminNotifikasi_findRouterDonasi({ + appId: data.appId, + notifikasiId: data.id, + router: router, + status: data.status as ITypeStatusNotifikasi, + onChangeNavbar(val) { + onChangeNavbar({ + id: val.id, + childId: val.childId, + }); + }, + }); + + if (checkDonasi) { + setIsAdminDonasi_TriggerReview(false); + setVisible(false); + setDataId(""); + onToggleNavbar(false); + onLoadCountNotif(true); + } + + return; + } + + // ========================== DONASI ========================== // + + // ========================== INVESTASI ========================== // + + if (data.kategoriApp == "INVESTASI") { + setDataId(data.id); + + const checkInvestasi = await adminNotifikasi_findRouterInvestasi({ + appId: data.appId, + notifikasiId: data.id, + status: data.status as ITypeStatusNotifikasi, + router: router, + onChangeNavbar(val) { + onChangeNavbar({ + id: val.id, + childId: val.childId, + }); + }, + }); + + if (checkInvestasi) { + setIsAdminDonasi_TriggerReview(false); + setVisible(false); + setDataId(""); + onToggleNavbar(false); + onLoadCountNotif(true); + } + + return; + } + + // ========================== INVESTASI ========================== // + } catch (error) { + clientLogger.error("Error notifikasi function", error); + } finally { + setVisible(false); + } + } + + return ( + <> + { + onRead(); + }} + > + + + + + + + {data.kategoriApp} + + + {data.status ? ( + + {data.status} + + ) : ( + "" + )} + + + + + + + + {data.title} + + {/* + {data.pesan} + */} + + + + + + {moment(data.createdAt).format("LLL")} + + {/* + {new Intl.DateTimeFormat("id-ID", { + dateStyle: "long", + }).format(data.createdAt)} + + + {", "} + {new Intl.DateTimeFormat("id-ID", { + timeStyle: "short", + }).format(data.createdAt)} + + */} + {data.isRead ? ( + + + Sudah dilihat + + ) : ( + + + Belum dilihat + + )} + + {visible && dataId === data.id && ( + + )} + + + + ); +} diff --git a/src/app_modules/admin/_components_v3/notifikasi/view_drawer_notifikasi.tsx b/src/app_modules/admin/_components_v3/notifikasi/view_drawer_notifikasi.tsx new file mode 100644 index 00000000..10d27689 --- /dev/null +++ b/src/app_modules/admin/_components_v3/notifikasi/view_drawer_notifikasi.tsx @@ -0,0 +1,222 @@ +import { + MainColor +} from "@/app_modules/_global/color/color_pallet"; +import CustomSkeleton from "@/app_modules/components/CustomSkeleton"; +import { MODEL_NOTIFIKASI } from "@/app_modules/notifikasi/model/interface"; +import { + Button, + Center, + Divider, + Group, + Loader, + Stack, + Text +} from "@mantine/core"; +import { useShallowEffect } from "@mantine/hooks"; +import _ from "lodash"; +import { ScrollOnly } from "next-scroll-loader"; +import { useState } from "react"; +import { + apiGetNotifikasiByUserId, + apiPostIsReadNotifikasi, +} from "../../notifikasi/lib/api_fetch_notifikasi"; +import { + IAdmin_ActiveChildId, + IAdmin_ActivePage, +} from "../../notifikasi/route_setting/type_of_select_page"; +import Admin_V3_ComponentCardNotifikasi from "./comp_card_notifikasi"; + +export function Admin_V3_ViewDrawerNotifikasi({ + userLoginId, + openedDrawer, + onChangeNavbar, + onToggleNavbar, + onLoadCountNotif, +}: { + userLoginId: string; + openedDrawer: boolean; + onChangeNavbar: (val: { + id: IAdmin_ActivePage; + childId: IAdmin_ActiveChildId; + }) => void; + onToggleNavbar: (val: any) => void; + onLoadCountNotif: (val: boolean) => void; +}) { + // newAdminNtf, + // listNotifikasi, + // onChangeNavbar, + + // }: { + // newAdminNtf: number; + // listNotifikasi: MODEL_NOTIFIKASI[]; + // onChangeNavbar: (val: { + // id: IAdmin_ActivePage; + // childId: IAdmin_ActiveChildId; + // }) => void; + + const [data, setData] = useState(null); + const [activePage, setActivePage] = useState(1); + + // Action Button + const [isRead, setIsRead] = useState(false); + const [isUnRead, setIsUnRead] = useState(false); + + useShallowEffect(() => { + if (openedDrawer || isRead || isUnRead) { + handleLoadtData(); + } + }, [openedDrawer, isRead, isUnRead]); + + async function handleLoadtData() { + try { + const response = await apiGetNotifikasiByUserId({ + id: userLoginId, + page: `${activePage}`, + }); + if (response && response.success) { + setData(response.data); + setIsRead(false); + setIsUnRead(false); + } else { + console.error("Failed to fetch user data", response); + setData(null); + } + } catch (error) { + console.error("Error fetching data:", error); + setData(null); + } + } + + async function handleMoreData() { + try { + const nextPage = activePage + 1; + const response = await apiGetNotifikasiByUserId({ + id: userLoginId, + page: `${nextPage}`, + }); + if (response && response.success) { + setActivePage(nextPage); + return response.data; + } else { + console.error("Failed to fetch user data", response); + return null; + } + } catch (error) { + console.error("Error fetching data:", error); + return null; + } + } + + async function handleUpdateReadAll() { + try { + const response = await apiPostIsReadNotifikasi({ + id: userLoginId, + isRead: true, + }); + if (response && response.success) { + console.log("Berhasil tandai baca semua"); + setIsRead(true); + } else { + console.error("Failed to update notification", response); + return null; + } + } catch (error) { + console.error("Error updating notification:", error); + return null; + } + } + + async function handleUpdateUnRead() { + try { + const response = await apiPostIsReadNotifikasi({ + id: userLoginId, + isRead: false, + }); + if (response && response.success) { + console.log("Berhasil tandai belum baca"); + setIsUnRead(true); + } else { + console.error("Failed to update notification", response); + return null; + } + } catch (error) { + console.error("Error updating notification:", error); + return null; + } + } + + if (!data) { + return ( + <> + + {Array.from({ length: 3 }, (_, i) => ( + + ))} + + + ); + } + + return ( + <> + + + + {/* */} + + + + {_.isEmpty(data) ? ( +
+ + Tidak ada notifikasi + +
+ ) : ( + ( +
+ +
+ )} + data={data} + setData={setData as any} + moreData={handleMoreData} + > + {(item) => ( + onChangeNavbar(val)} + onToggleNavbar={(val) => onToggleNavbar(val)} + onLoadCountNotif={(val) => { + onLoadCountNotif(val) + }} + // onLoadDataNotifikasi={(val) => setData(val)} + /> + )} +
+ )} +
+ + ); +} diff --git a/src/app_modules/admin/_components_v3/skeleton_navbar.tsx b/src/app_modules/admin/_components_v3/skeleton_navbar.tsx new file mode 100644 index 00000000..e229cc86 --- /dev/null +++ b/src/app_modules/admin/_components_v3/skeleton_navbar.tsx @@ -0,0 +1,32 @@ +import { Box, NavLink, Text } from "@mantine/core"; +import _ from "lodash"; +import { newListAdminPage } from "../new_list_page"; + +export function Admin_V3_SkeletonNavbar() { + const listPage = newListAdminPage.slice(0, -1); + return ( + <> + {listPage.map((parent) => ( + + {parent.name}} + icon={parent.icon} + > + {!_.isEmpty(parent.child) && + parent.child.map((child) => )} + + + ))} + + ); +} diff --git a/src/app_modules/admin/app_info/component/info_bank/comp_title_page.tsx b/src/app_modules/admin/app_info/component/info_bank/comp_title_page.tsx index 01dfefc1..08dcb35e 100644 --- a/src/app_modules/admin/app_info/component/info_bank/comp_title_page.tsx +++ b/src/app_modules/admin/app_info/component/info_bank/comp_title_page.tsx @@ -11,21 +11,21 @@ export function AdminAppInformation_ComponentTitlePageBank({ <> } - radius={"xl"} - onClick={() => { - onEventListener({ - isCreate: true, - isUpdate: false, - }); - }} - > - Tambah - - } + // component={ + // + // } /> ); diff --git a/src/app_modules/admin/app_info/fun/create/fun_create_bidang_bisnis.ts b/src/app_modules/admin/app_info/fun/create/fun_create_bidang_bisnis.ts index 1fb0add0..9576b9fe 100644 --- a/src/app_modules/admin/app_info/fun/create/fun_create_bidang_bisnis.ts +++ b/src/app_modules/admin/app_info/fun/create/fun_create_bidang_bisnis.ts @@ -1,7 +1,7 @@ "use server"; -import prisma from "@/app/lib/prisma"; -import { RouterAdminAppInformation } from "@/app/lib/router_admin/router_app_information"; +import prisma from "@/lib/prisma"; +import { RouterAdminAppInformation } from "@/lib/router_admin/router_app_information"; import { revalidatePath } from "next/cache"; export async function adminAppInformation_funCreateBidangBisnis({ diff --git a/src/app_modules/admin/app_info/fun/create/fun_create_new_bank.ts b/src/app_modules/admin/app_info/fun/create/fun_create_new_bank.ts index ff3c9372..1e82f5b1 100644 --- a/src/app_modules/admin/app_info/fun/create/fun_create_new_bank.ts +++ b/src/app_modules/admin/app_info/fun/create/fun_create_new_bank.ts @@ -1,6 +1,6 @@ "use server"; -import prisma from "@/app/lib/prisma"; +import prisma from "@/lib/prisma"; import { MODEL_MASTER_BANK } from "@/app_modules/investasi/_lib/interface"; export default async function adminAppInformation_createBank({ diff --git a/src/app_modules/admin/app_info/fun/get/get_one_bank_by_id.ts b/src/app_modules/admin/app_info/fun/get/get_one_bank_by_id.ts index 896df1e1..40973e9d 100644 --- a/src/app_modules/admin/app_info/fun/get/get_one_bank_by_id.ts +++ b/src/app_modules/admin/app_info/fun/get/get_one_bank_by_id.ts @@ -1,6 +1,6 @@ "use server"; -import prisma from "@/app/lib/prisma"; +import prisma from "@/lib/prisma"; export default async function adminAppInformation_getOneBankById({ id, diff --git a/src/app_modules/admin/app_info/fun/master/fun_get_master_bidang_bisnis.ts b/src/app_modules/admin/app_info/fun/master/fun_get_master_bidang_bisnis.ts index 975c53df..5505b3e4 100644 --- a/src/app_modules/admin/app_info/fun/master/fun_get_master_bidang_bisnis.ts +++ b/src/app_modules/admin/app_info/fun/master/fun_get_master_bidang_bisnis.ts @@ -1,6 +1,6 @@ "use server"; -import prisma from "@/app/lib/prisma"; +import prisma from "@/lib/prisma"; export async function adminAppInformation_funGetBidangBisnis() { const data = await prisma.masterBidangBisnis.findMany({ diff --git a/src/app_modules/admin/app_info/fun/master/get_list_bank.ts b/src/app_modules/admin/app_info/fun/master/get_list_bank.ts index 4b378608..8250f070 100644 --- a/src/app_modules/admin/app_info/fun/master/get_list_bank.ts +++ b/src/app_modules/admin/app_info/fun/master/get_list_bank.ts @@ -1,6 +1,6 @@ "use server"; -import prisma from "@/app/lib/prisma"; +import prisma from "@/lib/prisma"; export default async function adminAppInformation_getMasterBank() { const data = await prisma.masterBank.findMany({ diff --git a/src/app_modules/admin/app_info/fun/master/get_nomor_admin.ts b/src/app_modules/admin/app_info/fun/master/get_nomor_admin.ts index 897be7dc..d9f8b756 100644 --- a/src/app_modules/admin/app_info/fun/master/get_nomor_admin.ts +++ b/src/app_modules/admin/app_info/fun/master/get_nomor_admin.ts @@ -1,6 +1,6 @@ "use server"; -import prisma from "@/app/lib/prisma"; +import prisma from "@/lib/prisma"; export default async function adminAppInformation_getNomorAdmin() { const data = await prisma.nomorAdmin.findFirst({ diff --git a/src/app_modules/admin/app_info/fun/update/fun_udpate_status_bank.ts b/src/app_modules/admin/app_info/fun/update/fun_udpate_status_bank.ts index 20708e11..8ae6017b 100644 --- a/src/app_modules/admin/app_info/fun/update/fun_udpate_status_bank.ts +++ b/src/app_modules/admin/app_info/fun/update/fun_udpate_status_bank.ts @@ -1,6 +1,6 @@ "use server"; -import prisma from "@/app/lib/prisma"; +import prisma from "@/lib/prisma"; import { MODEL_MASTER_BANK } from "@/app_modules/investasi/_lib/interface"; export default async function adminAppInformation_updateStatusBankById({ diff --git a/src/app_modules/admin/app_info/fun/update/fun_update_bidang_bisnis.ts b/src/app_modules/admin/app_info/fun/update/fun_update_bidang_bisnis.ts index ab6a4e4d..c343925b 100644 --- a/src/app_modules/admin/app_info/fun/update/fun_update_bidang_bisnis.ts +++ b/src/app_modules/admin/app_info/fun/update/fun_update_bidang_bisnis.ts @@ -1,7 +1,7 @@ "use server"; -import prisma from "@/app/lib/prisma"; -import { RouterAdminAppInformation } from "@/app/lib/router_admin/router_app_information"; +import prisma from "@/lib/prisma"; +import { RouterAdminAppInformation } from "@/lib/router_admin/router_app_information"; import { revalidatePath } from "next/cache"; export async function adminAppInformation_funUpdateBidangBisnis({ diff --git a/src/app_modules/admin/app_info/fun/update/fun_update_data_bank.ts b/src/app_modules/admin/app_info/fun/update/fun_update_data_bank.ts index 6cdd2091..9021a0ab 100644 --- a/src/app_modules/admin/app_info/fun/update/fun_update_data_bank.ts +++ b/src/app_modules/admin/app_info/fun/update/fun_update_data_bank.ts @@ -1,6 +1,6 @@ "use server"; -import prisma from "@/app/lib/prisma"; +import prisma from "@/lib/prisma"; import { MODEL_MASTER_BANK } from "@/app_modules/investasi/_lib/interface"; export default async function adminAppInformation_updateDataBankById({ diff --git a/src/app_modules/admin/app_info/fun/update/fun_update_nomor.ts b/src/app_modules/admin/app_info/fun/update/fun_update_nomor.ts index 5d9d336f..8d4334aa 100644 --- a/src/app_modules/admin/app_info/fun/update/fun_update_nomor.ts +++ b/src/app_modules/admin/app_info/fun/update/fun_update_nomor.ts @@ -1,21 +1,29 @@ "use server"; -import prisma from "@/app/lib/prisma"; +import prisma from "@/lib/prisma"; export default async function adminAppInformation_funUpdateNomorAdmin({ data, }: { data: any; }) { - const updt = await prisma.nomorAdmin.update({ - where: { - id: data.id, - }, - data: { - nomor: data.nomor, - }, - }); + try { + const updt = await prisma.nomorAdmin.update({ + where: { + id: data.id, + }, + data: { + nomor: data.nomor, + }, + }); - if (!updt) return { status: 400, message: "Gagal update" }; - return { status: 200, message: "Berhasil update" }; + if (!updt) return { status: 400, message: "Gagal update" }; + return { status: 200, message: "Berhasil update" }; + } catch (error) { + return { + status: 500, + message: "Error update", + error: (error as Error).message, + }; + } } diff --git a/src/app_modules/admin/app_info/lib/api_fetch_master.ts b/src/app_modules/admin/app_info/lib/api_fetch_master.ts new file mode 100644 index 00000000..a82dbb7c --- /dev/null +++ b/src/app_modules/admin/app_info/lib/api_fetch_master.ts @@ -0,0 +1,71 @@ +export { + apiGetMasterAdminBank, + apiGetMasterAdminBidangBisnis, +}; + +const apiGetMasterAdminBank = async () => { + try { + // Fetch token from cookie + const { token } = await fetch("/api/get-cookie").then((res) => res.json()); + if (!token) { + console.error("No token found"); + return null; + } + + const response = await fetch(`/api/admin/master/bank`, { + method: "GET", + headers: { + "Content-Type": "application/json", + Accept: "application/json", + Authorization: `Bearer ${token}`, + }, + }); + + // Check if the response is OK + if (!response.ok) { + const errorData = await response.json().catch(() => null); + console.error("Failed to get master admin bank", response.statusText, errorData); + throw new Error(errorData?.message || "Failed to get master admin bank"); + } + + // Return the JSON response + return await response.json(); + } catch (error) { + console.error("Error get master admin bank", error); + throw error; // Re-throw the error to handle it in the calling function + } +}; + +const apiGetMasterAdminBidangBisnis = async () => { + try { + // Fetch token from cookie + const { token } = await fetch("/api/get-cookie").then((res) => res.json()); + if (!token) { + console.error("No token found"); + return null; + } + + const response = await fetch(`/api/admin/master/bidang-bisnis`, { + method: "GET", + headers: { + "Content-Type": "application/json", + Accept: "application/json", + Authorization: `Bearer ${token}`, + }, + }); + + // Check if the response is OK + if (!response.ok) { + const errorData = await response.json().catch(() => null); + console.error("Failed to get master admin bidang bisnis", response.statusText, errorData); + throw new Error(errorData?.message || "Failed to get master admin bidang bisnis"); + } + + // Return the JSON response + return await response.json(); + } catch (error) { + console.error("Error get master admin bidang bisnis", error); + throw error; // Re-throw the error to handle it in the calling function + } +}; + \ No newline at end of file diff --git a/src/app_modules/admin/app_info/lib/api_fetch_stiker.tsx b/src/app_modules/admin/app_info/lib/api_fetch_stiker.tsx new file mode 100644 index 00000000..d0886b68 --- /dev/null +++ b/src/app_modules/admin/app_info/lib/api_fetch_stiker.tsx @@ -0,0 +1,201 @@ +export const apiAdminCreateSticker = async ({ data }: { data: any }) => { + try { + // Fetch token from cookie + const { token } = await fetch("/api/get-cookie").then((res) => res.json()); + if (!token) { + console.error("No token found"); + return null; + } + + const response = await fetch(`/api/admin/sticker`, { + method: "POST", + headers: { + "Content-Type": "application/json", + Accept: "application/json", + Authorization: `Bearer ${token}`, + }, + body: JSON.stringify(data), + }); + + // Check if the response is OK + if (!response.ok) { + const errorData = await response.json().catch(() => null); + console.error("Failed to create sticker", response.statusText, errorData); + throw new Error(errorData?.message || "Failed to create sticker"); + } + + // Return the JSON response + return await response.json(); + } catch (error) { + console.error("Error create sticker", error); + throw error; // Re-throw the error to handle it in the calling function + } +}; + +export const apiAdminGetSticker = async ({ page }: { page: number }) => { + try { + // Fetch token from cookie + const { token } = await fetch("/api/get-cookie").then((res) => res.json()); + if (!token) { + console.error("No token found"); + return null; + } + + const response = await fetch(`/api/admin/sticker?page=${page}`, { + method: "GET", + headers: { + "Content-Type": "application/json", + Accept: "application/json", + Authorization: `Bearer ${token}`, + }, + }); + + // Check if the response is OK + if (!response.ok) { + const errorData = await response.json().catch(() => null); + console.error("Failed to get sticker", response.statusText, errorData); + throw new Error(errorData?.message || "Failed to get sticker"); + } + + // Return the JSON response + return await response.json(); + } catch (error) { + console.error("Error get sticker", error); + throw error; // Re-throw the error to handle it in the calling function + } +}; + +export const apiAdminGetStickerById = async ({ id }: { id: string }) => { + try { + // Fetch token from cookie + const { token } = await fetch("/api/get-cookie").then((res) => res.json()); + if (!token) { + console.error("No token found"); + return null; + } + + const response = await fetch(`/api/admin/sticker/${id}`, { + method: "GET", + headers: { + "Content-Type": "application/json", + Accept: "application/json", + Authorization: `Bearer ${token}`, + }, + }); + + // Check if the response is OK + if (!response.ok) { + const errorData = await response.json().catch(() => null); + console.error("Failed to get sticker", response.statusText, errorData); + throw new Error(errorData?.message || "Failed to get sticker"); + } + + // Return the JSON response + return await response.json(); + } catch (error) { + console.error("Error get sticker", error); + throw error; // Re-throw the error to handle it in the calling function + } +}; + + +export const apiAdminUpdateSticker = async ({ data }: { data: any }) => { + try { + // Fetch token from cookie + const { token } = await fetch("/api/get-cookie").then((res) => res.json()); + if (!token) { + console.error("No token found"); + return null; + } + + const response = await fetch(`/api/admin/sticker/${data.id}`, { + method: "PUT", + headers: { + "Content-Type": "application/json", + Accept: "application/json", + Authorization: `Bearer ${token}`, + }, + body: JSON.stringify(data), + }); + + // Check if the response is OK + if (!response.ok) { + const errorData = await response.json().catch(() => null); + console.error("Failed to update sticker", response.statusText, errorData); + throw new Error(errorData?.message || "Failed to update sticker"); + } + + // Return the JSON response + return await response.json(); + } catch (error) { + console.error("Error update sticker", error); + throw error; // Re-throw the error to handle it in the calling function + } +}; + +export const apiAdminDeleteSticker = async ({ id }: { id: string }) => { + try { + // Fetch token from cookie + const { token } = await fetch("/api/get-cookie").then((res) => res.json()); + if (!token) { + console.error("No token found"); + return null; + } + + const response = await fetch(`/api/admin/sticker/${id}`, { + method: "DELETE", + headers: { + "Content-Type": "application/json", + Accept: "application/json", + Authorization: `Bearer ${token}`, + }, + }); + + // Check if the response is OK + if (!response.ok) { + const errorData = await response.json().catch(() => null); + console.error("Failed to delete sticker", response.statusText, errorData); + throw new Error(errorData?.message || "Failed to delete sticker"); + } + + // Return the JSON response + return await response.json(); + } catch (error) { + console.error("Error delete sticker", error); + throw error; // Re-throw the error to handle it in the calling function + } +}; + +export const apiAdminUpdateStatusStickerById = async ({ data }: { data: any }) => { + try { + // Fetch token from cookie + const { token } = await fetch("/api/get-cookie").then((res) => res.json()); + if (!token) { + console.error("No token found"); + return null; + } + + const response = await fetch(`/api/admin/sticker/${data.id}/activation`, { + method: "PUT", + headers: { + "Content-Type": "application/json", + Accept: "application/json", + Authorization: `Bearer ${token}`, + }, + body: JSON.stringify(data), + }); + + // Check if the response is OK + if (!response.ok) { + const errorData = await response.json().catch(() => null); + console.error("Failed to update status sticker", response.statusText, errorData); + throw new Error(errorData?.message || "Failed to update status sticker"); + } + + // Return the JSON response + return await response.json(); + } catch (error) { + console.error("Error update status sticker", error); + throw error; // Re-throw the error to handle it in the calling function + } +}; \ No newline at end of file diff --git a/src/app_modules/admin/app_info/lib/global_state.ts b/src/app_modules/admin/app_info/lib/global_state.ts index 26c4e460..d646f931 100644 --- a/src/app_modules/admin/app_info/lib/global_state.ts +++ b/src/app_modules/admin/app_info/lib/global_state.ts @@ -1,9 +1,7 @@ +import { atom } from "jotai"; import { atomWithStorage } from "jotai/utils"; /** * @param index | 0 - 3 | 1: Whatsapp, 2: Bank, 3: Bidang Bisnis */ -export const gs_app_information_menu = atomWithStorage( - "gs_app_information_menu", - "1" -); +export const gs_app_information_menu = atomWithStorage("gs_app_informations_menu","2"); diff --git a/src/app_modules/admin/app_info/ui/ui_layout_admin_app.tsx b/src/app_modules/admin/app_info/ui/ui_layout_admin_app.tsx new file mode 100644 index 00000000..2a268168 --- /dev/null +++ b/src/app_modules/admin/app_info/ui/ui_layout_admin_app.tsx @@ -0,0 +1,107 @@ +"use client"; + +import { AccentColor } from "@/app_modules/_global/color"; +import { MainColor } from "@/app_modules/_global/color/color_pallet"; +import { RouterAdminAppInformation } from "@/lib/router_admin/router_app_information"; +import { Button, Group, Stack } from "@mantine/core"; +import { usePathname, useRouter } from "next/navigation"; +import React, { useState } from "react"; +import ComponentAdminGlobal_HeaderTamplate from "../../_admin_global/header_tamplate"; +import { + IconBriefcase, + IconMoneybag, + IconMoodSmileFilled, + IconSticker, +} from "@tabler/icons-react"; +import { useShallowEffect } from "@mantine/hooks"; + +export default function AdminAppInformation_Layout({ + children, +}: { + children: React.ReactNode; +}) { + const pathname = usePathname(); + const router = useRouter(); + const [loadingPath, setLoadingPath] = useState(null); + + // Reset loading saat route berubah + useShallowEffect(() => { + setLoadingPath(null); + }, [pathname]); + + const listPage = [ + { + icon: , + name: "Informasi Bank", + path: RouterAdminAppInformation.infoBank, + }, + { + icon: , + name: "Bidang Bisnis", + path: RouterAdminAppInformation.bidangBisnis, + }, + { + icon: , + name: "Stiker", + path: RouterAdminAppInformation.sticker, + }, + ]; + + const isActive = (path: string) => { + if (path === "/" && pathname === "/") return true; + if (path !== "/" && pathname.startsWith(path)) return true; + return false; + }; + + const handleClick = async (path: string) => { + if (path === pathname) return; // kalau sudah di halaman itu, jangan reload + // setLoadingPath(path); + router.push(path); + }; + + return ( + + + +
+ + {listPage.map((e, i) => { + const active = isActive(e.path); + const loading = loadingPath === e.path; + + return ( + + ); + })} + +
+ + {children} +
+ ); +} diff --git a/src/app_modules/admin/app_info/ui/ui_main.tsx b/src/app_modules/admin/app_info/ui/ui_main.tsx index 03782b1a..0875fe35 100644 --- a/src/app_modules/admin/app_info/ui/ui_main.tsx +++ b/src/app_modules/admin/app_info/ui/ui_main.tsx @@ -1,30 +1,25 @@ "use client"; +import { + AccentColor, + AdminColor, +} from "@/app_modules/_global/color/color_pallet"; import { Button, Group, Stack } from "@mantine/core"; import { useAtom } from "jotai"; import ComponentAdminGlobal_HeaderTamplate from "../../_admin_global/header_tamplate"; import { gs_app_information_menu } from "../lib"; import { AdminAppInformation_ViewInfoBank, - AdminAppInformation_ViewInformasiWhatApps, AdminAppInformation_ViewKategoriPortofolio, } from "../view"; -export default function AdminAppInformation_UiMain({ - nomorAdmin, - listBank, - dataBidangBisnis, -}: { - nomorAdmin: any; - listBank: any[]; - dataBidangBisnis: any[]; -}) { +export default function AdminAppInformation_UiMain() { const [selectPage, setSelectPage] = useAtom(gs_app_information_menu); const listPage = [ - { - id: "1", - name: "Whatsapp", - }, + // { + // id: "1", + // name: "Whatsapp", + // }, { id: "2", name: "Informasi Bank", @@ -45,8 +40,8 @@ export default function AdminAppInformation_UiMain({ + + + + +
+ { + setOpenModal(true); + setUpdateStatus({ + id: e?.id, + active: val.currentTarget.checked as any, + }); + }} + /> +
+ + + + + {e?.name} + + + + )); + }; + + return ( + <> + + + + + +
+ {!data ? ( + + ) : ( + + + + + + + + + + + {rowTable()} +
+
Aksi
+
+
Status
+
+ Kategori +
+
+
+ )} +
+
+ + ); +} diff --git a/src/app_modules/admin/app_info/view/sticker/view_create_sticker.tsx b/src/app_modules/admin/app_info/view/sticker/view_create_sticker.tsx new file mode 100644 index 00000000..a61fb134 --- /dev/null +++ b/src/app_modules/admin/app_info/view/sticker/view_create_sticker.tsx @@ -0,0 +1,256 @@ +"use client"; + +import { + AspectRatio, + Box, + Button, + Center, + Chip, + Group, + Image, + Select, + Stack +} from "@mantine/core"; + +import { + MainColor +} from "@/app_modules/_global/color/color_pallet"; +import { + ComponentGlobal_BoxUploadImage, + ComponentGlobal_ButtonUploadFileImage +} from "@/app_modules/_global/component"; +import Component_V3_Label_TextInput from "@/app_modules/_global/component/new/comp_V3_label_text_input"; +import { funGlobal_UploadToStorage } from "@/app_modules/_global/fun"; +import { apiGetMasterEmotions } from "@/app_modules/_global/lib/api_fetch_master"; +import { + ComponentGlobal_NotifikasiBerhasil, + ComponentGlobal_NotifikasiGagal, + ComponentGlobal_NotifikasiPeringatan, +} from "@/app_modules/_global/notif_global"; +import { ComponentAdminGlobal_TitlePage } from "@/app_modules/admin/_admin_global/_component"; +import { Admin_ComponentBoxStyle } from "@/app_modules/admin/_admin_global/_component/comp_admin_boxstyle"; +import { ComponentAdminGlobal_NotifikasiPeringatan } from "@/app_modules/admin/_admin_global/admin_notifikasi/notifikasi_peringatan"; +import Admin_ComponentBackButton from "@/app_modules/admin/_admin_global/back_button"; +import { Admin_V3_ComponentBreakpoint } from "@/app_modules/admin/_components_v3/comp_simple_grid_breakpoint"; +import CustomSkeleton from "@/app_modules/components/CustomSkeleton"; +import { DIRECTORY_ID } from "@/lib"; +import { useShallowEffect } from "@mantine/hooks"; +import { IconCheck, IconPhoto } from "@tabler/icons-react"; +import { useRouter } from "next/navigation"; +import { useState } from "react"; +import { apiAdminCreateSticker } from "../../lib/api_fetch_stiker"; +import { baseStylesTextInput } from "@/app_modules/_global/lib/base_style_text_input"; +import { masterJenisKelamin } from "@/app_modules/_global/lib/master_jenis_kelamin"; + +export default function AdminAppInformation_ViewCreateSticker() { + const router = useRouter(); + const [file, setFile] = useState(null); + const [img, setImg] = useState(null); + const [valueEmotion, setValueEmotion] = useState(["senang"]); + const [gender, setGender] = useState(null); + + const [listEmotion, setListEmotion] = useState([]); + const [loading, setLoading] = useState(false); + + useShallowEffect(() => { + onLoadMasterEmotions(); + }, []); + + async function onLoadMasterEmotions() { + try { + const response = await apiGetMasterEmotions(); + + if (response.success) { + setListEmotion(response.data); + } + } catch (error) { + console.error("Error on load master emotions:", error); + } + } + + const validateData = () => { + if (!file) { + ComponentAdminGlobal_NotifikasiPeringatan("File tidak ada"); + return false; + } + + if (valueEmotion.length === 0) { + ComponentAdminGlobal_NotifikasiPeringatan("Pilih emosi"); + return false; + } + + if (!gender) { + ComponentAdminGlobal_NotifikasiPeringatan("Pilih jenis kelamin"); + return false; + } + + return true; + }; + + async function onUploadFile() { + try { + const response = await funGlobal_UploadToStorage({ + file: file as File, + dirId: DIRECTORY_ID.sticker, + }); + + if (!response.success) { + ComponentGlobal_NotifikasiPeringatan("Gagal upload gambar"); + return; + } + + return response.data.id; + } catch (error) { + console.error("Error on upload file", error); + } + } + + async function handleCreateSticker({ fileId }: { fileId: string }) { + try { + const response = await apiAdminCreateSticker({ + data: { + emotions: valueEmotion, + fileId: fileId, + gender: gender as string, + }, + }); + + if (response.success) { + ComponentGlobal_NotifikasiBerhasil("Berhasil disimpan"); + router.back(); + } else { + setLoading(false); + throw new Error("Failed to create sticker"); + } + } catch (error) { + setLoading(false); + ComponentGlobal_NotifikasiGagal("Gagal disimpan"); + console.error("Error create sticker", error); + } + } + + async function onSubmit() { + if (!validateData()) return; + + try { + setLoading(true); + const uploadFile = await onUploadFile(); + + if (!uploadFile) { + setLoading(false); + return; + } + + await handleCreateSticker({ fileId: uploadFile }); + } catch (error) { + console.error("Error on create sticker", error); + } + } + + return ( + <> + + + + + + {!listEmotion.length ? ( + + ) : ( + + + + + {img ? ( + + Foto + + ) : ( + + + + )} + + +
+ +
+
+ + + + setData({ + ...data, + jenisKelamin: val, + }) + } + data={masterJenisKelamin} + /> + + + + + + {listEmotion.map((e, i) => { + return ( + + {e.label} + + ); + })} + + + + + + + + + + +
+
+ )} +
+ + setOpenModalDelete(false)} + withCloseButton={false} + closeOnClickOutside={false} + size="md" + > + + + Apakah anda yakin ingin menghapus stiker ini? + + + + + + + +
+ + ); +} diff --git a/src/app_modules/admin/app_info/view/sticker/view_stiker.tsx b/src/app_modules/admin/app_info/view/sticker/view_stiker.tsx new file mode 100644 index 00000000..6d0dfe10 --- /dev/null +++ b/src/app_modules/admin/app_info/view/sticker/view_stiker.tsx @@ -0,0 +1,359 @@ +"use client"; + +import { + AdminColor, + MainColor, +} from "@/app_modules/_global/color/color_pallet"; +import { ISticker } from "@/app_modules/_global/lib/interface/stiker"; +import { ComponentAdminGlobal_TitlePage } from "@/app_modules/admin/_admin_global/_component"; +import { Admin_ComponentBoxStyle } from "@/app_modules/admin/_admin_global/_component/comp_admin_boxstyle"; +import { Admin_ComponentModal } from "@/app_modules/admin/_admin_global/_component/comp_admin_modal"; +import { ComponentAdminGlobal_NotifikasiBerhasil } from "@/app_modules/admin/_admin_global/admin_notifikasi/notifikasi_berhasil"; +import { ComponentAdminGlobal_NotifikasiGagal } from "@/app_modules/admin/_admin_global/admin_notifikasi/notifikasi_gagal"; +import { Admin_V3_ComponentPaginationBreakpoint } from "@/app_modules/admin/_components_v3/comp_pagination_breakpoint"; +import CustomSkeleton from "@/app_modules/components/CustomSkeleton"; +import { APIs, pathAssetImage } from "@/lib"; +import { RouterAdminAppInformation } from "@/lib/router_admin/router_app_information"; +import { + Badge, + Box, + Button, + Center, + Group, + Image, + Paper, + ScrollArea, + Spoiler, + Stack, + Switch, + Table, + Text +} from "@mantine/core"; +import { useShallowEffect } from "@mantine/hooks"; +import { IconPencil, IconPlus } from "@tabler/icons-react"; +import { AppRouterInstance } from "next/dist/shared/lib/app-router-context.shared-runtime"; +import { useRouter } from "next/navigation"; +import { useState } from "react"; +import { + apiAdminGetSticker, + apiAdminUpdateStatusStickerById, +} from "../../lib/api_fetch_stiker"; + +export default function AdminAppInformation_ViewSticker() { + const router = useRouter(); + const [loadingCreate, setLoadingCreate] = useState(false); + const [loadingDetail, setLoadingDetail] = useState(null); + const [dataSticker, setDataSticker] = useState(null); + const [dataUpdate, setDataUpdate] = useState({ + id: "", + isActive: false, + }); + const [loadingUpdate, setLoadingUpdate] = useState(false); + const [opened, setOpened] = useState(false); + const [nPage, setNPage] = useState(1); + const [activePage, setActivePage] = useState(1); + const [loadingImg, setLoadingImg] = useState(false); + + useShallowEffect(() => { + handleLoadData(); + }, [activePage]); + + const handleLoadData = async () => { + try { + const response = await apiAdminGetSticker({ page: activePage }); + if (response.success) { + setDataSticker(response.data.data); + setNPage(response.data.nPage || 1); + } else { + setDataSticker([]); + } + } catch (error) { + console.error("Error fetching data", error); + setDataSticker([]); + } + }; + + const onPageClick = (page: number) => { + setActivePage(page); + }; + + const handleUpdateActivation = async ({ + id, + value, + }: { + id: string; + value: boolean; + }) => { + const data = { + id: id, + isActive: value, + }; + + try { + setLoadingUpdate(true); + const updt = await apiAdminUpdateStatusStickerById({ + data: data as any, + }); + + if (updt.success) { + const cloneData = [...(dataSticker || [])]; + const index = cloneData.findIndex((e) => e.id === id); + if (index !== -1) { + cloneData[index].isActive = value; + setDataSticker([...cloneData]); + } + setOpened(false); + setLoadingUpdate(false); + ComponentAdminGlobal_NotifikasiBerhasil(updt.message); + } else { + setOpened(false); + setLoadingUpdate(false); + ComponentAdminGlobal_NotifikasiGagal(updt.message); + } + } catch (error) { + setLoadingUpdate(false); + console.log("Error update status sticker", error); + } + }; + + return ( + <> + + + {/* */} + + + } + /> + + {!dataSticker ? ( + + ) : ( + + + + + + + + + + + + + + + {rowTable({ + dataSticker, + router, + loadingDetail, + setLoadingDetail, + setOpened, + dataUpdate, + setDataUpdate, + setLoadingImg, + loadingImg, + })} + +
+
Aksi
+
+
Status
+
+
Stiker
+
+ Kategori +
+
+ +
+
+ )} +
+ + setOpened(false)} + closeOnClickOutside={false} + > + + + Apakah anda yakin ingin mengubah status stiker ini ? + + + + + + + + + ); +} + +type RowTableProps = { + dataSticker: ISticker[] | null; + router: AppRouterInstance; + loadingDetail: string | null; + setLoadingDetail: (val: string | null) => void; + setOpened: (val: boolean) => void; + dataUpdate: { + id: string; + isActive: boolean; + }; + setDataUpdate: (val: { id: string; isActive: boolean }) => void; + setLoadingImg: (val: boolean) => void; + loadingImg: boolean; +}; + +const rowTable = ({ + dataSticker, + router, + loadingDetail, + setLoadingDetail, + setOpened, + dataUpdate, + setDataUpdate, + setLoadingImg, + loadingImg, +}: RowTableProps) => { + if (!Array.isArray(dataSticker) || dataSticker.length === 0) { + return ( + + +
+ Tidak ada data +
+ + + ); + } + return dataSticker.map((e, i) => ( + + +
+ +
+ + +
+ { + setDataUpdate({ id: e.id, isActive: val.currentTarget.checked }); + setOpened(true); + }} + /> +
+ + +
+ {loadingImg && } + + Sticker setLoadingImg(false), + onError: () => setLoadingImg(false), + style: { display: loadingImg ? "none" : "block" }, + }} + /> + +
+ + + + + + {e.MasterEmotions.map((e) => ( + {e.value} + ))} + + + + + + )); +}; diff --git a/src/app_modules/admin/app_info/view/view_create_bidang.tsx b/src/app_modules/admin/app_info/view/view_create_bidang.tsx new file mode 100644 index 00000000..27f07c12 --- /dev/null +++ b/src/app_modules/admin/app_info/view/view_create_bidang.tsx @@ -0,0 +1,75 @@ +"use client"; + +import { AdminColor } from "@/app_modules/_global/color/color_pallet"; +import { Button, Center, Group, Stack, TextInput, Title } from "@mantine/core"; +import { ComponentAdminGlobal_TitlePage } from "../../_admin_global/_component"; +import { Admin_ComponentBoxStyle } from "../../_admin_global/_component/comp_admin_boxstyle"; +import Admin_ComponentBackButton from "../../_admin_global/back_button"; +import { Admin_V3_ComponentBreakpoint } from "../../_components_v3/comp_simple_grid_breakpoint"; + +export default function AdminAppInformation_ViewCreateBidangBisnis() { + return ( + <> + + + + + + {/* BIDANG */} + + + + Tambah Bidang Bisnis + + + { + // setNewData(val.currentTarget.value); + // }} + /> + + + + {/* SUB BIDANG */} + + + + Tambah Sub Bidang Bisnis + + + { + // setNewData(val.currentTarget.value); + // }} + /> + + + + + + + + + ); +} diff --git a/src/app_modules/admin/app_info/view/view_info_bank.tsx b/src/app_modules/admin/app_info/view/view_info_bank.tsx index 42ce3059..5397cd02 100644 --- a/src/app_modules/admin/app_info/view/view_info_bank.tsx +++ b/src/app_modules/admin/app_info/view/view_info_bank.tsx @@ -1,13 +1,16 @@ "use client"; +import { AccentColor } from "@/app_modules/_global/color"; +import { + AdminColor, + MainColor, +} from "@/app_modules/_global/color/color_pallet"; import { MODEL_MASTER_BANK } from "@/app_modules/investasi/_lib/interface"; import { - ActionIcon, + Box, Button, Center, - Grid, Group, - Modal, Paper, ScrollArea, Stack, @@ -16,28 +19,30 @@ import { Text, TextInput, Title, - Tooltip, } from "@mantine/core"; -import { IconCirclePlus, IconEdit } from "@tabler/icons-react"; +import { IconEdit } from "@tabler/icons-react"; import _ from "lodash"; import { useState } from "react"; +import { Admin_ComponentModal } from "../../_admin_global/_component/comp_admin_modal"; import { ComponentAdminGlobal_NotifikasiBerhasil } from "../../_admin_global/admin_notifikasi/notifikasi_berhasil"; import { ComponentAdminGlobal_NotifikasiGagal } from "../../_admin_global/admin_notifikasi/notifikasi_gagal"; +import { Admin_V3_ComponentBreakpoint } from "../../_components_v3/comp_simple_grid_breakpoint"; +import { AdminAppInformation_ComponentTitlePageBank } from "../component"; import adminAppInformation_createBank from "../fun/create/fun_create_new_bank"; import adminAppInformation_getMasterBank from "../fun/master/get_list_bank"; import adminAppInformation_updateStatusBankById from "../fun/update/fun_udpate_status_bank"; import adminAppInformation_updateDataBankById from "../fun/update/fun_update_data_bank"; -import { ComponentAdminGlobal_TitlePage } from "../../_admin_global/_component"; -import { AdminAppInformation_ComponentTitlePageBank } from "../component"; +import { useShallowEffect } from "@mantine/hooks"; -export default function AdminAppInformation_ViewInfoBank({ - listBank, -}: { - listBank: MODEL_MASTER_BANK[]; -}) { - const [data, setData] = useState(listBank); - const [isCreate, setIsCreate] = useState(false); +import CustomSkeleton from "@/app_modules/components/CustomSkeleton"; +import { apiGetMasterAdminBank } from "../lib/api_fetch_master"; + +export default function AdminAppInformation_ViewInfoBank() { + const [data, setData] = useState(null); + const [isCreate, setIsCreate] = useState(true); const [isLoadingCreate, setLoadingCreate] = useState(false); + const [isLoadingUpdate, setLoadingUpdate] = useState(false); + const [isLoadingActivation, setLoadingActivation] = useState(false); const [newData, setNewData] = useState({ namaBank: "", @@ -59,35 +64,70 @@ export default function AdminAppInformation_ViewInfoBank({ active: "", }); + useShallowEffect(() => { + handleLoadData(); + }, []); + + async function handleLoadData() { + try { + const response = await apiGetMasterAdminBank(); + + if (response && response.success) { + setData(response.data); + } else { + setData([]); + } + } catch (error) { + console.log("Error load data", error); + setData([]); + } + } + async function onCreate() { - const create = await adminAppInformation_createBank({ data: newData }); - if (create.status === 200) { - try { + try { + setLoadingCreate(true); + const create = await adminAppInformation_createBank({ data: newData }); + + if (create.status === 200) { + setNewData({ + namaBank: "", + namaAkun: "", + norek: "", + }); + const loadData = await adminAppInformation_getMasterBank(); setData(loadData); - } catch (error) { - console.log(error); - } finally { - setLoadingCreate(true); ComponentAdminGlobal_NotifikasiBerhasil(create.message); + } else { + ComponentAdminGlobal_NotifikasiGagal(create.message); } - } else { - ComponentAdminGlobal_NotifikasiGagal(create.message); + } catch (error) { + console.log(error); + } finally { + setLoadingCreate(false); } - setIsCreate(false); } async function onUpdate() { - const updt = await adminAppInformation_updateDataBankById({ - data: updateData as any, - }); - if (updt.status === 200) { - const loadData = await adminAppInformation_getMasterBank(); - setData(loadData); - ComponentAdminGlobal_NotifikasiBerhasil(updt.message); - setIsUpdate(false); - } else { - ComponentAdminGlobal_NotifikasiGagal(updt.message); + try { + setLoadingUpdate(true); + const updt = await adminAppInformation_updateDataBankById({ + data: updateData as any, + }); + if (updt.status === 200) { + const loadData = await adminAppInformation_getMasterBank(); + setData(loadData); + setIsUpdate(false); + setIsCreate(true); + + ComponentAdminGlobal_NotifikasiBerhasil(updt.message); + } else { + ComponentAdminGlobal_NotifikasiGagal(updt.message); + } + } catch (error) { + console.log("Error update data bank", error); + } finally { + setLoadingUpdate(false); } } @@ -103,36 +143,71 @@ export default function AdminAppInformation_ViewInfoBank({ isActive: value, }; - const updt = await adminAppInformation_updateStatusBankById({ - data: data as any, - }); + try { + setLoadingActivation(true); + const updt = await adminAppInformation_updateStatusBankById({ + data: data as any, + }); - if (updt.status === 200) { - const loadData = await adminAppInformation_getMasterBank(); - setData(loadData); - ComponentAdminGlobal_NotifikasiBerhasil(updt.message); - setIsActivation(false); - } else { - ComponentAdminGlobal_NotifikasiGagal(updt.message); + if (updt.status === 200) { + const loadData = await adminAppInformation_getMasterBank(); + setData(loadData); + ComponentAdminGlobal_NotifikasiBerhasil(updt.message); + setIsActivation(false); + } else { + ComponentAdminGlobal_NotifikasiGagal(updt.message); + } + } catch (error) { + console.log("Error update status bank", error); + } finally { + setLoadingActivation(false); } } - const rowTable = _.isEmpty(data) ? ( - -
- Tidak ada data -
- - ) : ( - data.map((e, i) => ( + const rowTable = () => { + if (!Array.isArray(data) || data.length === 0) { + return ( + + +
+ Tidak ada data +
+ + + ); + } + + return data.map((e, i) => ( -
- {e?.namaBank} -
+ + + {/* + + + + */} + -
+ -
- - -
- {e?.namaAkun} -
- - -
- {e?.norek} -
+ - - { - setIsUpdate(true); - setIsCreate(false); - setUpdateData({ - id: e?.id, - namaBank: e?.namaBank, - namaAkun: e?.namaAkun, - norek: e?.norek, - }); - }} - > - - - - - + + {e?.namaBank} + + + + + + {e?.namaAkun} + + + + + {e?.norek} + - )) - ); + )); + }; return ( <> - - { - setIsCreate(val.isCreate); - setIsUpdate(val.isUpdate); - }} - /> - + { + setIsCreate(val.isCreate); + setIsUpdate(val.isUpdate); + }} + /> - - - - - - - - - - - - - - - {rowTable} -
-
Bank
-
-
Status
-
-
Nama Rekening
-
-
Nomor Rekening
-
-
Aksi
-
-
-
-
- - - {isCreate ? ( - + +
+ {isCreate && ( +
- Tambah Daftar Bank + + Tambah Daftar Bank +
{ setNewData({ @@ -255,6 +284,12 @@ export default function AdminAppInformation_ViewInfoBank({ { setNewData({ @@ -266,6 +301,12 @@ export default function AdminAppInformation_ViewInfoBank({ { @@ -276,19 +317,20 @@ export default function AdminAppInformation_ViewInfoBank({ }} /> - + */}
+
+ + + {!data ? ( + + ) : ( + + + + + + + + + + + + + {rowTable()} +
+
Aksi
+
+ Status + + + Bank + + + Nama Rekening + + Nomor Rekening +
+
+
+ )} +
{/* Activasi bank */} - setIsActivation(false)} > - + <Title order={5} c={MainColor.white}> Anda ingin{" "} {updateStatus.active ? ( <Text span inherit> @@ -401,6 +492,8 @@ export default function AdminAppInformation_ViewInfoBank({ Batal </Button> <Button + loading={isLoadingActivation} + loaderPosition="center" color="green" radius={"xl"} onClick={() => { @@ -414,7 +507,7 @@ export default function AdminAppInformation_ViewInfoBank({ </Button> </Group> </Stack> - </Modal> + </Admin_ComponentModal> </Stack> </> ); diff --git a/src/app_modules/admin/app_info/view/view_info_whatsapp.tsx b/src/app_modules/admin/app_info/view/view_info_whatsapp.tsx index 50d1895f..2fc09824 100644 --- a/src/app_modules/admin/app_info/view/view_info_whatsapp.tsx +++ b/src/app_modules/admin/app_info/view/view_info_whatsapp.tsx @@ -1,51 +1,77 @@ " use client"; +import { + AccentColor, + AdminColor, +} from "@/app_modules/_global/color/color_pallet"; +import { apiGetAdminContact } from "@/app_modules/_global/lib/api_fetch_master"; +import CustomSkeleton from "@/app_modules/components/CustomSkeleton"; +import { clientLogger } from "@/util/clientLogger"; import { ActionIcon, Button, Collapse, + Grid, Group, Paper, + SimpleGrid, Stack, TextInput, Title, Tooltip, } from "@mantine/core"; +import { useDisclosure, useShallowEffect } from "@mantine/hooks"; import { IconEdit, IconPhone } from "@tabler/icons-react"; import { useState } from "react"; import { ComponentAdminGlobal_NotifikasiBerhasil } from "../../_admin_global/admin_notifikasi/notifikasi_berhasil"; import { ComponentAdminGlobal_NotifikasiGagal } from "../../_admin_global/admin_notifikasi/notifikasi_gagal"; -import adminAppInformation_getNomorAdmin from "../fun/master/get_nomor_admin"; import adminAppInformation_funUpdateNomorAdmin from "../fun/update/fun_update_nomor"; -import { useDisclosure } from "@mantine/hooks"; -import { MainColor } from "@/app_modules/_global/color/color_pallet"; +import { Admin_V3_ComponentBreakpoint } from "../../_components_v3/comp_simple_grid_breakpoint"; -export default function AdminAppInformation_ViewInformasiWhatApps({ - nomorAdmin, -}: { - nomorAdmin: any; -}) { - const [dataNomor, setDataNomor] = useState(nomorAdmin); +export default function AdminAppInformation_ViewInformasiWhatApps() { + const [dataNomor, setDataNomor] = useState<any | null>(null); const [updateNomor, setUpdateNomor] = useState(""); const [opened, { toggle }] = useDisclosure(false); - async function onUpdate() { - const newNumber = (dataNomor.nomor = updateNomor); - setDataNomor({ - ...dataNomor, - nomor: newNumber, - }); + useShallowEffect(() => { + handleLoadData(); + }, []); - const updt = await adminAppInformation_funUpdateNomorAdmin({ - data: dataNomor, - }); - if (updt.status === 200) { - const loadDdata = await adminAppInformation_getNomorAdmin(); - setDataNomor(loadDdata); - toggle(); - ComponentAdminGlobal_NotifikasiBerhasil(updt.message); - } else { - ComponentAdminGlobal_NotifikasiGagal(updt.message); + const handleLoadData = async () => { + try { + const response = await apiGetAdminContact(); + + if (response) { + setDataNomor(response.data); + } else { + setDataNomor(""); + } + } catch (error) { + clientLogger.error("Error get admin contact", error); + setDataNomor(""); + } + }; + + async function onUpdate() { + try { + const newNumber = (dataNomor.nomor = updateNomor); + setDataNomor({ + ...dataNomor, + nomor: newNumber, + }); + + const updt = await adminAppInformation_funUpdateNomorAdmin({ + data: dataNomor, + }); + if (updt.status === 200) { + handleLoadData(); + toggle(); + ComponentAdminGlobal_NotifikasiBerhasil(updt.message); + } else { + ComponentAdminGlobal_NotifikasiGagal(updt.message); + } + } catch (error) { + clientLogger.error("Error update nomor admin", error); } } @@ -55,82 +81,94 @@ export default function AdminAppInformation_ViewInformasiWhatApps({ <Stack spacing={"xs"}> <Group position="apart" - bg={"gray.4"} + bg={AdminColor.softBlue} p={"xs"} style={{ borderRadius: "6px" }} > - <Title order={4}>Informasi WhatsApp + + Informasi WhatsApp + - - - - - {`+${dataNomor.nomor}`} - - { - toggle(); - setUpdateNomor(dataNomor.nomor); - }} - > - - - - - - - + {!dataNomor ? ( + + ) : ( + + - } - value={updateNomor} - label={Nomor Aktif Admin} - onChange={(val) => { - setUpdateNomor(val.currentTarget.value); - }} - /> - - - - + + + + { + toggle(); + setUpdateNomor(dataNomor?.nomor); + }} + > + + + + {`+${dataNomor?.nomor}`} + + + + + + } + value={updateNomor} + label={ + + Nomor Aktif Admin + + } + onChange={(val) => { + setUpdateNomor(val.currentTarget.value); + }} + /> + + + + + + - - - +
+ + )}
); diff --git a/src/app_modules/admin/app_info/view/view_kategori_portofolio.tsx b/src/app_modules/admin/app_info/view/view_kategori_portofolio.tsx index ec2533e5..02c947fd 100644 --- a/src/app_modules/admin/app_info/view/view_kategori_portofolio.tsx +++ b/src/app_modules/admin/app_info/view/view_kategori_portofolio.tsx @@ -1,67 +1,92 @@ +"use client"; + +import { + AdminColor, + MainColor, +} from "@/app_modules/_global/color/color_pallet"; import { MODEL_DEFAULT_MASTER_OLD } from "@/app_modules/model_global/interface"; import { - ActionIcon, - Button, - Center, - Grid, - Group, - Modal, - Paper, - ScrollArea, - Stack, - Switch, - Table, - Text, - TextInput, - Title, - Tooltip, + Box, + Button, + Center, + Group, + Paper, + ScrollArea, + Stack, + Switch, + Table, + Text, + TextInput, + Title, } from "@mantine/core"; -import { IconCirclePlus, IconEdit } from "@tabler/icons-react"; +import { IconEdit } from "@tabler/icons-react"; import { useState } from "react"; import { ComponentAdminGlobal_TitlePage } from "../../_admin_global/_component"; +import { Admin_ComponentModal } from "../../_admin_global/_component/comp_admin_modal"; import { ComponentAdminGlobal_NotifikasiBerhasil } from "../../_admin_global/admin_notifikasi/notifikasi_berhasil"; import { ComponentAdminGlobal_NotifikasiGagal } from "../../_admin_global/admin_notifikasi/notifikasi_gagal"; +import { Admin_V3_ComponentBreakpoint } from "../../_components_v3/comp_simple_grid_breakpoint"; import { - adminAppInformation_funCreateBidangBisnis, - adminAppInformation_funGetBidangBisnis, - adminAppInformation_funUpdateBidangBisnis, + adminAppInformation_funCreateBidangBisnis, + adminAppInformation_funGetBidangBisnis, + adminAppInformation_funUpdateBidangBisnis, } from "../fun"; +import { useShallowEffect } from "@mantine/hooks"; +import { apiGetMasterAdminBidangBisnis } from "../lib/api_fetch_master"; +import CustomSkeleton from "@/app_modules/components/CustomSkeleton"; -export function AdminAppInformation_ViewKategoriPortofolio({ - dataBidangBisnis, -}: { - dataBidangBisnis: MODEL_DEFAULT_MASTER_OLD[]; -}) { - const [data, setData] = useState(dataBidangBisnis); +export function AdminAppInformation_ViewKategoriPortofolio() { + const [data, setData] = useState(null); + + useShallowEffect(() => { + handleLoadData(); + }, []); + + async function handleLoadData() { + try { + const response = await apiGetMasterAdminBidangBisnis(); + + if (response && response.success) { + setData(response.data); + } else { + setData([]); + } + } catch (error) { + console.log("Error load data", error); + setData([]); + } + } // Create const [isLoadingCreate, setLoadingCreate] = useState(false); - const [isCreate, setIsCreate] = useState(false); + const [isCreate, setIsCreate] = useState(true); const [newData, setNewData] = useState(""); async function onCreate() { - const create = await adminAppInformation_funCreateBidangBisnis({ - name: newData, - }); + try { + const create = await adminAppInformation_funCreateBidangBisnis({ + name: newData, + }); - if (create.status === 201) { - try { + if (create.status === 201) { setLoadingCreate(true); const loadData = await adminAppInformation_funGetBidangBisnis(); setData(loadData); - } catch (error) { - console.log(error); - } finally { setNewData(""); - setLoadingCreate(false); ComponentAdminGlobal_NotifikasiBerhasil(create.message); + } else { + ComponentAdminGlobal_NotifikasiGagal(create.message); } - } else { - ComponentAdminGlobal_NotifikasiGagal(create.message); + } catch (error) { + console.log(error); + ComponentAdminGlobal_NotifikasiGagal("Gagal menambah bidang bisnis"); + } finally { + setLoadingCreate(false); } } // Update Data const [isLoadingUpdate, setLoadingUpdate] = useState(false); + const [isUpdate, setIsUpdate] = useState(false); const [updateData, setUpdateData] = useState({ id: "", @@ -69,22 +94,25 @@ export function AdminAppInformation_ViewKategoriPortofolio({ }); async function onUpdate() { - const updt = await adminAppInformation_funUpdateBidangBisnis({ - data: updateData as any, - }); - if (updt?.status === 200) { - try { - setLoadingUpdate(true); + try { + setLoadingUpdate(true); + const updt = await adminAppInformation_funUpdateBidangBisnis({ + data: updateData as any, + }); + if (updt?.status === 200) { const loadData = await adminAppInformation_funGetBidangBisnis(); setData(loadData); - } catch (error) { - console.log(error); - } finally { - setLoadingUpdate(false); + ComponentAdminGlobal_NotifikasiBerhasil(updt.message); + } else { + ComponentAdminGlobal_NotifikasiGagal(updt?.message as any); } - } else { - ComponentAdminGlobal_NotifikasiGagal(updt?.message as any); + } catch (error) { + console.log(error); + } finally { + setIsUpdate(false); + setIsCreate(true); + setLoadingUpdate(false); } } @@ -94,6 +122,7 @@ export function AdminAppInformation_ViewKategoriPortofolio({ id: "", active: null, }); + const [isLoadingActivation, setLoadingActivation] = useState(false); async function onUpdateActivation({ id, @@ -102,133 +131,104 @@ export function AdminAppInformation_ViewKategoriPortofolio({ id: string; active: boolean; }) { - const updt = await adminAppInformation_funUpdateBidangBisnis({ - data: { id: id, active: active }, - }); + try { + setLoadingActivation(true); + const updt = await adminAppInformation_funUpdateBidangBisnis({ + data: { id: id, active: active }, + }); - if (updt?.status === 200) { - try { - setLoadingUpdate(true); + if (updt?.status === 200) { const loadData = await adminAppInformation_funGetBidangBisnis(); setData(loadData); - } catch (error) { - console.log(error); - } finally { setOpenModal(false); - setLoadingUpdate(false); + setLoadingActivation(false); ComponentAdminGlobal_NotifikasiBerhasil(updt?.message); + } else { + ComponentAdminGlobal_NotifikasiGagal(updt?.message as any); } - } else { - ComponentAdminGlobal_NotifikasiGagal(updt?.message as any); + } catch (error) { + console.log(error); + ComponentAdminGlobal_NotifikasiGagal("Gagal mengupdate status"); } } - // Row Table - const rowTable = data.map((e, i) => ( - - -
- {e?.name} -
- - -
- { - setOpenModal(true); - setUpdateStatus({ - id: e?.id, - active: val.currentTarget.checked as any, - }); - }} - /> -
- + const rowTable = () => { + if (!Array.isArray(data) || data.length === 0) { + return ( + + +
+ Tidak ada data +
+ + + ); + } + return data.map((e, i) => ( + + + + + + - - - { - setIsUpdate(true); - setIsCreate(false); - setUpdateData({ - id: e?.id, - name: e?.name, - }); - }} - > - - - - - - - - )); + +
+ { + setOpenModal(true); + setUpdateStatus({ + id: e?.id, + active: val.currentTarget.checked as any, + }); + }} + /> +
+ + + + + {e?.name} + + + + )); + }; return ( <> - } - onClick={() => { - setIsCreate(true); - setIsUpdate(false); - }} - > - Tambah - - } - /> + - - - - - - - - - - - - - {rowTable} -
-
Kategori
-
-
Status
-
-
Aksi
-
-
-
-
- - + +
{/* Form Create */} {isCreate ? ( - +
- Tambah Bidang Bisnis + + Tambah Bidang Bisnis +
-
+ + {!data ? ( + + ) : ( + + + + + + + + + + + {rowTable()} +
+
Aksi
+
+
Status
+
+ Kategori +
+
+
+ )} +
{/* Activasi bank */} - setOpenModal(false)} > - + <Title order={5} c={MainColor.white}> Anda ingin{" "} {updateStatus.active ? ( <Text span inherit> @@ -339,6 +365,8 @@ export function AdminAppInformation_ViewKategoriPortofolio({ Batal </Button> <Button + loading={isLoadingActivation} + loaderPosition="center" color="green" radius={"xl"} onClick={() => { @@ -352,7 +380,7 @@ export function AdminAppInformation_ViewKategoriPortofolio({ </Button> </Group> </Stack> - </Modal> + </Admin_ComponentModal> </> ); } diff --git a/src/app_modules/admin/colab/component/detail_data.tsx b/src/app_modules/admin/colab/component/detail_data.tsx index a26c9e7f..beb28ef1 100644 --- a/src/app_modules/admin/colab/component/detail_data.tsx +++ b/src/app_modules/admin/colab/component/detail_data.tsx @@ -1,3 +1,4 @@ +import { AdminColor } from "@/app_modules/_global/color/color_pallet"; import { MODEL_COLLABORATION } from "@/app_modules/colab/model/interface"; import { Stack, Box, Center, Title, Grid, Text } from "@mantine/core"; @@ -11,20 +12,20 @@ export default function ComponentAdminColab_DetailData({ <Stack> <Box> <Center px={"md"} mb={"lg"}> - <Title order={4}>{data?.title ? data.title : "Judul Proyek"} + {data?.title ? data.title : "Judul Proyek"}
- + Industri - : + : - + {data?.ProjectCollaborationMaster_Industri.name ? data.ProjectCollaborationMaster_Industri.name : "Industri"} @@ -34,31 +35,31 @@ export default function ComponentAdminColab_DetailData({ - + Lokasi - : + : - + {data?.lokasi ? data.lokasi : " Lokasi dari proyek"} - + Tujuan proyek - {data?.purpose ? data?.purpose : "-"} + {data?.purpose ? data?.purpose : "-"} - + Keuntungan - {data?.benefit ? data?.benefit : "-"} + {data?.benefit ? data?.benefit : "-"} diff --git a/src/app_modules/admin/colab/dashboard/index.tsx b/src/app_modules/admin/colab/dashboard/index.tsx index 6f865bdd..af537ca3 100644 --- a/src/app_modules/admin/colab/dashboard/index.tsx +++ b/src/app_modules/admin/colab/dashboard/index.tsx @@ -1,38 +1,136 @@ "use client"; -import { Stack, SimpleGrid, Paper, Group, Title, Text } from "@mantine/core"; +import { + Stack, + SimpleGrid, + Paper, + Group, + Title, + Text, + Flex, + ThemeIcon, +} from "@mantine/core"; import { useRouter } from "next/navigation"; import ComponentAdminGlobal_HeaderTamplate from "../../_admin_global/header_tamplate"; +import { + IconAlertTriangle, + IconMessage2, + IconUpload, +} from "@tabler/icons-react"; +import { + AccentColor, + AdminColor, +} from "@/app_modules/_global/color/color_pallet"; +import { useState } from "react"; +import { clientLogger } from "@/util/clientLogger"; +import { apiGetAdminCollaborationStatusCountDashboard } from "../lib/api_fetch_admin_collaboration"; +import global_limit from "@/lib/limit"; +import { useShallowEffect } from "@mantine/hooks"; +import CustomSkeleton from "@/app_modules/components/CustomSkeleton"; -export default function AdminColab_Dashboard({ - countPublish, - countRoom, - countReject, -}: { - countPublish: number; - countRoom: number; - countReject: number; -}) { +export default function AdminColab_Dashboard() { + const [countPublish, setCountPublish] = useState(null); + const [countRoom, setCountRoom] = useState(null); + const [countReject, setCountReject] = useState(null); const router = useRouter(); + useShallowEffect(() => { + handlerLoadData(); + }, []); + + async function handlerLoadData() { + try { + const listLoadData = [ + global_limit(() => onLoadCountPublish()), + global_limit(() => onLoadCountRoom()), + global_limit(() => onLoadCountReject()), + ]; + const result = await Promise.all(listLoadData); + } catch (error) { + clientLogger.error("Error handler load data", error); + } + } + async function onLoadCountPublish() { + try { + const response = await apiGetAdminCollaborationStatusCountDashboard({ + name: "Publish", + }); + if (response) { + setCountPublish(response.data); + } + } catch (error) { + clientLogger.error("Error get count publish", error); + } + } + + async function onLoadCountRoom() { + try { + const response = await apiGetAdminCollaborationStatusCountDashboard({ + name: "Room", + }); + if (response) { + setCountRoom(response.data); + } + } catch (error) { + clientLogger.error("Error get count room", error); + } + } + + async function onLoadCountReject() { + try { + const response = await apiGetAdminCollaborationStatusCountDashboard({ + name: "Reject", + }); + if (response) { + setCountReject(response.data); + } + } catch (error) { + clientLogger.error("Error get count reject", error); + } + } + const listStatus = [ { id: 1, name: "Publish", - jumlah: countPublish, + jumlah: + countPublish == null ? ( + + ) : countPublish ? ( + countPublish + ) : ( + "-" + ), color: "green", + icon: , }, { id: 2, name: "Group Chat", - jumlah: countRoom, + jumlah: + countRoom == null ? ( + + ) : countRoom ? ( + countRoom + ) : ( + "-" + ), color: "orange", + icon: , }, { id: 3, name: "Reject", - jumlah: countReject, + jumlah: + countReject == null ? ( + + ) : countReject ? ( + countReject + ) : ( + "-" + ), color: "red", + icon: , }, ]; return ( @@ -51,18 +149,29 @@ export default function AdminColab_Dashboard({ {listStatus.map((e, i) => ( - - - {e.name} - {e.jumlah ? e.jumlah : 0} - - + + + {e.name} + + + + {e.jumlah ? e.jumlah : 0} + + + {e.icon} + + + ))} @@ -70,3 +179,6 @@ export default function AdminColab_Dashboard({ ); } +function apiGetAdminCollaborationStatuCountDashboard(arg0: { name: string }) { + throw new Error("Function not implemented."); +} diff --git a/src/app_modules/admin/colab/detail/detail_group.tsx b/src/app_modules/admin/colab/detail/detail_group.tsx new file mode 100644 index 00000000..33b9e096 --- /dev/null +++ b/src/app_modules/admin/colab/detail/detail_group.tsx @@ -0,0 +1,166 @@ +"use client"; + +import { AdminColor } from "@/app_modules/_global/color/color_pallet"; +import { MODEL_COLLABORATION_ROOM_CHAT } from "@/app_modules/colab/model/interface"; +import CustomSkeleton from "@/app_modules/components/CustomSkeleton"; +import { clientLogger } from "@/util/clientLogger"; +import { + Grid, + Group, + Paper, + ScrollArea, + SimpleGrid, + Stack, + Text, + Title, +} from "@mantine/core"; +import { useShallowEffect } from "@mantine/hooks"; +import { useParams } from "next/navigation"; +import { useState } from "react"; +import Admin_ComponentBackButton from "../../_admin_global/back_button"; +import ComponentAdminGlobal_HeaderTamplate from "../../_admin_global/header_tamplate"; +import { apiGetAdminCollaborationGroupById } from "../lib/api_fetch_admin_collaboration"; +import { Admin_ComponentBoxStyle } from "../../_admin_global/_component/comp_admin_boxstyle"; +import { IconCaretRight } from "@tabler/icons-react"; +import { Admin_V3_ComponentSkeletonBreakpoint } from "../../_components_v3/comp_skeleton_breakpoint"; +import { Admin_V3_ComponentBreakpoint } from "../../_components_v3/comp_simple_grid_breakpoint"; +import { Admin_V3_ComponentDetail } from "../../_components_v3/comp_detail_data"; + +function DetailGroup() { + const params = useParams<{ id: string }>(); + const [data, setData] = useState(null); + const [loading, setLoading] = useState(false); + + useShallowEffect(() => { + loadInitialData(); + }, []); + + const loadInitialData = async () => { + try { + const response = await apiGetAdminCollaborationGroupById({ + id: params.id, + }); + + if (response?.success && response?.data) { + setData(response.data); + } + } catch (error) { + clientLogger.error("Invalid data format recieved:", error); + setData(null); + } + }; + + const listData = [ + { + label: "Admin", + value: data?.ProjectCollaboration?.Author?.username, + }, + { + label: "Judul", + value: data?.ProjectCollaboration?.title, + }, + { + label: "Industri", + value: + data?.ProjectCollaboration?.ProjectCollaborationMaster_Industri?.name, + }, + { + label: "Jumlah Partisipan", + value: data?.ProjectCollaboration_AnggotaRoomChat.length, + }, + { + label: "Lokasi", + value: data?.ProjectCollaboration?.lokasi, + }, + { + label: "Tujuan", + value: data?.ProjectCollaboration?.purpose, + }, + { + label: "Keuntungan", + value: data?.ProjectCollaboration?.benefit, + }, + ]; + + return ( + + + + + {!data ? ( + + ) : ( + + + + + {listData.map((e, i) => ( + + ))} + + {/* + + */} + + + + + + + + Anggota + + + + {data.ProjectCollaboration_AnggotaRoomChat.map((e, i) => ( + + + + + + + Username + + : + {e.User.username} + + + + + Name + + : + {e.User.Profile.name} + + + + ))} + + + + + )} + + ); +} + +export default DetailGroup; diff --git a/src/app_modules/admin/colab/detail/detail_publish.tsx b/src/app_modules/admin/colab/detail/detail_publish.tsx new file mode 100644 index 00000000..92a4d52c --- /dev/null +++ b/src/app_modules/admin/colab/detail/detail_publish.tsx @@ -0,0 +1,190 @@ +"use client"; + +import { AdminColor } from "@/app_modules/_global/color/color_pallet"; +import { ComponentGlobal_NotifikasiPeringatan } from "@/app_modules/_global/notif_global"; +import { MODEL_COLLABORATION } from "@/app_modules/colab/model/interface"; +import CustomSkeleton from "@/app_modules/components/CustomSkeleton"; +import { clientLogger } from "@/util/clientLogger"; +import { + Button, + Grid, + Group, + Modal, + Paper, + SimpleGrid, + Stack, + Text, + Textarea, +} from "@mantine/core"; +import { useShallowEffect } from "@mantine/hooks"; +import { IconCheck, IconFlag2Off } from "@tabler/icons-react"; +import { useParams, useRouter } from "next/navigation"; +import { useState } from "react"; +import { Admin_ComponentBoxStyle } from "../../_admin_global/_component/comp_admin_boxstyle"; +import Admin_ComponentBackButton from "../../_admin_global/back_button"; +import ComponentAdminGlobal_HeaderTamplate from "../../_admin_global/header_tamplate"; +import adminColab_funReportProjectById from "../fun/edit/fun_report_project_by_id"; +import { apiGetAdminCollaborationById } from "../lib/api_fetch_admin_collaboration"; +import { Admin_V3_ComponentSkeletonBreakpoint } from "../../_components_v3/comp_skeleton_breakpoint"; +import { Admin_V3_ComponentBreakpoint } from "../../_components_v3/comp_simple_grid_breakpoint"; +import { Admin_V3_ComponentDetail } from "../../_components_v3/comp_detail_data"; +import { Comp_V3_SetInnerHTMLWithStiker } from "@/app_modules/_global/component/new/comp_V3_set_html_with_stiker"; + +function DetailPublish() { + const router = useRouter(); + const params = useParams<{ id: string }>(); + const [data, setData] = useState(null); + const [loading, setLoading] = useState(false); + const [openReject, setOpenReject] = useState(false); + const [report, setReport] = useState(""); + + useShallowEffect(() => { + loadInitialData(); + }, []); + + const loadInitialData = async () => { + try { + const response = await apiGetAdminCollaborationById({ + id: params.id, + }); + + if (response?.success && response?.data) { + setData(response.data); + } + } catch (error) { + clientLogger.error("Invalid data format recieved:", error); + setData(null); + } + }; + + async function onReject() { + try { + setLoading(true); + const response = await adminColab_funReportProjectById({ + colabId: params.id, + report: report, + }); + + if (response.status == 200) { + setLoading(false); + router.back(); + } + } catch (error) { + setLoading(false); + ComponentGlobal_NotifikasiPeringatan("Gagal Load"); + clientLogger.error("Invalid report collaboration", error); + } + } + + const listData = [ + { + label: "Username", + value: data?.Author.username, + }, + { + label: "Judul", + value: data?.title, + }, + { + label: "Industri", + value: data?.ProjectCollaborationMaster_Industri.name, + }, + { + label: "Jumlah Partisipan", + value: data?.ProjectCollaboration_Partisipasi.length, + }, + { + label: "Lokasi", + value: data?.lokasi, + }, + { + label: "Tujuan", + value: , + }, + { + label: "Keuntungan", + value: , + }, + ]; + + return ( + <> + + + + + {!data ? ( + + ) : ( + + + + {listData.map((e, i) => ( + + ))} + + + + + + + + )} + + + {/* Reject Project */} + setOpenReject(false)} + centered + withCloseButton={false} + size={"md"} + > + + + + Apakah anda yakin ingin mereport project{" "} + + {data?.title} + + ? + {" "} +