Compare commits

..

13 Commits

Author SHA1 Message Date
fb9515dfe4 Fix: delete all data user
src/app/api/mobile/user/[id]/route.ts

### No Issue
2025-11-20 15:39:36 +08:00
0b3d4830f9 chore(release): 1.5.16 2025-11-20 15:38:23 +08:00
94e4b884a7 Fix:
- src/app/api/mobile/donation/route.ts
- src/app/api/mobile/user/[id]/route.ts

### NO Issue
2025-11-19 17:43:37 +08:00
fcad857422 Fix:
- src/app/(support)/delete-account/page.tsx
- src/app/(support)/support-center/page.tsx
- src/app/api/helper/support-center/route.ts

### No Issue
2025-11-18 14:02:17 +08:00
32619ee9b3 chore(release): 1.5.15 2025-11-18 14:00:58 +08:00
45305e44cc chore(release): 1.5.14 2025-11-17 17:41:14 +08:00
b6e5755942 Resolve rejected Apple:
Add:
public/aset/logo/hiconnect.png
        src/app/(support)/
        src/app/api/helper/

Fix:

- bun.lock
- package.json
- src/app/api/auth/login/route.ts
- src/app/api/auth/resend/route.ts
- src/middleware.tsx

### No issue
2025-11-17 17:41:08 +08:00
14fbd1a6dd Fix:
- Merubah kode dan menambah enCode untuk dikirim ke Whatsapp
- src/app/api/auth/login/route.ts & src/app/api/auth/resend/route.ts

### No Issue
2025-11-17 11:29:54 +08:00
a49b95ac8e chore(release): 1.5.13 2025-11-17 11:29:51 +08:00
40df3a5e5b Fix apll site : untuk akses qrcode
### No Issue
2025-11-13 17:12:02 +08:00
134f1dceff chore(release): 1.5.12 2025-11-13 17:09:14 +08:00
9a3726cbcc Penambahan akses untuk metode scan QRCOde:
Akse akan mengarah ke public/.well-known/

### No Issue
2025-11-12 16:30:37 +08:00
10fb0449b4 Merge pull request 'Privacy policy' (#8) from privacy/7-nov-25 into staging
Reviewed-on: http://wibugit.wibudev.com/wibu/hipmi/pulls/8
2025-11-07 16:51:20 +08:00
16 changed files with 1295 additions and 19 deletions

View File

@@ -2,6 +2,16 @@
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.5.16](https://wibugit.wibudev.com/wibu/hipmi/compare/v1.5.15...v1.5.16) (2025-11-20)
## [1.5.15](https://wibugit.wibudev.com/wibu/hipmi/compare/v1.5.14...v1.5.15) (2025-11-18)
## [1.5.14](https://wibugit.wibudev.com/wibu/hipmi/compare/v1.5.13...v1.5.14) (2025-11-17)
## [1.5.13](https://wibugit.wibudev.com/wibu/hipmi/compare/v1.5.12...v1.5.13) (2025-11-17)
## [1.5.12](https://wibugit.wibudev.com/wibu/hipmi/compare/v1.5.10...v1.5.12) (2025-11-13)
## [1.5.11](https://wibugit.wibudev.com/wibu/hipmi/compare/v1.4.45...v1.5.11) (2025-11-07)
## [1.5.10](https://wibugit.wibudev.com/wibu/hipmi/compare/v1.5.9...v1.5.10) (2025-11-03)

View File

@@ -18,6 +18,7 @@
"@mantine/notifications": "^6.0.17",
"@mantine/tiptap": "^7.5.3",
"@prisma/client": "^6.3.0",
"@react-email/render": "^2.0.0",
"@react-pdf/renderer": "^3.4.4",
"@tabler/icons-react": "^3.31.0",
"@tiptap/extension-highlight": "^2.2.3",
@@ -79,6 +80,7 @@
"react-quill": "^2.0.0",
"react-responsive-carousel": "^3.2.23",
"react-toastify": "^9.1.3",
"resend": "^6.4.2",
"sharp": "^0.33.5",
"socket.io-client": "^4.7.2",
"swr": "^2.3.0",
@@ -838,6 +840,8 @@
"@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-email/render": ["@react-email/render@2.0.0", "", { "dependencies": { "html-to-text": "^9.0.5", "prettier": "^3.5.3" }, "peerDependencies": { "react": "^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-rdjNj6iVzv8kRKDPFas+47nnoe6B40+nwukuXwY4FCwM7XBg6tmYr+chQryCuavUj2J65MMf6fztk1bxOUiSVA=="],
"@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=="],
@@ -894,6 +898,8 @@
"@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=="],
"@selderee/plugin-htmlparser2": ["@selderee/plugin-htmlparser2@0.11.0", "", { "dependencies": { "domhandler": "^5.0.3", "selderee": "^0.11.0" } }, "sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ=="],
"@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=="],
@@ -902,6 +908,8 @@
"@socket.io/component-emitter": ["@socket.io/component-emitter@3.1.2", "", {}, "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA=="],
"@stablelib/base64": ["@stablelib/base64@1.0.1", "", {}, "sha512-1bnPQqSxSuc3Ii6MhBysoWCg58j97aUjuCSZrGSmDxNqtytIi0k8utUenAwTZN4V5mXXYGsVUI9zeBqy+jBOSQ=="],
"@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=="],
@@ -1574,13 +1582,13 @@
"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=="],
"dom-serializer": ["dom-serializer@2.0.0", "", { "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.2", "entities": "^4.2.0" } }, "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg=="],
"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=="],
"domutils": ["domutils@3.2.2", "", { "dependencies": { "dom-serializer": "^2.0.0", "domelementtype": "^2.3.0", "domhandler": "^5.0.3" } }, "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw=="],
"dotenv": ["dotenv@16.4.7", "", {}, "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ=="],
@@ -1656,6 +1664,8 @@
"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=="],
"es6-promise": ["es6-promise@4.2.8", "", {}, "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w=="],
"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=="],
@@ -1754,6 +1764,8 @@
"fast-loops": ["fast-loops@1.1.4", "", {}, "sha512-8dbd3XWoKCTms18ize6JmQF1SFnnfj5s0B7rRry22EofgMu7B6LKHVh+XfFqFGsqnbH54xgeO83PzpKI+ODhlg=="],
"fast-sha256": ["fast-sha256@1.3.0", "", {}, "sha512-n11RGP/lrWEFI/bWdygLxhI+pVeo1ZYIVwvvPkW7azl/rOy+F3HYRZ2K5zeE9mmkhQppyv9sQFx0JM9UabnpPQ=="],
"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=="],
@@ -1940,9 +1952,11 @@
"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-to-text": ["html-to-text@9.0.5", "", { "dependencies": { "@selderee/plugin-htmlparser2": "^0.11.0", "deepmerge": "^4.3.1", "dom-serializer": "^2.0.0", "htmlparser2": "^8.0.2", "selderee": "^0.11.0" } }, "sha512-qY60FjREgVZL03vJU6IfMV4GDjGBIoOyvuFdpBDIX9yTlDw0TjxVBQp+P8NvpdIXNJvfWBTNul7fsAQJq2FNpg=="],
"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=="],
"htmlparser2": ["htmlparser2@8.0.2", "", { "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.3", "domutils": "^3.0.1", "entities": "^4.4.0" } }, "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA=="],
"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=="],
@@ -2170,6 +2184,8 @@
"language-tags": ["language-tags@1.0.9", "", { "dependencies": { "language-subtag-registry": "^0.3.20" } }, "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA=="],
"leac": ["leac@0.6.0", "", {}, "sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg=="],
"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=="],
@@ -2504,6 +2520,8 @@
"parse-svg-path": ["parse-svg-path@0.1.2", "", {}, "sha512-JyPSBnkTJ0AI8GGJLfMXvKq42cj5c006fnLz6fXy6zfoVjJizi8BNTpu8on8ziI1cKy9d9DGNuY17Ce7wuejpQ=="],
"parseley": ["parseley@0.12.1", "", { "dependencies": { "leac": "^0.6.0", "peberminta": "^0.9.0" } }, "sha512-e6qHKe3a9HWr0oMRVDTRhKce+bRO8VGQR3NyVwcjwrbhMmFCX9KszEV35+rn4AdilFAq9VPxP/Fe1wC9Qjd2lw=="],
"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=="],
@@ -2530,6 +2548,8 @@
"pdfjs-dist": ["pdfjs-dist@4.10.38", "", { "optionalDependencies": { "@napi-rs/canvas": "^0.1.65" } }, "sha512-/Y3fcFrXEAsMjJXeL9J8+ZG9U01LbuWaYypvDW2ycW1jL269L3js3DVBjDJ0Up9Np1uqDXsDrRihHANhZOlwdQ=="],
"peberminta": ["peberminta@0.9.0", "", {}, "sha512-XIxfHpEuSJbITd1H3EeQwpcZbTLHc+VVr8ANI9t5sit565tsI4/xK3KWTUFE2e6QiangUkh3B0jihzmGnNrRsQ=="],
"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=="],
@@ -2578,7 +2598,7 @@
"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=="],
"prettier": ["prettier@3.6.2", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ=="],
"pretty-bytes": ["pretty-bytes@5.6.0", "", {}, "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg=="],
@@ -2656,6 +2676,8 @@
"qrcode-terminal": ["qrcode-terminal@0.11.0", "", { "bin": { "qrcode-terminal": "./bin/qrcode-terminal.js" } }, "sha512-Uu7ii+FQy4Qf82G4xu7ShHhjhGahEpCWc3x8UavY3CTcWV+ufmmCtwkr7ZKsX42jdL0kr1B5FKUeqJvAn51jzQ=="],
"querystringify": ["querystringify@2.2.0", "", {}, "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ=="],
"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=="],
@@ -2770,6 +2792,10 @@
"requireg": ["requireg@0.2.2", "", { "dependencies": { "nested-error-stacks": "~2.0.1", "rc": "~1.2.7", "resolve": "~1.7.1" } }, "sha512-nYzyjnFcPNGR3lx9lwPPPnuQxv6JWEZd2Ci0u9opN7N5zUEPIhY/GbL3vMGOr2UXwEg9WwSyV9X9Y/kLFgPsOg=="],
"requires-port": ["requires-port@1.0.0", "", {}, "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ=="],
"resend": ["resend@6.4.2", "", { "dependencies": { "svix": "1.76.1" }, "peerDependencies": { "@react-email/render": "*" }, "optionalPeers": ["@react-email/render"] }, "sha512-YnxmwneltZtjc7Xff+8ZjG1/xPLdstCiqsedgO/JxWTf7vKRAPCx6CkhQ3ZXskG0mrmf8+I5wr/wNRd8PQMUfw=="],
"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=="],
@@ -2818,6 +2844,8 @@
"sdp": ["sdp@3.2.0", "", {}, "sha512-d7wDPgDV3DDiqulJjKiV2865wKsJ34YI+NDREbm+FySq6WuKOikwyNQcm+doLAZ1O6ltdO0SeKle2xMpN3Brgw=="],
"selderee": ["selderee@0.11.0", "", { "dependencies": { "parseley": "^0.12.0" } }, "sha512-5TF+l7p4+OsnP8BCCvSyZiSPc4x4//p5uPwK8TCnVPJYRmU2aYKMpOXvw8zM5a5JvuuCGN1jmsMwuU2W02ukfA=="],
"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=="],
@@ -2992,6 +3020,8 @@
"svg-arc-to-cubic-bezier": ["svg-arc-to-cubic-bezier@3.2.0", "", {}, "sha512-djbJ/vZKZO+gPoSDThGNpKDO+o+bAeA4XQKovvkNCqnIS2t+S4qnLAGQhyyrulhCFRl1WWzAp0wUDV8PpTVU3g=="],
"svix": ["svix@1.76.1", "", { "dependencies": { "@stablelib/base64": "^1.0.0", "@types/node": "^22.7.5", "es6-promise": "^4.2.8", "fast-sha256": "^1.3.0", "url-parse": "^1.5.10", "uuid": "^10.0.0" } }, "sha512-CRuDWBTgYfDnBLRaZdKp9VuoPcNUq9An14c/k+4YJ15Qc5Grvf66vp0jvTltd4t7OIRj+8lM1DAgvSgvf7hdLw=="],
"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=="],
@@ -3106,7 +3136,7 @@
"undici": ["undici@6.21.1", "", {}, "sha512-q/1rj5D0/zayJB2FraXdaWxbhWiNKDvu8naDT2dl1yTlvJp4BLtOcp2a5BvgGNQpYYJzau7tf1WgKv3b+7mqpQ=="],
"undici-types": ["undici-types@5.26.5", "", {}, "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="],
"undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="],
"unicode-canonical-property-names-ecmascript": ["unicode-canonical-property-names-ecmascript@2.0.1", "", {}, "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg=="],
@@ -3140,6 +3170,8 @@
"uri-js": ["uri-js@4.4.1", "", { "dependencies": { "punycode": "^2.1.0" } }, "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg=="],
"url-parse": ["url-parse@1.5.10", "", { "dependencies": { "querystringify": "^2.1.1", "requires-port": "^1.0.0" } }, "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ=="],
"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=="],
@@ -3430,6 +3462,8 @@
"@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=="],
"@selderee/plugin-htmlparser2/domhandler": ["domhandler@5.0.3", "", { "dependencies": { "domelementtype": "^2.3.0" } }, "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w=="],
"@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=="],
@@ -3478,7 +3512,9 @@
"defaults/clone": ["clone@1.0.4", "", {}, "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg=="],
"dom-serializer/entities": ["entities@2.2.0", "", {}, "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A=="],
"dom-serializer/domhandler": ["domhandler@5.0.3", "", { "dependencies": { "domelementtype": "^2.3.0" } }, "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w=="],
"domutils/domhandler": ["domhandler@5.0.3", "", { "dependencies": { "domelementtype": "^2.3.0" } }, "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w=="],
"drawille-canvas-blessed-contrib/gl-matrix": ["gl-matrix@2.8.1", "", {}, "sha512-0YCjVpE3pS5XWlN3J4X7AiAx65+nqAI54LndtVFnQZB6G/FVLkZH8y8V6R3cIoOQR4pUdfwQGd1iwyoXHJ4Qfw=="],
@@ -3548,9 +3584,11 @@
"has-ansi/ansi-regex": ["ansi-regex@2.1.1", "", {}, "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA=="],
"html-dom-parser/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=="],
"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=="],
"htmlparser2/domhandler": ["domhandler@5.0.3", "", { "dependencies": { "domelementtype": "^2.3.0" } }, "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w=="],
"hyperid/buffer": ["buffer@5.7.1", "", { "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" } }, "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ=="],
@@ -3608,6 +3646,8 @@
"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/prettier": ["prettier@3.5.2", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-lc6npv5PH7hVqozBR7lkBNOGXV9vMwROAPlumdBkX0wTbbzPu/U1hk5yL8p2pt4Xoc+2mkT8t/sow2YrV/M5qg=="],
"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=="],
@@ -3726,6 +3766,10 @@
"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=="],
"svix/@types/node": ["@types/node@22.19.1", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-LCCV0HdSZZZb34qifBsyWlUmok6W7ouER+oQIGBScS8EsZsQbrtFTUrDX4hOl+CS6p7cnNC4td+qrSVGSCTUfQ=="],
"svix/uuid": ["uuid@10.0.0", "", { "bin": { "uuid": "dist/bin/uuid" } }, "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ=="],
"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=="],
@@ -3922,6 +3966,10 @@
"fontkit/@swc/helpers/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="],
"html-dom-parser/htmlparser2/domutils": ["domutils@2.8.0", "", { "dependencies": { "dom-serializer": "^1.0.1", "domelementtype": "^2.2.0", "domhandler": "^4.2.0" } }, "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A=="],
"html-dom-parser/htmlparser2/entities": ["entities@3.0.1", "", {}, "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q=="],
"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=="],
@@ -3958,6 +4006,8 @@
"onnxruntime-node/tar/yallist": ["yallist@5.0.0", "", {}, "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw=="],
"openai/@types/node/undici-types": ["undici-types@5.26.5", "", {}, "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="],
"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=="],
@@ -4058,6 +4108,8 @@
"execa/cross-spawn/shebang-command/shebang-regex": ["shebang-regex@1.0.0", "", {}, "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ=="],
"html-dom-parser/htmlparser2/domutils/dom-serializer": ["dom-serializer@1.4.1", "", { "dependencies": { "domelementtype": "^2.0.1", "domhandler": "^4.2.0", "entities": "^2.0.0" } }, "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag=="],
"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=="],
@@ -4098,6 +4150,8 @@
"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=="],
"html-dom-parser/htmlparser2/domutils/dom-serializer/entities": ["entities@2.2.0", "", {}, "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A=="],
"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=="],

View File

@@ -1,6 +1,6 @@
{
"name": "hipmi",
"version": "1.5.11",
"version": "1.5.16",
"private": true,
"prisma": {
"seed": "bun prisma/seed.ts"
@@ -29,6 +29,7 @@
"@mantine/notifications": "^6.0.17",
"@mantine/tiptap": "^7.5.3",
"@prisma/client": "^6.3.0",
"@react-email/render": "^2.0.0",
"@react-pdf/renderer": "^3.4.4",
"@tabler/icons-react": "^3.31.0",
"@tiptap/extension-highlight": "^2.2.3",
@@ -90,6 +91,7 @@
"react-quill": "^2.0.0",
"react-responsive-carousel": "^3.2.23",
"react-toastify": "^9.1.3",
"resend": "^6.4.2",
"sharp": "^0.33.5",
"socket.io-client": "^4.7.2",
"swr": "^2.3.0",

View File

@@ -0,0 +1,11 @@
{
"applinks": {
"apps": [],
"details": [
{
"appID": "BMY6GT6W3D.com.anonymous.hipmi-mobile",
"paths": ["*"]
}
]
}
}

View File

@@ -0,0 +1,8 @@
[{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "com.bip.hipmimobileapp",
"sha256_cert_fingerprints": ["CFF8431520BFAE665025B68138774A4E64AA6338D2DF6C7D900A71F0551FFD2D"]
}
}]

Binary file not shown.

After

Width:  |  Height:  |  Size: 509 KiB

30
sendWhatsapp.js Normal file
View File

@@ -0,0 +1,30 @@
// sendWhatsapp.js
// --- INPUT MANUAL ---
let phoneNumber = "6282340374412";
const codeOtp = "3546";
// ---------------------
phoneNumber = phoneNumber.replace(/\D/g, "");
// Format pesan
const message =
`HIPMI - Kode ini bersifat RAHASIA dan JANGAN DI BAGIKAN KEPADA SIAPAPUN, termasuk anggota ataupun pengurus HIPMI lainnya.\n\n` +
`>> Kode OTP anda: ${codeOtp}.`;
const encodedMessage = encodeURIComponent(message);
const waLink = `https://wa.wibudev.com/code?nom=${phoneNumber}&text=${encodedMessage}`;
console.log("Mengirim request ke server...\n");
// Jalankan HTTP GET
fetch(waLink)
.then(res => res.text())
.then(data => {
console.log("Response dari server:");
console.log(data);
})
.catch(err => {
console.error("Terjadi error:", err);
});

View File

@@ -0,0 +1,153 @@
"use client";
import {
Box,
Button,
Grid,
Paper,
Stack,
Text,
TextInput,
Title,
} from "@mantine/core";
import { notifications } from "@mantine/notifications";
import Image from "next/image";
import { useParams } from "next/navigation";
import { useEffect, useState } from "react";
export default function DeleteAccount() {
const [phoneNumber, setPhoneNumber] = useState<string>("");
const [data, setData] = useState({
description: "",
});
const [isLoading, setIsLoading] = useState(false);
useEffect(() => {
// Hanya di client, setelah mount
const urlParams = new URLSearchParams(window.location.search);
const phone = urlParams.get("phone");
if (phone) {
setPhoneNumber(phone);
}
}, []);
const handlerSubmit = async () => {
if (!phoneNumber) {
return notifications.show({
title: "Error",
message: "Please check your phone number",
color: "red",
});
}
if (!data.description) {
return notifications.show({
title: "Error",
message: "Please fill in description with 'Delete Account'",
color: "red",
});
}
if (data.description !== "Delete Account") {
return notifications.show({
title: "Error",
message: "Please fill in description with 'Delete Account'",
color: "red",
});
}
try {
setIsLoading(true);
const response = await fetch("/api/helper/delete-account", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
number: phoneNumber,
description: data.description,
}),
});
const result = await response.json();
if (result.success) {
notifications.show({
title: "Success",
message: "Account will process to delete",
color: "green",
});
setData({
description: "",
});
}
if (!result.success) {
notifications.show({
title: "Error",
message: result.error || "Failed to delete account.",
color: "red",
});
}
} catch (error) {
console.log(error);
} finally {
setIsLoading(false);
}
};
return (
<Box
style={{
display: "flex",
justifyContent: "center",
alignItems: "center",
height: "100vh",
backgroundColor: "#f5f5f5",
padding: "20px",
}}
>
<Paper withBorder shadow="md" p={"lg"}>
<Stack align="center">
<Image
src="/aset/logo/hiconnect.png"
alt="logo"
width={100}
height={100}
/>
<Title>Delete Account</Title>
<Stack spacing={0} align="center">
<Text align="center" fw={"lighter"}>
To delete your account with phone number{" "}
{phoneNumber ? `+${phoneNumber}` : ""}.
</Text>
<Text align="center" fw={"lighter"}>
Type your message with subject Delete Account
</Text>
</Stack>
<Grid w={"100%"}>
<Grid.Col span={8}>
<TextInput
value={data.description}
w={"100%"}
placeholder="Type your subject here"
onChange={(e) => {
setData({
...data,
description: e.target.value,
});
}}
/>
</Grid.Col>
<Grid.Col span={4}>
<Button onClick={handlerSubmit} w={"100%"} loading={isLoading}>
Submit
</Button>
</Grid.Col>
</Grid>
</Stack>
</Paper>
</Box>
);
}

View File

@@ -0,0 +1,202 @@
"use client";
import {
Box,
Button,
Group,
Paper,
SimpleGrid,
Stack,
Text,
Textarea,
TextInput,
Title,
} from "@mantine/core";
import { notifications } from "@mantine/notifications";
import { IconBrandGmail, IconLocation } from "@tabler/icons-react";
import Image from "next/image";
import { useState } from "react";
export default function SupportCenter() {
const [data, setData] = useState({
email: "",
title: "",
description: "",
});
const [isLoading, setLoading] = useState(false);
const handleSubmit = async () => {
if (!data.email || !data.title || !data.description) {
return notifications.show({
title: "Error",
color: "red",
message: "Please fill in all fields.",
});
}
try {
setLoading(true);
const response = await fetch("/api/helper/support-center", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(data),
});
const result = await response.json();
if (result.success) {
notifications.show({
title: "Success",
color: "green",
message: "Message sent successfully.",
});
setData({
email: "",
title: "",
description: "",
});
}
if (!result.success) {
notifications.show({
title: "Error",
color: "red",
message: result.error || "Failed to send message.",
});
}
} catch (error) {
console.log(error);
} finally {
setLoading(false);
}
};
return (
<Box
style={{
display: "flex",
justifyContent: "center",
alignItems: "center",
height: "100vh",
backgroundColor: "#f5f5f5",
padding: "20px",
}}
>
<Stack spacing={"lg"}>
<Stack align="center">
<Stack spacing={"xs"} align="center">
<Group>
<Image
src="/aset/logo/hiconnect.png"
alt="logo"
width={50}
height={50}
/>
<Title>Support Center</Title>
</Group>
<Text align="center">
Send us a message and we'll get back to you as soon as possible.
</Text>
</Stack>
</Stack>
<Paper style={{ padding: "20px" }} withBorder shadow="md">
<SimpleGrid
cols={2}
// verticalSpacing={50}
spacing={50}
breakpoints={[
{ maxWidth: "md", cols: 2, spacing: "md" },
{ maxWidth: "sm", cols: 2, spacing: "sm" },
{ maxWidth: "xs", cols: 1, spacing: "sm" },
]}
>
<Stack>
<Stack spacing={0}>
<Title order={2}>Contact Information</Title>
<Text>For general inquiries, please contact us !</Text>
</Stack>
<Group>
<IconBrandGmail
size={40}
style={{
backgroundColor: "gray",
borderRadius: "10%",
padding: "5px",
}}
/>
<Stack spacing={0}>
<Text fw={"bold"}>Email</Text>
<Text>bip.baliinteraktifperkasa@gmail.com</Text>
</Stack>
</Group>
<Group>
<IconLocation
size={40}
style={{
backgroundColor: "gray",
borderRadius: "10%",
padding: "5px",
}}
/>
<Stack spacing={0}>
<Text fw={"bold"}>Location</Text>
<Text>Bali, Indonesia</Text>
</Stack>
</Group>
</Stack>
<Stack>
<Title order={2}>Send a Message</Title>
<TextInput
label="Email"
placeholder="Email"
onChange={(e) => {
setData({
...data,
email: e.target.value,
});
}}
/>
<TextInput
label="Title"
placeholder="Title"
onChange={(e) => {
setData({
...data,
title: e.target.value,
});
}}
/>
<Textarea
label="Description"
placeholder="Description"
onChange={(e) => {
setData({
...data,
description: e.target.value,
});
}}
/>
<Button
loading={isLoading}
color="yellow"
onClick={() => handleSubmit()}
>
Submit
</Button>
</Stack>
</SimpleGrid>
</Paper>
</Stack>
</Box>
);
}

View File

@@ -29,11 +29,12 @@ export async function POST(req: Request) {
{ status: 400 }
);
const msg = `HIPMI%20-%20Kode%20ini%20bersifat%20RAHASIA%20dan%20JANGAN%20DI%20BAGIKAN%20KEPADA%20SIAPAPUN%2C%20termasuk%20anggota%20ataupun%20pengurus%20HIPMI%20lainnya.%5Cn%5Cn%3E%3E%20Kode%20OTP%20anda%3A%20${codeOtp}.`;
// const encodedMsg = encodeURIComponent(msg);
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}.
`
`https://wa.wibudev.com/code?nom=${nomor}&text=${msg}`,
{ cache: "no-cache" }
);
const sendWa = await res.json();
@@ -62,7 +63,5 @@ export async function POST(req: Request) {
},
{ status: 500 }
);
} finally {
await prisma.$disconnect();
}
}
}

View File

@@ -16,14 +16,15 @@ export async function POST(req: Request) {
const body = await req.json();
const { nomor } = body;
const msg = `HIPMI%20-%20Kode%20ini%20bersifat%20RAHASIA%20dan%20JANGAN%20DI%20BAGIKAN%20KEPADA%20SIAPAPUN%2C%20termasuk%20anggota%20ataupun%20pengurus%20HIPMI%20lainnya.%5Cn%5Cn%3E%3E%20Kode%20OTP%20anda%3A%20${codeOtp}.`;
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}.
`
`https://wa.wibudev.com/code?nom=${nomor}&text=${msg}`,
{ cache: "no-cache" }
);
const sendWa = await res.json();
if (sendWa.status !== "success")
return NextResponse.json(
{

View File

@@ -0,0 +1,41 @@
import { NextResponse } from "next/server";
import { Resend } from "resend";
const resend = new Resend(process.env.RESEND_APIKEY);
export async function POST(req: Request) {
const body = await req.json();
try {
const { number } = body;
if (!number) {
return NextResponse.json({
success: false,
error: "Missing required fields.",
});
}
const data = await resend.emails.send({
from: `+${number} <onboarding@resend.dev>`,
to: ["bagasbanuna02@gmail.com"], // ganti sesuai email kamu
// cc: ["bip.baliinteraktifperkasa@gmail.com"],
subject: "Delete Account",
html: `
<div style="font-family: Arial, sans-serif; font-size: 16px; color: #333;">
<h3>New Message to Delete Account</h3>
<p><strong>User with phone number +${number}</strong></p>
<p><strong>Description: Want to delete account !!</strong></p>
</div>
`,
});
return NextResponse.json({ success: true, data });
} catch (error) {
console.error(error);
return NextResponse.json({
success: false,
error: (error as Error).message,
});
}
}

View File

@@ -0,0 +1,42 @@
import { NextResponse } from "next/server";
import { Resend } from "resend";
const resend = new Resend(process.env.RESEND_APIKEY);
export async function POST(req: Request) {
const body = await req.json();
try {
const { email, title, description } = body;
if (!email || !title || !description) {
return NextResponse.json({
success: false,
error: "Missing required fields.",
});
}
const data = await resend.emails.send({
from: `${email} <onboarding@resend.dev>`,
to: ["bagasbanuna02@gmail.com"],
// to: ["bip.baliinteraktifperkasa@gmail.com"],
subject: title,
html: `
<div style="font-family: Arial, sans-serif; font-size: 16px; color: #333;">
<h3>New Message Received</h3>
<p><strong>Email:</strong> ${email}</p>
<p><strong>Title:</strong> ${title}</p>
<p><strong>Description:</strong><br/>${description.replace(/\n/g, "<br/>")}</p>
</div>
`,
});
return NextResponse.json({ success: true, data });
} catch (error) {
console.error(error);
return NextResponse.json({
success: false,
error: (error as Error).message,
});
}
}

View File

@@ -47,6 +47,8 @@ async function POST(request: Request) {
},
});
console.log("[DATA DONASI]", dataDonasi);
if (!dataDonasi)
return NextResponse.json({
status: 400,
@@ -68,6 +70,8 @@ async function POST(request: Request) {
},
});
console.log("[DATA CERITA]", dataCerita);
if (!dataCerita)
return NextResponse.json({
status: 400,

View File

@@ -32,3 +32,717 @@ export async function GET(
);
}
}
export async function DELETE(
request: Request,
{ params }: { params: { id: string } }
) {
const { id } = params;
console.log("[ID USER", id);
try {
console.log("[START DELETE ALL >>>]");
const checkUser = await prisma.user.findUnique({
where: {
id: id,
},
select: {
// EVENT START
Event: {
select: {
id: true,
},
},
Event_Peserta: {
select: {
id: true,
},
},
// EVENT END
// COLLABORATION START
ProjectCollaboration: {
select: {
id: true,
},
},
ProjectCollaboration_Partisipasi: {
select: {
id: true,
},
},
ProjectCollaboration_RoomChat: {
select: {
id: true,
},
},
ProjectCollaboration_AnggotaRoomChat: {
select: {
id: true,
},
},
ProjectCollaboration_Message: {
select: {
id: true,
},
},
// COLLABORATION END
// VOTING START
Voting: {
select: {
id: true,
Voting_DaftarNamaVote: {
select: {
id: true,
},
},
},
},
Voting_Kontributor: {
select: {
id: true,
},
},
// VOTING END
// JOB START
Job: {
select: {
id: true,
imageId: true,
},
},
// JOB END
// FORUM START
Forum_Posting: {
select: {
id: true,
},
},
Forum_Komentar: {
select: {
id: true,
},
},
Forum_ReportKomentar: {
select: {
id: true,
},
},
Forum_ReportPosting: {
select: {
id: true,
},
},
// FORUM END
// INVITATION START
Investasi: {
select: {
id: true,
prospektusFileId: true,
imageId: true,
BeritaInvestasi: {
select: {
id: true,
imageId: true,
},
},
DokumenInvestasi: {
select: {
id: true,
fileId: true,
},
},
},
},
Investasi_Invoice: {
select: {
id: true,
imageId: true,
},
},
// INVITATION END
// DONATION START
Donasi: {
select: {
id: true,
imageId: true,
CeritaDonasi: {
select: {
id: true,
imageId: true,
},
},
Donasi_Kabar: {
select: {
id: true,
imageId: true,
},
},
Donasi_PencairanDana: {
select: {
id: true,
imageId: true,
},
},
},
},
Donasi_Invoice: {
select: {
id: true,
imageId: true,
},
},
// DONATION END
// PROFILE & PORTOFOLOIO START
Profile: {
select: {
id: true,
Portofolio: {
select: {
id: true,
logoId: true,
BusinessMaps: {
select: {
id: true,
imageId: true,
},
},
Portofolio_MediaSosial: {
select: {
id: true,
},
},
},
},
},
},
// PROFILE & PORTOFOLOIO END
},
});
// =================================================== //
// ================ START DELETE ALL ================= //
// =================================================== //
// EVENT DELETE START
for (let event of checkUser?.Event_Peserta as any) {
const deleteEvent = await prisma.event_Peserta.delete({
where: {
id: event.id,
},
select: {
Event: {
select: {
title: true,
},
},
},
});
console.log(["DELETE EVENT PESERTA", deleteEvent]);
}
for (let event of checkUser?.Event as any) {
const deleteEvent = await prisma.event.delete({
where: {
id: event.id,
},
});
console.log(["DELETE EVENT", deleteEvent]);
}
// EVENT DELETE END
// COLLABORATION START
for (let project of checkUser?.ProjectCollaboration_Partisipasi as any) {
const deleteProject =
await prisma.projectCollaboration_Partisipasi.delete({
where: {
id: project.id,
},
});
console.log(["DELETE PROJECT PARTISIPASI", deleteProject]);
}
for (let project of checkUser?.ProjectCollaboration_RoomChat as any) {
const deleteProject = await prisma.projectCollaboration_RoomChat.delete({
where: {
id: project.id,
},
});
console.log(["DELETE PROJECT ROOMCHAT", deleteProject]);
}
for (let project of checkUser?.ProjectCollaboration_AnggotaRoomChat as any) {
const deleteProject =
await prisma.projectCollaboration_AnggotaRoomChat.delete({
where: {
id: project.id,
},
});
console.log(["DELETE PROJECT ANGGOTA ROOMCHAT", deleteProject]);
}
for (let project of checkUser?.ProjectCollaboration_Message as any) {
const deleteProject = await prisma.projectCollaboration_Message.delete({
where: {
id: project.id,
},
});
console.log(["DELETE PROJECT MESSAGE", deleteProject]);
}
for (let project of checkUser?.ProjectCollaboration as any) {
const deleteProject = await prisma.projectCollaboration.delete({
where: {
id: project.id,
},
});
console.log(["DELETE PROJECT", deleteProject]);
}
// COLLABORATION END
// VOTING START
for (let voting of checkUser?.Voting_Kontributor as any) {
const deleteVotingKontributor = await prisma.voting_Kontributor.delete({
where: {
id: voting.id,
},
});
console.log(["DELETE VOTING KONTRIBUTOR", deleteVotingKontributor]);
}
for (let voting of checkUser?.Voting as any) {
for (let id of voting?.Voting_DaftarNamaVote as any) {
const deleteVotingListName = await prisma.voting_DaftarNamaVote.delete({
where: {
id: id.id,
},
});
console.log(["DELETE VOTING LIST NAME", deleteVotingListName]);
}
const deleteVoting = await prisma.voting.delete({
where: {
id: voting.id,
},
});
console.log(["DELETE VOTING", deleteVoting]);
}
// VOTING END
// JOB START
for (let job of checkUser?.Job as any) {
if (job.imageId) {
const deleteJobImage = await fetch(
`https://wibu-storage.wibudev.com/api/files/${job.imageId}/delete`,
{
method: "DELETE",
headers: {
Authorization: `Bearer ${process.env.WS_APIKEY}`,
},
}
);
if (deleteJobImage.ok) {
console.log("Success delete job image");
}
}
const deleteJob = await prisma.job.delete({
where: {
id: job.id,
},
});
console.log(["DELETE JOB", deleteJob]);
}
// JOB END
// FORUM START
for (let forum of checkUser?.Forum_ReportKomentar as any) {
const deleteForum = await prisma.forum_ReportKomentar.delete({
where: {
id: forum.id,
},
});
console.log(["DELETE FORUM REPORT KOMENTAR", deleteForum]);
}
for (let forum of checkUser?.Forum_ReportPosting as any) {
const deleteForum = await prisma.forum_ReportPosting.delete({
where: {
id: forum.id,
},
});
console.log(["DELETE FORUM REPORT POSTING", deleteForum]);
}
for (let forum of checkUser?.Forum_Komentar as any) {
const deleteForum = await prisma.forum_Komentar.delete({
where: {
id: forum.id,
},
});
console.log(["DELETE FORUM KOMENTAR", deleteForum]);
}
for (let forum of checkUser?.Forum_Posting as any) {
const deleteForum = await prisma.forum_Posting.delete({
where: {
id: forum.id,
},
});
console.log(["DELETE FORUM POSTING", deleteForum]);
}
// FORUM END
// INVESTASI START
for (let invoice of checkUser?.Investasi_Invoice as any) {
if (invoice?.imageId) {
const deleteInvoiceImage = await fetch(
`https://wibu-storage.wibudev.com/api/files/${invoice.imageId}/delete`,
{
method: "DELETE",
headers: {
Authorization: `Bearer ${process.env.WS_APIKEY}`,
},
}
);
if (deleteInvoiceImage.ok) {
console.log("Success delete invoice image");
}
}
const deleteInvoice = await prisma.investasi_Invoice.delete({
where: {
id: invoice.id,
},
});
console.log(["DELETE INVOICE INVESTASI", deleteInvoice]);
}
for (let investasi of checkUser?.Investasi as any) {
for (let berita of investasi?.BeritaInvestasi as any) {
if (berita?.imageId) {
const deleteBeritaImage = await fetch(
`https://wibu-storage.wibudev.com/api/files/${berita.imageId}/delete`,
{
method: "DELETE",
headers: {
Authorization: `Bearer ${process.env.WS_APIKEY}`,
},
}
);
if (deleteBeritaImage.ok) {
console.log("Success delete image berita investasi");
}
}
const deleteBerita = await prisma.beritaInvestasi.delete({
where: {
id: berita.id,
},
});
console.log(["DELETE BERITA INVESTASI", deleteBerita]);
}
for (let dokumen of investasi?.DokumenInvestasi as any) {
if (dokumen?.fileId) {
const deleteDokumenImage = await fetch(
`https://wibu-storage.wibudev.com/api/files/${dokumen.fileId}/delete`,
{
method: "DELETE",
headers: {
Authorization: `Bearer ${process.env.WS_APIKEY}`,
},
}
);
if (deleteDokumenImage.ok) {
console.log("Success delete image dokumen investasi");
}
}
const deleteDokumen = await prisma.dokumenInvestasi.delete({
where: {
id: dokumen.id,
},
});
console.log(["DELETE DOKUMEN INVESTASI", deleteDokumen]);
}
if (investasi?.prospektusFileId) {
const deleteProspektusFile = await fetch(
`https://wibu-storage.wibudev.com/api/files/${investasi.prospektusFileId}/delete`,
{
method: "DELETE",
headers: {
Authorization: `Bearer ${process.env.WS_APIKEY}`,
},
}
);
if (deleteProspektusFile.ok) {
console.log("Success delete prospektus file investasi");
}
}
if (investasi?.imageId) {
const deleteInvestasiImage = await fetch(
`https://wibu-storage.wibudev.com/api/files/${investasi.imageId}/delete`,
{
method: "DELETE",
headers: {
Authorization: `Bearer ${process.env.WS_APIKEY}`,
},
}
);
if (deleteInvestasiImage.ok) {
console.log("Success delete image investasi");
}
}
const deleteInvestasi = await prisma.investasi.delete({
where: {
id: investasi.id,
},
});
console.log(["DELETE INVESTASI", deleteInvestasi]);
}
// INVESTASI END
// DONASI START
for (let donasiInvoice of checkUser?.Donasi_Invoice as any) {
if (donasiInvoice?.imageId) {
const deleteInvoiceImage = await fetch(
`https://wibu-storage.wibudev.com/api/files/${donasiInvoice.imageId}/delete`,
{
method: "DELETE",
headers: {
Authorization: `Bearer ${process.env.WS_APIKEY}`,
},
}
);
if (deleteInvoiceImage.ok) {
console.log("Success delete invoice image");
}
}
const deleteInvoice = await prisma.donasi_Invoice.delete({
where: {
id: donasiInvoice.id,
},
});
console.log(["DELETE INVOICE DONASI", deleteInvoice]);
}
for (let donasi of checkUser?.Donasi as any) {
for (let kabar of donasi?.Donasi_Kabar as any) {
if (kabar?.imageId) {
const deleteKabarImage = await fetch(
`https://wibu-storage.wibudev.com/api/files/${kabar.imageId}/delete`,
{
method: "DELETE",
headers: {
Authorization: `Bearer ${process.env.WS_APIKEY}`,
},
}
);
if (deleteKabarImage.ok) {
console.log("Success delete kabar image");
}
}
const deleteKabar = await prisma.donasi_Kabar.delete({
where: {
id: kabar.id,
},
});
console.log(["DELETE KABAR DONASI", deleteKabar]);
}
for (let pencairanDana of donasi?.Donasi_PencairanDana as any) {
if (pencairanDana?.imageId) {
const deletePencairanDanaImage = await fetch(
`https://wibu-storage.wibudev.com/api/files/${pencairanDana.imageId}/delete`,
{
method: "DELETE",
headers: {
Authorization: `Bearer ${process.env.WS_APIKEY}`,
},
}
);
if (deletePencairanDanaImage.ok) {
console.log("Success delete pencairan dana image");
}
}
const deletePencairanDana = await prisma.donasi_PencairanDana.delete({
where: {
id: pencairanDana.id,
},
});
console.log(["DELETE PENCAIRAN DANA DONASI", deletePencairanDana]);
}
const deleteImageCerita = await fetch(
`https://wibu-storage.wibudev.com/api/files/${donasi?.CeritaDonasi?.imageId}/delete`,
{
method: "DELETE",
headers: {
Authorization: `Bearer ${process.env.WS_APIKEY}`,
},
}
);
if (deleteImageCerita.ok) {
console.log("Success delete image cerita donasi");
}
const deleteCerita = await prisma.donasi_Cerita.delete({
where: {
donasiId: donasi.id,
},
});
console.log(["DELETE CERITA DONASI", deleteCerita]);
const deleteImageDonasi = await fetch(
`https://wibu-storage.wibudev.com/api/files/${donasi?.imageId}/delete`,
{
method: "DELETE",
headers: {
Authorization: `Bearer ${process.env.WS_APIKEY}`,
},
}
);
if (deleteImageDonasi.ok) {
console.log("Success delete image donasi");
}
const deleteDonasi = await prisma.donasi.delete({
where: {
id: donasi.id,
},
});
console.log(["DELETE DONASI", deleteDonasi]);
}
// DONASI END
// PORTOFOLIO DELETE START
for (const portofolio of checkUser?.Profile?.Portofolio as any) {
if (portofolio?.BusinessMaps?.id) {
const deleteLogo = await fetch(
`https://wibu-storage.wibudev.com/api/files/${portofolio?.BusinessMaps?.imageId}/delete`,
{
method: "DELETE",
headers: {
Authorization: `Bearer ${process.env.WS_APIKEY}`,
},
}
);
if (deleteLogo.ok) {
console.log("Success delete logo");
}
const deleteMaps = await prisma.businessMaps.delete({
where: {
id: portofolio?.BusinessMaps?.id,
},
});
console.log(["DELETE MAPS", deleteMaps]);
}
if (portofolio?.Portofolio_MediaSosial?.id) {
const deleteSosialMedia = await prisma.portofolio_MediaSosial.delete({
where: {
portofolioId: portofolio.id,
},
});
console.log(["DELETE SOSIAL MEDIA", deleteSosialMedia]);
}
if (portofolio?.logoId) {
const deleteLogo = await fetch(
`https://wibu-storage.wibudev.com/api/files/${portofolio?.logoId}/delete`,
{
method: "DELETE",
headers: {
Authorization: `Bearer ${process.env.WS_APIKEY}`,
},
}
);
if (deleteLogo.ok) {
console.log("Success delete logo");
}
}
const deletePortofolio = await prisma.portofolio.delete({
where: {
id: portofolio.id,
},
});
console.log(["DELETE PORTOFOLIO", deletePortofolio]);
}
const deleteProfile = await prisma.profile.delete({
where: {
userId: id,
},
});
console.log(["DELETE PROFILE", deleteProfile]);
// PORTOFOLIO DELETE END
const deleteUser = await prisma.user.delete({
where: {
id: id,
},
});
console.log(["DELETE USER", deleteUser]);
console.log("[END DELETE ALL >>>]");
return NextResponse.json(
{ success: true, message: "Berhasil menghapus data" },
{ status: 200 }
);
} catch (error) {
console.log(["ERROR DELETE ALL", error]);
return NextResponse.json(
{
success: false,
message: "Error delete data from API ",
reason: (error as Error).message,
},
{ status: 500 }
);
}
}

View File

@@ -18,7 +18,9 @@ const CONFIG: MiddlewareConfig = {
userPath: "/dev/home",
publicRoutes: [
"/",
"/.well-known/*",
"/privacy-policy.html",
"/api/helper/*",
"/api/not-user/*",
"/api/voting/*",
"/api/collaboration/*",
@@ -37,6 +39,8 @@ const CONFIG: MiddlewareConfig = {
"/register",
"/validasi",
"/splash",
"/support-center",
"/delete-account",
"/invalid-user",
"/job-vacancy/*",
"/preview-image",
@@ -46,6 +50,7 @@ const CONFIG: MiddlewareConfig = {
"/zCoba/*",
"/aset/global/main_background.png",
"/aset/logo/logo-hipmi.png",
"/aset/logo/hiconnect.png",
],
encodedKey: process.env.NEXT_PUBLIC_BASE_TOKEN_KEY!,
sessionKey: process.env.NEXT_PUBLIC_BASE_SESSION_KEY!,