an attempt at a lightweight photo/album viewer

a basic typescript+python photos API backend

+3506 -3
+10
.gitignore
··· 4 4 frontend/dist/*.js.map 5 5 6 6 frontend/test-results 7 + 8 + .env 7 9 .env.* 10 + !.env.template 11 + 12 + preprocessing/albums-api-client 13 + 14 + *.swp 8 15 9 16 frontend/test-diff 17 + 18 + server/*.db 19 + server/build
+1
preprocessing/.python-version
··· 1 + 3.14
+5
preprocessing/gen-db-sdk.sh
··· 1 + #!/bin/sh 2 + 3 + SCHEMA=openapi.json 4 + 5 + uv run openapi-python-client generate --overwrite --path ../server/build/$SCHEMA
+2 -3
preprocessing/geocoding.typ
··· 7 7 8 8 #title() 9 9 10 - The following aims to fully describe the pre-processing some photo 11 - metadata to have information about a personal collection of photos to 12 - support the display in a gallery application. 10 + Deriving location context from photos with positional metadata. 11 + to support the display in a gallery application. 13 12 14 13 This will cover functionality including: 15 14 - partitioning photos to ease the frontend data volume
+6
preprocessing/main.py
··· 1 + def main(): 2 + print("Hello from preprocessing!") 3 + 4 + 5 + if __name__ == "__main__": 6 + main()
+9
preprocessing/pyproject.toml
··· 1 + [project] 2 + name = "preprocessing" 3 + version = "0.1.0" 4 + description = "Add your description here" 5 + readme = "README.md" 6 + requires-python = ">=3.14" 7 + dependencies = [ 8 + "openapi-python-client>=0.28.0", 9 + ]
+1
preprocessing/requirements.txt
··· 1 + openapi-python-client
+402
preprocessing/uv.lock
··· 1 + version = 1 2 + revision = 3 3 + requires-python = ">=3.14" 4 + 5 + [[package]] 6 + name = "annotated-types" 7 + version = "0.7.0" 8 + source = { registry = "https://pypi.org/simple" } 9 + sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081, upload-time = "2024-05-20T21:33:25.928Z" } 10 + wheels = [ 11 + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload-time = "2024-05-20T21:33:24.1Z" }, 12 + ] 13 + 14 + [[package]] 15 + name = "anyio" 16 + version = "4.12.0" 17 + source = { registry = "https://pypi.org/simple" } 18 + dependencies = [ 19 + { name = "idna" }, 20 + ] 21 + sdist = { url = "https://files.pythonhosted.org/packages/16/ce/8a777047513153587e5434fd752e89334ac33e379aa3497db860eeb60377/anyio-4.12.0.tar.gz", hash = "sha256:73c693b567b0c55130c104d0b43a9baf3aa6a31fc6110116509f27bf75e21ec0", size = 228266, upload-time = "2025-11-28T23:37:38.911Z" } 22 + wheels = [ 23 + { url = "https://files.pythonhosted.org/packages/7f/9c/36c5c37947ebfb8c7f22e0eb6e4d188ee2d53aa3880f3f2744fb894f0cb1/anyio-4.12.0-py3-none-any.whl", hash = "sha256:dad2376a628f98eeca4881fc56cd06affd18f659b17a747d3ff0307ced94b1bb", size = 113362, upload-time = "2025-11-28T23:36:57.897Z" }, 24 + ] 25 + 26 + [[package]] 27 + name = "attrs" 28 + version = "25.4.0" 29 + source = { registry = "https://pypi.org/simple" } 30 + sdist = { url = "https://files.pythonhosted.org/packages/6b/5c/685e6633917e101e5dcb62b9dd76946cbb57c26e133bae9e0cd36033c0a9/attrs-25.4.0.tar.gz", hash = "sha256:16d5969b87f0859ef33a48b35d55ac1be6e42ae49d5e853b597db70c35c57e11", size = 934251, upload-time = "2025-10-06T13:54:44.725Z" } 31 + wheels = [ 32 + { url = "https://files.pythonhosted.org/packages/3a/2a/7cc015f5b9f5db42b7d48157e23356022889fc354a2813c15934b7cb5c0e/attrs-25.4.0-py3-none-any.whl", hash = "sha256:adcf7e2a1fb3b36ac48d97835bb6d8ade15b8dcce26aba8bf1d14847b57a3373", size = 67615, upload-time = "2025-10-06T13:54:43.17Z" }, 33 + ] 34 + 35 + [[package]] 36 + name = "certifi" 37 + version = "2025.11.12" 38 + source = { registry = "https://pypi.org/simple" } 39 + sdist = { url = "https://files.pythonhosted.org/packages/a2/8c/58f469717fa48465e4a50c014a0400602d3c437d7c0c468e17ada824da3a/certifi-2025.11.12.tar.gz", hash = "sha256:d8ab5478f2ecd78af242878415affce761ca6bc54a22a27e026d7c25357c3316", size = 160538, upload-time = "2025-11-12T02:54:51.517Z" } 40 + wheels = [ 41 + { url = "https://files.pythonhosted.org/packages/70/7d/9bc192684cea499815ff478dfcdc13835ddf401365057044fb721ec6bddb/certifi-2025.11.12-py3-none-any.whl", hash = "sha256:97de8790030bbd5c2d96b7ec782fc2f7820ef8dba6db909ccf95449f2d062d4b", size = 159438, upload-time = "2025-11-12T02:54:49.735Z" }, 42 + ] 43 + 44 + [[package]] 45 + name = "click" 46 + version = "8.3.1" 47 + source = { registry = "https://pypi.org/simple" } 48 + dependencies = [ 49 + { name = "colorama", marker = "sys_platform == 'win32'" }, 50 + ] 51 + sdist = { url = "https://files.pythonhosted.org/packages/3d/fa/656b739db8587d7b5dfa22e22ed02566950fbfbcdc20311993483657a5c0/click-8.3.1.tar.gz", hash = "sha256:12ff4785d337a1bb490bb7e9c2b1ee5da3112e94a8622f26a6c77f5d2fc6842a", size = 295065, upload-time = "2025-11-15T20:45:42.706Z" } 52 + wheels = [ 53 + { url = "https://files.pythonhosted.org/packages/98/78/01c019cdb5d6498122777c1a43056ebb3ebfeef2076d9d026bfe15583b2b/click-8.3.1-py3-none-any.whl", hash = "sha256:981153a64e25f12d547d3426c367a4857371575ee7ad18df2a6183ab0545b2a6", size = 108274, upload-time = "2025-11-15T20:45:41.139Z" }, 54 + ] 55 + 56 + [[package]] 57 + name = "colorama" 58 + version = "0.4.6" 59 + source = { registry = "https://pypi.org/simple" } 60 + sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } 61 + wheels = [ 62 + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, 63 + ] 64 + 65 + [[package]] 66 + name = "h11" 67 + version = "0.16.0" 68 + source = { registry = "https://pypi.org/simple" } 69 + sdist = { url = "https://files.pythonhosted.org/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1", size = 101250, upload-time = "2025-04-24T03:35:25.427Z" } 70 + wheels = [ 71 + { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515, upload-time = "2025-04-24T03:35:24.344Z" }, 72 + ] 73 + 74 + [[package]] 75 + name = "httpcore" 76 + version = "1.0.9" 77 + source = { registry = "https://pypi.org/simple" } 78 + dependencies = [ 79 + { name = "certifi" }, 80 + { name = "h11" }, 81 + ] 82 + sdist = { url = "https://files.pythonhosted.org/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8", size = 85484, upload-time = "2025-04-24T22:06:22.219Z" } 83 + wheels = [ 84 + { url = "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55", size = 78784, upload-time = "2025-04-24T22:06:20.566Z" }, 85 + ] 86 + 87 + [[package]] 88 + name = "httpx" 89 + version = "0.28.1" 90 + source = { registry = "https://pypi.org/simple" } 91 + dependencies = [ 92 + { name = "anyio" }, 93 + { name = "certifi" }, 94 + { name = "httpcore" }, 95 + { name = "idna" }, 96 + ] 97 + sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141406, upload-time = "2024-12-06T15:37:23.222Z" } 98 + wheels = [ 99 + { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517, upload-time = "2024-12-06T15:37:21.509Z" }, 100 + ] 101 + 102 + [[package]] 103 + name = "idna" 104 + version = "3.11" 105 + source = { registry = "https://pypi.org/simple" } 106 + sdist = { url = "https://files.pythonhosted.org/packages/6f/6d/0703ccc57f3a7233505399edb88de3cbd678da106337b9fcde432b65ed60/idna-3.11.tar.gz", hash = "sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902", size = 194582, upload-time = "2025-10-12T14:55:20.501Z" } 107 + wheels = [ 108 + { url = "https://files.pythonhosted.org/packages/0e/61/66938bbb5fc52dbdf84594873d5b51fb1f7c7794e9c0f5bd885f30bc507b/idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea", size = 71008, upload-time = "2025-10-12T14:55:18.883Z" }, 109 + ] 110 + 111 + [[package]] 112 + name = "jinja2" 113 + version = "3.1.6" 114 + source = { registry = "https://pypi.org/simple" } 115 + dependencies = [ 116 + { name = "markupsafe" }, 117 + ] 118 + sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115, upload-time = "2025-03-05T20:05:02.478Z" } 119 + wheels = [ 120 + { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload-time = "2025-03-05T20:05:00.369Z" }, 121 + ] 122 + 123 + [[package]] 124 + name = "markdown-it-py" 125 + version = "4.0.0" 126 + source = { registry = "https://pypi.org/simple" } 127 + dependencies = [ 128 + { name = "mdurl" }, 129 + ] 130 + sdist = { url = "https://files.pythonhosted.org/packages/5b/f5/4ec618ed16cc4f8fb3b701563655a69816155e79e24a17b651541804721d/markdown_it_py-4.0.0.tar.gz", hash = "sha256:cb0a2b4aa34f932c007117b194e945bd74e0ec24133ceb5bac59009cda1cb9f3", size = 73070, upload-time = "2025-08-11T12:57:52.854Z" } 131 + wheels = [ 132 + { url = "https://files.pythonhosted.org/packages/94/54/e7d793b573f298e1c9013b8c4dade17d481164aa517d1d7148619c2cedbf/markdown_it_py-4.0.0-py3-none-any.whl", hash = "sha256:87327c59b172c5011896038353a81343b6754500a08cd7a4973bb48c6d578147", size = 87321, upload-time = "2025-08-11T12:57:51.923Z" }, 133 + ] 134 + 135 + [[package]] 136 + name = "markupsafe" 137 + version = "3.0.3" 138 + source = { registry = "https://pypi.org/simple" } 139 + sdist = { url = "https://files.pythonhosted.org/packages/7e/99/7690b6d4034fffd95959cbe0c02de8deb3098cc577c67bb6a24fe5d7caa7/markupsafe-3.0.3.tar.gz", hash = "sha256:722695808f4b6457b320fdc131280796bdceb04ab50fe1795cd540799ebe1698", size = 80313, upload-time = "2025-09-27T18:37:40.426Z" } 140 + wheels = [ 141 + { url = "https://files.pythonhosted.org/packages/33/8a/8e42d4838cd89b7dde187011e97fe6c3af66d8c044997d2183fbd6d31352/markupsafe-3.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:eaa9599de571d72e2daf60164784109f19978b327a3910d3e9de8c97b5b70cfe", size = 11619, upload-time = "2025-09-27T18:37:06.342Z" }, 142 + { url = "https://files.pythonhosted.org/packages/b5/64/7660f8a4a8e53c924d0fa05dc3a55c9cee10bbd82b11c5afb27d44b096ce/markupsafe-3.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c47a551199eb8eb2121d4f0f15ae0f923d31350ab9280078d1e5f12b249e0026", size = 12029, upload-time = "2025-09-27T18:37:07.213Z" }, 143 + { url = "https://files.pythonhosted.org/packages/da/ef/e648bfd021127bef5fa12e1720ffed0c6cbb8310c8d9bea7266337ff06de/markupsafe-3.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f34c41761022dd093b4b6896d4810782ffbabe30f2d443ff5f083e0cbbb8c737", size = 24408, upload-time = "2025-09-27T18:37:09.572Z" }, 144 + { url = "https://files.pythonhosted.org/packages/41/3c/a36c2450754618e62008bf7435ccb0f88053e07592e6028a34776213d877/markupsafe-3.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:457a69a9577064c05a97c41f4e65148652db078a3a509039e64d3467b9e7ef97", size = 23005, upload-time = "2025-09-27T18:37:10.58Z" }, 145 + { url = "https://files.pythonhosted.org/packages/bc/20/b7fdf89a8456b099837cd1dc21974632a02a999ec9bf7ca3e490aacd98e7/markupsafe-3.0.3-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e8afc3f2ccfa24215f8cb28dcf43f0113ac3c37c2f0f0806d8c70e4228c5cf4d", size = 22048, upload-time = "2025-09-27T18:37:11.547Z" }, 146 + { url = "https://files.pythonhosted.org/packages/9a/a7/591f592afdc734f47db08a75793a55d7fbcc6902a723ae4cfbab61010cc5/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ec15a59cf5af7be74194f7ab02d0f59a62bdcf1a537677ce67a2537c9b87fcda", size = 23821, upload-time = "2025-09-27T18:37:12.48Z" }, 147 + { url = "https://files.pythonhosted.org/packages/7d/33/45b24e4f44195b26521bc6f1a82197118f74df348556594bd2262bda1038/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:0eb9ff8191e8498cca014656ae6b8d61f39da5f95b488805da4bb029cccbfbaf", size = 21606, upload-time = "2025-09-27T18:37:13.485Z" }, 148 + { url = "https://files.pythonhosted.org/packages/ff/0e/53dfaca23a69fbfbbf17a4b64072090e70717344c52eaaaa9c5ddff1e5f0/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2713baf880df847f2bece4230d4d094280f4e67b1e813eec43b4c0e144a34ffe", size = 23043, upload-time = "2025-09-27T18:37:14.408Z" }, 149 + { url = "https://files.pythonhosted.org/packages/46/11/f333a06fc16236d5238bfe74daccbca41459dcd8d1fa952e8fbd5dccfb70/markupsafe-3.0.3-cp314-cp314-win32.whl", hash = "sha256:729586769a26dbceff69f7a7dbbf59ab6572b99d94576a5592625d5b411576b9", size = 14747, upload-time = "2025-09-27T18:37:15.36Z" }, 150 + { url = "https://files.pythonhosted.org/packages/28/52/182836104b33b444e400b14f797212f720cbc9ed6ba34c800639d154e821/markupsafe-3.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:bdc919ead48f234740ad807933cdf545180bfbe9342c2bb451556db2ed958581", size = 15341, upload-time = "2025-09-27T18:37:16.496Z" }, 151 + { url = "https://files.pythonhosted.org/packages/6f/18/acf23e91bd94fd7b3031558b1f013adfa21a8e407a3fdb32745538730382/markupsafe-3.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:5a7d5dc5140555cf21a6fefbdbf8723f06fcd2f63ef108f2854de715e4422cb4", size = 14073, upload-time = "2025-09-27T18:37:17.476Z" }, 152 + { url = "https://files.pythonhosted.org/packages/3c/f0/57689aa4076e1b43b15fdfa646b04653969d50cf30c32a102762be2485da/markupsafe-3.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:1353ef0c1b138e1907ae78e2f6c63ff67501122006b0f9abad68fda5f4ffc6ab", size = 11661, upload-time = "2025-09-27T18:37:18.453Z" }, 153 + { url = "https://files.pythonhosted.org/packages/89/c3/2e67a7ca217c6912985ec766c6393b636fb0c2344443ff9d91404dc4c79f/markupsafe-3.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:1085e7fbddd3be5f89cc898938f42c0b3c711fdcb37d75221de2666af647c175", size = 12069, upload-time = "2025-09-27T18:37:19.332Z" }, 154 + { url = "https://files.pythonhosted.org/packages/f0/00/be561dce4e6ca66b15276e184ce4b8aec61fe83662cce2f7d72bd3249d28/markupsafe-3.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1b52b4fb9df4eb9ae465f8d0c228a00624de2334f216f178a995ccdcf82c4634", size = 25670, upload-time = "2025-09-27T18:37:20.245Z" }, 155 + { url = "https://files.pythonhosted.org/packages/50/09/c419f6f5a92e5fadde27efd190eca90f05e1261b10dbd8cbcb39cd8ea1dc/markupsafe-3.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fed51ac40f757d41b7c48425901843666a6677e3e8eb0abcff09e4ba6e664f50", size = 23598, upload-time = "2025-09-27T18:37:21.177Z" }, 156 + { url = "https://files.pythonhosted.org/packages/22/44/a0681611106e0b2921b3033fc19bc53323e0b50bc70cffdd19f7d679bb66/markupsafe-3.0.3-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:f190daf01f13c72eac4efd5c430a8de82489d9cff23c364c3ea822545032993e", size = 23261, upload-time = "2025-09-27T18:37:22.167Z" }, 157 + { url = "https://files.pythonhosted.org/packages/5f/57/1b0b3f100259dc9fffe780cfb60d4be71375510e435efec3d116b6436d43/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e56b7d45a839a697b5eb268c82a71bd8c7f6c94d6fd50c3d577fa39a9f1409f5", size = 24835, upload-time = "2025-09-27T18:37:23.296Z" }, 158 + { url = "https://files.pythonhosted.org/packages/26/6a/4bf6d0c97c4920f1597cc14dd720705eca0bf7c787aebc6bb4d1bead5388/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:f3e98bb3798ead92273dc0e5fd0f31ade220f59a266ffd8a4f6065e0a3ce0523", size = 22733, upload-time = "2025-09-27T18:37:24.237Z" }, 159 + { url = "https://files.pythonhosted.org/packages/14/c7/ca723101509b518797fedc2fdf79ba57f886b4aca8a7d31857ba3ee8281f/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:5678211cb9333a6468fb8d8be0305520aa073f50d17f089b5b4b477ea6e67fdc", size = 23672, upload-time = "2025-09-27T18:37:25.271Z" }, 160 + { url = "https://files.pythonhosted.org/packages/fb/df/5bd7a48c256faecd1d36edc13133e51397e41b73bb77e1a69deab746ebac/markupsafe-3.0.3-cp314-cp314t-win32.whl", hash = "sha256:915c04ba3851909ce68ccc2b8e2cd691618c4dc4c4232fb7982bca3f41fd8c3d", size = 14819, upload-time = "2025-09-27T18:37:26.285Z" }, 161 + { url = "https://files.pythonhosted.org/packages/1a/8a/0402ba61a2f16038b48b39bccca271134be00c5c9f0f623208399333c448/markupsafe-3.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4faffd047e07c38848ce017e8725090413cd80cbc23d86e55c587bf979e579c9", size = 15426, upload-time = "2025-09-27T18:37:27.316Z" }, 162 + { url = "https://files.pythonhosted.org/packages/70/bc/6f1c2f612465f5fa89b95bead1f44dcb607670fd42891d8fdcd5d039f4f4/markupsafe-3.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:32001d6a8fc98c8cb5c947787c5d08b0a50663d139f1305bac5885d98d9b40fa", size = 14146, upload-time = "2025-09-27T18:37:28.327Z" }, 163 + ] 164 + 165 + [[package]] 166 + name = "mdurl" 167 + version = "0.1.2" 168 + source = { registry = "https://pypi.org/simple" } 169 + sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729, upload-time = "2022-08-14T12:40:10.846Z" } 170 + wheels = [ 171 + { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979, upload-time = "2022-08-14T12:40:09.779Z" }, 172 + ] 173 + 174 + [[package]] 175 + name = "openapi-python-client" 176 + version = "0.28.0" 177 + source = { registry = "https://pypi.org/simple" } 178 + dependencies = [ 179 + { name = "attrs" }, 180 + { name = "colorama", marker = "sys_platform == 'win32'" }, 181 + { name = "httpx" }, 182 + { name = "jinja2" }, 183 + { name = "pydantic" }, 184 + { name = "python-dateutil" }, 185 + { name = "ruamel-yaml" }, 186 + { name = "ruff" }, 187 + { name = "shellingham" }, 188 + { name = "typer" }, 189 + ] 190 + sdist = { url = "https://files.pythonhosted.org/packages/f8/5f/78cf6f3aa1015b27ae725593eb04f98caa934d4ab3681efbe596437f3edd/openapi_python_client-0.28.0.tar.gz", hash = "sha256:e0162b17bfee9b990d4dc38b256af129e0035e551a33dac8e4d5d4abfdb7c3d2", size = 125884, upload-time = "2025-12-03T20:54:20.57Z" } 191 + wheels = [ 192 + { url = "https://files.pythonhosted.org/packages/f0/a3/f5ca1ddefc1e9ffd04fea2fadc070235e1fc83188053aaa0d1b215484943/openapi_python_client-0.28.0-py3-none-any.whl", hash = "sha256:d2c2f4dabb7fe12377cb0f0f6c50ad5ade3922cae7940510422ca844cae4dca4", size = 183131, upload-time = "2025-12-03T20:54:18.747Z" }, 193 + ] 194 + 195 + [[package]] 196 + name = "preprocessing" 197 + version = "0.1.0" 198 + source = { virtual = "." } 199 + dependencies = [ 200 + { name = "openapi-python-client" }, 201 + ] 202 + 203 + [package.metadata] 204 + requires-dist = [{ name = "openapi-python-client", specifier = ">=0.28.0" }] 205 + 206 + [[package]] 207 + name = "pydantic" 208 + version = "2.12.5" 209 + source = { registry = "https://pypi.org/simple" } 210 + dependencies = [ 211 + { name = "annotated-types" }, 212 + { name = "pydantic-core" }, 213 + { name = "typing-extensions" }, 214 + { name = "typing-inspection" }, 215 + ] 216 + sdist = { url = "https://files.pythonhosted.org/packages/69/44/36f1a6e523abc58ae5f928898e4aca2e0ea509b5aa6f6f392a5d882be928/pydantic-2.12.5.tar.gz", hash = "sha256:4d351024c75c0f085a9febbb665ce8c0c6ec5d30e903bdb6394b7ede26aebb49", size = 821591, upload-time = "2025-11-26T15:11:46.471Z" } 217 + wheels = [ 218 + { url = "https://files.pythonhosted.org/packages/5a/87/b70ad306ebb6f9b585f114d0ac2137d792b48be34d732d60e597c2f8465a/pydantic-2.12.5-py3-none-any.whl", hash = "sha256:e561593fccf61e8a20fc46dfc2dfe075b8be7d0188df33f221ad1f0139180f9d", size = 463580, upload-time = "2025-11-26T15:11:44.605Z" }, 219 + ] 220 + 221 + [[package]] 222 + name = "pydantic-core" 223 + version = "2.41.5" 224 + source = { registry = "https://pypi.org/simple" } 225 + dependencies = [ 226 + { name = "typing-extensions" }, 227 + ] 228 + sdist = { url = "https://files.pythonhosted.org/packages/71/70/23b021c950c2addd24ec408e9ab05d59b035b39d97cdc1130e1bce647bb6/pydantic_core-2.41.5.tar.gz", hash = "sha256:08daa51ea16ad373ffd5e7606252cc32f07bc72b28284b6bc9c6df804816476e", size = 460952, upload-time = "2025-11-04T13:43:49.098Z" } 229 + wheels = [ 230 + { url = "https://files.pythonhosted.org/packages/ea/28/46b7c5c9635ae96ea0fbb779e271a38129df2550f763937659ee6c5dbc65/pydantic_core-2.41.5-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:3f37a19d7ebcdd20b96485056ba9e8b304e27d9904d233d7b1015db320e51f0a", size = 2119622, upload-time = "2025-11-04T13:40:56.68Z" }, 231 + { url = "https://files.pythonhosted.org/packages/74/1a/145646e5687e8d9a1e8d09acb278c8535ebe9e972e1f162ed338a622f193/pydantic_core-2.41.5-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:1d1d9764366c73f996edd17abb6d9d7649a7eb690006ab6adbda117717099b14", size = 1891725, upload-time = "2025-11-04T13:40:58.807Z" }, 232 + { url = "https://files.pythonhosted.org/packages/23/04/e89c29e267b8060b40dca97bfc64a19b2a3cf99018167ea1677d96368273/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25e1c2af0fce638d5f1988b686f3b3ea8cd7de5f244ca147c777769e798a9cd1", size = 1915040, upload-time = "2025-11-04T13:41:00.853Z" }, 233 + { url = "https://files.pythonhosted.org/packages/84/a3/15a82ac7bd97992a82257f777b3583d3e84bdb06ba6858f745daa2ec8a85/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:506d766a8727beef16b7adaeb8ee6217c64fc813646b424d0804d67c16eddb66", size = 2063691, upload-time = "2025-11-04T13:41:03.504Z" }, 234 + { url = "https://files.pythonhosted.org/packages/74/9b/0046701313c6ef08c0c1cf0e028c67c770a4e1275ca73131563c5f2a310a/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4819fa52133c9aa3c387b3328f25c1facc356491e6135b459f1de698ff64d869", size = 2213897, upload-time = "2025-11-04T13:41:05.804Z" }, 235 + { url = "https://files.pythonhosted.org/packages/8a/cd/6bac76ecd1b27e75a95ca3a9a559c643b3afcd2dd62086d4b7a32a18b169/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2b761d210c9ea91feda40d25b4efe82a1707da2ef62901466a42492c028553a2", size = 2333302, upload-time = "2025-11-04T13:41:07.809Z" }, 236 + { url = "https://files.pythonhosted.org/packages/4c/d2/ef2074dc020dd6e109611a8be4449b98cd25e1b9b8a303c2f0fca2f2bcf7/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22f0fb8c1c583a3b6f24df2470833b40207e907b90c928cc8d3594b76f874375", size = 2064877, upload-time = "2025-11-04T13:41:09.827Z" }, 237 + { url = "https://files.pythonhosted.org/packages/18/66/e9db17a9a763d72f03de903883c057b2592c09509ccfe468187f2a2eef29/pydantic_core-2.41.5-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2782c870e99878c634505236d81e5443092fba820f0373997ff75f90f68cd553", size = 2180680, upload-time = "2025-11-04T13:41:12.379Z" }, 238 + { url = "https://files.pythonhosted.org/packages/d3/9e/3ce66cebb929f3ced22be85d4c2399b8e85b622db77dad36b73c5387f8f8/pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:0177272f88ab8312479336e1d777f6b124537d47f2123f89cb37e0accea97f90", size = 2138960, upload-time = "2025-11-04T13:41:14.627Z" }, 239 + { url = "https://files.pythonhosted.org/packages/a6/62/205a998f4327d2079326b01abee48e502ea739d174f0a89295c481a2272e/pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:63510af5e38f8955b8ee5687740d6ebf7c2a0886d15a6d65c32814613681bc07", size = 2339102, upload-time = "2025-11-04T13:41:16.868Z" }, 240 + { url = "https://files.pythonhosted.org/packages/3c/0d/f05e79471e889d74d3d88f5bd20d0ed189ad94c2423d81ff8d0000aab4ff/pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:e56ba91f47764cc14f1daacd723e3e82d1a89d783f0f5afe9c364b8bb491ccdb", size = 2326039, upload-time = "2025-11-04T13:41:18.934Z" }, 241 + { url = "https://files.pythonhosted.org/packages/ec/e1/e08a6208bb100da7e0c4b288eed624a703f4d129bde2da475721a80cab32/pydantic_core-2.41.5-cp314-cp314-win32.whl", hash = "sha256:aec5cf2fd867b4ff45b9959f8b20ea3993fc93e63c7363fe6851424c8a7e7c23", size = 1995126, upload-time = "2025-11-04T13:41:21.418Z" }, 242 + { url = "https://files.pythonhosted.org/packages/48/5d/56ba7b24e9557f99c9237e29f5c09913c81eeb2f3217e40e922353668092/pydantic_core-2.41.5-cp314-cp314-win_amd64.whl", hash = "sha256:8e7c86f27c585ef37c35e56a96363ab8de4e549a95512445b85c96d3e2f7c1bf", size = 2015489, upload-time = "2025-11-04T13:41:24.076Z" }, 243 + { url = "https://files.pythonhosted.org/packages/4e/bb/f7a190991ec9e3e0ba22e4993d8755bbc4a32925c0b5b42775c03e8148f9/pydantic_core-2.41.5-cp314-cp314-win_arm64.whl", hash = "sha256:e672ba74fbc2dc8eea59fb6d4aed6845e6905fc2a8afe93175d94a83ba2a01a0", size = 1977288, upload-time = "2025-11-04T13:41:26.33Z" }, 244 + { url = "https://files.pythonhosted.org/packages/92/ed/77542d0c51538e32e15afe7899d79efce4b81eee631d99850edc2f5e9349/pydantic_core-2.41.5-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:8566def80554c3faa0e65ac30ab0932b9e3a5cd7f8323764303d468e5c37595a", size = 2120255, upload-time = "2025-11-04T13:41:28.569Z" }, 245 + { url = "https://files.pythonhosted.org/packages/bb/3d/6913dde84d5be21e284439676168b28d8bbba5600d838b9dca99de0fad71/pydantic_core-2.41.5-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:b80aa5095cd3109962a298ce14110ae16b8c1aece8b72f9dafe81cf597ad80b3", size = 1863760, upload-time = "2025-11-04T13:41:31.055Z" }, 246 + { url = "https://files.pythonhosted.org/packages/5a/f0/e5e6b99d4191da102f2b0eb9687aaa7f5bea5d9964071a84effc3e40f997/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3006c3dd9ba34b0c094c544c6006cc79e87d8612999f1a5d43b769b89181f23c", size = 1878092, upload-time = "2025-11-04T13:41:33.21Z" }, 247 + { url = "https://files.pythonhosted.org/packages/71/48/36fb760642d568925953bcc8116455513d6e34c4beaa37544118c36aba6d/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:72f6c8b11857a856bcfa48c86f5368439f74453563f951e473514579d44aa612", size = 2053385, upload-time = "2025-11-04T13:41:35.508Z" }, 248 + { url = "https://files.pythonhosted.org/packages/20/25/92dc684dd8eb75a234bc1c764b4210cf2646479d54b47bf46061657292a8/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5cb1b2f9742240e4bb26b652a5aeb840aa4b417c7748b6f8387927bc6e45e40d", size = 2218832, upload-time = "2025-11-04T13:41:37.732Z" }, 249 + { url = "https://files.pythonhosted.org/packages/e2/09/f53e0b05023d3e30357d82eb35835d0f6340ca344720a4599cd663dca599/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bd3d54f38609ff308209bd43acea66061494157703364ae40c951f83ba99a1a9", size = 2327585, upload-time = "2025-11-04T13:41:40Z" }, 250 + { url = "https://files.pythonhosted.org/packages/aa/4e/2ae1aa85d6af35a39b236b1b1641de73f5a6ac4d5a7509f77b814885760c/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ff4321e56e879ee8d2a879501c8e469414d948f4aba74a2d4593184eb326660", size = 2041078, upload-time = "2025-11-04T13:41:42.323Z" }, 251 + { url = "https://files.pythonhosted.org/packages/cd/13/2e215f17f0ef326fc72afe94776edb77525142c693767fc347ed6288728d/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d0d2568a8c11bf8225044aa94409e21da0cb09dcdafe9ecd10250b2baad531a9", size = 2173914, upload-time = "2025-11-04T13:41:45.221Z" }, 252 + { url = "https://files.pythonhosted.org/packages/02/7a/f999a6dcbcd0e5660bc348a3991c8915ce6599f4f2c6ac22f01d7a10816c/pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:a39455728aabd58ceabb03c90e12f71fd30fa69615760a075b9fec596456ccc3", size = 2129560, upload-time = "2025-11-04T13:41:47.474Z" }, 253 + { url = "https://files.pythonhosted.org/packages/3a/b1/6c990ac65e3b4c079a4fb9f5b05f5b013afa0f4ed6780a3dd236d2cbdc64/pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_armv7l.whl", hash = "sha256:239edca560d05757817c13dc17c50766136d21f7cd0fac50295499ae24f90fdf", size = 2329244, upload-time = "2025-11-04T13:41:49.992Z" }, 254 + { url = "https://files.pythonhosted.org/packages/d9/02/3c562f3a51afd4d88fff8dffb1771b30cfdfd79befd9883ee094f5b6c0d8/pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:2a5e06546e19f24c6a96a129142a75cee553cc018ffee48a460059b1185f4470", size = 2331955, upload-time = "2025-11-04T13:41:54.079Z" }, 255 + { url = "https://files.pythonhosted.org/packages/5c/96/5fb7d8c3c17bc8c62fdb031c47d77a1af698f1d7a406b0f79aaa1338f9ad/pydantic_core-2.41.5-cp314-cp314t-win32.whl", hash = "sha256:b4ececa40ac28afa90871c2cc2b9ffd2ff0bf749380fbdf57d165fd23da353aa", size = 1988906, upload-time = "2025-11-04T13:41:56.606Z" }, 256 + { url = "https://files.pythonhosted.org/packages/22/ed/182129d83032702912c2e2d8bbe33c036f342cc735737064668585dac28f/pydantic_core-2.41.5-cp314-cp314t-win_amd64.whl", hash = "sha256:80aa89cad80b32a912a65332f64a4450ed00966111b6615ca6816153d3585a8c", size = 1981607, upload-time = "2025-11-04T13:41:58.889Z" }, 257 + { url = "https://files.pythonhosted.org/packages/9f/ed/068e41660b832bb0b1aa5b58011dea2a3fe0ba7861ff38c4d4904c1c1a99/pydantic_core-2.41.5-cp314-cp314t-win_arm64.whl", hash = "sha256:35b44f37a3199f771c3eaa53051bc8a70cd7b54f333531c59e29fd4db5d15008", size = 1974769, upload-time = "2025-11-04T13:42:01.186Z" }, 258 + ] 259 + 260 + [[package]] 261 + name = "pygments" 262 + version = "2.19.2" 263 + source = { registry = "https://pypi.org/simple" } 264 + sdist = { url = "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", size = 4968631, upload-time = "2025-06-21T13:39:12.283Z" } 265 + wheels = [ 266 + { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217, upload-time = "2025-06-21T13:39:07.939Z" }, 267 + ] 268 + 269 + [[package]] 270 + name = "python-dateutil" 271 + version = "2.9.0.post0" 272 + source = { registry = "https://pypi.org/simple" } 273 + dependencies = [ 274 + { name = "six" }, 275 + ] 276 + sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload-time = "2024-03-01T18:36:20.211Z" } 277 + wheels = [ 278 + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, 279 + ] 280 + 281 + [[package]] 282 + name = "rich" 283 + version = "14.2.0" 284 + source = { registry = "https://pypi.org/simple" } 285 + dependencies = [ 286 + { name = "markdown-it-py" }, 287 + { name = "pygments" }, 288 + ] 289 + sdist = { url = "https://files.pythonhosted.org/packages/fb/d2/8920e102050a0de7bfabeb4c4614a49248cf8d5d7a8d01885fbb24dc767a/rich-14.2.0.tar.gz", hash = "sha256:73ff50c7c0c1c77c8243079283f4edb376f0f6442433aecb8ce7e6d0b92d1fe4", size = 219990, upload-time = "2025-10-09T14:16:53.064Z" } 290 + wheels = [ 291 + { url = "https://files.pythonhosted.org/packages/25/7a/b0178788f8dc6cafce37a212c99565fa1fe7872c70c6c9c1e1a372d9d88f/rich-14.2.0-py3-none-any.whl", hash = "sha256:76bc51fe2e57d2b1be1f96c524b890b816e334ab4c1e45888799bfaab0021edd", size = 243393, upload-time = "2025-10-09T14:16:51.245Z" }, 292 + ] 293 + 294 + [[package]] 295 + name = "ruamel-yaml" 296 + version = "0.18.17" 297 + source = { registry = "https://pypi.org/simple" } 298 + dependencies = [ 299 + { name = "ruamel-yaml-clib", marker = "python_full_version < '3.15' and platform_python_implementation == 'CPython'" }, 300 + ] 301 + sdist = { url = "https://files.pythonhosted.org/packages/3a/2b/7a1f1ebcd6b3f14febdc003e658778d81e76b40df2267904ee6b13f0c5c6/ruamel_yaml-0.18.17.tar.gz", hash = "sha256:9091cd6e2d93a3a4b157ddb8fabf348c3de7f1fb1381346d985b6b247dcd8d3c", size = 149602, upload-time = "2025-12-17T20:02:55.757Z" } 302 + wheels = [ 303 + { url = "https://files.pythonhosted.org/packages/af/fe/b6045c782f1fd1ae317d2a6ca1884857ce5c20f59befe6ab25a8603c43a7/ruamel_yaml-0.18.17-py3-none-any.whl", hash = "sha256:9c8ba9eb3e793efdf924b60d521820869d5bf0cb9c6f1b82d82de8295e290b9d", size = 121594, upload-time = "2025-12-17T20:02:07.657Z" }, 304 + ] 305 + 306 + [[package]] 307 + name = "ruamel-yaml-clib" 308 + version = "0.2.15" 309 + source = { registry = "https://pypi.org/simple" } 310 + sdist = { url = "https://files.pythonhosted.org/packages/ea/97/60fda20e2fb54b83a61ae14648b0817c8f5d84a3821e40bfbdae1437026a/ruamel_yaml_clib-0.2.15.tar.gz", hash = "sha256:46e4cc8c43ef6a94885f72512094e482114a8a706d3c555a34ed4b0d20200600", size = 225794, upload-time = "2025-11-16T16:12:59.761Z" } 311 + wheels = [ 312 + { url = "https://files.pythonhosted.org/packages/3e/bd/ab8459c8bb759c14a146990bf07f632c1cbec0910d4853feeee4be2ab8bb/ruamel_yaml_clib-0.2.15-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:753faf20b3a5906faf1fc50e4ddb8c074cb9b251e00b14c18b28492f933ac8ef", size = 147248, upload-time = "2025-11-16T16:13:42.872Z" }, 313 + { url = "https://files.pythonhosted.org/packages/69/f2/c4cec0a30f1955510fde498aac451d2e52b24afdbcb00204d3a951b772c3/ruamel_yaml_clib-0.2.15-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:480894aee0b29752560a9de46c0e5f84a82602f2bc5c6cde8db9a345319acfdf", size = 133764, upload-time = "2025-11-16T16:13:43.932Z" }, 314 + { url = "https://files.pythonhosted.org/packages/82/c7/2480d062281385a2ea4f7cc9476712446e0c548cd74090bff92b4b49e898/ruamel_yaml_clib-0.2.15-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:4d3b58ab2454b4747442ac76fab66739c72b1e2bb9bd173d7694b9f9dbc9c000", size = 730537, upload-time = "2025-11-16T20:22:52.918Z" }, 315 + { url = "https://files.pythonhosted.org/packages/75/08/e365ee305367559f57ba6179d836ecc3d31c7d3fdff2a40ebf6c32823a1f/ruamel_yaml_clib-0.2.15-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bfd309b316228acecfa30670c3887dcedf9b7a44ea39e2101e75d2654522acd4", size = 746944, upload-time = "2025-11-16T16:13:45.338Z" }, 316 + { url = "https://files.pythonhosted.org/packages/a1/5c/8b56b08db91e569d0a4fbfa3e492ed2026081bdd7e892f63ba1c88a2f548/ruamel_yaml_clib-0.2.15-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2812ff359ec1f30129b62372e5f22a52936fac13d5d21e70373dbca5d64bb97c", size = 778249, upload-time = "2025-11-16T16:13:46.871Z" }, 317 + { url = "https://files.pythonhosted.org/packages/6a/1d/70dbda370bd0e1a92942754c873bd28f513da6198127d1736fa98bb2a16f/ruamel_yaml_clib-0.2.15-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7e74ea87307303ba91073b63e67f2c667e93f05a8c63079ee5b7a5c8d0d7b043", size = 737140, upload-time = "2025-11-16T16:13:48.349Z" }, 318 + { url = "https://files.pythonhosted.org/packages/5b/87/822d95874216922e1120afb9d3fafa795a18fdd0c444f5c4c382f6dac761/ruamel_yaml_clib-0.2.15-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:713cd68af9dfbe0bb588e144a61aad8dcc00ef92a82d2e87183ca662d242f524", size = 741070, upload-time = "2025-11-16T20:22:54.151Z" }, 319 + { url = "https://files.pythonhosted.org/packages/b9/17/4e01a602693b572149f92c983c1f25bd608df02c3f5cf50fd1f94e124a59/ruamel_yaml_clib-0.2.15-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:542d77b72786a35563f97069b9379ce762944e67055bea293480f7734b2c7e5e", size = 765882, upload-time = "2025-11-16T16:13:49.526Z" }, 320 + { url = "https://files.pythonhosted.org/packages/9f/17/7999399081d39ebb79e807314de6b611e1d1374458924eb2a489c01fc5ad/ruamel_yaml_clib-0.2.15-cp314-cp314-win32.whl", hash = "sha256:424ead8cef3939d690c4b5c85ef5b52155a231ff8b252961b6516ed7cf05f6aa", size = 102567, upload-time = "2025-11-16T16:13:50.78Z" }, 321 + { url = "https://files.pythonhosted.org/packages/d2/67/be582a7370fdc9e6846c5be4888a530dcadd055eef5b932e0e85c33c7d73/ruamel_yaml_clib-0.2.15-cp314-cp314-win_amd64.whl", hash = "sha256:ac9b8d5fa4bb7fd2917ab5027f60d4234345fd366fe39aa711d5dca090aa1467", size = 122847, upload-time = "2025-11-16T16:13:51.807Z" }, 322 + ] 323 + 324 + [[package]] 325 + name = "ruff" 326 + version = "0.14.10" 327 + source = { registry = "https://pypi.org/simple" } 328 + sdist = { url = "https://files.pythonhosted.org/packages/57/08/52232a877978dd8f9cf2aeddce3e611b40a63287dfca29b6b8da791f5e8d/ruff-0.14.10.tar.gz", hash = "sha256:9a2e830f075d1a42cd28420d7809ace390832a490ed0966fe373ba288e77aaf4", size = 5859763, upload-time = "2025-12-18T19:28:57.98Z" } 329 + wheels = [ 330 + { url = "https://files.pythonhosted.org/packages/60/01/933704d69f3f05ee16ef11406b78881733c186fe14b6a46b05cfcaf6d3b2/ruff-0.14.10-py3-none-linux_armv6l.whl", hash = "sha256:7a3ce585f2ade3e1f29ec1b92df13e3da262178df8c8bdf876f48fa0e8316c49", size = 13527080, upload-time = "2025-12-18T19:29:25.642Z" }, 331 + { url = "https://files.pythonhosted.org/packages/df/58/a0349197a7dfa603ffb7f5b0470391efa79ddc327c1e29c4851e85b09cc5/ruff-0.14.10-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:674f9be9372907f7257c51f1d4fc902cb7cf014b9980152b802794317941f08f", size = 13797320, upload-time = "2025-12-18T19:29:02.571Z" }, 332 + { url = "https://files.pythonhosted.org/packages/7b/82/36be59f00a6082e38c23536df4e71cdbc6af8d7c707eade97fcad5c98235/ruff-0.14.10-py3-none-macosx_11_0_arm64.whl", hash = "sha256:d85713d522348837ef9df8efca33ccb8bd6fcfc86a2cde3ccb4bc9d28a18003d", size = 12918434, upload-time = "2025-12-18T19:28:51.202Z" }, 333 + { url = "https://files.pythonhosted.org/packages/a6/00/45c62a7f7e34da92a25804f813ebe05c88aa9e0c25e5cb5a7d23dd7450e3/ruff-0.14.10-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6987ebe0501ae4f4308d7d24e2d0fe3d7a98430f5adfd0f1fead050a740a3a77", size = 13371961, upload-time = "2025-12-18T19:29:04.991Z" }, 334 + { url = "https://files.pythonhosted.org/packages/40/31/a5906d60f0405f7e57045a70f2d57084a93ca7425f22e1d66904769d1628/ruff-0.14.10-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:16a01dfb7b9e4eee556fbfd5392806b1b8550c9b4a9f6acd3dbe6812b193c70a", size = 13275629, upload-time = "2025-12-18T19:29:21.381Z" }, 335 + { url = "https://files.pythonhosted.org/packages/3e/60/61c0087df21894cf9d928dc04bcd4fb10e8b2e8dca7b1a276ba2155b2002/ruff-0.14.10-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7165d31a925b7a294465fa81be8c12a0e9b60fb02bf177e79067c867e71f8b1f", size = 14029234, upload-time = "2025-12-18T19:29:00.132Z" }, 336 + { url = "https://files.pythonhosted.org/packages/44/84/77d911bee3b92348b6e5dab5a0c898d87084ea03ac5dc708f46d88407def/ruff-0.14.10-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:c561695675b972effb0c0a45db233f2c816ff3da8dcfbe7dfc7eed625f218935", size = 15449890, upload-time = "2025-12-18T19:28:53.573Z" }, 337 + { url = "https://files.pythonhosted.org/packages/e9/36/480206eaefa24a7ec321582dda580443a8f0671fdbf6b1c80e9c3e93a16a/ruff-0.14.10-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4bb98fcbbc61725968893682fd4df8966a34611239c9fd07a1f6a07e7103d08e", size = 15123172, upload-time = "2025-12-18T19:29:23.453Z" }, 338 + { url = "https://files.pythonhosted.org/packages/5c/38/68e414156015ba80cef5473d57919d27dfb62ec804b96180bafdeaf0e090/ruff-0.14.10-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f24b47993a9d8cb858429e97bdf8544c78029f09b520af615c1d261bf827001d", size = 14460260, upload-time = "2025-12-18T19:29:27.808Z" }, 339 + { url = "https://files.pythonhosted.org/packages/b3/19/9e050c0dca8aba824d67cc0db69fb459c28d8cd3f6855b1405b3f29cc91d/ruff-0.14.10-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59aabd2e2c4fd614d2862e7939c34a532c04f1084476d6833dddef4afab87e9f", size = 14229978, upload-time = "2025-12-18T19:29:11.32Z" }, 340 + { url = "https://files.pythonhosted.org/packages/51/eb/e8dd1dd6e05b9e695aa9dd420f4577debdd0f87a5ff2fedda33c09e9be8c/ruff-0.14.10-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:213db2b2e44be8625002dbea33bb9c60c66ea2c07c084a00d55732689d697a7f", size = 14338036, upload-time = "2025-12-18T19:29:09.184Z" }, 341 + { url = "https://files.pythonhosted.org/packages/6a/12/f3e3a505db7c19303b70af370d137795fcfec136d670d5de5391e295c134/ruff-0.14.10-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:b914c40ab64865a17a9a5b67911d14df72346a634527240039eb3bd650e5979d", size = 13264051, upload-time = "2025-12-18T19:29:13.431Z" }, 342 + { url = "https://files.pythonhosted.org/packages/08/64/8c3a47eaccfef8ac20e0484e68e0772013eb85802f8a9f7603ca751eb166/ruff-0.14.10-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:1484983559f026788e3a5c07c81ef7d1e97c1c78ed03041a18f75df104c45405", size = 13283998, upload-time = "2025-12-18T19:29:06.994Z" }, 343 + { url = "https://files.pythonhosted.org/packages/12/84/534a5506f4074e5cc0529e5cd96cfc01bb480e460c7edf5af70d2bcae55e/ruff-0.14.10-py3-none-musllinux_1_2_i686.whl", hash = "sha256:c70427132db492d25f982fffc8d6c7535cc2fd2c83fc8888f05caaa248521e60", size = 13601891, upload-time = "2025-12-18T19:28:55.811Z" }, 344 + { url = "https://files.pythonhosted.org/packages/0d/1e/14c916087d8598917dbad9b2921d340f7884824ad6e9c55de948a93b106d/ruff-0.14.10-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:5bcf45b681e9f1ee6445d317ce1fa9d6cba9a6049542d1c3d5b5958986be8830", size = 14336660, upload-time = "2025-12-18T19:29:16.531Z" }, 345 + { url = "https://files.pythonhosted.org/packages/f2/1c/d7b67ab43f30013b47c12b42d1acd354c195351a3f7a1d67f59e54227ede/ruff-0.14.10-py3-none-win32.whl", hash = "sha256:104c49fc7ab73f3f3a758039adea978869a918f31b73280db175b43a2d9b51d6", size = 13196187, upload-time = "2025-12-18T19:29:19.006Z" }, 346 + { url = "https://files.pythonhosted.org/packages/fb/9c/896c862e13886fae2af961bef3e6312db9ebc6adc2b156fe95e615dee8c1/ruff-0.14.10-py3-none-win_amd64.whl", hash = "sha256:466297bd73638c6bdf06485683e812db1c00c7ac96d4ddd0294a338c62fdc154", size = 14661283, upload-time = "2025-12-18T19:29:30.16Z" }, 347 + { url = "https://files.pythonhosted.org/packages/74/31/b0e29d572670dca3674eeee78e418f20bdf97fa8aa9ea71380885e175ca0/ruff-0.14.10-py3-none-win_arm64.whl", hash = "sha256:e51d046cf6dda98a4633b8a8a771451107413b0f07183b2bef03f075599e44e6", size = 13729839, upload-time = "2025-12-18T19:28:48.636Z" }, 348 + ] 349 + 350 + [[package]] 351 + name = "shellingham" 352 + version = "1.5.4" 353 + source = { registry = "https://pypi.org/simple" } 354 + sdist = { url = "https://files.pythonhosted.org/packages/58/15/8b3609fd3830ef7b27b655beb4b4e9c62313a4e8da8c676e142cc210d58e/shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de", size = 10310, upload-time = "2023-10-24T04:13:40.426Z" } 355 + wheels = [ 356 + { url = "https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686", size = 9755, upload-time = "2023-10-24T04:13:38.866Z" }, 357 + ] 358 + 359 + [[package]] 360 + name = "six" 361 + version = "1.17.0" 362 + source = { registry = "https://pypi.org/simple" } 363 + sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload-time = "2024-12-04T17:35:28.174Z" } 364 + wheels = [ 365 + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, 366 + ] 367 + 368 + [[package]] 369 + name = "typer" 370 + version = "0.20.1" 371 + source = { registry = "https://pypi.org/simple" } 372 + dependencies = [ 373 + { name = "click" }, 374 + { name = "rich" }, 375 + { name = "shellingham" }, 376 + { name = "typing-extensions" }, 377 + ] 378 + sdist = { url = "https://files.pythonhosted.org/packages/6d/c1/933d30fd7a123ed981e2a1eedafceab63cb379db0402e438a13bc51bbb15/typer-0.20.1.tar.gz", hash = "sha256:68585eb1b01203689c4199bc440d6be616f0851e9f0eb41e4a778845c5a0fd5b", size = 105968, upload-time = "2025-12-19T16:48:56.302Z" } 379 + wheels = [ 380 + { url = "https://files.pythonhosted.org/packages/c8/52/1f2df7e7d1be3d65ddc2936d820d4a3d9777a54f4204f5ca46b8513eff77/typer-0.20.1-py3-none-any.whl", hash = "sha256:4b3bde918a67c8e03d861aa02deca90a95bbac572e71b1b9be56ff49affdb5a8", size = 47381, upload-time = "2025-12-19T16:48:53.679Z" }, 381 + ] 382 + 383 + [[package]] 384 + name = "typing-extensions" 385 + version = "4.15.0" 386 + source = { registry = "https://pypi.org/simple" } 387 + sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", size = 109391, upload-time = "2025-08-25T13:49:26.313Z" } 388 + wheels = [ 389 + { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614, upload-time = "2025-08-25T13:49:24.86Z" }, 390 + ] 391 + 392 + [[package]] 393 + name = "typing-inspection" 394 + version = "0.4.2" 395 + source = { registry = "https://pypi.org/simple" } 396 + dependencies = [ 397 + { name = "typing-extensions" }, 398 + ] 399 + sdist = { url = "https://files.pythonhosted.org/packages/55/e3/70399cb7dd41c10ac53367ae42139cf4b1ca5f36bb3dc6c9d33acdb43655/typing_inspection-0.4.2.tar.gz", hash = "sha256:ba561c48a67c5958007083d386c3295464928b01faa735ab8547c5692e87f464", size = 75949, upload-time = "2025-10-01T02:14:41.687Z" } 400 + wheels = [ 401 + { url = "https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl", hash = "sha256:4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7", size = 14611, upload-time = "2025-10-01T02:14:40.154Z" }, 402 + ]
+2
server/.env.template
··· 1 + LOG_LEVEL=debug 2 + DATABASE_URL=file:dev.db
+2
server/.gitignore
··· 1 + node_modules 2 + build
+5
server/.vscode/extensions.json
··· 1 + { 2 + "recommendations": [ 3 + "denoland.vscode-deno" 4 + ] 5 + }
+13
server/.vscode/settings.json
··· 1 + { 2 + "deno.enablePaths": [ 3 + "./" 4 + ], 5 + "editor.inlayHints.enabled": "off", 6 + "deno.enable": true, 7 + "deno.importMap": "./import-map.json", 8 + "typescript.suggest.includeCompletionsForImportStatements": true, 9 + "editor.codeActionsOnSave": { 10 + "source.fixAll": "always", 11 + "source.organizeImports": "always" 12 + } 13 + }
+3
server/README.md
··· 1 + ``` 2 + deno task start 3 + ```
+47
server/deno.json
··· 1 + { 2 + "nodeModulesDir": "auto", 3 + "imports": { 4 + "@/": "./", 5 + "@antfu/eslint-config": "npm:@antfu/eslint-config@^6.6.1", 6 + "@hono/zod-openapi": "npm:@hono/zod-openapi@^1.1.5", 7 + "@libsql/client": "npm:@libsql/client@^0.15.15", 8 + "@scalar/hono-api-reference": "npm:@scalar/hono-api-reference@^0.9.28", 9 + "@std/dotenv": "jsr:@std/dotenv@^0.225.5", 10 + "@types/deno": "npm:@types/deno@^2.5.0", 11 + "debug": "npm:debug@^4.4.3", 12 + "drizzle-kit": "npm:drizzle-kit@^0.31.8", 13 + "drizzle-orm": "npm:drizzle-orm@^0.45.1", 14 + "drizzle-zod": "npm:drizzle-zod@^0.8.3", 15 + "eslint": "npm:eslint@^9.39.2", 16 + "hono": "npm:hono@^4.11.0", 17 + "hono-pino": "npm:hono-pino@^0.10.3", 18 + "libsql": "npm:libsql@^0.5.22", 19 + "pino": "npm:pino@^10.1.0", 20 + "pino-pretty": "npm:pino-pretty@^13.1.3", 21 + "postgres": "npm:postgres@^3.4.7", 22 + "stoker": "npm:stoker@^2.0.1", 23 + "typescript": "npm:typescript@^5.9.3", 24 + "zod": "npm:zod@^4.1.13" 25 + }, 26 + "tasks": { 27 + "generate": "deno run runtimes/generate.ts", 28 + "start": "deno run $(deno task allow-native-sql) --allow-read=.env --allow-net=0.0.0.0:8000 --allow-sys=hostname --allow-env=LIBSQL_JS_DEV,CI,TERM,NODE_V8_COVERAGE main.ts", 29 + "lint": "eslint .", 30 + "db-gen": "deno run drizzle-kit generate", 31 + "db-write": "deno run drizzle-kit push", 32 + "allow-native-sql": "echo --allow-ffi=./node_modules/.deno/@libsql+darwin-arm64@0.5.22/node_modules/@libsql/darwin-arm64/index.node" 33 + }, 34 + "compilerOptions": { 35 + "types": [ 36 + "hono", 37 + "hono-pino", 38 + "pino", 39 + "pino-pretty", 40 + "stoker", 41 + "@hono/zod-openapi", 42 + "drizzle-zod" 43 + ], 44 + "jsx": "precompile", 45 + "jsxImportSource": "hono/jsx" 46 + } 47 + }
+2735
server/deno.lock
··· 1 + { 2 + "version": "5", 3 + "specifiers": { 4 + "jsr:@std/dotenv@*": "0.225.5", 5 + "jsr:@std/dotenv@~0.225.5": "0.225.5", 6 + "npm:@antfu/eslint-config@^6.6.1": "6.6.1_eslint@9.39.2_@typescript-eslint+parser@8.49.0__eslint@9.39.2__typescript@5.9.3_typescript@5.9.3_@typescript-eslint+eslint-plugin@8.49.0__@typescript-eslint+parser@8.49.0___eslint@9.39.2___typescript@5.9.3__eslint@9.39.2__typescript@5.9.3_@stylistic+eslint-plugin@5.6.1__eslint@9.39.2_vue-eslint-parser@10.2.0__eslint@9.39.2", 7 + "npm:@hono/zod-openapi@^1.1.5": "1.1.5_hono@4.11.0_zod@4.1.13", 8 + "npm:@libsql/client@~0.15.15": "0.15.15", 9 + "npm:@scalar/hono-api-reference@~0.9.28": "0.9.28_hono@4.11.0", 10 + "npm:@types/deno@^2.5.0": "2.5.0", 11 + "npm:debug@^4.4.3": "4.4.3", 12 + "npm:drizzle-kit@~0.31.8": "0.31.8_esbuild@0.25.12", 13 + "npm:drizzle-orm@~0.45.1": "0.45.1_@libsql+client@0.15.15_postgres@3.4.7", 14 + "npm:drizzle-zod@~0.8.3": "0.8.3_drizzle-orm@0.45.1__@libsql+client@0.15.15__postgres@3.4.7_zod@4.1.13_@libsql+client@0.15.15_postgres@3.4.7", 15 + "npm:eslint@^9.39.2": "9.39.2", 16 + "npm:hono-pino@~0.10.3": "0.10.3_hono@4.11.0_pino@10.1.0", 17 + "npm:hono@^4.11.0": "4.11.0", 18 + "npm:libsql@~0.5.22": "0.5.22", 19 + "npm:pino-pretty@^13.1.3": "13.1.3", 20 + "npm:pino@^10.1.0": "10.1.0", 21 + "npm:postgres@^3.4.7": "3.4.7", 22 + "npm:stoker@^2.0.1": "2.0.1_@hono+zod-openapi@1.1.5__hono@4.11.0__zod@4.1.13_hono@4.11.0_zod@4.1.13", 23 + "npm:typescript@^5.9.3": "5.9.3", 24 + "npm:zod@^4.1.13": "4.1.13" 25 + }, 26 + "jsr": { 27 + "@std/dotenv@0.225.5": { 28 + "integrity": "9ce6f9d0ec3311f74a32535aa1b8c62ed88b1ab91b7f0815797d77a6f60c922f" 29 + } 30 + }, 31 + "npm": { 32 + "@antfu/eslint-config@6.6.1_eslint@9.39.2_@typescript-eslint+parser@8.49.0__eslint@9.39.2__typescript@5.9.3_typescript@5.9.3_@typescript-eslint+eslint-plugin@8.49.0__@typescript-eslint+parser@8.49.0___eslint@9.39.2___typescript@5.9.3__eslint@9.39.2__typescript@5.9.3_@stylistic+eslint-plugin@5.6.1__eslint@9.39.2_vue-eslint-parser@10.2.0__eslint@9.39.2": { 33 + "integrity": "sha512-ZOdoVhZHu1FMOYJcqPNyFvkoRlfI1qnaMUxQuB3C0MbamgkpOsuKtWQlcqDTeVDEUiXnfcE/XpFP+ZOQDS6I3A==", 34 + "dependencies": [ 35 + "@antfu/install-pkg", 36 + "@clack/prompts", 37 + "@eslint-community/eslint-plugin-eslint-comments", 38 + "@eslint/markdown", 39 + "@stylistic/eslint-plugin", 40 + "@typescript-eslint/eslint-plugin", 41 + "@typescript-eslint/parser", 42 + "@vitest/eslint-plugin", 43 + "ansis", 44 + "cac", 45 + "eslint", 46 + "eslint-config-flat-gitignore", 47 + "eslint-flat-config-utils", 48 + "eslint-merge-processors", 49 + "eslint-plugin-antfu", 50 + "eslint-plugin-command", 51 + "eslint-plugin-import-lite", 52 + "eslint-plugin-jsdoc", 53 + "eslint-plugin-jsonc", 54 + "eslint-plugin-n", 55 + "eslint-plugin-no-only-tests", 56 + "eslint-plugin-perfectionist", 57 + "eslint-plugin-pnpm", 58 + "eslint-plugin-regexp", 59 + "eslint-plugin-toml", 60 + "eslint-plugin-unicorn", 61 + "eslint-plugin-unused-imports", 62 + "eslint-plugin-vue", 63 + "eslint-plugin-yml", 64 + "eslint-processor-vue-blocks", 65 + "globals@16.5.0", 66 + "jsonc-eslint-parser", 67 + "local-pkg", 68 + "parse-gitignore", 69 + "toml-eslint-parser", 70 + "vue-eslint-parser", 71 + "yaml-eslint-parser" 72 + ], 73 + "bin": true 74 + }, 75 + "@antfu/install-pkg@1.1.0": { 76 + "integrity": "sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==", 77 + "dependencies": [ 78 + "package-manager-detector", 79 + "tinyexec" 80 + ] 81 + }, 82 + "@asteasolutions/zod-to-openapi@8.2.0_zod@4.1.13": { 83 + "integrity": "sha512-u05zNUirlukJAf9oEHmxSF31L1XQhz9XdpVILt7+xhrz65oQqBpiOWFkGvRWL0IpjOUJ878idKoNmYPxrFnkeg==", 84 + "dependencies": [ 85 + "openapi3-ts", 86 + "zod" 87 + ] 88 + }, 89 + "@babel/helper-string-parser@7.27.1": { 90 + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==" 91 + }, 92 + "@babel/helper-validator-identifier@7.28.5": { 93 + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==" 94 + }, 95 + "@babel/parser@7.28.5": { 96 + "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==", 97 + "dependencies": [ 98 + "@babel/types" 99 + ], 100 + "bin": true 101 + }, 102 + "@babel/types@7.28.5": { 103 + "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==", 104 + "dependencies": [ 105 + "@babel/helper-string-parser", 106 + "@babel/helper-validator-identifier" 107 + ] 108 + }, 109 + "@clack/core@0.5.0": { 110 + "integrity": "sha512-p3y0FIOwaYRUPRcMO7+dlmLh8PSRcrjuTndsiA0WAFbWES0mLZlrjVoBRZ9DzkPFJZG6KGkJmoEAY0ZcVWTkow==", 111 + "dependencies": [ 112 + "picocolors", 113 + "sisteransi" 114 + ] 115 + }, 116 + "@clack/prompts@0.11.0": { 117 + "integrity": "sha512-pMN5FcrEw9hUkZA4f+zLlzivQSeQf5dRGJjSUbvVYDLvpKCdQx5OaknvKzgbtXOizhP+SJJJjqEbOe55uKKfAw==", 118 + "dependencies": [ 119 + "@clack/core", 120 + "picocolors", 121 + "sisteransi" 122 + ] 123 + }, 124 + "@drizzle-team/brocli@0.10.2": { 125 + "integrity": "sha512-z33Il7l5dKjUgGULTqBsQBQwckHh5AbIuxhdsIxDDiZAzBOrZO6q9ogcWC65kU382AfynTfgNumVcNIjuIua6w==" 126 + }, 127 + "@es-joy/jsdoccomment@0.76.0": { 128 + "integrity": "sha512-g+RihtzFgGTx2WYCuTHbdOXJeAlGnROws0TeALx9ow/ZmOROOZkVg5wp/B44n0WJgI4SQFP1eWM2iRPlU2Y14w==", 129 + "dependencies": [ 130 + "@types/estree", 131 + "@typescript-eslint/types", 132 + "comment-parser", 133 + "esquery", 134 + "jsdoc-type-pratt-parser@6.10.0" 135 + ] 136 + }, 137 + "@es-joy/jsdoccomment@0.78.0": { 138 + "integrity": "sha512-rQkU5u8hNAq2NVRzHnIUUvR6arbO0b6AOlvpTNS48CkiKSn/xtNfOzBK23JE4SiW89DgvU7GtxLVgV4Vn2HBAw==", 139 + "dependencies": [ 140 + "@types/estree", 141 + "@typescript-eslint/types", 142 + "comment-parser", 143 + "esquery", 144 + "jsdoc-type-pratt-parser@7.0.0" 145 + ] 146 + }, 147 + "@es-joy/resolve.exports@1.2.0": { 148 + "integrity": "sha512-Q9hjxWI5xBM+qW2enxfe8wDKdFWMfd0Z29k5ZJnuBqD/CasY5Zryj09aCA6owbGATWz+39p5uIdaHXpopOcG8g==" 149 + }, 150 + "@esbuild-kit/core-utils@3.3.2": { 151 + "integrity": "sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ==", 152 + "dependencies": [ 153 + "esbuild@0.18.20", 154 + "source-map-support" 155 + ], 156 + "deprecated": true 157 + }, 158 + "@esbuild-kit/esm-loader@2.6.5": { 159 + "integrity": "sha512-FxEMIkJKnodyA1OaCUoEvbYRkoZlLZ4d/eXFu9Fh8CbBBgP5EmZxrfTRyN0qpXZ4vOvqnE5YdRdcrmUUXuU+dA==", 160 + "dependencies": [ 161 + "@esbuild-kit/core-utils", 162 + "get-tsconfig" 163 + ], 164 + "deprecated": true 165 + }, 166 + "@esbuild/aix-ppc64@0.25.12": { 167 + "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", 168 + "os": ["aix"], 169 + "cpu": ["ppc64"] 170 + }, 171 + "@esbuild/android-arm64@0.18.20": { 172 + "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", 173 + "os": ["android"], 174 + "cpu": ["arm64"] 175 + }, 176 + "@esbuild/android-arm64@0.25.12": { 177 + "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", 178 + "os": ["android"], 179 + "cpu": ["arm64"] 180 + }, 181 + "@esbuild/android-arm@0.18.20": { 182 + "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", 183 + "os": ["android"], 184 + "cpu": ["arm"] 185 + }, 186 + "@esbuild/android-arm@0.25.12": { 187 + "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", 188 + "os": ["android"], 189 + "cpu": ["arm"] 190 + }, 191 + "@esbuild/android-x64@0.18.20": { 192 + "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", 193 + "os": ["android"], 194 + "cpu": ["x64"] 195 + }, 196 + "@esbuild/android-x64@0.25.12": { 197 + "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", 198 + "os": ["android"], 199 + "cpu": ["x64"] 200 + }, 201 + "@esbuild/darwin-arm64@0.18.20": { 202 + "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", 203 + "os": ["darwin"], 204 + "cpu": ["arm64"] 205 + }, 206 + "@esbuild/darwin-arm64@0.25.12": { 207 + "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", 208 + "os": ["darwin"], 209 + "cpu": ["arm64"] 210 + }, 211 + "@esbuild/darwin-x64@0.18.20": { 212 + "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", 213 + "os": ["darwin"], 214 + "cpu": ["x64"] 215 + }, 216 + "@esbuild/darwin-x64@0.25.12": { 217 + "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", 218 + "os": ["darwin"], 219 + "cpu": ["x64"] 220 + }, 221 + "@esbuild/freebsd-arm64@0.18.20": { 222 + "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", 223 + "os": ["freebsd"], 224 + "cpu": ["arm64"] 225 + }, 226 + "@esbuild/freebsd-arm64@0.25.12": { 227 + "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", 228 + "os": ["freebsd"], 229 + "cpu": ["arm64"] 230 + }, 231 + "@esbuild/freebsd-x64@0.18.20": { 232 + "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", 233 + "os": ["freebsd"], 234 + "cpu": ["x64"] 235 + }, 236 + "@esbuild/freebsd-x64@0.25.12": { 237 + "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", 238 + "os": ["freebsd"], 239 + "cpu": ["x64"] 240 + }, 241 + "@esbuild/linux-arm64@0.18.20": { 242 + "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", 243 + "os": ["linux"], 244 + "cpu": ["arm64"] 245 + }, 246 + "@esbuild/linux-arm64@0.25.12": { 247 + "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", 248 + "os": ["linux"], 249 + "cpu": ["arm64"] 250 + }, 251 + "@esbuild/linux-arm@0.18.20": { 252 + "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", 253 + "os": ["linux"], 254 + "cpu": ["arm"] 255 + }, 256 + "@esbuild/linux-arm@0.25.12": { 257 + "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", 258 + "os": ["linux"], 259 + "cpu": ["arm"] 260 + }, 261 + "@esbuild/linux-ia32@0.18.20": { 262 + "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", 263 + "os": ["linux"], 264 + "cpu": ["ia32"] 265 + }, 266 + "@esbuild/linux-ia32@0.25.12": { 267 + "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", 268 + "os": ["linux"], 269 + "cpu": ["ia32"] 270 + }, 271 + "@esbuild/linux-loong64@0.18.20": { 272 + "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", 273 + "os": ["linux"], 274 + "cpu": ["loong64"] 275 + }, 276 + "@esbuild/linux-loong64@0.25.12": { 277 + "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", 278 + "os": ["linux"], 279 + "cpu": ["loong64"] 280 + }, 281 + "@esbuild/linux-mips64el@0.18.20": { 282 + "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", 283 + "os": ["linux"], 284 + "cpu": ["mips64el"] 285 + }, 286 + "@esbuild/linux-mips64el@0.25.12": { 287 + "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", 288 + "os": ["linux"], 289 + "cpu": ["mips64el"] 290 + }, 291 + "@esbuild/linux-ppc64@0.18.20": { 292 + "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", 293 + "os": ["linux"], 294 + "cpu": ["ppc64"] 295 + }, 296 + "@esbuild/linux-ppc64@0.25.12": { 297 + "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", 298 + "os": ["linux"], 299 + "cpu": ["ppc64"] 300 + }, 301 + "@esbuild/linux-riscv64@0.18.20": { 302 + "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", 303 + "os": ["linux"], 304 + "cpu": ["riscv64"] 305 + }, 306 + "@esbuild/linux-riscv64@0.25.12": { 307 + "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", 308 + "os": ["linux"], 309 + "cpu": ["riscv64"] 310 + }, 311 + "@esbuild/linux-s390x@0.18.20": { 312 + "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", 313 + "os": ["linux"], 314 + "cpu": ["s390x"] 315 + }, 316 + "@esbuild/linux-s390x@0.25.12": { 317 + "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", 318 + "os": ["linux"], 319 + "cpu": ["s390x"] 320 + }, 321 + "@esbuild/linux-x64@0.18.20": { 322 + "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", 323 + "os": ["linux"], 324 + "cpu": ["x64"] 325 + }, 326 + "@esbuild/linux-x64@0.25.12": { 327 + "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", 328 + "os": ["linux"], 329 + "cpu": ["x64"] 330 + }, 331 + "@esbuild/netbsd-arm64@0.25.12": { 332 + "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", 333 + "os": ["netbsd"], 334 + "cpu": ["arm64"] 335 + }, 336 + "@esbuild/netbsd-x64@0.18.20": { 337 + "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", 338 + "os": ["netbsd"], 339 + "cpu": ["x64"] 340 + }, 341 + "@esbuild/netbsd-x64@0.25.12": { 342 + "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", 343 + "os": ["netbsd"], 344 + "cpu": ["x64"] 345 + }, 346 + "@esbuild/openbsd-arm64@0.25.12": { 347 + "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", 348 + "os": ["openbsd"], 349 + "cpu": ["arm64"] 350 + }, 351 + "@esbuild/openbsd-x64@0.18.20": { 352 + "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", 353 + "os": ["openbsd"], 354 + "cpu": ["x64"] 355 + }, 356 + "@esbuild/openbsd-x64@0.25.12": { 357 + "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", 358 + "os": ["openbsd"], 359 + "cpu": ["x64"] 360 + }, 361 + "@esbuild/openharmony-arm64@0.25.12": { 362 + "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", 363 + "os": ["openharmony"], 364 + "cpu": ["arm64"] 365 + }, 366 + "@esbuild/sunos-x64@0.18.20": { 367 + "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", 368 + "os": ["sunos"], 369 + "cpu": ["x64"] 370 + }, 371 + "@esbuild/sunos-x64@0.25.12": { 372 + "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", 373 + "os": ["sunos"], 374 + "cpu": ["x64"] 375 + }, 376 + "@esbuild/win32-arm64@0.18.20": { 377 + "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", 378 + "os": ["win32"], 379 + "cpu": ["arm64"] 380 + }, 381 + "@esbuild/win32-arm64@0.25.12": { 382 + "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", 383 + "os": ["win32"], 384 + "cpu": ["arm64"] 385 + }, 386 + "@esbuild/win32-ia32@0.18.20": { 387 + "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", 388 + "os": ["win32"], 389 + "cpu": ["ia32"] 390 + }, 391 + "@esbuild/win32-ia32@0.25.12": { 392 + "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", 393 + "os": ["win32"], 394 + "cpu": ["ia32"] 395 + }, 396 + "@esbuild/win32-x64@0.18.20": { 397 + "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", 398 + "os": ["win32"], 399 + "cpu": ["x64"] 400 + }, 401 + "@esbuild/win32-x64@0.25.12": { 402 + "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", 403 + "os": ["win32"], 404 + "cpu": ["x64"] 405 + }, 406 + "@eslint-community/eslint-plugin-eslint-comments@4.5.0_eslint@9.39.2": { 407 + "integrity": "sha512-MAhuTKlr4y/CE3WYX26raZjy+I/kS2PLKSzvfmDCGrBLTFHOYwqROZdr4XwPgXwX3K9rjzMr4pSmUWGnzsUyMg==", 408 + "dependencies": [ 409 + "escape-string-regexp@4.0.0", 410 + "eslint", 411 + "ignore@5.3.2" 412 + ] 413 + }, 414 + "@eslint-community/eslint-utils@4.9.0_eslint@9.39.2": { 415 + "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", 416 + "dependencies": [ 417 + "eslint", 418 + "eslint-visitor-keys@3.4.3" 419 + ] 420 + }, 421 + "@eslint-community/regexpp@4.12.2": { 422 + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==" 423 + }, 424 + "@eslint/compat@1.4.1_eslint@9.39.2": { 425 + "integrity": "sha512-cfO82V9zxxGBxcQDr1lfaYB7wykTa0b00mGa36FrJl7iTFd0Z2cHfEYuxcBRP/iNijCsWsEkA+jzT8hGYmv33w==", 426 + "dependencies": [ 427 + "@eslint/core", 428 + "eslint" 429 + ], 430 + "optionalPeers": [ 431 + "eslint" 432 + ] 433 + }, 434 + "@eslint/config-array@0.21.1": { 435 + "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", 436 + "dependencies": [ 437 + "@eslint/object-schema", 438 + "debug", 439 + "minimatch@3.1.2" 440 + ] 441 + }, 442 + "@eslint/config-helpers@0.4.2": { 443 + "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", 444 + "dependencies": [ 445 + "@eslint/core" 446 + ] 447 + }, 448 + "@eslint/core@0.17.0": { 449 + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", 450 + "dependencies": [ 451 + "@types/json-schema" 452 + ] 453 + }, 454 + "@eslint/eslintrc@3.3.3": { 455 + "integrity": "sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==", 456 + "dependencies": [ 457 + "ajv", 458 + "debug", 459 + "espree@10.4.0_acorn@8.15.0", 460 + "globals@14.0.0", 461 + "ignore@5.3.2", 462 + "import-fresh", 463 + "js-yaml", 464 + "minimatch@3.1.2", 465 + "strip-json-comments@3.1.1" 466 + ] 467 + }, 468 + "@eslint/js@9.39.2": { 469 + "integrity": "sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==" 470 + }, 471 + "@eslint/markdown@7.5.1": { 472 + "integrity": "sha512-R8uZemG9dKTbru/DQRPblbJyXpObwKzo8rv1KYGGuPUPtjM4LXBYM9q5CIZAComzZupws3tWbDwam5AFpPLyJQ==", 473 + "dependencies": [ 474 + "@eslint/core", 475 + "@eslint/plugin-kit", 476 + "github-slugger", 477 + "mdast-util-from-markdown", 478 + "mdast-util-frontmatter", 479 + "mdast-util-gfm", 480 + "micromark-extension-frontmatter", 481 + "micromark-extension-gfm", 482 + "micromark-util-normalize-identifier" 483 + ] 484 + }, 485 + "@eslint/object-schema@2.1.7": { 486 + "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==" 487 + }, 488 + "@eslint/plugin-kit@0.4.1": { 489 + "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", 490 + "dependencies": [ 491 + "@eslint/core", 492 + "levn" 493 + ] 494 + }, 495 + "@hono/zod-openapi@1.1.5_hono@4.11.0_zod@4.1.13": { 496 + "integrity": "sha512-EAnY6ad4yt/MUKHx716BEGGOXSl5d0/FOLozOYB/pmSEFq07qrzefKFtBEMAgd3hlpJXjH+4lwgTtlAo+BGBgQ==", 497 + "dependencies": [ 498 + "@asteasolutions/zod-to-openapi", 499 + "@hono/zod-validator", 500 + "hono", 501 + "openapi3-ts", 502 + "zod" 503 + ] 504 + }, 505 + "@hono/zod-validator@0.7.5_hono@4.11.0_zod@4.1.13": { 506 + "integrity": "sha512-n4l4hutkfYU07PzRUHBOVzUEn38VSfrh+UVE5d0w4lyfWDOEhzxIupqo5iakRiJL44c3vTuFJBvcmUl8b9agIA==", 507 + "dependencies": [ 508 + "hono", 509 + "zod" 510 + ] 511 + }, 512 + "@humanfs/core@0.19.1": { 513 + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==" 514 + }, 515 + "@humanfs/node@0.16.7": { 516 + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", 517 + "dependencies": [ 518 + "@humanfs/core", 519 + "@humanwhocodes/retry" 520 + ] 521 + }, 522 + "@humanwhocodes/module-importer@1.0.1": { 523 + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==" 524 + }, 525 + "@humanwhocodes/retry@0.4.3": { 526 + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==" 527 + }, 528 + "@jridgewell/sourcemap-codec@1.5.5": { 529 + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==" 530 + }, 531 + "@libsql/client@0.15.15": { 532 + "integrity": "sha512-twC0hQxPNHPKfeOv3sNT6u2pturQjLcI+CnpTM0SjRpocEGgfiZ7DWKXLNnsothjyJmDqEsBQJ5ztq9Wlu470w==", 533 + "dependencies": [ 534 + "@libsql/core", 535 + "@libsql/hrana-client", 536 + "js-base64", 537 + "libsql", 538 + "promise-limit" 539 + ] 540 + }, 541 + "@libsql/core@0.15.15": { 542 + "integrity": "sha512-C88Z6UKl+OyuKKPwz224riz02ih/zHYI3Ho/LAcVOgjsunIRZoBw7fjRfaH9oPMmSNeQfhGklSG2il1URoOIsA==", 543 + "dependencies": [ 544 + "js-base64" 545 + ] 546 + }, 547 + "@libsql/darwin-arm64@0.5.22": { 548 + "integrity": "sha512-4B8ZlX3nIDPndfct7GNe0nI3Yw6ibocEicWdC4fvQbSs/jdq/RC2oCsoJxJ4NzXkvktX70C1J4FcmmoBy069UA==", 549 + "os": ["darwin"], 550 + "cpu": ["arm64"] 551 + }, 552 + "@libsql/darwin-x64@0.5.22": { 553 + "integrity": "sha512-ny2HYWt6lFSIdNFzUFIJ04uiW6finXfMNJ7wypkAD8Pqdm6nAByO+Fdqu8t7sD0sqJGeUCiOg480icjyQ2/8VA==", 554 + "os": ["darwin"], 555 + "cpu": ["x64"] 556 + }, 557 + "@libsql/hrana-client@0.7.0": { 558 + "integrity": "sha512-OF8fFQSkbL7vJY9rfuegK1R7sPgQ6kFMkDamiEccNUvieQ+3urzfDFI616oPl8V7T9zRmnTkSjMOImYCAVRVuw==", 559 + "dependencies": [ 560 + "@libsql/isomorphic-fetch", 561 + "@libsql/isomorphic-ws", 562 + "js-base64", 563 + "node-fetch" 564 + ] 565 + }, 566 + "@libsql/isomorphic-fetch@0.3.1": { 567 + "integrity": "sha512-6kK3SUK5Uu56zPq/Las620n5aS9xJq+jMBcNSOmjhNf/MUvdyji4vrMTqD7ptY7/4/CAVEAYDeotUz60LNQHtw==" 568 + }, 569 + "@libsql/isomorphic-ws@0.1.5": { 570 + "integrity": "sha512-DtLWIH29onUYR00i0GlQ3UdcTRC6EP4u9w/h9LxpUZJWRMARk6dQwZ6Jkd+QdwVpuAOrdxt18v0K2uIYR3fwFg==", 571 + "dependencies": [ 572 + "@types/ws", 573 + "ws" 574 + ] 575 + }, 576 + "@libsql/linux-arm-gnueabihf@0.5.22": { 577 + "integrity": "sha512-3Uo3SoDPJe/zBnyZKosziRGtszXaEtv57raWrZIahtQDsjxBVjuzYQinCm9LRCJCUT5t2r5Z5nLDPJi2CwZVoA==", 578 + "os": ["linux"], 579 + "cpu": ["arm"] 580 + }, 581 + "@libsql/linux-arm-musleabihf@0.5.22": { 582 + "integrity": "sha512-LCsXh07jvSojTNJptT9CowOzwITznD+YFGGW+1XxUr7fS+7/ydUrpDfsMX7UqTqjm7xG17eq86VkWJgHJfvpNg==", 583 + "os": ["linux"], 584 + "cpu": ["arm"] 585 + }, 586 + "@libsql/linux-arm64-gnu@0.5.22": { 587 + "integrity": "sha512-KSdnOMy88c9mpOFKUEzPskSaF3VLflfSUCBwas/pn1/sV3pEhtMF6H8VUCd2rsedwoukeeCSEONqX7LLnQwRMA==", 588 + "os": ["linux"], 589 + "cpu": ["arm64"] 590 + }, 591 + "@libsql/linux-arm64-musl@0.5.22": { 592 + "integrity": "sha512-mCHSMAsDTLK5YH//lcV3eFEgiR23Ym0U9oEvgZA0667gqRZg/2px+7LshDvErEKv2XZ8ixzw3p1IrBzLQHGSsw==", 593 + "os": ["linux"], 594 + "cpu": ["arm64"] 595 + }, 596 + "@libsql/linux-x64-gnu@0.5.22": { 597 + "integrity": "sha512-kNBHaIkSg78Y4BqAdgjcR2mBilZXs4HYkAmi58J+4GRwDQZh5fIUWbnQvB9f95DkWUIGVeenqLRFY2pcTmlsew==", 598 + "os": ["linux"], 599 + "cpu": ["x64"] 600 + }, 601 + "@libsql/linux-x64-musl@0.5.22": { 602 + "integrity": "sha512-UZ4Xdxm4pu3pQXjvfJiyCzZop/9j/eA2JjmhMaAhe3EVLH2g11Fy4fwyUp9sT1QJYR1kpc2JLuybPM0kuXv/Tg==", 603 + "os": ["linux"], 604 + "cpu": ["x64"] 605 + }, 606 + "@libsql/win32-x64-msvc@0.5.22": { 607 + "integrity": "sha512-Fj0j8RnBpo43tVZUVoNK6BV/9AtDUM5S7DF3LB4qTYg1LMSZqi3yeCneUTLJD6XomQJlZzbI4mst89yspVSAnA==", 608 + "os": ["win32"], 609 + "cpu": ["x64"] 610 + }, 611 + "@neon-rs/load@0.0.4": { 612 + "integrity": "sha512-kTPhdZyTQxB+2wpiRcFWrDcejc4JI6tkPuS7UZCG4l6Zvc5kU/gGQ/ozvHTh1XR5tS+UlfAfGuPajjzQjCiHCw==" 613 + }, 614 + "@pinojs/redact@0.4.0": { 615 + "integrity": "sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg==" 616 + }, 617 + "@pkgr/core@0.2.9": { 618 + "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==" 619 + }, 620 + "@scalar/core@0.3.26": { 621 + "integrity": "sha512-CTwhU0zteyhFvlGbiErUC/nt7o4VMraXC4E52x2Cz+s/rgGrmS00pTYtnjO3NVQXXqjScq8BqMTqBZrHQEJhWw==", 622 + "dependencies": [ 623 + "@scalar/types" 624 + ] 625 + }, 626 + "@scalar/hono-api-reference@0.9.28_hono@4.11.0": { 627 + "integrity": "sha512-RVY55Rpcy9/irv0SMSxuSlQ6wDyuP+iTDmTz/d5tGv/qqo8vEOJMdDRNftMUqdtqiZUAE8fXJnuDCTJ80ZztAQ==", 628 + "dependencies": [ 629 + "@scalar/core", 630 + "hono" 631 + ] 632 + }, 633 + "@scalar/types@0.5.2": { 634 + "integrity": "sha512-F5wyb/B/Mu56PpNqhgSfuKwiwVnmhNhzTOo+k5b++HvYhjwAnqnw8BzbDzwXhhn172IPw8kSkupA/vphw61IRA==", 635 + "dependencies": [ 636 + "nanoid@5.1.5", 637 + "type-fest", 638 + "zod" 639 + ] 640 + }, 641 + "@sindresorhus/base62@1.0.0": { 642 + "integrity": "sha512-TeheYy0ILzBEI/CO55CP6zJCSdSWeRtGnHy8U8dWSUH4I68iqTsy7HkMktR4xakThc9jotkPQUXT4ITdbV7cHA==" 643 + }, 644 + "@stylistic/eslint-plugin@5.6.1_eslint@9.39.2": { 645 + "integrity": "sha512-JCs+MqoXfXrRPGbGmho/zGS/jMcn3ieKl/A8YImqib76C8kjgZwq5uUFzc30lJkMvcchuRn6/v8IApLxli3Jyw==", 646 + "dependencies": [ 647 + "@eslint-community/eslint-utils", 648 + "@typescript-eslint/types", 649 + "eslint", 650 + "eslint-visitor-keys@4.2.1", 651 + "espree@10.4.0_acorn@8.15.0", 652 + "estraverse", 653 + "picomatch" 654 + ] 655 + }, 656 + "@types/debug@4.1.12": { 657 + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", 658 + "dependencies": [ 659 + "@types/ms" 660 + ] 661 + }, 662 + "@types/deno@2.5.0": { 663 + "integrity": "sha512-g8JS38vmc0S87jKsFzre+0ZyMOUDHPVokEJymSCRlL57h6f/FdKPWBXgdFh3Z8Ees9sz11qt9VWELU9Y9ZkiVw==" 664 + }, 665 + "@types/estree@1.0.8": { 666 + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==" 667 + }, 668 + "@types/json-schema@7.0.15": { 669 + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" 670 + }, 671 + "@types/mdast@4.0.4": { 672 + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", 673 + "dependencies": [ 674 + "@types/unist" 675 + ] 676 + }, 677 + "@types/ms@2.1.0": { 678 + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==" 679 + }, 680 + "@types/node@25.0.3": { 681 + "integrity": "sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA==", 682 + "dependencies": [ 683 + "undici-types" 684 + ] 685 + }, 686 + "@types/unist@3.0.3": { 687 + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" 688 + }, 689 + "@types/ws@8.18.1": { 690 + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", 691 + "dependencies": [ 692 + "@types/node" 693 + ] 694 + }, 695 + "@typescript-eslint/eslint-plugin@8.49.0_@typescript-eslint+parser@8.49.0__eslint@9.39.2__typescript@5.9.3_eslint@9.39.2_typescript@5.9.3": { 696 + "integrity": "sha512-JXij0vzIaTtCwu6SxTh8qBc66kmf1xs7pI4UOiMDFVct6q86G0Zs7KRcEoJgY3Cav3x5Tq0MF5jwgpgLqgKG3A==", 697 + "dependencies": [ 698 + "@eslint-community/regexpp", 699 + "@typescript-eslint/parser", 700 + "@typescript-eslint/scope-manager", 701 + "@typescript-eslint/type-utils", 702 + "@typescript-eslint/utils", 703 + "@typescript-eslint/visitor-keys", 704 + "eslint", 705 + "ignore@7.0.5", 706 + "natural-compare", 707 + "ts-api-utils", 708 + "typescript" 709 + ] 710 + }, 711 + "@typescript-eslint/parser@8.49.0_eslint@9.39.2_typescript@5.9.3": { 712 + "integrity": "sha512-N9lBGA9o9aqb1hVMc9hzySbhKibHmB+N3IpoShyV6HyQYRGIhlrO5rQgttypi+yEeKsKI4idxC8Jw6gXKD4THA==", 713 + "dependencies": [ 714 + "@typescript-eslint/scope-manager", 715 + "@typescript-eslint/types", 716 + "@typescript-eslint/typescript-estree", 717 + "@typescript-eslint/visitor-keys", 718 + "debug", 719 + "eslint", 720 + "typescript" 721 + ] 722 + }, 723 + "@typescript-eslint/project-service@8.49.0_typescript@5.9.3": { 724 + "integrity": "sha512-/wJN0/DKkmRUMXjZUXYZpD1NEQzQAAn9QWfGwo+Ai8gnzqH7tvqS7oNVdTjKqOcPyVIdZdyCMoqN66Ia789e7g==", 725 + "dependencies": [ 726 + "@typescript-eslint/tsconfig-utils", 727 + "@typescript-eslint/types", 728 + "debug", 729 + "typescript" 730 + ] 731 + }, 732 + "@typescript-eslint/scope-manager@8.49.0": { 733 + "integrity": "sha512-npgS3zi+/30KSOkXNs0LQXtsg9ekZ8OISAOLGWA/ZOEn0ZH74Ginfl7foziV8DT+D98WfQ5Kopwqb/PZOaIJGg==", 734 + "dependencies": [ 735 + "@typescript-eslint/types", 736 + "@typescript-eslint/visitor-keys" 737 + ] 738 + }, 739 + "@typescript-eslint/tsconfig-utils@8.49.0_typescript@5.9.3": { 740 + "integrity": "sha512-8prixNi1/6nawsRYxet4YOhnbW+W9FK/bQPxsGB1D3ZrDzbJ5FXw5XmzxZv82X3B+ZccuSxo/X8q9nQ+mFecWA==", 741 + "dependencies": [ 742 + "typescript" 743 + ] 744 + }, 745 + "@typescript-eslint/type-utils@8.49.0_eslint@9.39.2_typescript@5.9.3": { 746 + "integrity": "sha512-KTExJfQ+svY8I10P4HdxKzWsvtVnsuCifU5MvXrRwoP2KOlNZ9ADNEWWsQTJgMxLzS5VLQKDjkCT/YzgsnqmZg==", 747 + "dependencies": [ 748 + "@typescript-eslint/types", 749 + "@typescript-eslint/typescript-estree", 750 + "@typescript-eslint/utils", 751 + "debug", 752 + "eslint", 753 + "ts-api-utils", 754 + "typescript" 755 + ] 756 + }, 757 + "@typescript-eslint/types@8.49.0": { 758 + "integrity": "sha512-e9k/fneezorUo6WShlQpMxXh8/8wfyc+biu6tnAqA81oWrEic0k21RHzP9uqqpyBBeBKu4T+Bsjy9/b8u7obXQ==" 759 + }, 760 + "@typescript-eslint/typescript-estree@8.49.0_typescript@5.9.3": { 761 + "integrity": "sha512-jrLdRuAbPfPIdYNppHJ/D0wN+wwNfJ32YTAm10eJVsFmrVpXQnDWBn8niCSMlWjvml8jsce5E/O+86IQtTbJWA==", 762 + "dependencies": [ 763 + "@typescript-eslint/project-service", 764 + "@typescript-eslint/tsconfig-utils", 765 + "@typescript-eslint/types", 766 + "@typescript-eslint/visitor-keys", 767 + "debug", 768 + "minimatch@9.0.5", 769 + "semver", 770 + "tinyglobby", 771 + "ts-api-utils", 772 + "typescript" 773 + ] 774 + }, 775 + "@typescript-eslint/utils@8.49.0_eslint@9.39.2_typescript@5.9.3": { 776 + "integrity": "sha512-N3W7rJw7Rw+z1tRsHZbK395TWSYvufBXumYtEGzypgMUthlg0/hmCImeA8hgO2d2G4pd7ftpxxul2J8OdtdaFA==", 777 + "dependencies": [ 778 + "@eslint-community/eslint-utils", 779 + "@typescript-eslint/scope-manager", 780 + "@typescript-eslint/types", 781 + "@typescript-eslint/typescript-estree", 782 + "eslint", 783 + "typescript" 784 + ] 785 + }, 786 + "@typescript-eslint/visitor-keys@8.49.0": { 787 + "integrity": "sha512-LlKaciDe3GmZFphXIc79THF/YYBugZ7FS1pO581E/edlVVNbZKDy93evqmrfQ9/Y4uN0vVhX4iuchq26mK/iiA==", 788 + "dependencies": [ 789 + "@typescript-eslint/types", 790 + "eslint-visitor-keys@4.2.1" 791 + ] 792 + }, 793 + "@vitest/eslint-plugin@1.5.2_eslint@9.39.2_typescript@5.9.3": { 794 + "integrity": "sha512-2t1F2iecXB/b1Ox4U137lhD3chihEE3dRVtu3qMD35tc6UqUjg1VGRJoS1AkFKwpT8zv8OQInzPQO06hrRkeqw==", 795 + "dependencies": [ 796 + "@typescript-eslint/scope-manager", 797 + "@typescript-eslint/utils", 798 + "eslint", 799 + "typescript" 800 + ], 801 + "optionalPeers": [ 802 + "typescript" 803 + ] 804 + }, 805 + "@vue/compiler-core@3.5.25": { 806 + "integrity": "sha512-vay5/oQJdsNHmliWoZfHPoVZZRmnSWhug0BYT34njkYTPqClh3DNWLkZNJBVSjsNMrg0CCrBfoKkjZQPM/QVUw==", 807 + "dependencies": [ 808 + "@babel/parser", 809 + "@vue/shared", 810 + "entities", 811 + "estree-walker", 812 + "source-map-js" 813 + ] 814 + }, 815 + "@vue/compiler-dom@3.5.25": { 816 + "integrity": "sha512-4We0OAcMZsKgYoGlMjzYvaoErltdFI2/25wqanuTu+S4gismOTRTBPi4IASOjxWdzIwrYSjnqONfKvuqkXzE2Q==", 817 + "dependencies": [ 818 + "@vue/compiler-core", 819 + "@vue/shared" 820 + ] 821 + }, 822 + "@vue/compiler-sfc@3.5.25": { 823 + "integrity": "sha512-PUgKp2rn8fFsI++lF2sO7gwO2d9Yj57Utr5yEsDf3GNaQcowCLKL7sf+LvVFvtJDXUp/03+dC6f2+LCv5aK1ag==", 824 + "dependencies": [ 825 + "@babel/parser", 826 + "@vue/compiler-core", 827 + "@vue/compiler-dom", 828 + "@vue/compiler-ssr", 829 + "@vue/shared", 830 + "estree-walker", 831 + "magic-string", 832 + "postcss", 833 + "source-map-js" 834 + ] 835 + }, 836 + "@vue/compiler-ssr@3.5.25": { 837 + "integrity": "sha512-ritPSKLBcParnsKYi+GNtbdbrIE1mtuFEJ4U1sWeuOMlIziK5GtOL85t5RhsNy4uWIXPgk+OUdpnXiTdzn8o3A==", 838 + "dependencies": [ 839 + "@vue/compiler-dom", 840 + "@vue/shared" 841 + ] 842 + }, 843 + "@vue/shared@3.5.25": { 844 + "integrity": "sha512-AbOPdQQnAnzs58H2FrrDxYj/TJfmeS2jdfEEhgiKINy+bnOANmVizIEgq1r+C5zsbs6l1CCQxtcj71rwNQ4jWg==" 845 + }, 846 + "acorn-jsx@5.3.2_acorn@8.15.0": { 847 + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", 848 + "dependencies": [ 849 + "acorn" 850 + ] 851 + }, 852 + "acorn@8.15.0": { 853 + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", 854 + "bin": true 855 + }, 856 + "ajv@6.12.6": { 857 + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 858 + "dependencies": [ 859 + "fast-deep-equal", 860 + "fast-json-stable-stringify", 861 + "json-schema-traverse", 862 + "uri-js" 863 + ] 864 + }, 865 + "ansi-styles@4.3.0": { 866 + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 867 + "dependencies": [ 868 + "color-convert" 869 + ] 870 + }, 871 + "ansis@4.2.0": { 872 + "integrity": "sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig==" 873 + }, 874 + "are-docs-informative@0.0.2": { 875 + "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==" 876 + }, 877 + "argparse@2.0.1": { 878 + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" 879 + }, 880 + "atomic-sleep@1.0.0": { 881 + "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==" 882 + }, 883 + "balanced-match@1.0.2": { 884 + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" 885 + }, 886 + "baseline-browser-mapping@2.9.7": { 887 + "integrity": "sha512-k9xFKplee6KIio3IDbwj+uaCLpqzOwakOgmqzPezM0sFJlFKcg30vk2wOiAJtkTSfx0SSQDSe8q+mWA/fSH5Zg==", 888 + "bin": true 889 + }, 890 + "boolbase@1.0.0": { 891 + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" 892 + }, 893 + "brace-expansion@1.1.12": { 894 + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", 895 + "dependencies": [ 896 + "balanced-match", 897 + "concat-map" 898 + ] 899 + }, 900 + "brace-expansion@2.0.2": { 901 + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", 902 + "dependencies": [ 903 + "balanced-match" 904 + ] 905 + }, 906 + "browserslist@4.28.1": { 907 + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", 908 + "dependencies": [ 909 + "baseline-browser-mapping", 910 + "caniuse-lite", 911 + "electron-to-chromium", 912 + "node-releases", 913 + "update-browserslist-db" 914 + ], 915 + "bin": true 916 + }, 917 + "buffer-from@1.1.2": { 918 + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" 919 + }, 920 + "builtin-modules@5.0.0": { 921 + "integrity": "sha512-bkXY9WsVpY7CvMhKSR6pZilZu9Ln5WDrKVBUXf2S443etkmEO4V58heTecXcUIsNsi4Rx8JUO4NfX1IcQl4deg==" 922 + }, 923 + "cac@6.7.14": { 924 + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==" 925 + }, 926 + "callsites@3.1.0": { 927 + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" 928 + }, 929 + "caniuse-lite@1.0.30001760": { 930 + "integrity": "sha512-7AAMPcueWELt1p3mi13HR/LHH0TJLT11cnwDJEs3xA4+CK/PLKeO9Kl1oru24htkyUKtkGCvAx4ohB0Ttry8Dw==" 931 + }, 932 + "ccount@2.0.1": { 933 + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==" 934 + }, 935 + "chalk@4.1.2": { 936 + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 937 + "dependencies": [ 938 + "ansi-styles", 939 + "supports-color" 940 + ] 941 + }, 942 + "change-case@5.4.4": { 943 + "integrity": "sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==" 944 + }, 945 + "character-entities@2.0.2": { 946 + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==" 947 + }, 948 + "ci-info@4.3.1": { 949 + "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==" 950 + }, 951 + "clean-regexp@1.0.0": { 952 + "integrity": "sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==", 953 + "dependencies": [ 954 + "escape-string-regexp@1.0.5" 955 + ] 956 + }, 957 + "color-convert@2.0.1": { 958 + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 959 + "dependencies": [ 960 + "color-name" 961 + ] 962 + }, 963 + "color-name@1.1.4": { 964 + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" 965 + }, 966 + "colorette@2.0.20": { 967 + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==" 968 + }, 969 + "comment-parser@1.4.1": { 970 + "integrity": "sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==" 971 + }, 972 + "concat-map@0.0.1": { 973 + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" 974 + }, 975 + "confbox@0.1.8": { 976 + "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==" 977 + }, 978 + "confbox@0.2.2": { 979 + "integrity": "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==" 980 + }, 981 + "core-js-compat@3.47.0": { 982 + "integrity": "sha512-IGfuznZ/n7Kp9+nypamBhvwdwLsW6KC8IOaURw2doAK5e98AG3acVLdh0woOnEqCfUtS+Vu882JE4k/DAm3ItQ==", 983 + "dependencies": [ 984 + "browserslist" 985 + ] 986 + }, 987 + "cross-spawn@7.0.6": { 988 + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", 989 + "dependencies": [ 990 + "path-key", 991 + "shebang-command", 992 + "which" 993 + ] 994 + }, 995 + "cssesc@3.0.0": { 996 + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", 997 + "bin": true 998 + }, 999 + "data-uri-to-buffer@4.0.1": { 1000 + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==" 1001 + }, 1002 + "dateformat@4.6.3": { 1003 + "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==" 1004 + }, 1005 + "debug@4.4.3": { 1006 + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", 1007 + "dependencies": [ 1008 + "ms" 1009 + ] 1010 + }, 1011 + "decode-named-character-reference@1.2.0": { 1012 + "integrity": "sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==", 1013 + "dependencies": [ 1014 + "character-entities" 1015 + ] 1016 + }, 1017 + "deep-is@0.1.4": { 1018 + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" 1019 + }, 1020 + "defu@6.1.4": { 1021 + "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==" 1022 + }, 1023 + "dequal@2.0.3": { 1024 + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==" 1025 + }, 1026 + "detect-libc@2.0.2": { 1027 + "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==" 1028 + }, 1029 + "devlop@1.1.0": { 1030 + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", 1031 + "dependencies": [ 1032 + "dequal" 1033 + ] 1034 + }, 1035 + "diff-sequences@27.5.1": { 1036 + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==" 1037 + }, 1038 + "drizzle-kit@0.31.8_esbuild@0.25.12": { 1039 + "integrity": "sha512-O9EC/miwdnRDY10qRxM8P3Pg8hXe3LyU4ZipReKOgTwn4OqANmftj8XJz1UPUAS6NMHf0E2htjsbQujUTkncCg==", 1040 + "dependencies": [ 1041 + "@drizzle-team/brocli", 1042 + "@esbuild-kit/esm-loader", 1043 + "esbuild@0.25.12", 1044 + "esbuild-register" 1045 + ], 1046 + "bin": true 1047 + }, 1048 + "drizzle-orm@0.45.1_@libsql+client@0.15.15_postgres@3.4.7": { 1049 + "integrity": "sha512-Te0FOdKIistGNPMq2jscdqngBRfBpC8uMFVwqjf6gtTVJHIQ/dosgV/CLBU2N4ZJBsXL5savCba9b0YJskKdcA==", 1050 + "dependencies": [ 1051 + "@libsql/client", 1052 + "postgres" 1053 + ], 1054 + "optionalPeers": [ 1055 + "@libsql/client", 1056 + "postgres" 1057 + ] 1058 + }, 1059 + "drizzle-zod@0.8.3_drizzle-orm@0.45.1__@libsql+client@0.15.15__postgres@3.4.7_zod@4.1.13_@libsql+client@0.15.15_postgres@3.4.7": { 1060 + "integrity": "sha512-66yVOuvGhKJnTdiqj1/Xaaz9/qzOdRJADpDa68enqS6g3t0kpNkwNYjUuaeXgZfO/UWuIM9HIhSlJ6C5ZraMww==", 1061 + "dependencies": [ 1062 + "drizzle-orm", 1063 + "zod" 1064 + ] 1065 + }, 1066 + "electron-to-chromium@1.5.267": { 1067 + "integrity": "sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==" 1068 + }, 1069 + "empathic@2.0.0": { 1070 + "integrity": "sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==" 1071 + }, 1072 + "end-of-stream@1.4.5": { 1073 + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", 1074 + "dependencies": [ 1075 + "once" 1076 + ] 1077 + }, 1078 + "enhanced-resolve@5.18.4": { 1079 + "integrity": "sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q==", 1080 + "dependencies": [ 1081 + "graceful-fs", 1082 + "tapable" 1083 + ] 1084 + }, 1085 + "entities@4.5.0": { 1086 + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==" 1087 + }, 1088 + "esbuild-register@3.6.0_esbuild@0.25.12": { 1089 + "integrity": "sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==", 1090 + "dependencies": [ 1091 + "debug", 1092 + "esbuild@0.25.12" 1093 + ] 1094 + }, 1095 + "esbuild@0.18.20": { 1096 + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", 1097 + "optionalDependencies": [ 1098 + "@esbuild/android-arm@0.18.20", 1099 + "@esbuild/android-arm64@0.18.20", 1100 + "@esbuild/android-x64@0.18.20", 1101 + "@esbuild/darwin-arm64@0.18.20", 1102 + "@esbuild/darwin-x64@0.18.20", 1103 + "@esbuild/freebsd-arm64@0.18.20", 1104 + "@esbuild/freebsd-x64@0.18.20", 1105 + "@esbuild/linux-arm@0.18.20", 1106 + "@esbuild/linux-arm64@0.18.20", 1107 + "@esbuild/linux-ia32@0.18.20", 1108 + "@esbuild/linux-loong64@0.18.20", 1109 + "@esbuild/linux-mips64el@0.18.20", 1110 + "@esbuild/linux-ppc64@0.18.20", 1111 + "@esbuild/linux-riscv64@0.18.20", 1112 + "@esbuild/linux-s390x@0.18.20", 1113 + "@esbuild/linux-x64@0.18.20", 1114 + "@esbuild/netbsd-x64@0.18.20", 1115 + "@esbuild/openbsd-x64@0.18.20", 1116 + "@esbuild/sunos-x64@0.18.20", 1117 + "@esbuild/win32-arm64@0.18.20", 1118 + "@esbuild/win32-ia32@0.18.20", 1119 + "@esbuild/win32-x64@0.18.20" 1120 + ], 1121 + "scripts": true, 1122 + "bin": true 1123 + }, 1124 + "esbuild@0.25.12": { 1125 + "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", 1126 + "optionalDependencies": [ 1127 + "@esbuild/aix-ppc64", 1128 + "@esbuild/android-arm@0.25.12", 1129 + "@esbuild/android-arm64@0.25.12", 1130 + "@esbuild/android-x64@0.25.12", 1131 + "@esbuild/darwin-arm64@0.25.12", 1132 + "@esbuild/darwin-x64@0.25.12", 1133 + "@esbuild/freebsd-arm64@0.25.12", 1134 + "@esbuild/freebsd-x64@0.25.12", 1135 + "@esbuild/linux-arm@0.25.12", 1136 + "@esbuild/linux-arm64@0.25.12", 1137 + "@esbuild/linux-ia32@0.25.12", 1138 + "@esbuild/linux-loong64@0.25.12", 1139 + "@esbuild/linux-mips64el@0.25.12", 1140 + "@esbuild/linux-ppc64@0.25.12", 1141 + "@esbuild/linux-riscv64@0.25.12", 1142 + "@esbuild/linux-s390x@0.25.12", 1143 + "@esbuild/linux-x64@0.25.12", 1144 + "@esbuild/netbsd-arm64", 1145 + "@esbuild/netbsd-x64@0.25.12", 1146 + "@esbuild/openbsd-arm64", 1147 + "@esbuild/openbsd-x64@0.25.12", 1148 + "@esbuild/openharmony-arm64", 1149 + "@esbuild/sunos-x64@0.25.12", 1150 + "@esbuild/win32-arm64@0.25.12", 1151 + "@esbuild/win32-ia32@0.25.12", 1152 + "@esbuild/win32-x64@0.25.12" 1153 + ], 1154 + "scripts": true, 1155 + "bin": true 1156 + }, 1157 + "escalade@3.2.0": { 1158 + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==" 1159 + }, 1160 + "escape-string-regexp@1.0.5": { 1161 + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" 1162 + }, 1163 + "escape-string-regexp@4.0.0": { 1164 + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" 1165 + }, 1166 + "escape-string-regexp@5.0.0": { 1167 + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==" 1168 + }, 1169 + "eslint-compat-utils@0.5.1_eslint@9.39.2": { 1170 + "integrity": "sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==", 1171 + "dependencies": [ 1172 + "eslint", 1173 + "semver" 1174 + ] 1175 + }, 1176 + "eslint-compat-utils@0.6.5_eslint@9.39.2": { 1177 + "integrity": "sha512-vAUHYzue4YAa2hNACjB8HvUQj5yehAZgiClyFVVom9cP8z5NSFq3PwB/TtJslN2zAMgRX6FCFCjYBbQh71g5RQ==", 1178 + "dependencies": [ 1179 + "eslint", 1180 + "semver" 1181 + ] 1182 + }, 1183 + "eslint-config-flat-gitignore@2.1.0_eslint@9.39.2": { 1184 + "integrity": "sha512-cJzNJ7L+psWp5mXM7jBX+fjHtBvvh06RBlcweMhKD8jWqQw0G78hOW5tpVALGHGFPsBV+ot2H+pdDGJy6CV8pA==", 1185 + "dependencies": [ 1186 + "@eslint/compat", 1187 + "eslint" 1188 + ] 1189 + }, 1190 + "eslint-flat-config-utils@2.1.4": { 1191 + "integrity": "sha512-bEnmU5gqzS+4O+id9vrbP43vByjF+8KOs+QuuV4OlqAuXmnRW2zfI/Rza1fQvdihQ5h4DUo0NqFAiViD4mSrzQ==", 1192 + "dependencies": [ 1193 + "pathe" 1194 + ] 1195 + }, 1196 + "eslint-json-compat-utils@0.2.1_eslint@9.39.2_jsonc-eslint-parser@2.4.2": { 1197 + "integrity": "sha512-YzEodbDyW8DX8bImKhAcCeu/L31Dd/70Bidx2Qex9OFUtgzXLqtfWL4Hr5fM/aCCB8QUZLuJur0S9k6UfgFkfg==", 1198 + "dependencies": [ 1199 + "eslint", 1200 + "esquery", 1201 + "jsonc-eslint-parser" 1202 + ] 1203 + }, 1204 + "eslint-merge-processors@2.0.0_eslint@9.39.2": { 1205 + "integrity": "sha512-sUuhSf3IrJdGooquEUB5TNpGNpBoQccbnaLHsb1XkBLUPPqCNivCpY05ZcpCOiV9uHwO2yxXEWVczVclzMxYlA==", 1206 + "dependencies": [ 1207 + "eslint" 1208 + ] 1209 + }, 1210 + "eslint-plugin-antfu@3.1.1_eslint@9.39.2": { 1211 + "integrity": "sha512-7Q+NhwLfHJFvopI2HBZbSxWXngTwBLKxW1AGXLr2lEGxcEIK/AsDs8pn8fvIizl5aZjBbVbVK5ujmMpBe4Tvdg==", 1212 + "dependencies": [ 1213 + "eslint" 1214 + ] 1215 + }, 1216 + "eslint-plugin-command@3.4.0_eslint@9.39.2": { 1217 + "integrity": "sha512-EW4eg/a7TKEhG0s5IEti72kh3YOTlnhfFNuctq5WnB1fst37/IHTd5OkD+vnlRf3opTvUcSRihAateP6bT5ZcA==", 1218 + "dependencies": [ 1219 + "@es-joy/jsdoccomment@0.78.0", 1220 + "eslint" 1221 + ] 1222 + }, 1223 + "eslint-plugin-es-x@7.8.0_eslint@9.39.2": { 1224 + "integrity": "sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==", 1225 + "dependencies": [ 1226 + "@eslint-community/eslint-utils", 1227 + "@eslint-community/regexpp", 1228 + "eslint", 1229 + "eslint-compat-utils@0.5.1_eslint@9.39.2" 1230 + ] 1231 + }, 1232 + "eslint-plugin-import-lite@0.3.0_eslint@9.39.2_typescript@5.9.3": { 1233 + "integrity": "sha512-dkNBAL6jcoCsXZsQ/Tt2yXmMDoNt5NaBh/U7yvccjiK8cai6Ay+MK77bMykmqQA2bTF6lngaLCDij6MTO3KkvA==", 1234 + "dependencies": [ 1235 + "@eslint-community/eslint-utils", 1236 + "@typescript-eslint/types", 1237 + "eslint", 1238 + "typescript" 1239 + ], 1240 + "optionalPeers": [ 1241 + "typescript" 1242 + ] 1243 + }, 1244 + "eslint-plugin-jsdoc@61.5.0_eslint@9.39.2": { 1245 + "integrity": "sha512-PR81eOGq4S7diVnV9xzFSBE4CDENRQGP0Lckkek8AdHtbj+6Bm0cItwlFnxsLFriJHspiE3mpu8U20eODyToIg==", 1246 + "dependencies": [ 1247 + "@es-joy/jsdoccomment@0.76.0", 1248 + "@es-joy/resolve.exports", 1249 + "are-docs-informative", 1250 + "comment-parser", 1251 + "debug", 1252 + "escape-string-regexp@4.0.0", 1253 + "eslint", 1254 + "espree@10.4.0_acorn@8.15.0", 1255 + "esquery", 1256 + "html-entities", 1257 + "object-deep-merge", 1258 + "parse-imports-exports", 1259 + "semver", 1260 + "spdx-expression-parse", 1261 + "to-valid-identifier" 1262 + ] 1263 + }, 1264 + "eslint-plugin-jsonc@2.21.0_eslint@9.39.2_jsonc-eslint-parser@2.4.2": { 1265 + "integrity": "sha512-HttlxdNG5ly3YjP1cFMP62R4qKLxJURfBZo2gnMY+yQojZxkLyOpY1H1KRTKBmvQeSG9pIpSGEhDjE17vvYosg==", 1266 + "dependencies": [ 1267 + "@eslint-community/eslint-utils", 1268 + "diff-sequences", 1269 + "eslint", 1270 + "eslint-compat-utils@0.6.5_eslint@9.39.2", 1271 + "eslint-json-compat-utils", 1272 + "espree@10.4.0_acorn@8.15.0", 1273 + "graphemer", 1274 + "jsonc-eslint-parser", 1275 + "natural-compare", 1276 + "synckit" 1277 + ] 1278 + }, 1279 + "eslint-plugin-n@17.23.1_eslint@9.39.2_typescript@5.9.3": { 1280 + "integrity": "sha512-68PealUpYoHOBh332JLLD9Sj7OQUDkFpmcfqt8R9sySfFSeuGJjMTJQvCRRB96zO3A/PELRLkPrzsHmzEFQQ5A==", 1281 + "dependencies": [ 1282 + "@eslint-community/eslint-utils", 1283 + "enhanced-resolve", 1284 + "eslint", 1285 + "eslint-plugin-es-x", 1286 + "get-tsconfig", 1287 + "globals@15.15.0", 1288 + "globrex", 1289 + "ignore@5.3.2", 1290 + "semver", 1291 + "ts-declaration-location" 1292 + ] 1293 + }, 1294 + "eslint-plugin-no-only-tests@3.3.0": { 1295 + "integrity": "sha512-brcKcxGnISN2CcVhXJ/kEQlNa0MEfGRtwKtWA16SkqXHKitaKIMrfemJKLKX1YqDU5C/5JY3PvZXd5jEW04e0Q==" 1296 + }, 1297 + "eslint-plugin-perfectionist@4.15.1_eslint@9.39.2_typescript@5.9.3": { 1298 + "integrity": "sha512-MHF0cBoOG0XyBf7G0EAFCuJJu4I18wy0zAoT1OHfx2o6EOx1EFTIzr2HGeuZa1kDcusoX0xJ9V7oZmaeFd773Q==", 1299 + "dependencies": [ 1300 + "@typescript-eslint/types", 1301 + "@typescript-eslint/utils", 1302 + "eslint", 1303 + "natural-orderby" 1304 + ] 1305 + }, 1306 + "eslint-plugin-pnpm@1.4.2_eslint@9.39.2": { 1307 + "integrity": "sha512-em/HEUlud5G3G4VZe2dhgsLm2ey6CG+Y+Lq3fS/RsbnmKhi+D+LcLz31GphTJhizCoKl2oAVndMltOHbuBYe+A==", 1308 + "dependencies": [ 1309 + "empathic", 1310 + "eslint", 1311 + "jsonc-eslint-parser", 1312 + "pathe", 1313 + "pnpm-workspace-yaml", 1314 + "tinyglobby", 1315 + "yaml", 1316 + "yaml-eslint-parser" 1317 + ] 1318 + }, 1319 + "eslint-plugin-regexp@2.10.0_eslint@9.39.2": { 1320 + "integrity": "sha512-ovzQT8ESVn5oOe5a7gIDPD5v9bCSjIFJu57sVPDqgPRXicQzOnYfFN21WoQBQF18vrhT5o7UMKFwJQVVjyJ0ng==", 1321 + "dependencies": [ 1322 + "@eslint-community/eslint-utils", 1323 + "@eslint-community/regexpp", 1324 + "comment-parser", 1325 + "eslint", 1326 + "jsdoc-type-pratt-parser@4.8.0", 1327 + "refa", 1328 + "regexp-ast-analysis", 1329 + "scslre" 1330 + ] 1331 + }, 1332 + "eslint-plugin-toml@0.12.0_eslint@9.39.2": { 1333 + "integrity": "sha512-+/wVObA9DVhwZB1nG83D2OAQRrcQZXy+drqUnFJKymqnmbnbfg/UPmEMCKrJNcEboUGxUjYrJlgy+/Y930mURQ==", 1334 + "dependencies": [ 1335 + "debug", 1336 + "eslint", 1337 + "eslint-compat-utils@0.6.5_eslint@9.39.2", 1338 + "lodash", 1339 + "toml-eslint-parser" 1340 + ] 1341 + }, 1342 + "eslint-plugin-unicorn@62.0.0_eslint@9.39.2": { 1343 + "integrity": "sha512-HIlIkGLkvf29YEiS/ImuDZQbP12gWyx5i3C6XrRxMvVdqMroCI9qoVYCoIl17ChN+U89pn9sVwLxhIWj5nEc7g==", 1344 + "dependencies": [ 1345 + "@babel/helper-validator-identifier", 1346 + "@eslint-community/eslint-utils", 1347 + "@eslint/plugin-kit", 1348 + "change-case", 1349 + "ci-info", 1350 + "clean-regexp", 1351 + "core-js-compat", 1352 + "eslint", 1353 + "esquery", 1354 + "find-up-simple", 1355 + "globals@16.5.0", 1356 + "indent-string", 1357 + "is-builtin-module", 1358 + "jsesc", 1359 + "pluralize", 1360 + "regexp-tree", 1361 + "regjsparser", 1362 + "semver", 1363 + "strip-indent" 1364 + ] 1365 + }, 1366 + "eslint-plugin-unused-imports@4.3.0_@typescript-eslint+eslint-plugin@8.49.0__@typescript-eslint+parser@8.49.0___eslint@9.39.2___typescript@5.9.3__eslint@9.39.2__typescript@5.9.3_eslint@9.39.2_@typescript-eslint+parser@8.49.0__eslint@9.39.2__typescript@5.9.3_typescript@5.9.3": { 1367 + "integrity": "sha512-ZFBmXMGBYfHttdRtOG9nFFpmUvMtbHSjsKrS20vdWdbfiVYsO3yA2SGYy9i9XmZJDfMGBflZGBCm70SEnFQtOA==", 1368 + "dependencies": [ 1369 + "@typescript-eslint/eslint-plugin", 1370 + "eslint" 1371 + ], 1372 + "optionalPeers": [ 1373 + "@typescript-eslint/eslint-plugin" 1374 + ] 1375 + }, 1376 + "eslint-plugin-vue@10.6.2_@stylistic+eslint-plugin@5.6.1__eslint@9.39.2_@typescript-eslint+parser@8.49.0__eslint@9.39.2__typescript@5.9.3_eslint@9.39.2_vue-eslint-parser@10.2.0__eslint@9.39.2_typescript@5.9.3": { 1377 + "integrity": "sha512-nA5yUs/B1KmKzvC42fyD0+l9Yd+LtEpVhWRbXuDj0e+ZURcTtyRbMDWUeJmTAh2wC6jC83raS63anNM2YT3NPw==", 1378 + "dependencies": [ 1379 + "@eslint-community/eslint-utils", 1380 + "@stylistic/eslint-plugin", 1381 + "@typescript-eslint/parser", 1382 + "eslint", 1383 + "natural-compare", 1384 + "nth-check", 1385 + "postcss-selector-parser", 1386 + "semver", 1387 + "vue-eslint-parser", 1388 + "xml-name-validator" 1389 + ], 1390 + "optionalPeers": [ 1391 + "@stylistic/eslint-plugin", 1392 + "@typescript-eslint/parser" 1393 + ] 1394 + }, 1395 + "eslint-plugin-yml@1.19.0_eslint@9.39.2": { 1396 + "integrity": "sha512-S+4GbcCWksFKAvFJtf0vpdiCkZZvDJCV4Zsi9ahmYkYOYcf+LRqqzvzkb/ST7vTYV6sFwXOvawzYyL/jFT2nQA==", 1397 + "dependencies": [ 1398 + "debug", 1399 + "diff-sequences", 1400 + "escape-string-regexp@4.0.0", 1401 + "eslint", 1402 + "eslint-compat-utils@0.6.5_eslint@9.39.2", 1403 + "natural-compare", 1404 + "yaml-eslint-parser" 1405 + ] 1406 + }, 1407 + "eslint-processor-vue-blocks@2.0.0_@vue+compiler-sfc@3.5.25_eslint@9.39.2": { 1408 + "integrity": "sha512-u4W0CJwGoWY3bjXAuFpc/b6eK3NQEI8MoeW7ritKj3G3z/WtHrKjkqf+wk8mPEy5rlMGS+k6AZYOw2XBoN/02Q==", 1409 + "dependencies": [ 1410 + "@vue/compiler-sfc", 1411 + "eslint" 1412 + ] 1413 + }, 1414 + "eslint-scope@8.4.0": { 1415 + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", 1416 + "dependencies": [ 1417 + "esrecurse", 1418 + "estraverse" 1419 + ] 1420 + }, 1421 + "eslint-visitor-keys@3.4.3": { 1422 + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==" 1423 + }, 1424 + "eslint-visitor-keys@4.2.1": { 1425 + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==" 1426 + }, 1427 + "eslint@9.39.2": { 1428 + "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==", 1429 + "dependencies": [ 1430 + "@eslint-community/eslint-utils", 1431 + "@eslint-community/regexpp", 1432 + "@eslint/config-array", 1433 + "@eslint/config-helpers", 1434 + "@eslint/core", 1435 + "@eslint/eslintrc", 1436 + "@eslint/js", 1437 + "@eslint/plugin-kit", 1438 + "@humanfs/node", 1439 + "@humanwhocodes/module-importer", 1440 + "@humanwhocodes/retry", 1441 + "@types/estree", 1442 + "ajv", 1443 + "chalk", 1444 + "cross-spawn", 1445 + "debug", 1446 + "escape-string-regexp@4.0.0", 1447 + "eslint-scope", 1448 + "eslint-visitor-keys@4.2.1", 1449 + "espree@10.4.0_acorn@8.15.0", 1450 + "esquery", 1451 + "esutils", 1452 + "fast-deep-equal", 1453 + "file-entry-cache", 1454 + "find-up", 1455 + "glob-parent", 1456 + "ignore@5.3.2", 1457 + "imurmurhash", 1458 + "is-glob", 1459 + "json-stable-stringify-without-jsonify", 1460 + "lodash.merge", 1461 + "minimatch@3.1.2", 1462 + "natural-compare", 1463 + "optionator" 1464 + ], 1465 + "bin": true 1466 + }, 1467 + "espree@10.4.0_acorn@8.15.0": { 1468 + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", 1469 + "dependencies": [ 1470 + "acorn", 1471 + "acorn-jsx", 1472 + "eslint-visitor-keys@4.2.1" 1473 + ] 1474 + }, 1475 + "espree@9.6.1_acorn@8.15.0": { 1476 + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", 1477 + "dependencies": [ 1478 + "acorn", 1479 + "acorn-jsx", 1480 + "eslint-visitor-keys@3.4.3" 1481 + ] 1482 + }, 1483 + "esquery@1.6.0": { 1484 + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", 1485 + "dependencies": [ 1486 + "estraverse" 1487 + ] 1488 + }, 1489 + "esrecurse@4.3.0": { 1490 + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 1491 + "dependencies": [ 1492 + "estraverse" 1493 + ] 1494 + }, 1495 + "estraverse@5.3.0": { 1496 + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" 1497 + }, 1498 + "estree-walker@2.0.2": { 1499 + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" 1500 + }, 1501 + "esutils@2.0.3": { 1502 + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" 1503 + }, 1504 + "exsolve@1.0.8": { 1505 + "integrity": "sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==" 1506 + }, 1507 + "fast-copy@4.0.1": { 1508 + "integrity": "sha512-+uUOQlhsaswsizHFmEFAQhB3lSiQ+lisxl50N6ZP0wywlZeWsIESxSi9ftPEps8UGfiBzyYP7x27zA674WUvXw==" 1509 + }, 1510 + "fast-deep-equal@3.1.3": { 1511 + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" 1512 + }, 1513 + "fast-json-stable-stringify@2.1.0": { 1514 + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" 1515 + }, 1516 + "fast-levenshtein@2.0.6": { 1517 + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" 1518 + }, 1519 + "fast-safe-stringify@2.1.1": { 1520 + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" 1521 + }, 1522 + "fault@2.0.1": { 1523 + "integrity": "sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==", 1524 + "dependencies": [ 1525 + "format" 1526 + ] 1527 + }, 1528 + "fdir@6.5.0_picomatch@4.0.3": { 1529 + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", 1530 + "dependencies": [ 1531 + "picomatch" 1532 + ], 1533 + "optionalPeers": [ 1534 + "picomatch" 1535 + ] 1536 + }, 1537 + "fetch-blob@3.2.0": { 1538 + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", 1539 + "dependencies": [ 1540 + "node-domexception", 1541 + "web-streams-polyfill" 1542 + ] 1543 + }, 1544 + "file-entry-cache@8.0.0": { 1545 + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", 1546 + "dependencies": [ 1547 + "flat-cache" 1548 + ] 1549 + }, 1550 + "find-up-simple@1.0.1": { 1551 + "integrity": "sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==" 1552 + }, 1553 + "find-up@5.0.0": { 1554 + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 1555 + "dependencies": [ 1556 + "locate-path", 1557 + "path-exists" 1558 + ] 1559 + }, 1560 + "flat-cache@4.0.1": { 1561 + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", 1562 + "dependencies": [ 1563 + "flatted", 1564 + "keyv" 1565 + ] 1566 + }, 1567 + "flatted@3.3.3": { 1568 + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==" 1569 + }, 1570 + "format@0.2.2": { 1571 + "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==" 1572 + }, 1573 + "formdata-polyfill@4.0.10": { 1574 + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", 1575 + "dependencies": [ 1576 + "fetch-blob" 1577 + ] 1578 + }, 1579 + "get-tsconfig@4.13.0": { 1580 + "integrity": "sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==", 1581 + "dependencies": [ 1582 + "resolve-pkg-maps" 1583 + ] 1584 + }, 1585 + "github-slugger@2.0.0": { 1586 + "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==" 1587 + }, 1588 + "glob-parent@6.0.2": { 1589 + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", 1590 + "dependencies": [ 1591 + "is-glob" 1592 + ] 1593 + }, 1594 + "globals@14.0.0": { 1595 + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==" 1596 + }, 1597 + "globals@15.15.0": { 1598 + "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==" 1599 + }, 1600 + "globals@16.5.0": { 1601 + "integrity": "sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==" 1602 + }, 1603 + "globrex@0.1.2": { 1604 + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==" 1605 + }, 1606 + "graceful-fs@4.2.11": { 1607 + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" 1608 + }, 1609 + "graphemer@1.4.0": { 1610 + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==" 1611 + }, 1612 + "has-flag@4.0.0": { 1613 + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" 1614 + }, 1615 + "help-me@5.0.0": { 1616 + "integrity": "sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==" 1617 + }, 1618 + "hono-pino@0.10.3_hono@4.11.0_pino@10.1.0": { 1619 + "integrity": "sha512-n0RNPIFOoq25Fg8b4D5gus4sVqI0z+8I17ibl96+p43d07UnZ0EMM/It0qSgfc7UtaC+XP5FkFmRHwBp6owsNA==", 1620 + "dependencies": [ 1621 + "defu", 1622 + "hono", 1623 + "pino" 1624 + ] 1625 + }, 1626 + "hono@4.11.0": { 1627 + "integrity": "sha512-Jg8uZzN2ul8/qlyid5FO8O624F3AK0wKtkgoeEON1qBum1rM1itYBxoMKu/1SPJC7F1+xlIZsJMmc4HHhJ1AWg==" 1628 + }, 1629 + "html-entities@2.6.0": { 1630 + "integrity": "sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==" 1631 + }, 1632 + "ignore@5.3.2": { 1633 + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==" 1634 + }, 1635 + "ignore@7.0.5": { 1636 + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==" 1637 + }, 1638 + "import-fresh@3.3.1": { 1639 + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", 1640 + "dependencies": [ 1641 + "parent-module", 1642 + "resolve-from" 1643 + ] 1644 + }, 1645 + "imurmurhash@0.1.4": { 1646 + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" 1647 + }, 1648 + "indent-string@5.0.0": { 1649 + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==" 1650 + }, 1651 + "is-builtin-module@5.0.0": { 1652 + "integrity": "sha512-f4RqJKBUe5rQkJ2eJEJBXSticB3hGbN9j0yxxMQFqIW89Jp9WYFtzfTcRlstDKVUTRzSOTLKRfO9vIztenwtxA==", 1653 + "dependencies": [ 1654 + "builtin-modules" 1655 + ] 1656 + }, 1657 + "is-extglob@2.1.1": { 1658 + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" 1659 + }, 1660 + "is-glob@4.0.3": { 1661 + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 1662 + "dependencies": [ 1663 + "is-extglob" 1664 + ] 1665 + }, 1666 + "isexe@2.0.0": { 1667 + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" 1668 + }, 1669 + "joycon@3.1.1": { 1670 + "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==" 1671 + }, 1672 + "js-base64@3.7.8": { 1673 + "integrity": "sha512-hNngCeKxIUQiEUN3GPJOkz4wF/YvdUdbNL9hsBcMQTkKzboD7T/q3OYOuuPZLUE6dBxSGpwhk5mwuDud7JVAow==" 1674 + }, 1675 + "js-yaml@4.1.1": { 1676 + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", 1677 + "dependencies": [ 1678 + "argparse" 1679 + ], 1680 + "bin": true 1681 + }, 1682 + "jsdoc-type-pratt-parser@4.8.0": { 1683 + "integrity": "sha512-iZ8Bdb84lWRuGHamRXFyML07r21pcwBrLkHEuHgEY5UbCouBwv7ECknDRKzsQIXMiqpPymqtIf8TC/shYKB5rw==" 1684 + }, 1685 + "jsdoc-type-pratt-parser@6.10.0": { 1686 + "integrity": "sha512-+LexoTRyYui5iOhJGn13N9ZazL23nAHGkXsa1p/C8yeq79WRfLBag6ZZ0FQG2aRoc9yfo59JT9EYCQonOkHKkQ==" 1687 + }, 1688 + "jsdoc-type-pratt-parser@7.0.0": { 1689 + "integrity": "sha512-c7YbokssPOSHmqTbSAmTtnVgAVa/7lumWNYqomgd5KOMyPrRve2anx6lonfOsXEQacqF9FKVUj7bLg4vRSvdYA==" 1690 + }, 1691 + "jsesc@3.1.0": { 1692 + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", 1693 + "bin": true 1694 + }, 1695 + "json-buffer@3.0.1": { 1696 + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" 1697 + }, 1698 + "json-schema-traverse@0.4.1": { 1699 + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" 1700 + }, 1701 + "json-stable-stringify-without-jsonify@1.0.1": { 1702 + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" 1703 + }, 1704 + "jsonc-eslint-parser@2.4.2": { 1705 + "integrity": "sha512-1e4qoRgnn448pRuMvKGsFFymUCquZV0mpGgOyIKNgD3JVDTsVJyRBGH/Fm0tBb8WsWGgmB1mDe6/yJMQM37DUA==", 1706 + "dependencies": [ 1707 + "acorn", 1708 + "eslint-visitor-keys@3.4.3", 1709 + "espree@9.6.1_acorn@8.15.0", 1710 + "semver" 1711 + ] 1712 + }, 1713 + "keyv@4.5.4": { 1714 + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", 1715 + "dependencies": [ 1716 + "json-buffer" 1717 + ] 1718 + }, 1719 + "levn@0.4.1": { 1720 + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", 1721 + "dependencies": [ 1722 + "prelude-ls", 1723 + "type-check" 1724 + ] 1725 + }, 1726 + "libsql@0.5.22": { 1727 + "integrity": "sha512-NscWthMQt7fpU8lqd7LXMvT9pi+KhhmTHAJWUB/Lj6MWa0MKFv0F2V4C6WKKpjCVZl0VwcDz4nOI3CyaT1DDiA==", 1728 + "dependencies": [ 1729 + "@neon-rs/load", 1730 + "detect-libc" 1731 + ], 1732 + "optionalDependencies": [ 1733 + "@libsql/darwin-arm64", 1734 + "@libsql/darwin-x64", 1735 + "@libsql/linux-arm-gnueabihf", 1736 + "@libsql/linux-arm-musleabihf", 1737 + "@libsql/linux-arm64-gnu", 1738 + "@libsql/linux-arm64-musl", 1739 + "@libsql/linux-x64-gnu", 1740 + "@libsql/linux-x64-musl", 1741 + "@libsql/win32-x64-msvc" 1742 + ], 1743 + "os": ["darwin", "linux", "win32"], 1744 + "cpu": ["x64", "arm64", "wasm32", "arm"] 1745 + }, 1746 + "local-pkg@1.1.2": { 1747 + "integrity": "sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==", 1748 + "dependencies": [ 1749 + "mlly", 1750 + "pkg-types@2.3.0", 1751 + "quansync" 1752 + ] 1753 + }, 1754 + "locate-path@6.0.0": { 1755 + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 1756 + "dependencies": [ 1757 + "p-locate" 1758 + ] 1759 + }, 1760 + "lodash.merge@4.6.2": { 1761 + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" 1762 + }, 1763 + "lodash@4.17.21": { 1764 + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" 1765 + }, 1766 + "longest-streak@3.1.0": { 1767 + "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==" 1768 + }, 1769 + "magic-string@0.30.21": { 1770 + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", 1771 + "dependencies": [ 1772 + "@jridgewell/sourcemap-codec" 1773 + ] 1774 + }, 1775 + "markdown-table@3.0.4": { 1776 + "integrity": "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==" 1777 + }, 1778 + "mdast-util-find-and-replace@3.0.2": { 1779 + "integrity": "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==", 1780 + "dependencies": [ 1781 + "@types/mdast", 1782 + "escape-string-regexp@5.0.0", 1783 + "unist-util-is", 1784 + "unist-util-visit-parents" 1785 + ] 1786 + }, 1787 + "mdast-util-from-markdown@2.0.2": { 1788 + "integrity": "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==", 1789 + "dependencies": [ 1790 + "@types/mdast", 1791 + "@types/unist", 1792 + "decode-named-character-reference", 1793 + "devlop", 1794 + "mdast-util-to-string", 1795 + "micromark", 1796 + "micromark-util-decode-numeric-character-reference", 1797 + "micromark-util-decode-string", 1798 + "micromark-util-normalize-identifier", 1799 + "micromark-util-symbol", 1800 + "micromark-util-types", 1801 + "unist-util-stringify-position" 1802 + ] 1803 + }, 1804 + "mdast-util-frontmatter@2.0.1": { 1805 + "integrity": "sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==", 1806 + "dependencies": [ 1807 + "@types/mdast", 1808 + "devlop", 1809 + "escape-string-regexp@5.0.0", 1810 + "mdast-util-from-markdown", 1811 + "mdast-util-to-markdown", 1812 + "micromark-extension-frontmatter" 1813 + ] 1814 + }, 1815 + "mdast-util-gfm-autolink-literal@2.0.1": { 1816 + "integrity": "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==", 1817 + "dependencies": [ 1818 + "@types/mdast", 1819 + "ccount", 1820 + "devlop", 1821 + "mdast-util-find-and-replace", 1822 + "micromark-util-character" 1823 + ] 1824 + }, 1825 + "mdast-util-gfm-footnote@2.1.0": { 1826 + "integrity": "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==", 1827 + "dependencies": [ 1828 + "@types/mdast", 1829 + "devlop", 1830 + "mdast-util-from-markdown", 1831 + "mdast-util-to-markdown", 1832 + "micromark-util-normalize-identifier" 1833 + ] 1834 + }, 1835 + "mdast-util-gfm-strikethrough@2.0.0": { 1836 + "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", 1837 + "dependencies": [ 1838 + "@types/mdast", 1839 + "mdast-util-from-markdown", 1840 + "mdast-util-to-markdown" 1841 + ] 1842 + }, 1843 + "mdast-util-gfm-table@2.0.0": { 1844 + "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", 1845 + "dependencies": [ 1846 + "@types/mdast", 1847 + "devlop", 1848 + "markdown-table", 1849 + "mdast-util-from-markdown", 1850 + "mdast-util-to-markdown" 1851 + ] 1852 + }, 1853 + "mdast-util-gfm-task-list-item@2.0.0": { 1854 + "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", 1855 + "dependencies": [ 1856 + "@types/mdast", 1857 + "devlop", 1858 + "mdast-util-from-markdown", 1859 + "mdast-util-to-markdown" 1860 + ] 1861 + }, 1862 + "mdast-util-gfm@3.1.0": { 1863 + "integrity": "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==", 1864 + "dependencies": [ 1865 + "mdast-util-from-markdown", 1866 + "mdast-util-gfm-autolink-literal", 1867 + "mdast-util-gfm-footnote", 1868 + "mdast-util-gfm-strikethrough", 1869 + "mdast-util-gfm-table", 1870 + "mdast-util-gfm-task-list-item", 1871 + "mdast-util-to-markdown" 1872 + ] 1873 + }, 1874 + "mdast-util-phrasing@4.1.0": { 1875 + "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", 1876 + "dependencies": [ 1877 + "@types/mdast", 1878 + "unist-util-is" 1879 + ] 1880 + }, 1881 + "mdast-util-to-markdown@2.1.2": { 1882 + "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", 1883 + "dependencies": [ 1884 + "@types/mdast", 1885 + "@types/unist", 1886 + "longest-streak", 1887 + "mdast-util-phrasing", 1888 + "mdast-util-to-string", 1889 + "micromark-util-classify-character", 1890 + "micromark-util-decode-string", 1891 + "unist-util-visit", 1892 + "zwitch" 1893 + ] 1894 + }, 1895 + "mdast-util-to-string@4.0.0": { 1896 + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", 1897 + "dependencies": [ 1898 + "@types/mdast" 1899 + ] 1900 + }, 1901 + "micromark-core-commonmark@2.0.3": { 1902 + "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==", 1903 + "dependencies": [ 1904 + "decode-named-character-reference", 1905 + "devlop", 1906 + "micromark-factory-destination", 1907 + "micromark-factory-label", 1908 + "micromark-factory-space", 1909 + "micromark-factory-title", 1910 + "micromark-factory-whitespace", 1911 + "micromark-util-character", 1912 + "micromark-util-chunked", 1913 + "micromark-util-classify-character", 1914 + "micromark-util-html-tag-name", 1915 + "micromark-util-normalize-identifier", 1916 + "micromark-util-resolve-all", 1917 + "micromark-util-subtokenize", 1918 + "micromark-util-symbol", 1919 + "micromark-util-types" 1920 + ] 1921 + }, 1922 + "micromark-extension-frontmatter@2.0.0": { 1923 + "integrity": "sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg==", 1924 + "dependencies": [ 1925 + "fault", 1926 + "micromark-util-character", 1927 + "micromark-util-symbol", 1928 + "micromark-util-types" 1929 + ] 1930 + }, 1931 + "micromark-extension-gfm-autolink-literal@2.1.0": { 1932 + "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", 1933 + "dependencies": [ 1934 + "micromark-util-character", 1935 + "micromark-util-sanitize-uri", 1936 + "micromark-util-symbol", 1937 + "micromark-util-types" 1938 + ] 1939 + }, 1940 + "micromark-extension-gfm-footnote@2.1.0": { 1941 + "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", 1942 + "dependencies": [ 1943 + "devlop", 1944 + "micromark-core-commonmark", 1945 + "micromark-factory-space", 1946 + "micromark-util-character", 1947 + "micromark-util-normalize-identifier", 1948 + "micromark-util-sanitize-uri", 1949 + "micromark-util-symbol", 1950 + "micromark-util-types" 1951 + ] 1952 + }, 1953 + "micromark-extension-gfm-strikethrough@2.1.0": { 1954 + "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==", 1955 + "dependencies": [ 1956 + "devlop", 1957 + "micromark-util-chunked", 1958 + "micromark-util-classify-character", 1959 + "micromark-util-resolve-all", 1960 + "micromark-util-symbol", 1961 + "micromark-util-types" 1962 + ] 1963 + }, 1964 + "micromark-extension-gfm-table@2.1.1": { 1965 + "integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==", 1966 + "dependencies": [ 1967 + "devlop", 1968 + "micromark-factory-space", 1969 + "micromark-util-character", 1970 + "micromark-util-symbol", 1971 + "micromark-util-types" 1972 + ] 1973 + }, 1974 + "micromark-extension-gfm-tagfilter@2.0.0": { 1975 + "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", 1976 + "dependencies": [ 1977 + "micromark-util-types" 1978 + ] 1979 + }, 1980 + "micromark-extension-gfm-task-list-item@2.1.0": { 1981 + "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==", 1982 + "dependencies": [ 1983 + "devlop", 1984 + "micromark-factory-space", 1985 + "micromark-util-character", 1986 + "micromark-util-symbol", 1987 + "micromark-util-types" 1988 + ] 1989 + }, 1990 + "micromark-extension-gfm@3.0.0": { 1991 + "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", 1992 + "dependencies": [ 1993 + "micromark-extension-gfm-autolink-literal", 1994 + "micromark-extension-gfm-footnote", 1995 + "micromark-extension-gfm-strikethrough", 1996 + "micromark-extension-gfm-table", 1997 + "micromark-extension-gfm-tagfilter", 1998 + "micromark-extension-gfm-task-list-item", 1999 + "micromark-util-combine-extensions", 2000 + "micromark-util-types" 2001 + ] 2002 + }, 2003 + "micromark-factory-destination@2.0.1": { 2004 + "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==", 2005 + "dependencies": [ 2006 + "micromark-util-character", 2007 + "micromark-util-symbol", 2008 + "micromark-util-types" 2009 + ] 2010 + }, 2011 + "micromark-factory-label@2.0.1": { 2012 + "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", 2013 + "dependencies": [ 2014 + "devlop", 2015 + "micromark-util-character", 2016 + "micromark-util-symbol", 2017 + "micromark-util-types" 2018 + ] 2019 + }, 2020 + "micromark-factory-space@2.0.1": { 2021 + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", 2022 + "dependencies": [ 2023 + "micromark-util-character", 2024 + "micromark-util-types" 2025 + ] 2026 + }, 2027 + "micromark-factory-title@2.0.1": { 2028 + "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", 2029 + "dependencies": [ 2030 + "micromark-factory-space", 2031 + "micromark-util-character", 2032 + "micromark-util-symbol", 2033 + "micromark-util-types" 2034 + ] 2035 + }, 2036 + "micromark-factory-whitespace@2.0.1": { 2037 + "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", 2038 + "dependencies": [ 2039 + "micromark-factory-space", 2040 + "micromark-util-character", 2041 + "micromark-util-symbol", 2042 + "micromark-util-types" 2043 + ] 2044 + }, 2045 + "micromark-util-character@2.1.1": { 2046 + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", 2047 + "dependencies": [ 2048 + "micromark-util-symbol", 2049 + "micromark-util-types" 2050 + ] 2051 + }, 2052 + "micromark-util-chunked@2.0.1": { 2053 + "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", 2054 + "dependencies": [ 2055 + "micromark-util-symbol" 2056 + ] 2057 + }, 2058 + "micromark-util-classify-character@2.0.1": { 2059 + "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", 2060 + "dependencies": [ 2061 + "micromark-util-character", 2062 + "micromark-util-symbol", 2063 + "micromark-util-types" 2064 + ] 2065 + }, 2066 + "micromark-util-combine-extensions@2.0.1": { 2067 + "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==", 2068 + "dependencies": [ 2069 + "micromark-util-chunked", 2070 + "micromark-util-types" 2071 + ] 2072 + }, 2073 + "micromark-util-decode-numeric-character-reference@2.0.2": { 2074 + "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==", 2075 + "dependencies": [ 2076 + "micromark-util-symbol" 2077 + ] 2078 + }, 2079 + "micromark-util-decode-string@2.0.1": { 2080 + "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==", 2081 + "dependencies": [ 2082 + "decode-named-character-reference", 2083 + "micromark-util-character", 2084 + "micromark-util-decode-numeric-character-reference", 2085 + "micromark-util-symbol" 2086 + ] 2087 + }, 2088 + "micromark-util-encode@2.0.1": { 2089 + "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==" 2090 + }, 2091 + "micromark-util-html-tag-name@2.0.1": { 2092 + "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==" 2093 + }, 2094 + "micromark-util-normalize-identifier@2.0.1": { 2095 + "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", 2096 + "dependencies": [ 2097 + "micromark-util-symbol" 2098 + ] 2099 + }, 2100 + "micromark-util-resolve-all@2.0.1": { 2101 + "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", 2102 + "dependencies": [ 2103 + "micromark-util-types" 2104 + ] 2105 + }, 2106 + "micromark-util-sanitize-uri@2.0.1": { 2107 + "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", 2108 + "dependencies": [ 2109 + "micromark-util-character", 2110 + "micromark-util-encode", 2111 + "micromark-util-symbol" 2112 + ] 2113 + }, 2114 + "micromark-util-subtokenize@2.1.0": { 2115 + "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==", 2116 + "dependencies": [ 2117 + "devlop", 2118 + "micromark-util-chunked", 2119 + "micromark-util-symbol", 2120 + "micromark-util-types" 2121 + ] 2122 + }, 2123 + "micromark-util-symbol@2.0.1": { 2124 + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==" 2125 + }, 2126 + "micromark-util-types@2.0.2": { 2127 + "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==" 2128 + }, 2129 + "micromark@4.0.2": { 2130 + "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==", 2131 + "dependencies": [ 2132 + "@types/debug", 2133 + "debug", 2134 + "decode-named-character-reference", 2135 + "devlop", 2136 + "micromark-core-commonmark", 2137 + "micromark-factory-space", 2138 + "micromark-util-character", 2139 + "micromark-util-chunked", 2140 + "micromark-util-combine-extensions", 2141 + "micromark-util-decode-numeric-character-reference", 2142 + "micromark-util-encode", 2143 + "micromark-util-normalize-identifier", 2144 + "micromark-util-resolve-all", 2145 + "micromark-util-sanitize-uri", 2146 + "micromark-util-subtokenize", 2147 + "micromark-util-symbol", 2148 + "micromark-util-types" 2149 + ] 2150 + }, 2151 + "minimatch@3.1.2": { 2152 + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 2153 + "dependencies": [ 2154 + "brace-expansion@1.1.12" 2155 + ] 2156 + }, 2157 + "minimatch@9.0.5": { 2158 + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", 2159 + "dependencies": [ 2160 + "brace-expansion@2.0.2" 2161 + ] 2162 + }, 2163 + "minimist@1.2.8": { 2164 + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" 2165 + }, 2166 + "mlly@1.8.0": { 2167 + "integrity": "sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==", 2168 + "dependencies": [ 2169 + "acorn", 2170 + "pathe", 2171 + "pkg-types@1.3.1", 2172 + "ufo" 2173 + ] 2174 + }, 2175 + "ms@2.1.3": { 2176 + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" 2177 + }, 2178 + "nanoid@3.3.11": { 2179 + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", 2180 + "bin": true 2181 + }, 2182 + "nanoid@5.1.5": { 2183 + "integrity": "sha512-Ir/+ZpE9fDsNH0hQ3C68uyThDXzYcim2EqcZ8zn8Chtt1iylPT9xXJB0kPCnqzgcEGikO9RxSrh63MsmVCU7Fw==", 2184 + "bin": true 2185 + }, 2186 + "natural-compare@1.4.0": { 2187 + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" 2188 + }, 2189 + "natural-orderby@5.0.0": { 2190 + "integrity": "sha512-kKHJhxwpR/Okycz4HhQKKlhWe4ASEfPgkSWNmKFHd7+ezuQlxkA5cM3+XkBPvm1gmHen3w53qsYAv+8GwRrBlg==" 2191 + }, 2192 + "node-domexception@1.0.0": { 2193 + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", 2194 + "deprecated": true 2195 + }, 2196 + "node-fetch@3.3.2": { 2197 + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", 2198 + "dependencies": [ 2199 + "data-uri-to-buffer", 2200 + "fetch-blob", 2201 + "formdata-polyfill" 2202 + ] 2203 + }, 2204 + "node-releases@2.0.27": { 2205 + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==" 2206 + }, 2207 + "nth-check@2.1.1": { 2208 + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", 2209 + "dependencies": [ 2210 + "boolbase" 2211 + ] 2212 + }, 2213 + "object-deep-merge@2.0.0": { 2214 + "integrity": "sha512-3DC3UMpeffLTHiuXSy/UG4NOIYTLlY9u3V82+djSCLYClWobZiS4ivYzpIUWrRY/nfsJ8cWsKyG3QfyLePmhvg==" 2215 + }, 2216 + "on-exit-leak-free@2.1.2": { 2217 + "integrity": "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==" 2218 + }, 2219 + "once@1.4.0": { 2220 + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 2221 + "dependencies": [ 2222 + "wrappy" 2223 + ] 2224 + }, 2225 + "openapi3-ts@4.5.0": { 2226 + "integrity": "sha512-jaL+HgTq2Gj5jRcfdutgRGLosCy/hT8sQf6VOy+P+g36cZOjI1iukdPnijC+4CmeRzg/jEllJUboEic2FhxhtQ==", 2227 + "dependencies": [ 2228 + "yaml" 2229 + ] 2230 + }, 2231 + "optionator@0.9.4": { 2232 + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", 2233 + "dependencies": [ 2234 + "deep-is", 2235 + "fast-levenshtein", 2236 + "levn", 2237 + "prelude-ls", 2238 + "type-check", 2239 + "word-wrap" 2240 + ] 2241 + }, 2242 + "p-limit@3.1.0": { 2243 + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 2244 + "dependencies": [ 2245 + "yocto-queue" 2246 + ] 2247 + }, 2248 + "p-locate@5.0.0": { 2249 + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 2250 + "dependencies": [ 2251 + "p-limit" 2252 + ] 2253 + }, 2254 + "package-manager-detector@1.6.0": { 2255 + "integrity": "sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==" 2256 + }, 2257 + "parent-module@1.0.1": { 2258 + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 2259 + "dependencies": [ 2260 + "callsites" 2261 + ] 2262 + }, 2263 + "parse-gitignore@2.0.0": { 2264 + "integrity": "sha512-RmVuCHWsfu0QPNW+mraxh/xjQVw/lhUCUru8Zni3Ctq3AoMhpDTq0OVdKS6iesd6Kqb7viCV3isAL43dciOSog==" 2265 + }, 2266 + "parse-imports-exports@0.2.4": { 2267 + "integrity": "sha512-4s6vd6dx1AotCx/RCI2m7t7GCh5bDRUtGNvRfHSP2wbBQdMi67pPe7mtzmgwcaQ8VKK/6IB7Glfyu3qdZJPybQ==", 2268 + "dependencies": [ 2269 + "parse-statements" 2270 + ] 2271 + }, 2272 + "parse-statements@1.0.11": { 2273 + "integrity": "sha512-HlsyYdMBnbPQ9Jr/VgJ1YF4scnldvJpJxCVx6KgqPL4dxppsWrJHCIIxQXMJrqGnsRkNPATbeMJ8Yxu7JMsYcA==" 2274 + }, 2275 + "path-exists@4.0.0": { 2276 + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" 2277 + }, 2278 + "path-key@3.1.1": { 2279 + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" 2280 + }, 2281 + "pathe@2.0.3": { 2282 + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==" 2283 + }, 2284 + "picocolors@1.1.1": { 2285 + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" 2286 + }, 2287 + "picomatch@4.0.3": { 2288 + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==" 2289 + }, 2290 + "pino-abstract-transport@2.0.0": { 2291 + "integrity": "sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==", 2292 + "dependencies": [ 2293 + "split2" 2294 + ] 2295 + }, 2296 + "pino-abstract-transport@3.0.0": { 2297 + "integrity": "sha512-wlfUczU+n7Hy/Ha5j9a/gZNy7We5+cXp8YL+X+PG8S0KXxw7n/JXA3c46Y0zQznIJ83URJiwy7Lh56WLokNuxg==", 2298 + "dependencies": [ 2299 + "split2" 2300 + ] 2301 + }, 2302 + "pino-pretty@13.1.3": { 2303 + "integrity": "sha512-ttXRkkOz6WWC95KeY9+xxWL6AtImwbyMHrL1mSwqwW9u+vLp/WIElvHvCSDg0xO/Dzrggz1zv3rN5ovTRVowKg==", 2304 + "dependencies": [ 2305 + "colorette", 2306 + "dateformat", 2307 + "fast-copy", 2308 + "fast-safe-stringify", 2309 + "help-me", 2310 + "joycon", 2311 + "minimist", 2312 + "on-exit-leak-free", 2313 + "pino-abstract-transport@3.0.0", 2314 + "pump", 2315 + "secure-json-parse", 2316 + "sonic-boom", 2317 + "strip-json-comments@5.0.3" 2318 + ], 2319 + "bin": true 2320 + }, 2321 + "pino-std-serializers@7.0.0": { 2322 + "integrity": "sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==" 2323 + }, 2324 + "pino@10.1.0": { 2325 + "integrity": "sha512-0zZC2ygfdqvqK8zJIr1e+wT1T/L+LF6qvqvbzEQ6tiMAoTqEVK9a1K3YRu8HEUvGEvNqZyPJTtb2sNIoTkB83w==", 2326 + "dependencies": [ 2327 + "@pinojs/redact", 2328 + "atomic-sleep", 2329 + "on-exit-leak-free", 2330 + "pino-abstract-transport@2.0.0", 2331 + "pino-std-serializers", 2332 + "process-warning", 2333 + "quick-format-unescaped", 2334 + "real-require", 2335 + "safe-stable-stringify", 2336 + "sonic-boom", 2337 + "thread-stream" 2338 + ], 2339 + "bin": true 2340 + }, 2341 + "pkg-types@1.3.1": { 2342 + "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", 2343 + "dependencies": [ 2344 + "confbox@0.1.8", 2345 + "mlly", 2346 + "pathe" 2347 + ] 2348 + }, 2349 + "pkg-types@2.3.0": { 2350 + "integrity": "sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==", 2351 + "dependencies": [ 2352 + "confbox@0.2.2", 2353 + "exsolve", 2354 + "pathe" 2355 + ] 2356 + }, 2357 + "pluralize@8.0.0": { 2358 + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==" 2359 + }, 2360 + "pnpm-workspace-yaml@1.4.2": { 2361 + "integrity": "sha512-L2EKuOeV8aSt3z0RNtdwkg96BHV4WRN9pN2oTHKkMQQRxVEHFXPTbB+nly6ip1qV+JQM6qBebSiMgPRBx8S0Vw==", 2362 + "dependencies": [ 2363 + "yaml" 2364 + ] 2365 + }, 2366 + "postcss-selector-parser@7.1.1": { 2367 + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", 2368 + "dependencies": [ 2369 + "cssesc", 2370 + "util-deprecate" 2371 + ] 2372 + }, 2373 + "postcss@8.5.6": { 2374 + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", 2375 + "dependencies": [ 2376 + "nanoid@3.3.11", 2377 + "picocolors", 2378 + "source-map-js" 2379 + ] 2380 + }, 2381 + "postgres@3.4.7": { 2382 + "integrity": "sha512-Jtc2612XINuBjIl/QTWsV5UvE8UHuNblcO3vVADSrKsrc6RqGX6lOW1cEo3CM2v0XG4Nat8nI+YM7/f26VxXLw==" 2383 + }, 2384 + "prelude-ls@1.2.1": { 2385 + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" 2386 + }, 2387 + "process-warning@5.0.0": { 2388 + "integrity": "sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA==" 2389 + }, 2390 + "promise-limit@2.7.0": { 2391 + "integrity": "sha512-7nJ6v5lnJsXwGprnGXga4wx6d1POjvi5Qmf1ivTRxTjH4Z/9Czja/UCMLVmB9N93GeWOU93XaFaEt6jbuoagNw==" 2392 + }, 2393 + "pump@3.0.3": { 2394 + "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==", 2395 + "dependencies": [ 2396 + "end-of-stream", 2397 + "once" 2398 + ] 2399 + }, 2400 + "punycode@2.3.1": { 2401 + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==" 2402 + }, 2403 + "quansync@0.2.11": { 2404 + "integrity": "sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==" 2405 + }, 2406 + "quick-format-unescaped@4.0.4": { 2407 + "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==" 2408 + }, 2409 + "real-require@0.2.0": { 2410 + "integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==" 2411 + }, 2412 + "refa@0.12.1": { 2413 + "integrity": "sha512-J8rn6v4DBb2nnFqkqwy6/NnTYMcgLA+sLr0iIO41qpv0n+ngb7ksag2tMRl0inb1bbO/esUwzW1vbJi7K0sI0g==", 2414 + "dependencies": [ 2415 + "@eslint-community/regexpp" 2416 + ] 2417 + }, 2418 + "regexp-ast-analysis@0.7.1": { 2419 + "integrity": "sha512-sZuz1dYW/ZsfG17WSAG7eS85r5a0dDsvg+7BiiYR5o6lKCAtUrEwdmRmaGF6rwVj3LcmAeYkOWKEPlbPzN3Y3A==", 2420 + "dependencies": [ 2421 + "@eslint-community/regexpp", 2422 + "refa" 2423 + ] 2424 + }, 2425 + "regexp-tree@0.1.27": { 2426 + "integrity": "sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==", 2427 + "bin": true 2428 + }, 2429 + "regjsparser@0.13.0": { 2430 + "integrity": "sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==", 2431 + "dependencies": [ 2432 + "jsesc" 2433 + ], 2434 + "bin": true 2435 + }, 2436 + "reserved-identifiers@1.2.0": { 2437 + "integrity": "sha512-yE7KUfFvaBFzGPs5H3Ops1RevfUEsDc5Iz65rOwWg4lE8HJSYtle77uul3+573457oHvBKuHYDl/xqUkKpEEdw==" 2438 + }, 2439 + "resolve-from@4.0.0": { 2440 + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" 2441 + }, 2442 + "resolve-pkg-maps@1.0.0": { 2443 + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==" 2444 + }, 2445 + "safe-stable-stringify@2.5.0": { 2446 + "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==" 2447 + }, 2448 + "scslre@0.3.0": { 2449 + "integrity": "sha512-3A6sD0WYP7+QrjbfNA2FN3FsOaGGFoekCVgTyypy53gPxhbkCIjtO6YWgdrfM+n/8sI8JeXZOIxsHjMTNxQ4nQ==", 2450 + "dependencies": [ 2451 + "@eslint-community/regexpp", 2452 + "refa", 2453 + "regexp-ast-analysis" 2454 + ] 2455 + }, 2456 + "secure-json-parse@4.1.0": { 2457 + "integrity": "sha512-l4KnYfEyqYJxDwlNVyRfO2E4NTHfMKAWdUuA8J0yve2Dz/E/PdBepY03RvyJpssIpRFwJoCD55wA+mEDs6ByWA==" 2458 + }, 2459 + "semver@7.7.3": { 2460 + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", 2461 + "bin": true 2462 + }, 2463 + "shebang-command@2.0.0": { 2464 + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 2465 + "dependencies": [ 2466 + "shebang-regex" 2467 + ] 2468 + }, 2469 + "shebang-regex@3.0.0": { 2470 + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" 2471 + }, 2472 + "sisteransi@1.0.5": { 2473 + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" 2474 + }, 2475 + "sonic-boom@4.2.0": { 2476 + "integrity": "sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==", 2477 + "dependencies": [ 2478 + "atomic-sleep" 2479 + ] 2480 + }, 2481 + "source-map-js@1.2.1": { 2482 + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==" 2483 + }, 2484 + "source-map-support@0.5.21": { 2485 + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", 2486 + "dependencies": [ 2487 + "buffer-from", 2488 + "source-map" 2489 + ] 2490 + }, 2491 + "source-map@0.6.1": { 2492 + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" 2493 + }, 2494 + "spdx-exceptions@2.5.0": { 2495 + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==" 2496 + }, 2497 + "spdx-expression-parse@4.0.0": { 2498 + "integrity": "sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==", 2499 + "dependencies": [ 2500 + "spdx-exceptions", 2501 + "spdx-license-ids" 2502 + ] 2503 + }, 2504 + "spdx-license-ids@3.0.22": { 2505 + "integrity": "sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==" 2506 + }, 2507 + "split2@4.2.0": { 2508 + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==" 2509 + }, 2510 + "stoker@2.0.1_@hono+zod-openapi@1.1.5__hono@4.11.0__zod@4.1.13_hono@4.11.0_zod@4.1.13": { 2511 + "integrity": "sha512-liSQNnJmn8fWSEan7sVaFe6iSHuN3X02fDGLS6snwW+FUuKi5HmKUHm3P+Kzr5xiDPqRpmSTtmGEBbSL9H2zkQ==", 2512 + "dependencies": [ 2513 + "@hono/zod-openapi", 2514 + "hono" 2515 + ], 2516 + "optionalPeers": [ 2517 + "@hono/zod-openapi" 2518 + ] 2519 + }, 2520 + "strip-indent@4.1.1": { 2521 + "integrity": "sha512-SlyRoSkdh1dYP0PzclLE7r0M9sgbFKKMFXpFRUMNuKhQSbC6VQIGzq3E0qsfvGJaUFJPGv6Ws1NZ/haTAjfbMA==" 2522 + }, 2523 + "strip-json-comments@3.1.1": { 2524 + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" 2525 + }, 2526 + "strip-json-comments@5.0.3": { 2527 + "integrity": "sha512-1tB5mhVo7U+ETBKNf92xT4hrQa3pm0MZ0PQvuDnWgAAGHDsfp4lPSpiS6psrSiet87wyGPh9ft6wmhOMQ0hDiw==" 2528 + }, 2529 + "supports-color@7.2.0": { 2530 + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 2531 + "dependencies": [ 2532 + "has-flag" 2533 + ] 2534 + }, 2535 + "synckit@0.11.11": { 2536 + "integrity": "sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==", 2537 + "dependencies": [ 2538 + "@pkgr/core" 2539 + ] 2540 + }, 2541 + "tagged-tag@1.0.0": { 2542 + "integrity": "sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==" 2543 + }, 2544 + "tapable@2.3.0": { 2545 + "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==" 2546 + }, 2547 + "thread-stream@3.1.0": { 2548 + "integrity": "sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==", 2549 + "dependencies": [ 2550 + "real-require" 2551 + ] 2552 + }, 2553 + "tinyexec@1.0.2": { 2554 + "integrity": "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==" 2555 + }, 2556 + "tinyglobby@0.2.15_picomatch@4.0.3": { 2557 + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", 2558 + "dependencies": [ 2559 + "fdir", 2560 + "picomatch" 2561 + ] 2562 + }, 2563 + "to-valid-identifier@1.0.0": { 2564 + "integrity": "sha512-41wJyvKep3yT2tyPqX/4blcfybknGB4D+oETKLs7Q76UiPqRpUJK3hr1nxelyYO0PHKVzJwlu0aCeEAsGI6rpw==", 2565 + "dependencies": [ 2566 + "@sindresorhus/base62", 2567 + "reserved-identifiers" 2568 + ] 2569 + }, 2570 + "toml-eslint-parser@0.10.1": { 2571 + "integrity": "sha512-9mjy3frhioGIVGcwamlVlUyJ9x+WHw/TXiz9R4YOlmsIuBN43r9Dp8HZ35SF9EKjHrn3BUZj04CF+YqZ2oJ+7w==", 2572 + "dependencies": [ 2573 + "eslint-visitor-keys@3.4.3" 2574 + ] 2575 + }, 2576 + "ts-api-utils@2.1.0_typescript@5.9.3": { 2577 + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", 2578 + "dependencies": [ 2579 + "typescript" 2580 + ] 2581 + }, 2582 + "ts-declaration-location@1.0.7_typescript@5.9.3": { 2583 + "integrity": "sha512-EDyGAwH1gO0Ausm9gV6T2nUvBgXT5kGoCMJPllOaooZ+4VvJiKBdZE7wK18N1deEowhcUptS+5GXZK8U/fvpwA==", 2584 + "dependencies": [ 2585 + "picomatch", 2586 + "typescript" 2587 + ] 2588 + }, 2589 + "type-check@0.4.0": { 2590 + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", 2591 + "dependencies": [ 2592 + "prelude-ls" 2593 + ] 2594 + }, 2595 + "type-fest@5.0.0": { 2596 + "integrity": "sha512-GeJop7+u7BYlQ6yQCAY1nBQiRSHR+6OdCEtd8Bwp9a3NK3+fWAVjOaPKJDteB9f6cIJ0wt4IfnScjLG450EpXA==", 2597 + "dependencies": [ 2598 + "tagged-tag" 2599 + ] 2600 + }, 2601 + "typescript@5.9.3": { 2602 + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", 2603 + "bin": true 2604 + }, 2605 + "ufo@1.6.1": { 2606 + "integrity": "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==" 2607 + }, 2608 + "undici-types@7.16.0": { 2609 + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==" 2610 + }, 2611 + "unist-util-is@6.0.1": { 2612 + "integrity": "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==", 2613 + "dependencies": [ 2614 + "@types/unist" 2615 + ] 2616 + }, 2617 + "unist-util-stringify-position@4.0.0": { 2618 + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", 2619 + "dependencies": [ 2620 + "@types/unist" 2621 + ] 2622 + }, 2623 + "unist-util-visit-parents@6.0.2": { 2624 + "integrity": "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==", 2625 + "dependencies": [ 2626 + "@types/unist", 2627 + "unist-util-is" 2628 + ] 2629 + }, 2630 + "unist-util-visit@5.0.0": { 2631 + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", 2632 + "dependencies": [ 2633 + "@types/unist", 2634 + "unist-util-is", 2635 + "unist-util-visit-parents" 2636 + ] 2637 + }, 2638 + "update-browserslist-db@1.2.2_browserslist@4.28.1": { 2639 + "integrity": "sha512-E85pfNzMQ9jpKkA7+TJAi4TJN+tBCuWh5rUcS/sv6cFi+1q9LYDwDI5dpUL0u/73EElyQ8d3TEaeW4sPedBqYA==", 2640 + "dependencies": [ 2641 + "browserslist", 2642 + "escalade", 2643 + "picocolors" 2644 + ], 2645 + "bin": true 2646 + }, 2647 + "uri-js@4.4.1": { 2648 + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 2649 + "dependencies": [ 2650 + "punycode" 2651 + ] 2652 + }, 2653 + "util-deprecate@1.0.2": { 2654 + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" 2655 + }, 2656 + "vue-eslint-parser@10.2.0_eslint@9.39.2": { 2657 + "integrity": "sha512-CydUvFOQKD928UzZhTp4pr2vWz1L+H99t7Pkln2QSPdvmURT0MoC4wUccfCnuEaihNsu9aYYyk+bep8rlfkUXw==", 2658 + "dependencies": [ 2659 + "debug", 2660 + "eslint", 2661 + "eslint-scope", 2662 + "eslint-visitor-keys@4.2.1", 2663 + "espree@10.4.0_acorn@8.15.0", 2664 + "esquery", 2665 + "semver" 2666 + ] 2667 + }, 2668 + "web-streams-polyfill@3.3.3": { 2669 + "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==" 2670 + }, 2671 + "which@2.0.2": { 2672 + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 2673 + "dependencies": [ 2674 + "isexe" 2675 + ], 2676 + "bin": true 2677 + }, 2678 + "word-wrap@1.2.5": { 2679 + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==" 2680 + }, 2681 + "wrappy@1.0.2": { 2682 + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" 2683 + }, 2684 + "ws@8.18.3": { 2685 + "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==" 2686 + }, 2687 + "xml-name-validator@4.0.0": { 2688 + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==" 2689 + }, 2690 + "yaml-eslint-parser@1.3.2": { 2691 + "integrity": "sha512-odxVsHAkZYYglR30aPYRY4nUGJnoJ2y1ww2HDvZALo0BDETv9kWbi16J52eHs+PWRNmF4ub6nZqfVOeesOvntg==", 2692 + "dependencies": [ 2693 + "eslint-visitor-keys@3.4.3", 2694 + "yaml" 2695 + ] 2696 + }, 2697 + "yaml@2.8.2": { 2698 + "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==", 2699 + "bin": true 2700 + }, 2701 + "yocto-queue@0.1.0": { 2702 + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" 2703 + }, 2704 + "zod@4.1.13": { 2705 + "integrity": "sha512-AvvthqfqrAhNH9dnfmrfKzX5upOdjUVJYFqNSlkmGf64gRaTzlPwz99IHYnVs28qYAybvAlBV+H7pn0saFY4Ig==" 2706 + }, 2707 + "zwitch@2.0.4": { 2708 + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==" 2709 + } 2710 + }, 2711 + "workspace": { 2712 + "dependencies": [ 2713 + "jsr:@std/dotenv@~0.225.5", 2714 + "npm:@antfu/eslint-config@^6.6.1", 2715 + "npm:@hono/zod-openapi@^1.1.5", 2716 + "npm:@libsql/client@~0.15.15", 2717 + "npm:@scalar/hono-api-reference@~0.9.28", 2718 + "npm:@types/deno@^2.5.0", 2719 + "npm:debug@^4.4.3", 2720 + "npm:drizzle-kit@~0.31.8", 2721 + "npm:drizzle-orm@~0.45.1", 2722 + "npm:drizzle-zod@~0.8.3", 2723 + "npm:eslint@^9.39.2", 2724 + "npm:hono-pino@~0.10.3", 2725 + "npm:hono@^4.11.0", 2726 + "npm:libsql@~0.5.22", 2727 + "npm:pino-pretty@^13.1.3", 2728 + "npm:pino@^10.1.0", 2729 + "npm:postgres@^3.4.7", 2730 + "npm:stoker@^2.0.1", 2731 + "npm:typescript@^5.9.3", 2732 + "npm:zod@^4.1.13" 2733 + ] 2734 + } 2735 + }
+11
server/drizzle.config.ts
··· 1 + import { defineConfig } from 'drizzle-kit' 2 + import env from './env.ts' 3 + 4 + export default defineConfig({ 5 + out: './build/db/migrations', 6 + schema: './src/db/schema', 7 + dialect: 'sqlite', 8 + dbCredentials: { 9 + url: env.DATABASE_URL, 10 + }, 11 + })
+29
server/env.ts
··· 1 + import { loadSync } from '@std/dotenv' 2 + import { z } from 'zod' 3 + 4 + const EnvSchema = z.object({ 5 + NODE_ENV: z.string().default('development'), 6 + PORT: z.coerce.number().default(9999), 7 + LOG_LEVEL: z.enum(['fatal', 'error', 'warn', 'info', 'debug', 'trace', 'silent']), 8 + DATABASE_URL: z.url(), 9 + DATABASE_AUTH_TOKEN: z.string().optional(), 10 + }).superRefine((input, ctx) => { 11 + if (input.NODE_ENV === 'production' && !input.DATABASE_AUTH_TOKEN) { 12 + ctx.addIssue({ 13 + code: 'invalid_type', 14 + expected: 'string', 15 + received: 'undefined', 16 + path: ['DATABASE_AUTH_TOKEN'], 17 + message: 'Must be set when NODE_ENV is \'production\'', 18 + }) 19 + } 20 + }) 21 + const { data: env, error } = EnvSchema.safeParse(loadSync()) 22 + 23 + if (error) { 24 + console.error('❌ Invalid env:') 25 + console.error(JSON.stringify(z.treeifyError(error).errors, null, 2)) 26 + Deno.exit(1) 27 + } 28 + 29 + export default env!
+3
server/eslint.config.mjs
··· 1 + import antfu from '@antfu/eslint-config' 2 + 3 + export default antfu()
server/gen-openapi-spec.sh

This is a binary file and will not be displayed.

+7
server/openapi.config.ts
··· 1 + export default { 2 + openapi: '3.1.0', 3 + info: { 4 + version: '1.0.0', 5 + title: 'Photos API', 6 + }, 7 + }
+34
server/runtimes/dev.ts
··· 1 + import type { AppBindings } from '@/types.ts' 2 + import { OpenAPIHono } from '@hono/zod-openapi' 3 + import { Scalar } from '@scalar/hono-api-reference' 4 + import { pinoLogger } from 'hono-pino' 5 + import pino from 'pino' 6 + import pretty from 'pino-pretty' 7 + import defaultHook from 'stoker/openapi/default-hook' 8 + import openapiConfig from '@/openapi.config.ts' 9 + import { PhotoAPI } from '@/src/common/app.ts' 10 + 11 + function devTools(app: OpenAPIHono<AppBindings>) { 12 + app.use(pinoLogger({ 13 + pino: pino(pretty()), 14 + })) 15 + 16 + app.doc('/doc', openapiConfig) 17 + 18 + app.get( 19 + '/reference', 20 + Scalar({ 21 + url: '/doc', 22 + }), 23 + ) 24 + } 25 + 26 + const app = new OpenAPIHono<AppBindings>({ 27 + strict: false, 28 + defaultHook, 29 + }) 30 + devTools(app) 31 + 32 + new PhotoAPI(app) 33 + .configureRoutes() 34 + .serve()
+11
server/runtimes/generate.ts
··· 1 + import { PhotoAPI } from '@/src/app.ts' 2 + import type { AppBindings } from '@/types.ts' 3 + import { OpenAPIHono } from '@hono/zod-openapi' 4 + import defaultHook from 'stoker/openapi/default-hook' 5 + 6 + new PhotoAPI(new OpenAPIHono<AppBindings>({ 7 + strict: false, 8 + defaultHook, 9 + })) 10 + .configureRoutes() 11 + .writeOpenApiSpec('build/openapi.json')
+11
server/runtimes/main.ts
··· 1 + import { PhotoAPI } from '@/src/app.ts' 2 + import type { AppBindings } from '@/types.ts' 3 + import { OpenAPIHono } from '@hono/zod-openapi' 4 + import defaultHook from 'stoker/openapi/default-hook' 5 + 6 + new PhotoAPI(new OpenAPIHono<AppBindings>({ 7 + strict: false, 8 + defaultHook, 9 + })) 10 + .configureRoutes() 11 + .serve()
+44
server/src/app.ts
··· 1 + import type { OpenAPIHono } from '@hono/zod-openapi' 2 + import type { AppBindings } from '@/types.ts' 3 + 4 + import notFound from 'stoker/middlewares/not-found' 5 + import onError from 'stoker/middlewares/on-error' 6 + import openApiConf from '@/openapi.config.ts' 7 + import { allAlbums, createAlbum } from './routes.ts' 8 + 9 + export type App = Pick<OpenAPIHono<AppBindings>, 'openapi'> 10 + 11 + interface Routing { 12 + (r: (a: App) => App): PhotoAPI 13 + } 14 + 15 + export class PhotoAPI { 16 + private app: OpenAPIHono<AppBindings> 17 + 18 + constructor(app: OpenAPIHono<AppBindings>) { 19 + this.app = app 20 + } 21 + 22 + configureRoutes(): PhotoAPI { 23 + return this 24 + .addRoute(allAlbums) 25 + .addRoute(createAlbum) 26 + } 27 + 28 + private addRoute: Routing = (r) => { 29 + this.app = r(this.app) as OpenAPIHono<AppBindings> 30 + return this 31 + } 32 + 33 + serve() { 34 + Deno.serve(this.app 35 + .notFound(notFound) 36 + .onError(onError) 37 + .fetch) 38 + } 39 + 40 + writeOpenApiSpec(path: string) { 41 + const doc = this.app.getOpenAPI31Document(openApiConf) 42 + Deno.writeTextFileSync(path, JSON.stringify(doc, null, 2)) 43 + } 44 + }
+7
server/src/db/index.ts
··· 1 + import { drizzle } from 'drizzle-orm/libsql' 2 + import env from '@/env.ts' 3 + import * as schema from './schema/index.ts' 4 + 5 + const db = drizzle(env.DATABASE_URL, { schema }) 6 + 7 + export default db
+16
server/src/db/schema/album.ts
··· 1 + import { int, primaryKey, sqliteTable, text } from 'drizzle-orm/sqlite-core' 2 + import { photo } from './photo.ts' 3 + 4 + export const album = sqliteTable('album', { 5 + id: int().primaryKey({ autoIncrement: true }), 6 + title: text().notNull(), 7 + year: int().notNull(), 8 + cover: text(), 9 + }) 10 + 11 + export const albumToPhoto = sqliteTable('albumToPhoto', { 12 + albumId: int().notNull().references(() => album.id), 13 + photoId: int().notNull().references(() => photo.id), 14 + }, table => [ 15 + primaryKey({ columns: [table.albumId, table.photoId] }), 16 + ])
+2
server/src/db/schema/index.ts
··· 1 + export * from './album.ts' 2 + export * from './photo.ts'
+13
server/src/db/schema/photo.ts
··· 1 + import { int, real, sqliteTable, text } from 'drizzle-orm/sqlite-core' 2 + 3 + export const photo = sqliteTable('photo', { 4 + id: int().notNull().primaryKey({ autoIncrement: true }), 5 + fileName: text().notNull(), 6 + dateCreated: int({ mode: 'timestamp_ms' }).notNull(), 7 + dateModified: int({ mode: 'timestamp_ms' }).notNull(), 8 + lat: real(), 9 + lon: real(), 10 + width: int().notNull(), 11 + height: int().notNull(), 12 + takenWith: text().notNull(), 13 + })
+68
server/src/routes.ts
··· 1 + import type { App } from './app.ts' 2 + import { createRoute, z } from '@hono/zod-openapi' 3 + import { createInsertSchema, createSelectSchema } from 'drizzle-zod' 4 + import * as HttpStatusCodes from 'stoker/http-status-codes' 5 + import jsonContent from 'stoker/openapi/helpers/json-content' 6 + import jsonContentRequired from 'stoker/openapi/helpers/json-content-required' 7 + import db from '@/src/db/index.ts' 8 + import { album as albumTb } from '@/src/db/schema/album.ts' 9 + import { albumToPhoto } from './db/schema/index.ts' 10 + 11 + export function allAlbums(app: App): App { 12 + return app.openapi( 13 + createRoute({ 14 + path: '/albums', 15 + method: 'get', 16 + responses: { 17 + [HttpStatusCodes.OK]: jsonContent( 18 + z.array(createSelectSchema(albumTb)), 19 + 'all albums', 20 + ), 21 + }, 22 + }), 23 + async c => c.json(await db.query.album.findMany()), 24 + ) 25 + } 26 + 27 + export function createAlbum(app: App) { 28 + return app.openapi( 29 + createRoute({ 30 + path: '/album', 31 + method: 'post', 32 + request: { 33 + body: jsonContentRequired( 34 + z.object({ 35 + album: createInsertSchema(albumTb).omit({ 36 + id: true, 37 + cover: true, 38 + }), 39 + contents: z.array( 40 + createInsertSchema(albumToPhoto).pick({ 41 + photoId: true, 42 + }), 43 + ), 44 + }), 45 + 'album to create', 46 + ), 47 + }, 48 + responses: { 49 + [HttpStatusCodes.OK]: jsonContent( 50 + createSelectSchema(albumTb), 51 + 'created album', 52 + ), 53 + }, 54 + }), 55 + async (c) => { 56 + const album = c.req.valid('json') 57 + const [created] = await db.insert(albumTb).values(album.album).returning() 58 + const v = album.contents.map((aToP) => { 59 + return { 60 + albumId: created.id, 61 + photoId: aToP.photoId, 62 + } 63 + }) 64 + await db.insert(albumToPhoto).values(v) 65 + return c.json(created) 66 + }, 67 + ) 68 + }
+7
server/types.ts
··· 1 + import type { PinoLogger } from 'hono-pino' 2 + 3 + export interface AppBindings { 4 + Variables: { 5 + logger: PinoLogger 6 + } 7 + }