Compare commits

..

48 commits
0.1.0 ... main

Author SHA1 Message Date
rzmk
809948b8f4 fix(docs): auth input was not appearing 2025-12-18 16:03:56 -05:00
rzmk
c53511657f fix: mobile title 2025-12-15 12:36:59 -05:00
rzmk
a1b2905a4b fix: codeblock error 2025-12-15 12:11:19 -05:00
rzmk
6f8107249f feat: add highlights and underlines to first doc page, fix OpenAPI CSS 2025-12-15 12:10:37 -05:00
rzmk
1de7c29050 feat: better home page 2025-12-15 11:57:30 -05:00
rzmk
261b4ba21a build: update dependencies 2025-12-14 17:14:18 -05:00
rzmk
fd5ebf4af0 build: update dependencies and fumadocs 2025-12-02 21:16:06 -05:00
rzmk
100165ec29 feat(docs): fix build issues, add external links 2025-12-02 20:30:37 -05:00
rzmk
0fdbdd4d1c feat(docs): add openapiPlugin() to lib/source.ts 2025-12-02 20:15:07 -05:00
rzmk
1f0cbffb2d feat(docs): add patch endpoints mdx files 2025-12-02 20:11:20 -05:00
rzmk
6e44213d4e feat(docs): add all patch endpoints, added all default CKAN endpoints! 2025-12-02 20:10:38 -05:00
rzmk
fc7aa9da36 feat(docs): add all update endpoints 2025-12-02 20:04:46 -05:00
rzmk
e9b220462b feat(docs): add all delete endpoints 2025-12-02 19:20:06 -05:00
rzmk
4737c5462d build(docs): update dependencies 2025-12-02 18:58:48 -05:00
rzmk
3ce5686dd1 feat(docs): added all create endpoints 2025-12-02 18:54:48 -05:00
rzmk
8d0c757fa6 feat(docs): add more create endpoints 2025-12-02 18:39:52 -05:00
rzmk
46012a33d8 feat(docs): add resource_create 2025-12-02 16:32:09 -05:00
rzmk
01dcb3b387 feat(docs): add package_create 2025-12-02 15:17:26 -05:00
rzmk
eb4f68a261 build(docs): update packages 2025-10-28 18:10:08 -04:00
rzmk
c1343cc294 feat(docs): add all GET endpoints for CKAN Actions API v3 2025-10-28 15:58:27 -04:00
rzmk
b0f2d3e8de chore(docs): attempt putting script within RootProvider 2025-10-27 16:22:07 -04:00
rzmk
663f208a4a chore(docs): update analytics script 2025-10-27 16:14:39 -04:00
rzmk
4b7ca43709 chore(docs): remove openapiPlugin() for now from lib/source.ts 2025-10-24 15:53:45 -04:00
rzmk
bd1897b7ba build: update bun.lock 2025-10-24 15:31:14 -04:00
rzmk
aabbcdcb57 build: update fumadocs-openapi with Python sample fix 2025-10-24 15:19:28 -04:00
rzmk
2114cc9562 chore(docs): update apostrophe 2025-10-24 01:54:34 -04:00
rzmk
5b7999b6ea feat(docs): add more endpoints 2025-10-24 01:10:08 -04:00
rzmk
2f4edc08cf build: update tsconfig.json 2025-10-24 01:09:55 -04:00
rzmk
c669a82578 build: update dependencies 2025-10-24 01:09:44 -04:00
rzmk
e13124ee42 feat(docs): add more endpoints 2025-10-22 17:23:56 -04:00
rzmk
6d843632ff chore(docs): add error callout about facet field for package_search 2025-10-22 15:20:07 -04:00
rzmk
20c5d749d8 feat(docs): add more endpoints 2025-10-22 13:09:11 -04:00
rzmk
5adb611c85 feat(docs): add more endpoints and remove slashes before endpoint names 2025-10-22 10:37:22 -04:00
rzmk
03830242c3 build(docs): add .nvmrc file 2025-10-22 07:16:42 -04:00
rzmk
ebbe179fbf chore(docs): update endpoints to use POST requests 2025-10-22 06:48:42 -04:00
rzmk
0eaf2eb000 build(docs): use latest nextjs and fumadocs with default unset value fix 2025-10-22 06:40:40 -04:00
rzmk
4fc9937520 feat(docs): add GIF, GitHub URL, and more endpoints 2025-10-12 21:13:17 -04:00
rzmk
f538cfeb83 chore(docs): remove - from ckan-action in README 2025-10-12 16:38:35 -04:00
rzmk
39c573a5a4 feat(docs): initial interactive ckanaction docs web app 2025-10-12 16:26:21 -04:00
Mueez Khan
945fc6dca1
feat: add LICENSE 2025-08-27 13:39:25 -04:00
rzmk
1db8b34ddc docs: add running tests instructions to README 2025-05-27 14:10:28 -04:00
rzmk
66b28fd3f9 feat: add first test with tokio dev-dep 2025-05-27 14:09:22 -04:00
Mueez Khan
c8f9d66b04
Merge pull request #2 from dathere/clippy-n-fmt
Clippy n fmt
2025-05-27 14:08:00 -04:00
Joel Natividad
2670ed5b20 chore: rust fmt 2025-05-27 10:49:43 -04:00
Joel Natividad
661638a406 refactor: change unstable let chains to nested if
cargo t
   Compiling ckanaction v0.1.0 (/Users/joelnatividad/GitHub/ckanaction)
error[E0658]: `let` expressions in this position are unstable
    --> src/lib.rs:1354:12
     |
1354 |         if let Some(custom) = custom_fields
     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
     |
     = note: see issue #53667 <https://github.com/rust-lang/rust/issues/53667> for more information

error[E0658]: `let` expressions in this position are unstable
    --> src/lib.rs:1983:12
     |
1983 |         if let Some(custom) = custom_fields
     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
     |
     = note: see issue #53667 <https://github.com/rust-lang/rust/issues/53667> for more information

error[E0658]: `let` expressions in this position are unstable
    --> src/lib.rs:2370:12
     |
2370 |         if let Some(options_obj) = options
     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
     |
     = note: see issue #53667 <https://github.com/rust-lang/rust/issues/53667> for more information

error[E0658]: `let` expressions in this position are unstable
    --> src/lib.rs:2449:12
     |
2449 |         if let Some(custom) = custom_fields
     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
     |
     = note: see issue #53667 <https://github.com/rust-lang/rust/issues/53667> for more information

For more information about this error, try `rustc --explain E0658`.
error: could not compile `ckanaction` (lib test) due to 4 previous errors
warning: build failed, waiting for other jobs to finish...
error: could not compile `ckanaction` (lib) due to 4 previous errors
2025-05-27 10:49:09 -04:00
Joel Natividad
b1d8d957f9 chore: make clippy happy
warning: this `else` branch is empty
  --> src/lib.rs:24:7
   |
24 |       } else {
   |  _______^
25 | |     };
   | |_____^ help: you can remove it
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_else
   = note: `#[warn(clippy::needless_else)]` on by default

warning: unneeded unit expression
  --> src/lib.rs:23:9
   |
23 |         ()
   |         ^^ help: remove the final `()`
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit
   = note: `#[warn(clippy::unused_unit)]` on by default

warning: enclosing `Ok` and `?` operator are unneeded
   --> src/lib.rs:822:9
    |
822 |         Ok(Self::get(&self, endpoint).await?)
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
    = note: `#[warn(clippy::needless_question_mark)]` on by default
help: remove the enclosing `Ok` and `?` operator
    |
822 -         Ok(Self::get(&self, endpoint).await?)
822 +         Self::get(&self, endpoint).await
    |

warning: this expression creates a reference which is immediately dereferenced by the compiler
   --> src/lib.rs:822:22
    |
822 |         Ok(Self::get(&self, endpoint).await?)
    |                      ^^^^^ help: change this to: `self`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow
    = note: `#[warn(clippy::needless_borrow)]` on by default

warning: enclosing `Ok` and `?` operator are unneeded
   --> src/lib.rs:828:9
    |
828 |         Ok(Self::get(&self, endpoint).await?)
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
    |
828 -         Ok(Self::get(&self, endpoint).await?)
828 +         Self::get(&self, endpoint).await
    |

warning: this expression creates a reference which is immediately dereferenced by the compiler
   --> src/lib.rs:828:22
    |
828 |         Ok(Self::get(&self, endpoint).await?)
    |                      ^^^^^ help: change this to: `self`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:1246:9
     |
1246 |         Ok(Self::get(&self, endpoint).await?)
     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
1246 -         Ok(Self::get(&self, endpoint).await?)
1246 +         Self::get(&self, endpoint).await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:1246:22
     |
1246 |         Ok(Self::get(&self, endpoint).await?)
     |                      ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
   --> src/lib.rs:98:9
    |
98  | /         Ok(Self::post(&self)
99  | |             .endpoint(endpoint)
100 | |             .body(body)
101 | |             .call()
102 | |             .await?)
    | |____________________^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
    |
98  ~         Self::post(&self)
99  |             .endpoint(endpoint)
100 |             .body(body)
101 |             .call()
102 ~             .await
    |

warning: this expression creates a reference which is immediately dereferenced by the compiler
  --> src/lib.rs:98:23
   |
98 |         Ok(Self::post(&self)
   |                       ^^^^^ help: change this to: `self`
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
   --> src/lib.rs:119:9
    |
119 | /         Ok(Self::post(&self)
120 | |             .endpoint(endpoint)
121 | |             .body(body)
122 | |             .call()
123 | |             .await?)
    | |____________________^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
    |
119 ~         Self::post(&self)
120 |             .endpoint(endpoint)
121 |             .body(body)
122 |             .call()
123 ~             .await
    |

warning: this expression creates a reference which is immediately dereferenced by the compiler
   --> src/lib.rs:119:23
    |
119 |         Ok(Self::post(&self)
    |                       ^^^^^ help: change this to: `self`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
   --> src/lib.rs:140:9
    |
140 | /         Ok(Self::post(&self)
141 | |             .endpoint(endpoint)
142 | |             .body(body)
143 | |             .call()
144 | |             .await?)
    | |____________________^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
    |
140 ~         Self::post(&self)
141 |             .endpoint(endpoint)
142 |             .body(body)
143 |             .call()
144 ~             .await
    |

warning: this expression creates a reference which is immediately dereferenced by the compiler
   --> src/lib.rs:140:23
    |
140 |         Ok(Self::post(&self)
    |                       ^^^^^ help: change this to: `self`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
   --> src/lib.rs:159:9
    |
159 | /         Ok(Self::post(&self)
160 | |             .endpoint(endpoint)
161 | |             .body(body)
162 | |             .call()
163 | |             .await?)
    | |____________________^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
    |
159 ~         Self::post(&self)
160 |             .endpoint(endpoint)
161 |             .body(body)
162 |             .call()
163 ~             .await
    |

warning: this expression creates a reference which is immediately dereferenced by the compiler
   --> src/lib.rs:159:23
    |
159 |         Ok(Self::post(&self)
    |                       ^^^^^ help: change this to: `self`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
   --> src/lib.rs:178:9
    |
178 | /         Ok(Self::post(&self)
179 | |             .endpoint(endpoint)
180 | |             .body(body)
181 | |             .call()
182 | |             .await?)
    | |____________________^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
    |
178 ~         Self::post(&self)
179 |             .endpoint(endpoint)
180 |             .body(body)
181 |             .call()
182 ~             .await
    |

warning: this expression creates a reference which is immediately dereferenced by the compiler
   --> src/lib.rs:178:23
    |
178 |         Ok(Self::post(&self)
    |                       ^^^^^ help: change this to: `self`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
   --> src/lib.rs:217:9
    |
217 | /         Ok(Self::post(&self)
218 | |             .endpoint(endpoint)
219 | |             .body(body)
220 | |             .call()
221 | |             .await?)
    | |____________________^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
    |
217 ~         Self::post(&self)
218 |             .endpoint(endpoint)
219 |             .body(body)
220 |             .call()
221 ~             .await
    |

warning: this expression creates a reference which is immediately dereferenced by the compiler
   --> src/lib.rs:217:23
    |
217 |         Ok(Self::post(&self)
    |                       ^^^^^ help: change this to: `self`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
   --> src/lib.rs:256:9
    |
256 | /         Ok(Self::post(&self)
257 | |             .endpoint(endpoint)
258 | |             .body(body)
259 | |             .call()
260 | |             .await?)
    | |____________________^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
    |
256 ~         Self::post(&self)
257 |             .endpoint(endpoint)
258 |             .body(body)
259 |             .call()
260 ~             .await
    |

warning: this expression creates a reference which is immediately dereferenced by the compiler
   --> src/lib.rs:256:23
    |
256 |         Ok(Self::post(&self)
    |                       ^^^^^ help: change this to: `self`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
   --> src/lib.rs:275:9
    |
275 | /         Ok(Self::post(&self)
276 | |             .endpoint(endpoint)
277 | |             .body(body)
278 | |             .call()
279 | |             .await?)
    | |____________________^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
    |
275 ~         Self::post(&self)
276 |             .endpoint(endpoint)
277 |             .body(body)
278 |             .call()
279 ~             .await
    |

warning: this expression creates a reference which is immediately dereferenced by the compiler
   --> src/lib.rs:275:23
    |
275 |         Ok(Self::post(&self)
    |                       ^^^^^ help: change this to: `self`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
   --> src/lib.rs:296:9
    |
296 | /         Ok(Self::post(&self)
297 | |             .endpoint(endpoint)
298 | |             .body(body)
299 | |             .call()
300 | |             .await?)
    | |____________________^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
    |
296 ~         Self::post(&self)
297 |             .endpoint(endpoint)
298 |             .body(body)
299 |             .call()
300 ~             .await
    |

warning: this expression creates a reference which is immediately dereferenced by the compiler
   --> src/lib.rs:296:23
    |
296 |         Ok(Self::post(&self)
    |                       ^^^^^ help: change this to: `self`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
   --> src/lib.rs:307:9
    |
307 |         Ok(Self::post(&self).endpoint(endpoint).call().await?)
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
    |
307 -         Ok(Self::post(&self).endpoint(endpoint).call().await?)
307 +         Self::post(&self).endpoint(endpoint).call().await
    |

warning: this expression creates a reference which is immediately dereferenced by the compiler
   --> src/lib.rs:307:23
    |
307 |         Ok(Self::post(&self).endpoint(endpoint).call().await?)
    |                       ^^^^^ help: change this to: `self`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
   --> src/lib.rs:324:9
    |
324 | /         Ok(Self::post(&self)
325 | |             .endpoint(endpoint)
326 | |             .body(body)
327 | |             .call()
328 | |             .await?)
    | |____________________^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
    |
324 ~         Self::post(&self)
325 |             .endpoint(endpoint)
326 |             .body(body)
327 |             .call()
328 ~             .await
    |

warning: this expression creates a reference which is immediately dereferenced by the compiler
   --> src/lib.rs:324:23
    |
324 |         Ok(Self::post(&self)
    |                       ^^^^^ help: change this to: `self`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
   --> src/lib.rs:349:9
    |
349 | /         Ok(Self::post(&self)
350 | |             .endpoint(endpoint)
351 | |             .body(body)
352 | |             .call()
353 | |             .await?)
    | |____________________^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
    |
349 ~         Self::post(&self)
350 |             .endpoint(endpoint)
351 |             .body(body)
352 |             .call()
353 ~             .await
    |

warning: this expression creates a reference which is immediately dereferenced by the compiler
   --> src/lib.rs:349:23
    |
349 |         Ok(Self::post(&self)
    |                       ^^^^^ help: change this to: `self`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
   --> src/lib.rs:370:9
    |
370 | /         Ok(Self::post(&self)
371 | |             .endpoint(endpoint)
372 | |             .body(body)
373 | |             .call()
374 | |             .await?)
    | |____________________^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
    |
370 ~         Self::post(&self)
371 |             .endpoint(endpoint)
372 |             .body(body)
373 |             .call()
374 ~             .await
    |

warning: this expression creates a reference which is immediately dereferenced by the compiler
   --> src/lib.rs:370:23
    |
370 |         Ok(Self::post(&self)
    |                       ^^^^^ help: change this to: `self`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
   --> src/lib.rs:387:9
    |
387 | /         Ok(Self::post(&self)
388 | |             .endpoint(endpoint)
389 | |             .body(body)
390 | |             .call()
391 | |             .await?)
    | |____________________^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
    |
387 ~         Self::post(&self)
388 |             .endpoint(endpoint)
389 |             .body(body)
390 |             .call()
391 ~             .await
    |

warning: this expression creates a reference which is immediately dereferenced by the compiler
   --> src/lib.rs:387:23
    |
387 |         Ok(Self::post(&self)
    |                       ^^^^^ help: change this to: `self`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
   --> src/lib.rs:404:9
    |
404 | /         Ok(Self::post(&self)
405 | |             .endpoint(endpoint)
406 | |             .body(body)
407 | |             .call()
408 | |             .await?)
    | |____________________^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
    |
404 ~         Self::post(&self)
405 |             .endpoint(endpoint)
406 |             .body(body)
407 |             .call()
408 ~             .await
    |

warning: this expression creates a reference which is immediately dereferenced by the compiler
   --> src/lib.rs:404:23
    |
404 |         Ok(Self::post(&self)
    |                       ^^^^^ help: change this to: `self`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
   --> src/lib.rs:421:9
    |
421 | /         Ok(Self::post(&self)
422 | |             .endpoint(endpoint)
423 | |             .body(body)
424 | |             .call()
425 | |             .await?)
    | |____________________^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
    |
421 ~         Self::post(&self)
422 |             .endpoint(endpoint)
423 |             .body(body)
424 |             .call()
425 ~             .await
    |

warning: this expression creates a reference which is immediately dereferenced by the compiler
   --> src/lib.rs:421:23
    |
421 |         Ok(Self::post(&self)
    |                       ^^^^^ help: change this to: `self`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
   --> src/lib.rs:452:9
    |
452 | /         Ok(Self::post(&self)
453 | |             .endpoint(endpoint)
454 | |             .body(body)
455 | |             .call()
456 | |             .await?)
    | |____________________^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
    |
452 ~         Self::post(&self)
453 |             .endpoint(endpoint)
454 |             .body(body)
455 |             .call()
456 ~             .await
    |

warning: this expression creates a reference which is immediately dereferenced by the compiler
   --> src/lib.rs:452:23
    |
452 |         Ok(Self::post(&self)
    |                       ^^^^^ help: change this to: `self`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
   --> src/lib.rs:483:9
    |
483 | /         Ok(Self::post(&self)
484 | |             .endpoint(endpoint)
485 | |             .body(body)
486 | |             .call()
487 | |             .await?)
    | |____________________^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
    |
483 ~         Self::post(&self)
484 |             .endpoint(endpoint)
485 |             .body(body)
486 |             .call()
487 ~             .await
    |

warning: this expression creates a reference which is immediately dereferenced by the compiler
   --> src/lib.rs:483:23
    |
483 |         Ok(Self::post(&self)
    |                       ^^^^^ help: change this to: `self`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
   --> src/lib.rs:502:9
    |
502 | /         Ok(Self::post(&self)
503 | |             .endpoint(endpoint)
504 | |             .body(body)
505 | |             .call()
506 | |             .await?)
    | |____________________^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
    |
502 ~         Self::post(&self)
503 |             .endpoint(endpoint)
504 |             .body(body)
505 |             .call()
506 ~             .await
    |

warning: this expression creates a reference which is immediately dereferenced by the compiler
   --> src/lib.rs:502:23
    |
502 |         Ok(Self::post(&self)
    |                       ^^^^^ help: change this to: `self`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
   --> src/lib.rs:523:9
    |
523 | /         Ok(Self::post(&self)
524 | |             .endpoint(endpoint)
525 | |             .body(body)
526 | |             .call()
527 | |             .await?)
    | |____________________^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
    |
523 ~         Self::post(&self)
524 |             .endpoint(endpoint)
525 |             .body(body)
526 |             .call()
527 ~             .await
    |

warning: this expression creates a reference which is immediately dereferenced by the compiler
   --> src/lib.rs:523:23
    |
523 |         Ok(Self::post(&self)
    |                       ^^^^^ help: change this to: `self`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
   --> src/lib.rs:548:9
    |
548 | /         Ok(Self::post(&self)
549 | |             .endpoint(endpoint)
550 | |             .body(body)
551 | |             .call()
552 | |             .await?)
    | |____________________^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
    |
548 ~         Self::post(&self)
549 |             .endpoint(endpoint)
550 |             .body(body)
551 |             .call()
552 ~             .await
    |

warning: this expression creates a reference which is immediately dereferenced by the compiler
   --> src/lib.rs:548:23
    |
548 |         Ok(Self::post(&self)
    |                       ^^^^^ help: change this to: `self`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
   --> src/lib.rs:567:9
    |
567 | /         Ok(Self::post(&self)
568 | |             .endpoint(endpoint)
569 | |             .body(body)
570 | |             .call()
571 | |             .await?)
    | |____________________^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
    |
567 ~         Self::post(&self)
568 |             .endpoint(endpoint)
569 |             .body(body)
570 |             .call()
571 ~             .await
    |

warning: this expression creates a reference which is immediately dereferenced by the compiler
   --> src/lib.rs:567:23
    |
567 |         Ok(Self::post(&self)
    |                       ^^^^^ help: change this to: `self`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
   --> src/lib.rs:586:9
    |
586 | /         Ok(Self::post(&self)
587 | |             .endpoint(endpoint)
588 | |             .body(body)
589 | |             .call()
590 | |             .await?)
    | |____________________^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
    |
586 ~         Self::post(&self)
587 |             .endpoint(endpoint)
588 |             .body(body)
589 |             .call()
590 ~             .await
    |

warning: this expression creates a reference which is immediately dereferenced by the compiler
   --> src/lib.rs:586:23
    |
586 |         Ok(Self::post(&self)
    |                       ^^^^^ help: change this to: `self`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
   --> src/lib.rs:605:9
    |
605 | /         Ok(Self::post(&self)
606 | |             .endpoint(endpoint)
607 | |             .body(body)
608 | |             .call()
609 | |             .await?)
    | |____________________^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
    |
605 ~         Self::post(&self)
606 |             .endpoint(endpoint)
607 |             .body(body)
608 |             .call()
609 ~             .await
    |

warning: this expression creates a reference which is immediately dereferenced by the compiler
   --> src/lib.rs:605:23
    |
605 |         Ok(Self::post(&self)
    |                       ^^^^^ help: change this to: `self`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
   --> src/lib.rs:624:9
    |
624 | /         Ok(Self::post(&self)
625 | |             .endpoint(endpoint)
626 | |             .body(body)
627 | |             .call()
628 | |             .await?)
    | |____________________^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
    |
624 ~         Self::post(&self)
625 |             .endpoint(endpoint)
626 |             .body(body)
627 |             .call()
628 ~             .await
    |

warning: this expression creates a reference which is immediately dereferenced by the compiler
   --> src/lib.rs:624:23
    |
624 |         Ok(Self::post(&self)
    |                       ^^^^^ help: change this to: `self`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
   --> src/lib.rs:643:9
    |
643 | /         Ok(Self::post(&self)
644 | |             .endpoint(endpoint)
645 | |             .body(body)
646 | |             .call()
647 | |             .await?)
    | |____________________^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
    |
643 ~         Self::post(&self)
644 |             .endpoint(endpoint)
645 |             .body(body)
646 |             .call()
647 ~             .await
    |

warning: this expression creates a reference which is immediately dereferenced by the compiler
   --> src/lib.rs:643:23
    |
643 |         Ok(Self::post(&self)
    |                       ^^^^^ help: change this to: `self`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
   --> src/lib.rs:684:9
    |
684 | /         Ok(Self::post(&self)
685 | |             .endpoint(endpoint)
686 | |             .body(body)
687 | |             .call()
688 | |             .await?)
    | |____________________^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
    |
684 ~         Self::post(&self)
685 |             .endpoint(endpoint)
686 |             .body(body)
687 |             .call()
688 ~             .await
    |

warning: this expression creates a reference which is immediately dereferenced by the compiler
   --> src/lib.rs:684:23
    |
684 |         Ok(Self::post(&self)
    |                       ^^^^^ help: change this to: `self`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
   --> src/lib.rs:707:9
    |
707 | /         Ok(Self::post(&self)
708 | |             .endpoint(endpoint)
709 | |             .body(body)
710 | |             .call()
711 | |             .await?)
    | |____________________^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
    |
707 ~         Self::post(&self)
708 |             .endpoint(endpoint)
709 |             .body(body)
710 |             .call()
711 ~             .await
    |

warning: this expression creates a reference which is immediately dereferenced by the compiler
   --> src/lib.rs:707:23
    |
707 |         Ok(Self::post(&self)
    |                       ^^^^^ help: change this to: `self`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
   --> src/lib.rs:730:9
    |
730 | /         Ok(Self::post(&self)
731 | |             .endpoint(endpoint)
732 | |             .body(body)
733 | |             .call()
734 | |             .await?)
    | |____________________^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
    |
730 ~         Self::post(&self)
731 |             .endpoint(endpoint)
732 |             .body(body)
733 |             .call()
734 ~             .await
    |

warning: this expression creates a reference which is immediately dereferenced by the compiler
   --> src/lib.rs:730:23
    |
730 |         Ok(Self::post(&self)
    |                       ^^^^^ help: change this to: `self`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
   --> src/lib.rs:753:9
    |
753 | /         Ok(Self::post(&self)
754 | |             .endpoint(endpoint)
755 | |             .body(body)
756 | |             .call()
757 | |             .await?)
    | |____________________^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
    |
753 ~         Self::post(&self)
754 |             .endpoint(endpoint)
755 |             .body(body)
756 |             .call()
757 ~             .await
    |

warning: this expression creates a reference which is immediately dereferenced by the compiler
   --> src/lib.rs:753:23
    |
753 |         Ok(Self::post(&self)
    |                       ^^^^^ help: change this to: `self`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
   --> src/lib.rs:776:9
    |
776 | /         Ok(Self::post(&self)
777 | |             .endpoint(endpoint)
778 | |             .body(body)
779 | |             .call()
780 | |             .await?)
    | |____________________^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
    |
776 ~         Self::post(&self)
777 |             .endpoint(endpoint)
778 |             .body(body)
779 |             .call()
780 ~             .await
    |

warning: this expression creates a reference which is immediately dereferenced by the compiler
   --> src/lib.rs:776:23
    |
776 |         Ok(Self::post(&self)
    |                       ^^^^^ help: change this to: `self`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
   --> src/lib.rs:795:9
    |
795 | /         Ok(Self::post(&self)
796 | |             .endpoint(endpoint)
797 | |             .body(body)
798 | |             .call()
799 | |             .await?)
    | |____________________^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
    |
795 ~         Self::post(&self)
796 |             .endpoint(endpoint)
797 |             .body(body)
798 |             .call()
799 ~             .await
    |

warning: this expression creates a reference which is immediately dereferenced by the compiler
   --> src/lib.rs:795:23
    |
795 |         Ok(Self::post(&self)
    |                       ^^^^^ help: change this to: `self`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: type parameter `T` goes unused in function definition
   --> src/lib.rs:804:31
    |
804 |     pub async fn get_site_user<T: serde::Serialize>(
    |                               ^^^^^^^^^^^^^^^^^^^^^ help: consider removing the parameter
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_type_parameters
    = note: `#[warn(clippy::extra_unused_type_parameters)]` on by default

warning: enclosing `Ok` and `?` operator are unneeded
   --> src/lib.rs:812:9
    |
812 | /         Ok(Self::post(&self)
813 | |             .endpoint(endpoint)
814 | |             .body(body)
815 | |             .call()
816 | |             .await?)
    | |____________________^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
    |
812 ~         Self::post(&self)
813 |             .endpoint(endpoint)
814 |             .body(body)
815 |             .call()
816 ~             .await
    |

warning: this expression creates a reference which is immediately dereferenced by the compiler
   --> src/lib.rs:812:23
    |
812 |         Ok(Self::post(&self)
    |                       ^^^^^ help: change this to: `self`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
   --> src/lib.rs:841:9
    |
841 | /         Ok(Self::post(&self)
842 | |             .endpoint(endpoint)
843 | |             .body(body)
844 | |             .call()
845 | |             .await?)
    | |____________________^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
    |
841 ~         Self::post(&self)
842 |             .endpoint(endpoint)
843 |             .body(body)
844 |             .call()
845 ~             .await
    |

warning: this expression creates a reference which is immediately dereferenced by the compiler
   --> src/lib.rs:841:23
    |
841 |         Ok(Self::post(&self)
    |                       ^^^^^ help: change this to: `self`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
   --> src/lib.rs:858:9
    |
858 | /         Ok(Self::post(&self)
859 | |             .endpoint(endpoint)
860 | |             .body(body)
861 | |             .call()
862 | |             .await?)
    | |____________________^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
    |
858 ~         Self::post(&self)
859 |             .endpoint(endpoint)
860 |             .body(body)
861 |             .call()
862 ~             .await
    |

warning: this expression creates a reference which is immediately dereferenced by the compiler
   --> src/lib.rs:858:23
    |
858 |         Ok(Self::post(&self)
    |                       ^^^^^ help: change this to: `self`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
   --> src/lib.rs:875:9
    |
875 | /         Ok(Self::post(&self)
876 | |             .endpoint(endpoint)
877 | |             .body(body)
878 | |             .call()
879 | |             .await?)
    | |____________________^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
    |
875 ~         Self::post(&self)
876 |             .endpoint(endpoint)
877 |             .body(body)
878 |             .call()
879 ~             .await
    |

warning: this expression creates a reference which is immediately dereferenced by the compiler
   --> src/lib.rs:875:23
    |
875 |         Ok(Self::post(&self)
    |                       ^^^^^ help: change this to: `self`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
   --> src/lib.rs:892:9
    |
892 | /         Ok(Self::post(&self)
893 | |             .endpoint(endpoint)
894 | |             .body(body)
895 | |             .call()
896 | |             .await?)
    | |____________________^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
    |
892 ~         Self::post(&self)
893 |             .endpoint(endpoint)
894 |             .body(body)
895 |             .call()
896 ~             .await
    |

warning: this expression creates a reference which is immediately dereferenced by the compiler
   --> src/lib.rs:892:23
    |
892 |         Ok(Self::post(&self)
    |                       ^^^^^ help: change this to: `self`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
   --> src/lib.rs:909:9
    |
909 | /         Ok(Self::post(&self)
910 | |             .endpoint(endpoint)
911 | |             .body(body)
912 | |             .call()
913 | |             .await?)
    | |____________________^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
    |
909 ~         Self::post(&self)
910 |             .endpoint(endpoint)
911 |             .body(body)
912 |             .call()
913 ~             .await
    |

warning: this expression creates a reference which is immediately dereferenced by the compiler
   --> src/lib.rs:909:23
    |
909 |         Ok(Self::post(&self)
    |                       ^^^^^ help: change this to: `self`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
   --> src/lib.rs:926:9
    |
926 | /         Ok(Self::post(&self)
927 | |             .endpoint(endpoint)
928 | |             .body(body)
929 | |             .call()
930 | |             .await?)
    | |____________________^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
    |
926 ~         Self::post(&self)
927 |             .endpoint(endpoint)
928 |             .body(body)
929 |             .call()
930 ~             .await
    |

warning: this expression creates a reference which is immediately dereferenced by the compiler
   --> src/lib.rs:926:23
    |
926 |         Ok(Self::post(&self)
    |                       ^^^^^ help: change this to: `self`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
   --> src/lib.rs:943:9
    |
943 | /         Ok(Self::post(&self)
944 | |             .endpoint(endpoint)
945 | |             .body(body)
946 | |             .call()
947 | |             .await?)
    | |____________________^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
    |
943 ~         Self::post(&self)
944 |             .endpoint(endpoint)
945 |             .body(body)
946 |             .call()
947 ~             .await
    |

warning: this expression creates a reference which is immediately dereferenced by the compiler
   --> src/lib.rs:943:23
    |
943 |         Ok(Self::post(&self)
    |                       ^^^^^ help: change this to: `self`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
   --> src/lib.rs:960:9
    |
960 | /         Ok(Self::post(&self)
961 | |             .endpoint(endpoint)
962 | |             .body(body)
963 | |             .call()
964 | |             .await?)
    | |____________________^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
    |
960 ~         Self::post(&self)
961 |             .endpoint(endpoint)
962 |             .body(body)
963 |             .call()
964 ~             .await
    |

warning: this expression creates a reference which is immediately dereferenced by the compiler
   --> src/lib.rs:960:23
    |
960 |         Ok(Self::post(&self)
    |                       ^^^^^ help: change this to: `self`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
   --> src/lib.rs:977:9
    |
977 | /         Ok(Self::post(&self)
978 | |             .endpoint(endpoint)
979 | |             .body(body)
980 | |             .call()
981 | |             .await?)
    | |____________________^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
    |
977 ~         Self::post(&self)
978 |             .endpoint(endpoint)
979 |             .body(body)
980 |             .call()
981 ~             .await
    |

warning: this expression creates a reference which is immediately dereferenced by the compiler
   --> src/lib.rs:977:23
    |
977 |         Ok(Self::post(&self)
    |                       ^^^^^ help: change this to: `self`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
   --> src/lib.rs:994:9
    |
994 | /         Ok(Self::post(&self)
995 | |             .endpoint(endpoint)
996 | |             .body(body)
997 | |             .call()
998 | |             .await?)
    | |____________________^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
    |
994 ~         Self::post(&self)
995 |             .endpoint(endpoint)
996 |             .body(body)
997 |             .call()
998 ~             .await
    |

warning: this expression creates a reference which is immediately dereferenced by the compiler
   --> src/lib.rs:994:23
    |
994 |         Ok(Self::post(&self)
    |                       ^^^^^ help: change this to: `self`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:1011:9
     |
1011 | /         Ok(Self::post(&self)
1012 | |             .endpoint(endpoint)
1013 | |             .body(body)
1014 | |             .call()
1015 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
1011 ~         Self::post(&self)
1012 |             .endpoint(endpoint)
1013 |             .body(body)
1014 |             .call()
1015 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:1011:23
     |
1011 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:1028:9
     |
1028 | /         Ok(Self::post(&self)
1029 | |             .endpoint(endpoint)
1030 | |             .body(body)
1031 | |             .call()
1032 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
1028 ~         Self::post(&self)
1029 |             .endpoint(endpoint)
1030 |             .body(body)
1031 |             .call()
1032 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:1028:23
     |
1028 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:1045:9
     |
1045 | /         Ok(Self::post(&self)
1046 | |             .endpoint(endpoint)
1047 | |             .body(body)
1048 | |             .call()
1049 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
1045 ~         Self::post(&self)
1046 |             .endpoint(endpoint)
1047 |             .body(body)
1048 |             .call()
1049 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:1045:23
     |
1045 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:1062:9
     |
1062 | /         Ok(Self::post(&self)
1063 | |             .endpoint(endpoint)
1064 | |             .body(body)
1065 | |             .call()
1066 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
1062 ~         Self::post(&self)
1063 |             .endpoint(endpoint)
1064 |             .body(body)
1065 |             .call()
1066 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:1062:23
     |
1062 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:1079:9
     |
1079 | /         Ok(Self::post(&self)
1080 | |             .endpoint(endpoint)
1081 | |             .body(body)
1082 | |             .call()
1083 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
1079 ~         Self::post(&self)
1080 |             .endpoint(endpoint)
1081 |             .body(body)
1082 |             .call()
1083 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:1079:23
     |
1079 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:1096:9
     |
1096 | /         Ok(Self::post(&self)
1097 | |             .endpoint(endpoint)
1098 | |             .body(body)
1099 | |             .call()
1100 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
1096 ~         Self::post(&self)
1097 |             .endpoint(endpoint)
1098 |             .body(body)
1099 |             .call()
1100 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:1096:23
     |
1096 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:1115:9
     |
1115 | /         Ok(Self::post(&self)
1116 | |             .endpoint(endpoint)
1117 | |             .body(body)
1118 | |             .call()
1119 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
1115 ~         Self::post(&self)
1116 |             .endpoint(endpoint)
1117 |             .body(body)
1118 |             .call()
1119 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:1115:23
     |
1115 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:1132:9
     |
1132 | /         Ok(Self::post(&self)
1133 | |             .endpoint(endpoint)
1134 | |             .body(body)
1135 | |             .call()
1136 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
1132 ~         Self::post(&self)
1133 |             .endpoint(endpoint)
1134 |             .body(body)
1135 |             .call()
1136 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:1132:23
     |
1132 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:1149:9
     |
1149 | /         Ok(Self::post(&self)
1150 | |             .endpoint(endpoint)
1151 | |             .body(body)
1152 | |             .call()
1153 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
1149 ~         Self::post(&self)
1150 |             .endpoint(endpoint)
1151 |             .body(body)
1152 |             .call()
1153 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:1149:23
     |
1149 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:1166:9
     |
1166 | /         Ok(Self::post(&self)
1167 | |             .endpoint(endpoint)
1168 | |             .body(body)
1169 | |             .call()
1170 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
1166 ~         Self::post(&self)
1167 |             .endpoint(endpoint)
1168 |             .body(body)
1169 |             .call()
1170 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:1166:23
     |
1166 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:1183:9
     |
1183 | /         Ok(Self::post(&self)
1184 | |             .endpoint(endpoint)
1185 | |             .body(body)
1186 | |             .call()
1187 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
1183 ~         Self::post(&self)
1184 |             .endpoint(endpoint)
1185 |             .body(body)
1186 |             .call()
1187 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:1183:23
     |
1183 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:1200:9
     |
1200 | /         Ok(Self::post(&self)
1201 | |             .endpoint(endpoint)
1202 | |             .body(body)
1203 | |             .call()
1204 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
1200 ~         Self::post(&self)
1201 |             .endpoint(endpoint)
1202 |             .body(body)
1203 |             .call()
1204 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:1200:23
     |
1200 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:1217:9
     |
1217 | /         Ok(Self::post(&self)
1218 | |             .endpoint(endpoint)
1219 | |             .body(body)
1220 | |             .call()
1221 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
1217 ~         Self::post(&self)
1218 |             .endpoint(endpoint)
1219 |             .body(body)
1220 |             .call()
1221 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:1217:23
     |
1217 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs🔢9
     |
1234 | /         Ok(Self::post(&self)
1235 | |             .endpoint(endpoint)
1236 | |             .body(body)
1237 | |             .call()
1238 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
1234 ~         Self::post(&self)
1235 |             .endpoint(endpoint)
1236 |             .body(body)
1237 |             .call()
1238 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs🔢23
     |
1234 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:1259:9
     |
1259 | /         Ok(Self::post(&self)
1260 | |             .endpoint(endpoint)
1261 | |             .body(body)
1262 | |             .call()
1263 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
1259 ~         Self::post(&self)
1260 |             .endpoint(endpoint)
1261 |             .body(body)
1262 |             .call()
1263 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:1259:23
     |
1259 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:1276:9
     |
1276 | /         Ok(Self::post(&self)
1277 | |             .endpoint(endpoint)
1278 | |             .body(body)
1279 | |             .call()
1280 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
1276 ~         Self::post(&self)
1277 |             .endpoint(endpoint)
1278 |             .body(body)
1279 |             .call()
1280 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:1276:23
     |
1276 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:1293:9
     |
1293 | /         Ok(Self::post(&self)
1294 | |             .endpoint(endpoint)
1295 | |             .body(body)
1296 | |             .call()
1297 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
1293 ~         Self::post(&self)
1294 |             .endpoint(endpoint)
1295 |             .body(body)
1296 |             .call()
1297 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:1293:23
     |
1293 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:1371:9
     |
1371 | /         Ok(Self::post(&self)
1372 | |             .endpoint(endpoint)
1373 | |             .body(body)
1374 | |             .call()
1375 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
1371 ~         Self::post(&self)
1372 |             .endpoint(endpoint)
1373 |             .body(body)
1374 |             .call()
1375 ~             .await
     |

warning: this `if` statement can be collapsed
    --> src/lib.rs:1355:9
     |
1355 | /         if let Some(custom) = custom_fields {
1356 | |             if custom.is_object() {
1357 | |                 let custom_temp_map = custom.as_object().unwrap();
1358 | |                 custom_map.extend(
...    |
1364 | |         }
     | |_________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if
     = note: `#[warn(clippy::collapsible_if)]` on by default
help: collapse nested if block
     |
1355 ~         if let Some(custom) = custom_fields
1356 ~             && custom.is_object() {
1357 |                 let custom_temp_map = custom.as_object().unwrap();
 ...
1362 |                 );
1363 ~             }
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:1371:23
     |
1371 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:1416:9
     |
1416 | /         Ok(Self::post(&self)
1417 | |             .endpoint(endpoint)
1418 | |             .body(body)
1419 | |             .maybe_upload(upload)
1420 | |             .call()
1421 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
1416 ~         Self::post(&self)
1417 |             .endpoint(endpoint)
 ...
1420 |             .call()
1421 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:1416:23
     |
1416 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:1442:9
     |
1442 | /         Ok(Self::post(&self)
1443 | |             .endpoint(endpoint)
1444 | |             .body(body)
1445 | |             .call()
1446 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
1442 ~         Self::post(&self)
1443 |             .endpoint(endpoint)
1444 |             .body(body)
1445 |             .call()
1446 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:1442:23
     |
1442 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:1463:9
     |
1463 | /         Ok(Self::post(&self)
1464 | |             .endpoint(endpoint)
1465 | |             .body(body)
1466 | |             .call()
1467 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
1463 ~         Self::post(&self)
1464 |             .endpoint(endpoint)
1465 |             .body(body)
1466 |             .call()
1467 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:1463:23
     |
1463 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:1482:9
     |
1482 | /         Ok(Self::post(&self)
1483 | |             .endpoint(endpoint)
1484 | |             .body(body)
1485 | |             .call()
1486 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
1482 ~         Self::post(&self)
1483 |             .endpoint(endpoint)
1484 |             .body(body)
1485 |             .call()
1486 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:1482:23
     |
1482 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:1505:9
     |
1505 | /         Ok(Self::post(&self)
1506 | |             .endpoint(endpoint)
1507 | |             .body(body)
1508 | |             .call()
1509 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
1505 ~         Self::post(&self)
1506 |             .endpoint(endpoint)
1507 |             .body(body)
1508 |             .call()
1509 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:1505:23
     |
1505 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:1528:9
     |
1528 | /         Ok(Self::post(&self)
1529 | |             .endpoint(endpoint)
1530 | |             .body(body)
1531 | |             .call()
1532 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
1528 ~         Self::post(&self)
1529 |             .endpoint(endpoint)
1530 |             .body(body)
1531 |             .call()
1532 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:1528:23
     |
1528 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:1549:9
     |
1549 | /         Ok(Self::post(&self)
1550 | |             .endpoint(endpoint)
1551 | |             .body(body)
1552 | |             .call()
1553 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
1549 ~         Self::post(&self)
1550 |             .endpoint(endpoint)
1551 |             .body(body)
1552 |             .call()
1553 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:1549:23
     |
1549 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:1588:9
     |
1588 | /         Ok(Self::post(&self)
1589 | |             .endpoint(endpoint)
1590 | |             .body(body)
1591 | |             .call()
1592 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
1588 ~         Self::post(&self)
1589 |             .endpoint(endpoint)
1590 |             .body(body)
1591 |             .call()
1592 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:1588:23
     |
1588 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:1623:9
     |
1623 | /         Ok(Self::post(&self)
1624 | |             .endpoint(endpoint)
1625 | |             .body(body)
1626 | |             .call()
1627 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
1623 ~         Self::post(&self)
1624 |             .endpoint(endpoint)
1625 |             .body(body)
1626 |             .call()
1627 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:1623:23
     |
1623 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:1656:9
     |
1656 | /         Ok(Self::post(&self)
1657 | |             .endpoint(endpoint)
1658 | |             .body(body)
1659 | |             .call()
1660 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
1656 ~         Self::post(&self)
1657 |             .endpoint(endpoint)
1658 |             .body(body)
1659 |             .call()
1660 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:1656:23
     |
1656 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:1677:9
     |
1677 | /         Ok(Self::post(&self)
1678 | |             .endpoint(endpoint)
1679 | |             .body(body)
1680 | |             .call()
1681 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
1677 ~         Self::post(&self)
1678 |             .endpoint(endpoint)
1679 |             .body(body)
1680 |             .call()
1681 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:1677:23
     |
1677 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:1696:9
     |
1696 | /         Ok(Self::post(&self)
1697 | |             .endpoint(endpoint)
1698 | |             .body(body)
1699 | |             .call()
1700 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
1696 ~         Self::post(&self)
1697 |             .endpoint(endpoint)
1698 |             .body(body)
1699 |             .call()
1700 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:1696:23
     |
1696 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:1715:9
     |
1715 | /         Ok(Self::post(&self)
1716 | |             .endpoint(endpoint)
1717 | |             .body(body)
1718 | |             .call()
1719 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
1715 ~         Self::post(&self)
1716 |             .endpoint(endpoint)
1717 |             .body(body)
1718 |             .call()
1719 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:1715:23
     |
1715 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:1732:9
     |
1732 | /         Ok(Self::post(&self)
1733 | |             .endpoint(endpoint)
1734 | |             .body(body)
1735 | |             .call()
1736 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
1732 ~         Self::post(&self)
1733 |             .endpoint(endpoint)
1734 |             .body(body)
1735 |             .call()
1736 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:1732:23
     |
1732 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:1749:9
     |
1749 | /         Ok(Self::post(&self)
1750 | |             .endpoint(endpoint)
1751 | |             .body(body)
1752 | |             .call()
1753 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
1749 ~         Self::post(&self)
1750 |             .endpoint(endpoint)
1751 |             .body(body)
1752 |             .call()
1753 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:1749:23
     |
1749 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:1770:9
     |
1770 | /         Ok(Self::post(&self)
1771 | |             .endpoint(endpoint)
1772 | |             .body(body)
1773 | |             .call()
1774 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
1770 ~         Self::post(&self)
1771 |             .endpoint(endpoint)
1772 |             .body(body)
1773 |             .call()
1774 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:1770:23
     |
1770 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:1791:9
     |
1791 | /         Ok(Self::post(&self)
1792 | |             .endpoint(endpoint)
1793 | |             .body(body)
1794 | |             .call()
1795 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
1791 ~         Self::post(&self)
1792 |             .endpoint(endpoint)
1793 |             .body(body)
1794 |             .call()
1795 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:1791:23
     |
1791 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:1808:9
     |
1808 | /         Ok(Self::post(&self)
1809 | |             .endpoint(endpoint)
1810 | |             .body(body)
1811 | |             .call()
1812 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
1808 ~         Self::post(&self)
1809 |             .endpoint(endpoint)
1810 |             .body(body)
1811 |             .call()
1812 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:1808:23
     |
1808 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:1827:9
     |
1827 | /         Ok(Self::post(&self)
1828 | |             .endpoint(endpoint)
1829 | |             .body(body)
1830 | |             .call()
1831 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
1827 ~         Self::post(&self)
1828 |             .endpoint(endpoint)
1829 |             .body(body)
1830 |             .call()
1831 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:1827:23
     |
1827 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:1874:9
     |
1874 | /         Ok(Self::post(&self)
1875 | |             .endpoint(endpoint)
1876 | |             .body(body)
1877 | |             .maybe_upload(upload)
1878 | |             .call()
1879 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
1874 ~         Self::post(&self)
1875 |             .endpoint(endpoint)
 ...
1878 |             .call()
1879 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:1874:23
     |
1874 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:1902:9
     |
1902 | /         Ok(Self::post(&self)
1903 | |             .endpoint(endpoint)
1904 | |             .body(body)
1905 | |             .call()
1906 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
1902 ~         Self::post(&self)
1903 |             .endpoint(endpoint)
1904 |             .body(body)
1905 |             .call()
1906 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:1902:23
     |
1902 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:1921:9
     |
1921 | /         Ok(Self::post(&self)
1922 | |             .endpoint(endpoint)
1923 | |             .body(body)
1924 | |             .call()
1925 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
1921 ~         Self::post(&self)
1922 |             .endpoint(endpoint)
1923 |             .body(body)
1924 |             .call()
1925 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:1921:23
     |
1921 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:2001:9
     |
2001 | /         Ok(Self::post(&self)
2002 | |             .endpoint(endpoint)
2003 | |             .body(body)
2004 | |             .call()
2005 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
2001 ~         Self::post(&self)
2002 |             .endpoint(endpoint)
2003 |             .body(body)
2004 |             .call()
2005 ~             .await
     |

warning: this `if` statement can be collapsed
    --> src/lib.rs:1985:9
     |
1985 | /         if let Some(custom) = custom_fields {
1986 | |             if custom.is_object() {
1987 | |                 let custom_temp_map = custom.as_object().unwrap();
1988 | |                 custom_map.extend(
...    |
1994 | |         }
     | |_________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if
help: collapse nested if block
     |
1985 ~         if let Some(custom) = custom_fields
1986 ~             && custom.is_object() {
1987 |                 let custom_temp_map = custom.as_object().unwrap();
 ...
1992 |                 );
1993 ~             }
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:2001:23
     |
2001 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:2024:9
     |
2024 | /         Ok(Self::post(&self)
2025 | |             .endpoint(endpoint)
2026 | |             .body(body)
2027 | |             .call()
2028 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
2024 ~         Self::post(&self)
2025 |             .endpoint(endpoint)
2026 |             .body(body)
2027 |             .call()
2028 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:2024:23
     |
2024 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:2043:9
     |
2043 | /         Ok(Self::post(&self)
2044 | |             .endpoint(endpoint)
2045 | |             .body(body)
2046 | |             .call()
2047 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
2043 ~         Self::post(&self)
2044 |             .endpoint(endpoint)
2045 |             .body(body)
2046 |             .call()
2047 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:2043:23
     |
2043 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:2066:9
     |
2066 | /         Ok(Self::post(&self)
2067 | |             .endpoint(endpoint)
2068 | |             .body(body)
2069 | |             .call()
2070 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
2066 ~         Self::post(&self)
2067 |             .endpoint(endpoint)
2068 |             .body(body)
2069 |             .call()
2070 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:2066:23
     |
2066 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:2105:9
     |
2105 | /         Ok(Self::post(&self)
2106 | |             .endpoint(endpoint)
2107 | |             .body(body)
2108 | |             .call()
2109 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
2105 ~         Self::post(&self)
2106 |             .endpoint(endpoint)
2107 |             .body(body)
2108 |             .call()
2109 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:2105:23
     |
2105 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:2138:9
     |
2138 | /         Ok(Self::post(&self)
2139 | |             .endpoint(endpoint)
2140 | |             .body(body)
2141 | |             .call()
2142 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
2138 ~         Self::post(&self)
2139 |             .endpoint(endpoint)
2140 |             .body(body)
2141 |             .call()
2142 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:2138:23
     |
2138 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:2171:9
     |
2171 | /         Ok(Self::post(&self)
2172 | |             .endpoint(endpoint)
2173 | |             .body(body)
2174 | |             .call()
2175 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
2171 ~         Self::post(&self)
2172 |             .endpoint(endpoint)
2173 |             .body(body)
2174 |             .call()
2175 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:2171:23
     |
2171 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:2204:9
     |
2204 | /         Ok(Self::post(&self)
2205 | |             .endpoint(endpoint)
2206 | |             .body(body)
2207 | |             .call()
2208 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
2204 ~         Self::post(&self)
2205 |             .endpoint(endpoint)
2206 |             .body(body)
2207 |             .call()
2208 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:2204:23
     |
2204 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:2221:9
     |
2221 | /         Ok(Self::post(&self)
2222 | |             .endpoint(endpoint)
2223 | |             .body(body)
2224 | |             .call()
2225 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
2221 ~         Self::post(&self)
2222 |             .endpoint(endpoint)
2223 |             .body(body)
2224 |             .call()
2225 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:2221:23
     |
2221 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:2242:9
     |
2242 | /         Ok(Self::post(&self)
2243 | |             .endpoint(endpoint)
2244 | |             .body(body)
2245 | |             .call()
2246 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
2242 ~         Self::post(&self)
2243 |             .endpoint(endpoint)
2244 |             .body(body)
2245 |             .call()
2246 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:2242:23
     |
2242 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:2259:9
     |
2259 | /         Ok(Self::post(&self)
2260 | |             .endpoint(endpoint)
2261 | |             .body(body)
2262 | |             .call()
2263 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
2259 ~         Self::post(&self)
2260 |             .endpoint(endpoint)
2261 |             .body(body)
2262 |             .call()
2263 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:2259:23
     |
2259 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:2280:9
     |
2280 | /         Ok(Self::post(&self)
2281 | |             .endpoint(endpoint)
2282 | |             .body(body)
2283 | |             .call()
2284 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
2280 ~         Self::post(&self)
2281 |             .endpoint(endpoint)
2282 |             .body(body)
2283 |             .call()
2284 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:2280:23
     |
2280 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:2299:9
     |
2299 | /         Ok(Self::post(&self)
2300 | |             .endpoint(endpoint)
2301 | |             .body(body)
2302 | |             .call()
2303 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
2299 ~         Self::post(&self)
2300 |             .endpoint(endpoint)
2301 |             .body(body)
2302 |             .call()
2303 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:2299:23
     |
2299 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:2318:9
     |
2318 | /         Ok(Self::post(&self)
2319 | |             .endpoint(endpoint)
2320 | |             .body(body)
2321 | |             .call()
2322 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
2318 ~         Self::post(&self)
2319 |             .endpoint(endpoint)
2320 |             .body(body)
2321 |             .call()
2322 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:2318:23
     |
2318 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:2337:9
     |
2337 | /         Ok(Self::post(&self)
2338 | |             .endpoint(endpoint)
2339 | |             .body(body)
2340 | |             .call()
2341 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
2337 ~         Self::post(&self)
2338 |             .endpoint(endpoint)
2339 |             .body(body)
2340 |             .call()
2341 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:2337:23
     |
2337 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:2356:9
     |
2356 | /         Ok(Self::post(&self)
2357 | |             .endpoint(endpoint)
2358 | |             .body(body)
2359 | |             .call()
2360 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
2356 ~         Self::post(&self)
2357 |             .endpoint(endpoint)
2358 |             .body(body)
2359 |             .call()
2360 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:2356:23
     |
2356 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:2389:9
     |
2389 | /         Ok(Self::post(&self)
2390 | |             .endpoint(endpoint)
2391 | |             .body(body)
2392 | |             .call()
2393 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
2389 ~         Self::post(&self)
2390 |             .endpoint(endpoint)
2391 |             .body(body)
2392 |             .call()
2393 ~             .await
     |

warning: this `if` statement can be collapsed
    --> src/lib.rs:2373:9
     |
2373 | /         if let Some(options_obj) = options {
2374 | |             if options_obj.is_object() {
2375 | |                 let custom_temp_map = options_obj.as_object().unwrap();
2376 | |                 custom_map.extend(
...    |
2382 | |         }
     | |_________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if
help: collapse nested if block
     |
2373 ~         if let Some(options_obj) = options
2374 ~             && options_obj.is_object() {
2375 |                 let custom_temp_map = options_obj.as_object().unwrap();
 ...
2380 |                 );
2381 ~             }
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:2389:23
     |
2389 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:2469:9
     |
2469 | /         Ok(Self::post(&self)
2470 | |             .endpoint(endpoint)
2471 | |             .body(body)
2472 | |             .call()
2473 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
2469 ~         Self::post(&self)
2470 |             .endpoint(endpoint)
2471 |             .body(body)
2472 |             .call()
2473 ~             .await
     |

warning: this `if` statement can be collapsed
    --> src/lib.rs:2453:9
     |
2453 | /         if let Some(custom) = custom_fields {
2454 | |             if custom.is_object() {
2455 | |                 let custom_temp_map = custom.as_object().unwrap();
2456 | |                 custom_map.extend(
...    |
2462 | |         }
     | |_________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if
help: collapse nested if block
     |
2453 ~         if let Some(custom) = custom_fields
2454 ~             && custom.is_object() {
2455 |                 let custom_temp_map = custom.as_object().unwrap();
 ...
2460 |                 );
2461 ~             }
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:2469:23
     |
2469 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:2516:9
     |
2516 | /         Ok(Self::post(&self)
2517 | |             .endpoint(endpoint)
2518 | |             .body(body)
2519 | |             .maybe_upload(upload)
2520 | |             .call()
2521 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
2516 ~         Self::post(&self)
2517 |             .endpoint(endpoint)
 ...
2520 |             .call()
2521 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:2516:23
     |
2516 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:2556:9
     |
2556 | /         Ok(Self::post(&self)
2557 | |             .endpoint(endpoint)
2558 | |             .body(body)
2559 | |             .call()
2560 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
2556 ~         Self::post(&self)
2557 |             .endpoint(endpoint)
2558 |             .body(body)
2559 |             .call()
2560 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:2556:23
     |
2556 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:2589:9
     |
2589 | /         Ok(Self::post(&self)
2590 | |             .endpoint(endpoint)
2591 | |             .body(body)
2592 | |             .call()
2593 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
2589 ~         Self::post(&self)
2590 |             .endpoint(endpoint)
2591 |             .body(body)
2592 |             .call()
2593 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:2589:23
     |
2589 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:2622:9
     |
2622 | /         Ok(Self::post(&self)
2623 | |             .endpoint(endpoint)
2624 | |             .body(body)
2625 | |             .call()
2626 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
2622 ~         Self::post(&self)
2623 |             .endpoint(endpoint)
2624 |             .body(body)
2625 |             .call()
2626 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:2622:23
     |
2622 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:2639:9
     |
2639 | /         Ok(Self::post(&self)
2640 | |             .endpoint(endpoint)
2641 | |             .body(body)
2642 | |             .call()
2643 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
2639 ~         Self::post(&self)
2640 |             .endpoint(endpoint)
2641 |             .body(body)
2642 |             .call()
2643 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:2639:23
     |
2639 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:2656:9
     |
2656 | /         Ok(Self::post(&self)
2657 | |             .endpoint(endpoint)
2658 | |             .body(body)
2659 | |             .call()
2660 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
2656 ~         Self::post(&self)
2657 |             .endpoint(endpoint)
2658 |             .body(body)
2659 |             .call()
2660 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:2656:23
     |
2656 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:2673:9
     |
2673 | /         Ok(Self::post(&self)
2674 | |             .endpoint(endpoint)
2675 | |             .body(body)
2676 | |             .call()
2677 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
2673 ~         Self::post(&self)
2674 |             .endpoint(endpoint)
2675 |             .body(body)
2676 |             .call()
2677 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:2673:23
     |
2673 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:2690:9
     |
2690 | /         Ok(Self::post(&self)
2691 | |             .endpoint(endpoint)
2692 | |             .body(body)
2693 | |             .call()
2694 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
2690 ~         Self::post(&self)
2691 |             .endpoint(endpoint)
2692 |             .body(body)
2693 |             .call()
2694 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:2690:23
     |
2690 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:2707:9
     |
2707 | /         Ok(Self::post(&self)
2708 | |             .endpoint(endpoint)
2709 | |             .body(body)
2710 | |             .call()
2711 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
2707 ~         Self::post(&self)
2708 |             .endpoint(endpoint)
2709 |             .body(body)
2710 |             .call()
2711 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:2707:23
     |
2707 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:2724:9
     |
2724 | /         Ok(Self::post(&self)
2725 | |             .endpoint(endpoint)
2726 | |             .body(body)
2727 | |             .call()
2728 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
2724 ~         Self::post(&self)
2725 |             .endpoint(endpoint)
2726 |             .body(body)
2727 |             .call()
2728 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:2724:23
     |
2724 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:2745:9
     |
2745 | /         Ok(Self::post(&self)
2746 | |             .endpoint(endpoint)
2747 | |             .body(body)
2748 | |             .call()
2749 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
2745 ~         Self::post(&self)
2746 |             .endpoint(endpoint)
2747 |             .body(body)
2748 |             .call()
2749 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:2745:23
     |
2745 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:2766:9
     |
2766 | /         Ok(Self::post(&self)
2767 | |             .endpoint(endpoint)
2768 | |             .body(body)
2769 | |             .call()
2770 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
2766 ~         Self::post(&self)
2767 |             .endpoint(endpoint)
2768 |             .body(body)
2769 |             .call()
2770 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:2766:23
     |
2766 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:2785:9
     |
2785 | /         Ok(Self::post(&self)
2786 | |             .endpoint(endpoint)
2787 | |             .body(body)
2788 | |             .call()
2789 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
2785 ~         Self::post(&self)
2786 |             .endpoint(endpoint)
2787 |             .body(body)
2788 |             .call()
2789 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:2785:23
     |
2785 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:2802:9
     |
2802 | /         Ok(Self::post(&self)
2803 | |             .endpoint(endpoint)
2804 | |             .body(body)
2805 | |             .call()
2806 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
2802 ~         Self::post(&self)
2803 |             .endpoint(endpoint)
2804 |             .body(body)
2805 |             .call()
2806 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:2802:23
     |
2802 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:2819:9
     |
2819 | /         Ok(Self::post(&self)
2820 | |             .endpoint(endpoint)
2821 | |             .body(body)
2822 | |             .call()
2823 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
2819 ~         Self::post(&self)
2820 |             .endpoint(endpoint)
2821 |             .body(body)
2822 |             .call()
2823 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:2819:23
     |
2819 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:2836:9
     |
2836 | /         Ok(Self::post(&self)
2837 | |             .endpoint(endpoint)
2838 | |             .body(body)
2839 | |             .call()
2840 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
2836 ~         Self::post(&self)
2837 |             .endpoint(endpoint)
2838 |             .body(body)
2839 |             .call()
2840 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:2836:23
     |
2836 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:2853:9
     |
2853 | /         Ok(Self::post(&self)
2854 | |             .endpoint(endpoint)
2855 | |             .body(body)
2856 | |             .call()
2857 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
2853 ~         Self::post(&self)
2854 |             .endpoint(endpoint)
2855 |             .body(body)
2856 |             .call()
2857 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:2853:23
     |
2853 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:2870:9
     |
2870 | /         Ok(Self::post(&self)
2871 | |             .endpoint(endpoint)
2872 | |             .body(body)
2873 | |             .call()
2874 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
2870 ~         Self::post(&self)
2871 |             .endpoint(endpoint)
2872 |             .body(body)
2873 |             .call()
2874 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:2870:23
     |
2870 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:2887:9
     |
2887 | /         Ok(Self::post(&self)
2888 | |             .endpoint(endpoint)
2889 | |             .body(body)
2890 | |             .call()
2891 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
2887 ~         Self::post(&self)
2888 |             .endpoint(endpoint)
2889 |             .body(body)
2890 |             .call()
2891 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:2887:23
     |
2887 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:2906:9
     |
2906 | /         Ok(Self::post(&self)
2907 | |             .endpoint(endpoint)
2908 | |             .body(body)
2909 | |             .call()
2910 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
2906 ~         Self::post(&self)
2907 |             .endpoint(endpoint)
2908 |             .body(body)
2909 |             .call()
2910 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:2906:23
     |
2906 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:2923:9
     |
2923 | /         Ok(Self::post(&self)
2924 | |             .endpoint(endpoint)
2925 | |             .body(body)
2926 | |             .call()
2927 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
2923 ~         Self::post(&self)
2924 |             .endpoint(endpoint)
2925 |             .body(body)
2926 |             .call()
2927 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:2923:23
     |
2923 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:2940:9
     |
2940 | /         Ok(Self::post(&self)
2941 | |             .endpoint(endpoint)
2942 | |             .body(body)
2943 | |             .call()
2944 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
2940 ~         Self::post(&self)
2941 |             .endpoint(endpoint)
2942 |             .body(body)
2943 |             .call()
2944 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:2940:23
     |
2940 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:2959:9
     |
2959 | /         Ok(Self::post(&self)
2960 | |             .endpoint(endpoint)
2961 | |             .body(body)
2962 | |             .call()
2963 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
2959 ~         Self::post(&self)
2960 |             .endpoint(endpoint)
2961 |             .body(body)
2962 |             .call()
2963 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:2959:23
     |
2959 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:2978:9
     |
2978 | /         Ok(Self::post(&self)
2979 | |             .endpoint(endpoint)
2980 | |             .body(body)
2981 | |             .call()
2982 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
2978 ~         Self::post(&self)
2979 |             .endpoint(endpoint)
2980 |             .body(body)
2981 |             .call()
2982 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:2978:23
     |
2978 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:2995:9
     |
2995 | /         Ok(Self::post(&self)
2996 | |             .endpoint(endpoint)
2997 | |             .body(body)
2998 | |             .call()
2999 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
2995 ~         Self::post(&self)
2996 |             .endpoint(endpoint)
2997 |             .body(body)
2998 |             .call()
2999 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:2995:23
     |
2995 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:3012:9
     |
3012 | /         Ok(Self::post(&self)
3013 | |             .endpoint(endpoint)
3014 | |             .body(body)
3015 | |             .call()
3016 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
3012 ~         Self::post(&self)
3013 |             .endpoint(endpoint)
3014 |             .body(body)
3015 |             .call()
3016 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:3012:23
     |
3012 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:3029:9
     |
3029 | /         Ok(Self::post(&self)
3030 | |             .endpoint(endpoint)
3031 | |             .body(body)
3032 | |             .call()
3033 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
3029 ~         Self::post(&self)
3030 |             .endpoint(endpoint)
3031 |             .body(body)
3032 |             .call()
3033 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:3029:23
     |
3029 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: enclosing `Ok` and `?` operator are unneeded
    --> src/lib.rs:3048:9
     |
3048 | /         Ok(Self::post(&self)
3049 | |             .endpoint(endpoint)
3050 | |             .body(body)
3051 | |             .call()
3052 | |             .await?)
     | |____________________^
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark
help: remove the enclosing `Ok` and `?` operator
     |
3048 ~         Self::post(&self)
3049 |             .endpoint(endpoint)
3050 |             .body(body)
3051 |             .call()
3052 ~             .await
     |

warning: this expression creates a reference which is immediately dereferenced by the compiler
    --> src/lib.rs:3048:23
     |
3048 |         Ok(Self::post(&self)
     |                       ^^^^^ help: change this to: `self`
     |
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow

warning: `ckanaction` (lib) generated 271 warnings (run `cargo clippy --fix --lib -p ckanaction` to apply 271 suggestions)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.24s
2025-05-27 10:46:11 -04:00
rzmk
a7fa0ac862
build: remove tokio and bin 2025-05-02 17:17:57 -04:00
rzmk
e2c7841f4a
docs: add home description for library docs 2025-05-02 17:10:38 -04:00
181 changed files with 10361 additions and 657 deletions

8
Cargo.lock generated
View file

@ -882,9 +882,9 @@ checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5"
[[package]] [[package]]
name = "redox_syscall" name = "redox_syscall"
version = "0.5.11" version = "0.5.12"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d2f103c6d277498fbceb16e84d317e2a400f160f46904d5f5410848c829511a3" checksum = "928fca9cf2aa042393a8325b9ead81d2f0df4cb12e1e24cef072922ccd99c5af"
dependencies = [ dependencies = [
"bitflags", "bitflags",
] ]
@ -1237,9 +1237,9 @@ dependencies = [
[[package]] [[package]]
name = "tokio" name = "tokio"
version = "1.44.2" version = "1.45.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e6b88822cbe49de4185e3a4cbf8321dd487cf5fe0c5c65695fef6346371e9c48" checksum = "75ef51a33ef1da925cea3e4eb122833cb377c61439ca401b770f54902b806779"
dependencies = [ dependencies = [
"backtrace", "backtrace",
"bytes", "bytes",

View file

@ -13,4 +13,6 @@ bon = "3.6.3"
reqwest = { version = "0.12.15", features = ["json", "multipart", "stream"] } reqwest = { version = "0.12.15", features = ["json", "multipart", "stream"] }
serde = "1.0.219" serde = "1.0.219"
serde_json = "1.0.140" serde_json = "1.0.140"
tokio = { version = "1.44.2", features = ["full"] }
[dev-dependencies]
tokio = { version = "1.45.1", features = ["full"] }

24
LICENSE Normal file
View file

@ -0,0 +1,24 @@
This is free and unencumbered software released into the public domain.
Anyone is free to copy, modify, publish, use, compile, sell, or
distribute this software, either in source code form or as a compiled
binary, for any purpose, commercial or non-commercial, and by any
means.
In jurisdictions that recognize copyright laws, the author or authors
of this software dedicate any and all copyright interest in the
software to the public domain. We make this dedication for the benefit
of the public at large and to the detriment of our heirs and
successors. We intend this dedication to be an overt act of
relinquishment in perpetuity of all present and future rights to this
software under copyright law.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
For more information, please refer to <https://unlicense.org>

View file

@ -81,3 +81,11 @@ println!("{status_show:#?}");
## Notes ## Notes
- If you use a `maybe_fn()` then if you provide `None` it will be ignored and that parameter will not be added to the JSON body. This library assumes `None` would not be provided as a value (since the cases where it is a value is often the default value that the CKAN API already has set for that parameter). - If you use a `maybe_fn()` then if you provide `None` it will be ignored and that parameter will not be added to the JSON body. This library assumes `None` would not be provided as a value (since the cases where it is a value is often the default value that the CKAN API already has set for that parameter).
## Tests
To run the tests in the `tests` directory, first replace the values for `CKAN_API_TOKEN` and `CKAN_URL` then run:
```bash
cargo test
```

28
docs/.gitignore vendored Normal file
View file

@ -0,0 +1,28 @@
# deps
/node_modules
# generated content
.contentlayer
.content-collections
.source
# test & build
/coverage
/.next/
/out/
/build
*.tsbuildinfo
# misc
.DS_Store
*.pem
/.pnp
.pnp.js
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# others
.env*.local
.vercel
next-env.d.ts

1
docs/.nvmrc Normal file
View file

@ -0,0 +1 @@
lts/*

31
docs/README.md Normal file
View file

@ -0,0 +1,31 @@
# ckanaction docs website (ckanaction.dathere.com)
This directory includes a Next.js project built with [Fumadocs](https://github.com/fuma-nama/fumadocs) for documentation of ckanaction. The documentation can be viewed at [ckanaction.dathere.com](https://ckanaction.dathere.com).
## Development
Run development server:
```bash
bun dev
```
Open http://localhost:3000 with your browser to see the result.
## Explore
In the project, you can see:
- `lib/source.ts`: Code for content source adapter, `loader()` provides the interface to access your content.
- `lib/layout.shared.tsx`: Shared options for layouts, optional but preferred to keep.
- `lib/openapi.yml`: The source file of the CKAN Actions API (v3) in an OpenAPI format which is then used in a script by running `bun ./scripts/generate-docs.ts` to generate the relevant docs files in `content/docs`.
| Route | Description |
| ------------------------- | ------------------------------------------------------ |
| `app/(home)` | The route group for your landing page and other pages. |
| `app/docs` | The documentation layout and pages. |
| `app/api/search/route.ts` | The Route Handler for search. |
## Linting
We use [Biome](https://biomejs.dev) for linting. We recommend you install the [biome-vscode extension](https://github.com/biomejs/biome-vscode) if you are using [VSCodium](https://vscodium.com/) or VSCode for developing the docs.

Binary file not shown.

After

Width:  |  Height:  |  Size: 630 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 MiB

View file

@ -0,0 +1,6 @@
import { HomeLayout } from 'fumadocs-ui/layouts/home';
import { baseOptions } from '@/lib/layout.shared';
export default function Layout({ children }: LayoutProps<'/'>) {
return <HomeLayout {...baseOptions()}>{children}</HomeLayout>;
}

437
docs/app/(home)/page.tsx Normal file
View file

@ -0,0 +1,437 @@
/** biome-ignore-all lint/suspicious/noArrayIndexKey: Would need to look into this trivial issue */
"use client";
import { cva } from "class-variance-authority";
import { CodeBlock } from "fumadocs-ui/components/codeblock";
import defaultMdxComponents from "fumadocs-ui/mdx";
import { cn } from "fumadocs-ui/utils/cn";
import {
BlocksIcon,
GiftIcon,
GitMergeIcon,
HomeIcon,
SailboatIcon,
TerminalIcon,
Trash2Icon,
ZapIcon,
} from "lucide-react";
import Image from "next/image";
import Link from "next/link";
import { type HTMLProps, type ReactNode, useState } from "react";
import { Pre } from "@/components/codeblock";
import { Button, buttonVariants } from "@/components/ui/button";
import { RainbowButton } from "@/components/ui/rainbow-button";
import CkanactionDemo1 from "./ckanaction-demo-1.gif";
import CkanactionRustDemo from "./ckanaction-rust-demo.gif";
export default function HomePage() {
const gridColor =
"color-mix(in oklab, var(--color-fd-primary) 10%, transparent)";
const { Card, Cards } = defaultMdxComponents;
return (
<>
<div
className="absolute inset-x-0 top-[360px] h-[250px] max-md:hidden"
style={{
background: `repeating-linear-gradient(to right, ${gridColor}, ${gridColor} 1px,transparent 1px,transparent 50px), repeating-linear-gradient(to bottom, ${gridColor}, ${gridColor} 1px,transparent 1px,transparent 50px)`,
}}
/>
<main className="container relative max-w-[1100px] mx-auto px-2 py-4 z-2 lg:py-8">
<div
style={{
background:
"repeating-linear-gradient(to bottom, transparent, color-mix(in oklab, var(--color-fd-primary) 1%, transparent) 500px, transparent 1000px)",
}}
>
<div className="relative mb-4">
<Hero />
{/* <Why /> */}
</div>
</div>
<hr className="mt-12 mb-4" />
<footer className="flex flex-col bg-brand-secondary pb-12 text-brand-secondary-foreground rounded-2xl">
<p className="mb-1 text-xl font-semibold">ckanaction</p>
<p className="text-xs">
Provided by{" "}
<a
href="https://dathere.com"
target="_blank"
className="font-medium text-blue-400"
rel="noopener"
>
datHere
</a>
.{" "}
<a
href="https://dathere.com/privacy-policy/"
target="_blank"
className="font-medium text-blue-400"
rel="noopener"
>
Privacy Policy
</a>
.
</p>
</footer>
</main>
</>
);
}
function Hero() {
const { Card, Cards } = defaultMdxComponents;
return (
<div className="relative z-2 flex flex-col border-x border-t bg-fd-background/80 px-4 pt-12 max-md:text-center md:px-12 md:pt-16 [.uwu_&]:hidden overflow-hidden">
<div
className="absolute inset-0 z-[-1] blur-2xl hidden dark:block"
style={{
maskImage:
"linear-gradient(to bottom, transparent, white, transparent)",
background:
"repeating-linear-gradient(65deg, var(--color-blue-500), var(--color-blue-500) 12px, color-mix(in oklab, var(--color-blue-600) 30%, transparent) 20px, transparent 200px)",
}}
/>
<div
className="absolute inset-0 z-[-1] blur-2xl dark:hidden"
style={{
maskImage:
"linear-gradient(to bottom, transparent, white, transparent)",
background:
"repeating-linear-gradient(65deg, var(--color-purple-300), var(--color-purple-300) 12px, color-mix(in oklab, var(--color-blue-600) 30%, transparent) 20px, transparent 200px)",
}}
/>
<h1 className="mb-8 text-4xl font-medium md:hidden">ckanaction</h1>
<h1 className="mb-8 max-w-[800px] text-4xl font-medium max-md:hidden">
<span className="text-5xl">
ckanaction <GiftIcon className="inline-block w-10 h-10 pb-1" />
</span>
<br />
Rust crate & web GUI based on the CKAN API.
</h1>
<p className="mb-2 text-fd-muted-foreground md:max-w-[80%] md:text-xl">
ckanaction is a Rust library crate for interacting with the CKAN Actions
API, and this web app provides an interactive web GUI based on the
OpenAPI specification.
</p>
<p className="mb-8 text-fd-muted-foreground md:max-w-[80%] md:text-sm">
Provided by{" "}
<Link className="text-fd-info" href="https://dathere.com">
datHere
</Link>
.
</p>
<div className="inline-flex items-center gap-3 max-md:mx-auto mb-8">
<Link href="/docs">
<RainbowButton className="rounded-full">Get Started</RainbowButton>
</Link>
<Link
href="https://github.com/dathere/ckanaction"
className={cn(
buttonVariants({
variant: "outline",
size: "lg",
className: "rounded-full",
}),
)}
>
Source Code
</Link>
</div>
{/* <Cards>
<Card icon={<ZapIcon />} href="/docs/builder" title="Quick start">
Get started with ckan-devstaller and install CKAN within minutes
</Card>
<Card icon={<BlocksIcon />} href="/docs/builder" title="Builder">
Customize your installation with an interactive web GUI
</Card>
<Card
icon={<HomeIcon />}
href="/docs/reference/installation-architecture"
title="Installation architecture"
>
Learn about where files are installed after running ckan-devstaller
</Card>
<Card
icon={<GitMergeIcon />}
href="https://github.com/dathere/ckan-devstaller"
title="Source code"
>
View the source code of ckan-devstaller on GitHub
</Card>
</Cards> */}
<PreviewImages />
</div>
);
}
const previewButtonVariants = cva(
"w-48 h-8 text-sm font-medium transition-colors rounded-full",
{
variants: {
active: {
true: "text-fd-primary-foreground",
false: "text-fd-muted-foreground",
},
},
},
);
function PreviewImages() {
const [active, setActive] = useState(0);
const previews = [
{
image: CkanactionRustDemo,
name: "Rust library crate",
},
{
image: CkanactionDemo1,
name: "Interactive web GUI",
},
];
return (
<div className="hidden md:block p-8 min-w-[600px] md:min-w-[800px] overflow-hidden xl:-mx-12 dark:[mask-image:linear-gradient(to_top,transparent,white_40px)]">
<div className="absolute flex flex-row left-1/2 -translate-1/2 bottom-4 z-2 p-1 rounded-full bg-fd-card border shadow-xl dark:shadow-fd-background">
<div
role="none"
className="absolute bg-fd-primary rounded-full w-48 h-9 transition-transform z-[-1]"
style={{
transform: `translateX(calc(var(--spacing) * 48 * ${active}))`,
}}
/>
<div className="space-x-2">
{previews.map((item, i) => (
<Button
key={i}
className={`${cn(previewButtonVariants({ active: active === i }))} h-full`}
onClick={() => setActive(i)}
>
{item.name}
</Button>
))}
</div>
</div>
{previews.map((item, i) => (
<Image
key={i}
src={item.image}
alt="preview"
priority
className={cn(
"rounded-xl w-full select-none duration-1000 animate-in fade-in md:-mb-60 slide-in-from-bottom-12 lg:-mb-0",
active !== i && "hidden",
)}
/>
))}
</div>
);
}
function Why() {
return (
<div className="relative overflow-hidden border-x border-t p-2">
<WhyInteractive
codeblockInstall={
<CodeBlock lang="bash">
<Pre className="text-wrap pl-4">./ckan-devstaller</Pre>
</CodeBlock>
}
codeblockUninstall={
<CodeBlock lang="bash">
<Pre className="text-wrap pl-4">./ckan-devstaller uninstall</Pre>
</CodeBlock>
}
/>
</div>
);
}
function WhyInteractive(props: {
codeblockInstall: ReactNode;
codeblockUninstall: ReactNode;
}) {
const [active, setActive] = useState(0);
const items = [
[
<ZapIcon className="w-4 h-4 inline-block" key={0} />,
"Install CKAN within minutes",
],
[
<BlocksIcon className="w-4 h-4 inline-block" key={1} />,
"Customize your installation",
],
[
<TerminalIcon className="w-4 h-4 inline-block" key={2} />,
"Designed for developers",
],
[
<Trash2Icon className="w-4 h-4 inline-block" key={3} />,
"Uninstall with ease",
],
];
return (
<div
id="why-interactive"
className="flex flex-col-reverse gap-3 md:flex-row md:min-h-[200px]"
>
<div className="flex flex-col">
{items.map((item, i) => (
<button
key={item[1] as string}
ref={(element) => {
if (!element || i !== active) return;
}}
type="button"
className={cn(
"transition-colors text-nowrap border border-transparent rounded-lg px-3 py-2.5 text-start text-sm text-fd-muted-foreground font-medium",
i === active
? "text-fd-primary bg-fd-primary/10 border-fd-primary/10"
: "hover:text-fd-accent-foreground/80 cursor-pointer",
)}
onClick={() => {
setActive(i);
}}
>
{item[0]} {item[1]}
</button>
))}
</div>
<style>
{`
@keyframes why-interactive-x {
from {
width: 0px;
}
to {
width: 100%;
}
}`}
</style>
<div className="flex-1 p-4 border border-fd-primary/10 bg-fd-card/40 rounded-lg shadow-lg">
{active === 0 ? (
<WhyPanel>
<h3>
<ZapIcon className="w-4 h-4 inline-block mr-1 mb-1" />
Install CKAN within minutes.
</h3>
<p>
One of the primary goals of ckan-devstaller is to ease
installation of CKAN for development. Built with Rust for speed
and streamlining installation with{" "}
<a href="https://github.com/tino097/ckan-compose/tree/ckan-devstaller">
ckan-compose
</a>
, ckan-devstaller improves installation speeds{" "}
<strong>from hours/days to just minutes</strong> depending on your
download speed.
</p>
<div className="flex gap-2">
<Link
href="/docs/builder"
className={cn(
buttonVariants({ size: "lg", className: "rounded-full" }),
)}
>
<Button>Get Started</Button>
</Link>
</div>
</WhyPanel>
) : null}
{active === 1 ? (
<WhyPanel>
<h3>
<BlocksIcon className="w-4 h-4 inline-block mr-1 mb-1" />
Customize your installation with the Builder.
</h3>
<p>
Try out the interactive web GUI for customizing your CKAN
installation. You can select:
</p>
<ul>
<li>Presets</li>
<li>CKAN version</li>
<li>Extensions</li>
<li>Features</li>
</ul>
<p>
Then you can copy the provided ckan-devstaller command to run your
selected configuration.
</p>
<div className="mt-4 flex flex-row items-center gap-1.5 not-prose">
<Link href="/docs/builder" className={cn(buttonVariants())}>
Try out the Builder
</Link>
</div>
</WhyPanel>
) : null}
{active === 2 ? (
<WhyPanel>
<h3>
<TerminalIcon className="w-4 h-4 inline-block mr-1 mb-1" />
Designed for developers.
</h3>
<p>
We've kept development use cases in mind while developing
ckan-devstaller, such as:
</p>
<ul>
<li>Trying out a new version of CKAN</li>
<li>Developing CKAN extensions and themes</li>
</ul>
<div className="flex gap-2">
<Link
href="/docs/reference/installation-architecture"
className={cn(buttonVariants(), "not-prose")}
>
View the installation architecture
</Link>
<Link
href="https://github.com/dathere/ckan-devstaller"
className={cn(buttonVariants({ variant: "ghost" }))}
>
Source code
</Link>
</div>
</WhyPanel>
) : null}
{active === 3 ? (
<WhyPanel>
<h3>
<Trash2Icon className="w-4 h-4 inline-block mr-1 mb-1" />
Uninstall CKAN with ease.
</h3>
<p>
After you've installed CKAN with ckan-devstaller, you can
uninstall CKAN with ease. This allows for quickly re-installing
CKAN for a different use case.
</p>
{props.codeblockUninstall}
<Link
href="/docs/tutorials/uninstall-ckan"
className={cn(buttonVariants(), "not-prose")}
>
Learn more about uninstalling
</Link>
</WhyPanel>
) : null}
</div>
</div>
);
}
function WhyPanel(props: HTMLProps<HTMLDivElement>) {
return (
<div
{...props}
className={cn(
"duration-700 animate-in fade-in text-sm prose",
props.className,
)}
>
{props.children}
</div>
);
}

View file

@ -0,0 +1,7 @@
import { createFromSource } from "fumadocs-core/search/server";
import { source } from "@/lib/source";
export const { GET } = createFromSource(source, {
// https://docs.orama.com/docs/orama-js/supported-languages
language: "english",
});

View file

@ -0,0 +1,54 @@
import { createRelativeLink } from "fumadocs-ui/mdx";
import {
DocsBody,
DocsDescription,
DocsPage,
DocsTitle,
} from "fumadocs-ui/page";
import type { Metadata } from "next";
import { notFound } from "next/navigation";
import { getPageImage, source } from "@/lib/source";
import { getMDXComponents } from "@/mdx-components";
export default async function Page(props: PageProps<"/docs/[[...slug]]">) {
const params = await props.params;
const page = source.getPage(params.slug);
if (!page) notFound();
const MDX = page.data.body;
return (
<DocsPage toc={page.data.toc} full={page.data.full}>
<DocsTitle>{page.data.title}</DocsTitle>
<DocsDescription>{page.data.description}</DocsDescription>
<DocsBody>
<MDX
components={getMDXComponents({
// this allows you to link to other pages with relative file paths
a: createRelativeLink(source, page),
})}
/>
</DocsBody>
</DocsPage>
);
}
export async function generateStaticParams() {
return source.generateParams();
}
export async function generateMetadata(
props: PageProps<"/docs/[[...slug]]">,
): Promise<Metadata> {
const params = await props.params;
const page = source.getPage(params.slug);
if (!page) notFound();
return {
title: page.data.title,
description: page.data.description,
openGraph: {
images: getPageImage(page).url,
},
};
}

11
docs/app/docs/layout.tsx Normal file
View file

@ -0,0 +1,11 @@
import { DocsLayout } from 'fumadocs-ui/layouts/docs';
import { baseOptions } from '@/lib/layout.shared';
import { source } from '@/lib/source';
export default function Layout({ children }: LayoutProps<'/docs'>) {
return (
<DocsLayout tree={source.pageTree} {...baseOptions()}>
{children}
</DocsLayout>
);
}

155
docs/app/global.css Normal file
View file

@ -0,0 +1,155 @@
@import "tailwindcss";
@import 'fumadocs-ui/css/neutral.css';
@import "fumadocs-ui/css/ocean.css";
@import "fumadocs-ui/css/preset.css";
@import 'fumadocs-openapi/css/preset.css';
@import "tw-animate-css";
@custom-variant dark (&:is(.dark *));
@theme inline {
--radius-sm: calc(var(--radius) - 4px);
--radius-md: calc(var(--radius) - 2px);
--radius-lg: var(--radius);
--radius-xl: calc(var(--radius) + 4px);
--radius-2xl: calc(var(--radius) + 8px);
--radius-3xl: calc(var(--radius) + 12px);
--radius-4xl: calc(var(--radius) + 16px);
--color-background: var(--background);
--color-foreground: var(--foreground);
--color-card: var(--card);
--color-card-foreground: var(--card-foreground);
--color-popover: var(--popover);
--color-popover-foreground: var(--popover-foreground);
--color-primary: var(--primary);
--color-primary-foreground: var(--primary-foreground);
--color-secondary: var(--secondary);
--color-secondary-foreground: var(--secondary-foreground);
--color-muted: var(--muted);
--color-muted-foreground: var(--muted-foreground);
--color-accent: var(--accent);
--color-accent-foreground: var(--accent-foreground);
--color-destructive: var(--destructive);
--color-border: var(--border);
--color-input: var(--input);
--color-ring: var(--ring);
--color-chart-1: var(--chart-1);
--color-chart-2: var(--chart-2);
--color-chart-3: var(--chart-3);
--color-chart-4: var(--chart-4);
--color-chart-5: var(--chart-5);
--color-sidebar: var(--sidebar);
--color-sidebar-foreground: var(--sidebar-foreground);
--color-sidebar-primary: var(--sidebar-primary);
--color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
--color-sidebar-accent: var(--sidebar-accent);
--color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
--color-sidebar-border: var(--sidebar-border);
--color-sidebar-ring: var(--sidebar-ring);
--animate-rainbow: rainbow var(--speed, 2s) infinite linear;
--color-color-5: var(--color-5);
--color-color-4: var(--color-4);
--color-color-3: var(--color-3);
--color-color-2: var(--color-2);
--color-color-1: var(--color-1);
@keyframes rainbow {
0% {
background-position: 0%;
}
100% {
background-position: 200%;
}
}
}
:root {
--radius: 0.625rem;
--background: oklch(1 0 0);
--foreground: oklch(0.145 0 0);
--card: oklch(1 0 0);
--card-foreground: oklch(0.145 0 0);
--popover: oklch(1 0 0);
--popover-foreground: oklch(0.145 0 0);
--primary: oklch(0.205 0 0);
--primary-foreground: oklch(0.985 0 0);
--secondary: oklch(0.97 0 0);
--secondary-foreground: oklch(0.205 0 0);
--muted: oklch(0.97 0 0);
--muted-foreground: oklch(0.556 0 0);
--accent: oklch(0.97 0 0);
--accent-foreground: oklch(0.205 0 0);
--destructive: oklch(0.577 0.245 27.325);
--border: oklch(0.922 0 0);
--input: oklch(0.922 0 0);
--ring: oklch(0.708 0 0);
--chart-1: oklch(0.646 0.222 41.116);
--chart-2: oklch(0.6 0.118 184.704);
--chart-3: oklch(0.398 0.07 227.392);
--chart-4: oklch(0.828 0.189 84.429);
--chart-5: oklch(0.769 0.188 70.08);
--sidebar: oklch(0.985 0 0);
--sidebar-foreground: oklch(0.145 0 0);
--sidebar-primary: oklch(0.205 0 0);
--sidebar-primary-foreground: oklch(0.985 0 0);
--sidebar-accent: oklch(0.97 0 0);
--sidebar-accent-foreground: oklch(0.205 0 0);
--sidebar-border: oklch(0.922 0 0);
--sidebar-ring: oklch(0.708 0 0);
--color-1: oklch(66.2% 0.225 25.9);
--color-2: oklch(60.4% 0.26 302);
--color-3: oklch(69.6% 0.165 251);
--color-4: oklch(80.2% 0.134 225);
--color-5: oklch(90.7% 0.231 133);
}
.dark {
--background: oklch(0.145 0 0);
--foreground: oklch(0.985 0 0);
--card: oklch(0.205 0 0);
--card-foreground: oklch(0.985 0 0);
--popover: oklch(0.205 0 0);
--popover-foreground: oklch(0.985 0 0);
--primary: oklch(0.922 0 0);
--primary-foreground: oklch(0.205 0 0);
--secondary: oklch(0.269 0 0);
--secondary-foreground: oklch(0.985 0 0);
--muted: oklch(0.269 0 0);
--muted-foreground: oklch(0.708 0 0);
--accent: oklch(0.269 0 0);
--accent-foreground: oklch(0.985 0 0);
--destructive: oklch(0.704 0.191 22.216);
--border: oklch(1 0 0 / 10%);
--input: oklch(1 0 0 / 15%);
--ring: oklch(0.556 0 0);
--chart-1: oklch(0.488 0.243 264.376);
--chart-2: oklch(0.696 0.17 162.48);
--chart-3: oklch(0.769 0.188 70.08);
--chart-4: oklch(0.627 0.265 303.9);
--chart-5: oklch(0.645 0.246 16.439);
--sidebar: oklch(0.205 0 0);
--sidebar-foreground: oklch(0.985 0 0);
--sidebar-primary: oklch(0.488 0.243 264.376);
--sidebar-primary-foreground: oklch(0.985 0 0);
--sidebar-accent: oklch(0.269 0 0);
--sidebar-accent-foreground: oklch(0.985 0 0);
--sidebar-border: oklch(1 0 0 / 10%);
--sidebar-ring: oklch(0.556 0 0);
--color-1: oklch(66.2% 0.225 25.9);
--color-2: oklch(60.4% 0.26 302);
--color-3: oklch(69.6% 0.165 251);
--color-4: oklch(80.2% 0.134 225);
--color-5: oklch(90.7% 0.231 133);
}
@layer base {
* {
@apply border-border outline-ring/50;
}
body {
@apply bg-background dark:bg-[#101022] text-foreground;
}
button:not(:disabled),
[role="button"]:not(:disabled) {
cursor: pointer;
}
}

25
docs/app/layout.tsx Normal file
View file

@ -0,0 +1,25 @@
import "@/app/global.css";
import { RootProvider } from "fumadocs-ui/provider/next";
import { Inter } from "next/font/google";
import Script from "next/script";
const inter = Inter({
subsets: ["latin"],
});
export default function Layout({ children }: LayoutProps<"/">) {
return (
<html lang="en" className={inter.className} suppressHydrationWarning>
<body className="flex flex-col min-h-screen">
<RootProvider>
{children}
<Script
src="https://mk-analytics.dathere.com/api/script.js"
data-site-id="10"
strategy="afterInteractive"
/>
</RootProvider>
</body>
</html>
);
}

View file

@ -0,0 +1,12 @@
import { getLLMText } from "@/lib/get-llm-text";
import { source } from "@/lib/source";
// cached forever
export const revalidate = false;
export async function GET() {
const scan = source.getPages().map(getLLMText);
const scanned = await Promise.all(scan);
return new Response(scanned.join("\n\n"));
}

View file

@ -0,0 +1,24 @@
import { notFound } from "next/navigation";
import { getLLMText } from "@/lib/get-llm-text";
import { source } from "@/lib/source";
export const revalidate = false;
export async function GET(
_req: Request,
{ params }: RouteContext<"/llms.mdx/[[...slug]]">,
) {
const { slug } = await params;
const page = source.getPage(slug);
if (!page) notFound();
return new Response(await getLLMText(page), {
headers: {
"Content-Type": "text/markdown",
},
});
}
export function generateStaticParams() {
return source.generateParams();
}

View file

@ -0,0 +1,34 @@
import { generate as DefaultImage } from "fumadocs-ui/og";
import { notFound } from "next/navigation";
import { ImageResponse } from "next/og";
import { getPageImage, source } from "@/lib/source";
export const revalidate = false;
export async function GET(
_req: Request,
{ params }: RouteContext<"/og/docs/[...slug]">,
) {
const { slug } = await params;
const page = source.getPage(slug.slice(0, -1));
if (!page) notFound();
return new ImageResponse(
<DefaultImage
title={page.data.title}
description={page.data.description}
site="ckanaction.dathere.com"
/>,
{
width: 1200,
height: 630,
},
);
}
export function generateStaticParams() {
return source.getPages().map((page) => ({
lang: page.locale,
slug: getPageImage(page).segments,
}));
}

39
docs/biome.json Normal file
View file

@ -0,0 +1,39 @@
{
"$schema": "https://biomejs.dev/schemas/2.2.5/schema.json",
"vcs": {
"enabled": true,
"clientKind": "git",
"useIgnoreFile": true
},
"files": {
"ignoreUnknown": true,
"includes": ["**", "!node_modules", "!.next", "!dist", "!build", "!.source"]
},
"formatter": {
"enabled": true,
"indentStyle": "space",
"indentWidth": 2
},
"linter": {
"enabled": true,
"rules": {
"recommended": true
},
"domains": {
"next": "recommended",
"react": "recommended"
}
},
"assist": {
"actions": {
"source": {
"organizeImports": "on"
}
}
},
"css": {
"parser": {
"tailwindDirectives": true
}
}
}

860
docs/bun.lock Normal file
View file

@ -0,0 +1,860 @@
{
"lockfileVersion": 1,
"configVersion": 1,
"workspaces": {
"": {
"name": "docs",
"dependencies": {
"@radix-ui/react-slot": "^1.2.4",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"fumadocs-core": "16.2.5",
"fumadocs-mdx": "^14.1.0",
"fumadocs-openapi": "^10.1.4",
"fumadocs-ui": "16.2.5",
"lucide-react": "^0.561.0",
"motion": "^12.23.26",
"next": "^16.0.10",
"react": "^19.2.3",
"react-dom": "^19.2.3",
"rough-notation": "^0.5.1",
"shiki": "^3.20.0",
"tailwind-merge": "^3.4.0",
},
"devDependencies": {
"@biomejs/biome": "^2.3.8",
"@tailwindcss/postcss": "^4.1.18",
"@types/mdx": "^2.0.13",
"@types/node": "25.0.2",
"@types/react": "^19.2.7",
"@types/react-dom": "^19.2.3",
"openapi-types": "^12.1.3",
"postcss": "8.5.6",
"tailwindcss": "^4.1.18",
"tw-animate-css": "^1.4.0",
"typescript": "^5.9.3",
},
},
},
"packages": {
"@alloc/quick-lru": ["@alloc/quick-lru@5.2.0", "", {}, "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw=="],
"@biomejs/biome": ["@biomejs/biome@2.3.10", "", { "optionalDependencies": { "@biomejs/cli-darwin-arm64": "2.3.10", "@biomejs/cli-darwin-x64": "2.3.10", "@biomejs/cli-linux-arm64": "2.3.10", "@biomejs/cli-linux-arm64-musl": "2.3.10", "@biomejs/cli-linux-x64": "2.3.10", "@biomejs/cli-linux-x64-musl": "2.3.10", "@biomejs/cli-win32-arm64": "2.3.10", "@biomejs/cli-win32-x64": "2.3.10" }, "bin": { "biome": "bin/biome" } }, "sha512-/uWSUd1MHX2fjqNLHNL6zLYWBbrJeG412/8H7ESuK8ewoRoMPUgHDebqKrPTx/5n6f17Xzqc9hdg3MEqA5hXnQ=="],
"@biomejs/cli-darwin-arm64": ["@biomejs/cli-darwin-arm64@2.3.10", "", { "os": "darwin", "cpu": "arm64" }, "sha512-M6xUjtCVnNGFfK7HMNKa593nb7fwNm43fq1Mt71kpLpb+4mE7odO8W/oWVDyBVO4ackhresy1ZYO7OJcVo/B7w=="],
"@biomejs/cli-darwin-x64": ["@biomejs/cli-darwin-x64@2.3.10", "", { "os": "darwin", "cpu": "x64" }, "sha512-Vae7+V6t/Avr8tVbFNjnFSTKZogZHFYl7MMH62P/J1kZtr0tyRQ9Fe0onjqjS2Ek9lmNLmZc/VR5uSekh+p1fg=="],
"@biomejs/cli-linux-arm64": ["@biomejs/cli-linux-arm64@2.3.10", "", { "os": "linux", "cpu": "arm64" }, "sha512-hhPw2V3/EpHKsileVOFynuWiKRgFEV48cLe0eA+G2wO4SzlwEhLEB9LhlSrVeu2mtSn205W283LkX7Fh48CaxA=="],
"@biomejs/cli-linux-arm64-musl": ["@biomejs/cli-linux-arm64-musl@2.3.10", "", { "os": "linux", "cpu": "arm64" }, "sha512-B9DszIHkuKtOH2IFeeVkQmSMVUjss9KtHaNXquYYWCjH8IstNgXgx5B0aSBQNr6mn4RcKKRQZXn9Zu1rM3O0/A=="],
"@biomejs/cli-linux-x64": ["@biomejs/cli-linux-x64@2.3.10", "", { "os": "linux", "cpu": "x64" }, "sha512-wwAkWD1MR95u+J4LkWP74/vGz+tRrIQvr8kfMMJY8KOQ8+HMVleREOcPYsQX82S7uueco60L58Wc6M1I9WA9Dw=="],
"@biomejs/cli-linux-x64-musl": ["@biomejs/cli-linux-x64-musl@2.3.10", "", { "os": "linux", "cpu": "x64" }, "sha512-QTfHZQh62SDFdYc2nfmZFuTm5yYb4eO1zwfB+90YxUumRCR171tS1GoTX5OD0wrv4UsziMPmrePMtkTnNyYG3g=="],
"@biomejs/cli-win32-arm64": ["@biomejs/cli-win32-arm64@2.3.10", "", { "os": "win32", "cpu": "arm64" }, "sha512-o7lYc9n+CfRbHvkjPhm8s9FgbKdYZu5HCcGVMItLjz93EhgJ8AM44W+QckDqLA9MKDNFrR8nPbO4b73VC5kGGQ=="],
"@biomejs/cli-win32-x64": ["@biomejs/cli-win32-x64@2.3.10", "", { "os": "win32", "cpu": "x64" }, "sha512-pHEFgq7dUEsKnqG9mx9bXihxGI49X+ar+UBrEIj3Wqj3UCZp1rNgV+OoyjFgcXsjCWpuEAF4VJdkZr3TrWdCbQ=="],
"@emnapi/runtime": ["@emnapi/runtime@1.7.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA=="],
"@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.27.1", "", { "os": "aix", "cpu": "ppc64" }, "sha512-HHB50pdsBX6k47S4u5g/CaLjqS3qwaOVE5ILsq64jyzgMhLuCuZ8rGzM9yhsAjfjkbgUPMzZEPa7DAp7yz6vuA=="],
"@esbuild/android-arm": ["@esbuild/android-arm@0.27.1", "", { "os": "android", "cpu": "arm" }, "sha512-kFqa6/UcaTbGm/NncN9kzVOODjhZW8e+FRdSeypWe6j33gzclHtwlANs26JrupOntlcWmB0u8+8HZo8s7thHvg=="],
"@esbuild/android-arm64": ["@esbuild/android-arm64@0.27.1", "", { "os": "android", "cpu": "arm64" }, "sha512-45fuKmAJpxnQWixOGCrS+ro4Uvb4Re9+UTieUY2f8AEc+t7d4AaZ6eUJ3Hva7dtrxAAWHtlEFsXFMAgNnGU9uQ=="],
"@esbuild/android-x64": ["@esbuild/android-x64@0.27.1", "", { "os": "android", "cpu": "x64" }, "sha512-LBEpOz0BsgMEeHgenf5aqmn/lLNTFXVfoWMUox8CtWWYK9X4jmQzWjoGoNb8lmAYml/tQ/Ysvm8q7szu7BoxRQ=="],
"@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.27.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-veg7fL8eMSCVKL7IW4pxb54QERtedFDfY/ASrumK/SbFsXnRazxY4YykN/THYqFnFwJ0aVjiUrVG2PwcdAEqQQ=="],
"@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.27.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-+3ELd+nTzhfWb07Vol7EZ+5PTbJ/u74nC6iv4/lwIU99Ip5uuY6QoIf0Hn4m2HoV0qcnRivN3KSqc+FyCHjoVQ=="],
"@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.27.1", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-/8Rfgns4XD9XOSXlzUDepG8PX+AVWHliYlUkFI3K3GB6tqbdjYqdhcb4BKRd7C0BhZSoaCxhv8kTcBrcZWP+xg=="],
"@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.27.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-GITpD8dK9C+r+5yRT/UKVT36h/DQLOHdwGVwwoHidlnA168oD3uxA878XloXebK4Ul3gDBBIvEdL7go9gCUFzQ=="],
"@esbuild/linux-arm": ["@esbuild/linux-arm@0.27.1", "", { "os": "linux", "cpu": "arm" }, "sha512-ieMID0JRZY/ZeCrsFQ3Y3NlHNCqIhTprJfDgSB3/lv5jJZ8FX3hqPyXWhe+gvS5ARMBJ242PM+VNz/ctNj//eA=="],
"@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.27.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-W9//kCrh/6in9rWIBdKaMtuTTzNj6jSeG/haWBADqLLa9P8O5YSRDzgD5y9QBok4AYlzS6ARHifAb75V6G670Q=="],
"@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.27.1", "", { "os": "linux", "cpu": "ia32" }, "sha512-VIUV4z8GD8rtSVMfAj1aXFahsi/+tcoXXNYmXgzISL+KB381vbSTNdeZHHHIYqFyXcoEhu9n5cT+05tRv13rlw=="],
"@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.27.1", "", { "os": "linux", "cpu": "none" }, "sha512-l4rfiiJRN7sTNI//ff65zJ9z8U+k6zcCg0LALU5iEWzY+a1mVZ8iWC1k5EsNKThZ7XCQ6YWtsZ8EWYm7r1UEsg=="],
"@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.27.1", "", { "os": "linux", "cpu": "none" }, "sha512-U0bEuAOLvO/DWFdygTHWY8C067FXz+UbzKgxYhXC0fDieFa0kDIra1FAhsAARRJbvEyso8aAqvPdNxzWuStBnA=="],
"@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.27.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-NzdQ/Xwu6vPSf/GkdmRNsOfIeSGnh7muundsWItmBsVpMoNPVpM61qNzAVY3pZ1glzzAxLR40UyYM23eaDDbYQ=="],
"@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.27.1", "", { "os": "linux", "cpu": "none" }, "sha512-7zlw8p3IApcsN7mFw0O1Z1PyEk6PlKMu18roImfl3iQHTnr/yAfYv6s4hXPidbDoI2Q0pW+5xeoM4eTCC0UdrQ=="],
"@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.27.1", "", { "os": "linux", "cpu": "s390x" }, "sha512-cGj5wli+G+nkVQdZo3+7FDKC25Uh4ZVwOAK6A06Hsvgr8WqBBuOy/1s+PUEd/6Je+vjfm6stX0kmib5b/O2Ykw=="],
"@esbuild/linux-x64": ["@esbuild/linux-x64@0.27.1", "", { "os": "linux", "cpu": "x64" }, "sha512-z3H/HYI9MM0HTv3hQZ81f+AKb+yEoCRlUby1F80vbQ5XdzEMyY/9iNlAmhqiBKw4MJXwfgsh7ERGEOhrM1niMA=="],
"@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.27.1", "", { "os": "none", "cpu": "arm64" }, "sha512-wzC24DxAvk8Em01YmVXyjl96Mr+ecTPyOuADAvjGg+fyBpGmxmcr2E5ttf7Im8D0sXZihpxzO1isus8MdjMCXQ=="],
"@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.27.1", "", { "os": "none", "cpu": "x64" }, "sha512-1YQ8ybGi2yIXswu6eNzJsrYIGFpnlzEWRl6iR5gMgmsrR0FcNoV1m9k9sc3PuP5rUBLshOZylc9nqSgymI+TYg=="],
"@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.27.1", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-5Z+DzLCrq5wmU7RDaMDe2DVXMRm2tTDvX2KU14JJVBN2CT/qov7XVix85QoJqHltpvAOZUAc3ndU56HSMWrv8g=="],
"@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.27.1", "", { "os": "openbsd", "cpu": "x64" }, "sha512-Q73ENzIdPF5jap4wqLtsfh8YbYSZ8Q0wnxplOlZUOyZy7B4ZKW8DXGWgTCZmF8VWD7Tciwv5F4NsRf6vYlZtqg=="],
"@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.27.1", "", { "os": "none", "cpu": "arm64" }, "sha512-ajbHrGM/XiK+sXM0JzEbJAen+0E+JMQZ2l4RR4VFwvV9JEERx+oxtgkpoKv1SevhjavK2z2ReHk32pjzktWbGg=="],
"@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.27.1", "", { "os": "sunos", "cpu": "x64" }, "sha512-IPUW+y4VIjuDVn+OMzHc5FV4GubIwPnsz6ubkvN8cuhEqH81NovB53IUlrlBkPMEPxvNnf79MGBoz8rZ2iW8HA=="],
"@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.27.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-RIVRWiljWA6CdVu8zkWcRmGP7iRRIIwvhDKem8UMBjPql2TXM5PkDVvvrzMtj1V+WFPB4K7zkIGM7VzRtFkjdg=="],
"@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.27.1", "", { "os": "win32", "cpu": "ia32" }, "sha512-2BR5M8CPbptC1AK5JbJT1fWrHLvejwZidKx3UMSF0ecHMa+smhi16drIrCEggkgviBwLYd5nwrFLSl5Kho96RQ=="],
"@esbuild/win32-x64": ["@esbuild/win32-x64@0.27.1", "", { "os": "win32", "cpu": "x64" }, "sha512-d5X6RMYv6taIymSk8JBP+nxv8DQAMY6A51GPgusqLdK9wBz5wWIXy1KjTck6HnjE9hqJzJRdk+1p/t5soSbCtw=="],
"@floating-ui/core": ["@floating-ui/core@1.7.3", "", { "dependencies": { "@floating-ui/utils": "^0.2.10" } }, "sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w=="],
"@floating-ui/dom": ["@floating-ui/dom@1.7.4", "", { "dependencies": { "@floating-ui/core": "^1.7.3", "@floating-ui/utils": "^0.2.10" } }, "sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA=="],
"@floating-ui/react-dom": ["@floating-ui/react-dom@2.1.6", "", { "dependencies": { "@floating-ui/dom": "^1.7.4" }, "peerDependencies": { "react": ">=16.8.0", "react-dom": ">=16.8.0" } }, "sha512-4JX6rEatQEvlmgU80wZyq9RT96HZJa88q8hp0pBd+LrczeDI4o6uA2M+uvxngVHo4Ihr8uibXxH6+70zhAFrVw=="],
"@floating-ui/utils": ["@floating-ui/utils@0.2.10", "", {}, "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ=="],
"@formatjs/intl-localematcher": ["@formatjs/intl-localematcher@0.6.2", "", { "dependencies": { "tslib": "^2.8.0" } }, "sha512-XOMO2Hupl0wdd172Y06h6kLpBz6Dv+J4okPLl4LPtzbr8f66WbIoy4ev98EBuZ6ZK4h5ydTN6XneT4QVpD7cdA=="],
"@fumadocs/ui": ["@fumadocs/ui@16.3.0", "", { "dependencies": { "fumadocs-core": "16.3.0", "lodash.merge": "^4.6.2", "next-themes": "^0.4.6", "postcss-selector-parser": "^7.1.1", "tailwind-merge": "^3.4.0" }, "peerDependencies": { "@types/react": "*", "next": "16.x.x", "react": "^19.2.0", "react-dom": "^19.2.0", "tailwindcss": "^4.0.0" }, "optionalPeers": ["@types/react", "next", "tailwindcss"] }, "sha512-RYQ1/DKNt/gVBZE+CpkPQWOwvPOHUoVSHf+qV7hpZS8Tk17vCOL7mZKKe27gRtyyG74edJjbZzkExuekdcKxQw=="],
"@fumari/json-schema-to-typescript": ["@fumari/json-schema-to-typescript@2.0.0", "", { "dependencies": { "js-yaml": "^4.1.0" }, "peerDependencies": { "@apidevtools/json-schema-ref-parser": "14.x.x", "prettier": "3.x.x" }, "optionalPeers": ["@apidevtools/json-schema-ref-parser", "prettier"] }, "sha512-X0Wm3QJLj1Rtb1nY2exM6QwMXb9LGyIKLf35+n6xyltDDBLMECOC4R/zPaw3RwgFVmvRLSmLCd+ht4sKabgmNw=="],
"@img/colour": ["@img/colour@1.0.0", "", {}, "sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw=="],
"@img/sharp-darwin-arm64": ["@img/sharp-darwin-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.2.4" }, "os": "darwin", "cpu": "arm64" }, "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w=="],
"@img/sharp-darwin-x64": ["@img/sharp-darwin-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-x64": "1.2.4" }, "os": "darwin", "cpu": "x64" }, "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw=="],
"@img/sharp-libvips-darwin-arm64": ["@img/sharp-libvips-darwin-arm64@1.2.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g=="],
"@img/sharp-libvips-darwin-x64": ["@img/sharp-libvips-darwin-x64@1.2.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg=="],
"@img/sharp-libvips-linux-arm": ["@img/sharp-libvips-linux-arm@1.2.4", "", { "os": "linux", "cpu": "arm" }, "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A=="],
"@img/sharp-libvips-linux-arm64": ["@img/sharp-libvips-linux-arm64@1.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw=="],
"@img/sharp-libvips-linux-ppc64": ["@img/sharp-libvips-linux-ppc64@1.2.4", "", { "os": "linux", "cpu": "ppc64" }, "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA=="],
"@img/sharp-libvips-linux-riscv64": ["@img/sharp-libvips-linux-riscv64@1.2.4", "", { "os": "linux", "cpu": "none" }, "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA=="],
"@img/sharp-libvips-linux-s390x": ["@img/sharp-libvips-linux-s390x@1.2.4", "", { "os": "linux", "cpu": "s390x" }, "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ=="],
"@img/sharp-libvips-linux-x64": ["@img/sharp-libvips-linux-x64@1.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw=="],
"@img/sharp-libvips-linuxmusl-arm64": ["@img/sharp-libvips-linuxmusl-arm64@1.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw=="],
"@img/sharp-libvips-linuxmusl-x64": ["@img/sharp-libvips-linuxmusl-x64@1.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg=="],
"@img/sharp-linux-arm": ["@img/sharp-linux-arm@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm": "1.2.4" }, "os": "linux", "cpu": "arm" }, "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw=="],
"@img/sharp-linux-arm64": ["@img/sharp-linux-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm64": "1.2.4" }, "os": "linux", "cpu": "arm64" }, "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg=="],
"@img/sharp-linux-ppc64": ["@img/sharp-linux-ppc64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-ppc64": "1.2.4" }, "os": "linux", "cpu": "ppc64" }, "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA=="],
"@img/sharp-linux-riscv64": ["@img/sharp-linux-riscv64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-riscv64": "1.2.4" }, "os": "linux", "cpu": "none" }, "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw=="],
"@img/sharp-linux-s390x": ["@img/sharp-linux-s390x@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-s390x": "1.2.4" }, "os": "linux", "cpu": "s390x" }, "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg=="],
"@img/sharp-linux-x64": ["@img/sharp-linux-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-x64": "1.2.4" }, "os": "linux", "cpu": "x64" }, "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ=="],
"@img/sharp-linuxmusl-arm64": ["@img/sharp-linuxmusl-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" }, "os": "linux", "cpu": "arm64" }, "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg=="],
"@img/sharp-linuxmusl-x64": ["@img/sharp-linuxmusl-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-x64": "1.2.4" }, "os": "linux", "cpu": "x64" }, "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q=="],
"@img/sharp-wasm32": ["@img/sharp-wasm32@0.34.5", "", { "dependencies": { "@emnapi/runtime": "^1.7.0" }, "cpu": "none" }, "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw=="],
"@img/sharp-win32-arm64": ["@img/sharp-win32-arm64@0.34.5", "", { "os": "win32", "cpu": "arm64" }, "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g=="],
"@img/sharp-win32-ia32": ["@img/sharp-win32-ia32@0.34.5", "", { "os": "win32", "cpu": "ia32" }, "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg=="],
"@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.34.5", "", { "os": "win32", "cpu": "x64" }, "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw=="],
"@jridgewell/gen-mapping": ["@jridgewell/gen-mapping@0.3.13", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA=="],
"@jridgewell/remapping": ["@jridgewell/remapping@2.3.5", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ=="],
"@jridgewell/resolve-uri": ["@jridgewell/resolve-uri@3.1.2", "", {}, "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw=="],
"@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.5", "", {}, "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="],
"@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.31", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw=="],
"@mdx-js/mdx": ["@mdx-js/mdx@3.1.1", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "@types/mdx": "^2.0.0", "acorn": "^8.0.0", "collapse-white-space": "^2.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", "estree-util-scope": "^1.0.0", "estree-walker": "^3.0.0", "hast-util-to-jsx-runtime": "^2.0.0", "markdown-extensions": "^2.0.0", "recma-build-jsx": "^1.0.0", "recma-jsx": "^1.0.0", "recma-stringify": "^1.0.0", "rehype-recma": "^1.0.0", "remark-mdx": "^3.0.0", "remark-parse": "^11.0.0", "remark-rehype": "^11.0.0", "source-map": "^0.7.0", "unified": "^11.0.0", "unist-util-position-from-estree": "^2.0.0", "unist-util-stringify-position": "^4.0.0", "unist-util-visit": "^5.0.0", "vfile": "^6.0.0" } }, "sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ=="],
"@next/env": ["@next/env@16.1.0", "", {}, "sha512-Dd23XQeFHmhf3KBW76leYVkejHlCdB7erakC2At2apL1N08Bm+dLYNP+nNHh0tzUXfPQcNcXiQyacw0PG4Fcpw=="],
"@next/swc-darwin-arm64": ["@next/swc-darwin-arm64@16.1.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-onHq8dl8KjDb8taANQdzs3XmIqQWV3fYdslkGENuvVInFQzZnuBYYOG2HGHqqtvgmEU7xWzhgndXXxnhk4Z3fQ=="],
"@next/swc-darwin-x64": ["@next/swc-darwin-x64@16.1.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-Am6VJTp8KhLuAH13tPrAoVIXzuComlZlMwGr++o2KDjWiKPe3VwpxYhgV6I4gKls2EnsIMggL4y7GdXyDdJcFA=="],
"@next/swc-linux-arm64-gnu": ["@next/swc-linux-arm64-gnu@16.1.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-fVicfaJT6QfghNyg8JErZ+EMNQ812IS0lmKfbmC01LF1nFBcKfcs4Q75Yy8IqnsCqH/hZwGhqzj3IGVfWV6vpA=="],
"@next/swc-linux-arm64-musl": ["@next/swc-linux-arm64-musl@16.1.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-TojQnDRoX7wJWXEEwdfuJtakMDW64Q7NrxQPviUnfYJvAx5/5wcGE+1vZzQ9F17m+SdpFeeXuOr6v3jbyusYMQ=="],
"@next/swc-linux-x64-gnu": ["@next/swc-linux-x64-gnu@16.1.0", "", { "os": "linux", "cpu": "x64" }, "sha512-quhNFVySW4QwXiZkZ34SbfzNBm27vLrxZ2HwTfFFO1BBP0OY1+pI0nbyewKeq1FriqU+LZrob/cm26lwsiAi8Q=="],
"@next/swc-linux-x64-musl": ["@next/swc-linux-x64-musl@16.1.0", "", { "os": "linux", "cpu": "x64" }, "sha512-6JW0z2FZUK5iOVhUIWqE4RblAhUj1EwhZ/MwteGb//SpFTOHydnhbp3868gxalwea+mbOLWO6xgxj9wA9wNvNw=="],
"@next/swc-win32-arm64-msvc": ["@next/swc-win32-arm64-msvc@16.1.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-+DK/akkAvvXn5RdYN84IOmLkSy87SCmpofJPdB8vbLmf01BzntPBSYXnMvnEEv/Vcf3HYJwt24QZ/s6sWAwOMQ=="],
"@next/swc-win32-x64-msvc": ["@next/swc-win32-x64-msvc@16.1.0", "", { "os": "win32", "cpu": "x64" }, "sha512-Tr0j94MphimCCks+1rtYPzQFK+faJuhHWCegU9S9gDlgyOk8Y3kPmO64UcjyzZAlligeBtYZ/2bEyrKq0d2wqQ=="],
"@orama/orama": ["@orama/orama@3.1.17", "", {}, "sha512-APwpZ+FTGMryo4QEeD6ti+Ei8suBkvxe8PeWdUcQHVfJDpjpt4c1dKojjNswcBmdeWSiiTYcnkKKH+yuo6727g=="],
"@radix-ui/number": ["@radix-ui/number@1.1.1", "", {}, "sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g=="],
"@radix-ui/primitive": ["@radix-ui/primitive@1.1.3", "", {}, "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg=="],
"@radix-ui/react-accordion": ["@radix-ui/react-accordion@1.2.12", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-collapsible": "1.1.12", "@radix-ui/react-collection": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-T4nygeh9YE9dLRPhAHSeOZi7HBXo+0kYIPJXayZfvWOWA0+n3dESrZbjfDPUABkUNym6Hd+f2IR113To8D2GPA=="],
"@radix-ui/react-arrow": ["@radix-ui/react-arrow@1.1.7", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w=="],
"@radix-ui/react-collapsible": ["@radix-ui/react-collapsible@1.1.12", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-Uu+mSh4agx2ib1uIGPP4/CKNULyajb3p92LsVXmH2EHVMTfZWpll88XJ0j4W0z3f8NK1eYl1+Mf/szHPmcHzyA=="],
"@radix-ui/react-collection": ["@radix-ui/react-collection@1.1.7", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw=="],
"@radix-ui/react-compose-refs": ["@radix-ui/react-compose-refs@1.1.2", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg=="],
"@radix-ui/react-context": ["@radix-ui/react-context@1.1.2", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA=="],
"@radix-ui/react-dialog": ["@radix-ui/react-dialog@1.1.15", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-dismissable-layer": "1.1.11", "@radix-ui/react-focus-guards": "1.1.3", "@radix-ui/react-focus-scope": "1.1.7", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-portal": "1.1.9", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-slot": "1.2.3", "@radix-ui/react-use-controllable-state": "1.2.2", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.6.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw=="],
"@radix-ui/react-direction": ["@radix-ui/react-direction@1.1.1", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw=="],
"@radix-ui/react-dismissable-layer": ["@radix-ui/react-dismissable-layer@1.1.11", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-escape-keydown": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg=="],
"@radix-ui/react-focus-guards": ["@radix-ui/react-focus-guards@1.1.3", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw=="],
"@radix-ui/react-focus-scope": ["@radix-ui/react-focus-scope@1.1.7", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw=="],
"@radix-ui/react-id": ["@radix-ui/react-id@1.1.1", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg=="],
"@radix-ui/react-navigation-menu": ["@radix-ui/react-navigation-menu@1.2.14", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-collection": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-dismissable-layer": "1.1.11", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-use-layout-effect": "1.1.1", "@radix-ui/react-use-previous": "1.1.1", "@radix-ui/react-visually-hidden": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-YB9mTFQvCOAQMHU+C/jVl96WmuWeltyUEpRJJky51huhds5W2FQr1J8D/16sQlf0ozxkPK8uF3niQMdUwZPv5w=="],
"@radix-ui/react-popover": ["@radix-ui/react-popover@1.1.15", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-dismissable-layer": "1.1.11", "@radix-ui/react-focus-guards": "1.1.3", "@radix-ui/react-focus-scope": "1.1.7", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-popper": "1.2.8", "@radix-ui/react-portal": "1.1.9", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-slot": "1.2.3", "@radix-ui/react-use-controllable-state": "1.2.2", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.6.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-kr0X2+6Yy/vJzLYJUPCZEc8SfQcf+1COFoAqauJm74umQhta9M7lNJHP7QQS3vkvcGLQUbWpMzwrXYwrYztHKA=="],
"@radix-ui/react-popper": ["@radix-ui/react-popper@1.2.8", "", { "dependencies": { "@floating-ui/react-dom": "^2.0.0", "@radix-ui/react-arrow": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-layout-effect": "1.1.1", "@radix-ui/react-use-rect": "1.1.1", "@radix-ui/react-use-size": "1.1.1", "@radix-ui/rect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw=="],
"@radix-ui/react-portal": ["@radix-ui/react-portal@1.1.9", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ=="],
"@radix-ui/react-presence": ["@radix-ui/react-presence@1.1.5", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ=="],
"@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="],
"@radix-ui/react-roving-focus": ["@radix-ui/react-roving-focus@1.1.11", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-collection": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA=="],
"@radix-ui/react-scroll-area": ["@radix-ui/react-scroll-area@1.2.10", "", { "dependencies": { "@radix-ui/number": "1.1.1", "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-tAXIa1g3sM5CGpVT0uIbUx/U3Gs5N8T52IICuCtObaos1S8fzsrPXG5WObkQN3S6NVl6wKgPhAIiBGbWnvc97A=="],
"@radix-ui/react-select": ["@radix-ui/react-select@2.2.6", "", { "dependencies": { "@radix-ui/number": "1.1.1", "@radix-ui/primitive": "1.1.3", "@radix-ui/react-collection": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-dismissable-layer": "1.1.11", "@radix-ui/react-focus-guards": "1.1.3", "@radix-ui/react-focus-scope": "1.1.7", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-popper": "1.2.8", "@radix-ui/react-portal": "1.1.9", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-slot": "1.2.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-use-layout-effect": "1.1.1", "@radix-ui/react-use-previous": "1.1.1", "@radix-ui/react-visually-hidden": "1.2.3", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.6.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-I30RydO+bnn2PQztvo25tswPH+wFBjehVGtmagkU78yMdwTwVf12wnAOF+AeP8S2N8xD+5UPbGhkUfPyvT+mwQ=="],
"@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.4", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Jl+bCv8HxKnlTLVrcDE8zTMJ09R9/ukw4qBs/oZClOfoQk/cOTbDn+NceXfV7j09YPVQUryJPHurafcSg6EVKA=="],
"@radix-ui/react-tabs": ["@radix-ui/react-tabs@1.1.13", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-roving-focus": "1.1.11", "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-7xdcatg7/U+7+Udyoj2zodtI9H/IIopqo+YOIcZOq1nJwXWBZ9p8xiu5llXlekDbZkca79a/fozEYQXIA4sW6A=="],
"@radix-ui/react-use-callback-ref": ["@radix-ui/react-use-callback-ref@1.1.1", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg=="],
"@radix-ui/react-use-controllable-state": ["@radix-ui/react-use-controllable-state@1.2.2", "", { "dependencies": { "@radix-ui/react-use-effect-event": "0.0.2", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg=="],
"@radix-ui/react-use-effect-event": ["@radix-ui/react-use-effect-event@0.0.2", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA=="],
"@radix-ui/react-use-escape-keydown": ["@radix-ui/react-use-escape-keydown@1.1.1", "", { "dependencies": { "@radix-ui/react-use-callback-ref": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g=="],
"@radix-ui/react-use-layout-effect": ["@radix-ui/react-use-layout-effect@1.1.1", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ=="],
"@radix-ui/react-use-previous": ["@radix-ui/react-use-previous@1.1.1", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ=="],
"@radix-ui/react-use-rect": ["@radix-ui/react-use-rect@1.1.1", "", { "dependencies": { "@radix-ui/rect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w=="],
"@radix-ui/react-use-size": ["@radix-ui/react-use-size@1.1.1", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ=="],
"@radix-ui/react-visually-hidden": ["@radix-ui/react-visually-hidden@1.2.3", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug=="],
"@radix-ui/rect": ["@radix-ui/rect@1.1.1", "", {}, "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw=="],
"@scalar/helpers": ["@scalar/helpers@0.2.2", "", {}, "sha512-oGef7vvtz1KgCy34IaVcbMV99dEXjcGETJtwogT4MU8R7gnYDg6qSTh5200hWAGVO+Ai/6h9rlGVfgeHTzelfg=="],
"@scalar/json-magic": ["@scalar/json-magic@0.8.6", "", { "dependencies": { "@scalar/helpers": "0.2.2", "yaml": "^2.8.0" } }, "sha512-alxGHRJXgaefvfv9IISxb11D2y9iVyN+2/1dLBg3jJildkCJCP6yaT5ESC9qB+YOZeuuxIF32gmk+CLwx38YnQ=="],
"@scalar/openapi-parser": ["@scalar/openapi-parser@0.23.7", "", { "dependencies": { "@scalar/json-magic": "0.8.6", "@scalar/openapi-types": "0.5.3", "@scalar/openapi-upgrader": "0.1.6", "ajv": "^8.17.1", "ajv-draft-04": "^1.0.0", "ajv-formats": "^3.0.1", "jsonpointer": "^5.0.1", "leven": "^4.0.0", "yaml": "^2.8.0" } }, "sha512-OEuP+RM74YT7S11K9yHwuPq7bUnj+8ywCV5few73FY1szr90y39yGreLPcAmZ+SeC0HPhP4ZGKIhBCeSmuSL6Q=="],
"@scalar/openapi-types": ["@scalar/openapi-types@0.5.3", "", { "dependencies": { "zod": "^4.1.11" } }, "sha512-m4n/Su3K01d15dmdWO1LlqecdSPKuNjuokrJLdiQ485kW/hRHbXW1QP6tJL75myhw/XhX5YhYAR+jrwnGjXiMw=="],
"@scalar/openapi-upgrader": ["@scalar/openapi-upgrader@0.1.6", "", { "dependencies": { "@scalar/openapi-types": "0.5.3" } }, "sha512-XdrNZUr0ASLfR89OS2zP6enbq9f7UGQQxov+a3WF1Wz9DClniAL2ChJ2fbGOrqL5F2kjbV6Fw/iO3bsBTMyLZA=="],
"@shikijs/core": ["@shikijs/core@3.20.0", "", { "dependencies": { "@shikijs/types": "3.20.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.5" } }, "sha512-f2ED7HYV4JEk827mtMDwe/yQ25pRiXZmtHjWF8uzZKuKiEsJR7Ce1nuQ+HhV9FzDcbIo4ObBCD9GPTzNuy9S1g=="],
"@shikijs/engine-javascript": ["@shikijs/engine-javascript@3.20.0", "", { "dependencies": { "@shikijs/types": "3.20.0", "@shikijs/vscode-textmate": "^10.0.2", "oniguruma-to-es": "^4.3.4" } }, "sha512-OFx8fHAZuk7I42Z9YAdZ95To6jDePQ9Rnfbw9uSRTSbBhYBp1kEOKv/3jOimcj3VRUKusDYM6DswLauwfhboLg=="],
"@shikijs/engine-oniguruma": ["@shikijs/engine-oniguruma@3.20.0", "", { "dependencies": { "@shikijs/types": "3.20.0", "@shikijs/vscode-textmate": "^10.0.2" } }, "sha512-Yx3gy7xLzM0ZOjqoxciHjA7dAt5tyzJE3L4uQoM83agahy+PlW244XJSrmJRSBvGYELDhYXPacD4R/cauV5bzQ=="],
"@shikijs/langs": ["@shikijs/langs@3.20.0", "", { "dependencies": { "@shikijs/types": "3.20.0" } }, "sha512-le+bssCxcSHrygCWuOrYJHvjus6zhQ2K7q/0mgjiffRbkhM4o1EWu2m+29l0yEsHDbWaWPNnDUTRVVBvBBeKaA=="],
"@shikijs/rehype": ["@shikijs/rehype@3.20.0", "", { "dependencies": { "@shikijs/types": "3.20.0", "@types/hast": "^3.0.4", "hast-util-to-string": "^3.0.1", "shiki": "3.20.0", "unified": "^11.0.5", "unist-util-visit": "^5.0.0" } }, "sha512-/sqob3V/lJK0m2mZ64nkcWPN88im0D9atkI3S3PUBvtJZTHnJXVwZhHQFRDyObgEIa37IpHYHR3CuFtXB5bT2g=="],
"@shikijs/themes": ["@shikijs/themes@3.20.0", "", { "dependencies": { "@shikijs/types": "3.20.0" } }, "sha512-U1NSU7Sl26Q7ErRvJUouArxfM2euWqq1xaSrbqMu2iqa+tSp0D1Yah8216sDYbdDHw4C8b75UpE65eWorm2erQ=="],
"@shikijs/transformers": ["@shikijs/transformers@3.20.0", "", { "dependencies": { "@shikijs/core": "3.20.0", "@shikijs/types": "3.20.0" } }, "sha512-PrHHMRr3Q5W1qB/42kJW6laqFyWdhrPF2hNR9qjOm1xcSiAO3hAHo7HaVyHE6pMyevmy3i51O8kuGGXC78uK3g=="],
"@shikijs/types": ["@shikijs/types@3.20.0", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-lhYAATn10nkZcBQ0BlzSbJA3wcmL5MXUUF8d2Zzon6saZDlToKaiRX60n2+ZaHJCmXEcZRWNzn+k9vplr8Jhsw=="],
"@shikijs/vscode-textmate": ["@shikijs/vscode-textmate@10.0.2", "", {}, "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg=="],
"@standard-schema/spec": ["@standard-schema/spec@1.0.0", "", {}, "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA=="],
"@swc/helpers": ["@swc/helpers@0.5.15", "", { "dependencies": { "tslib": "^2.8.0" } }, "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g=="],
"@tailwindcss/node": ["@tailwindcss/node@4.1.18", "", { "dependencies": { "@jridgewell/remapping": "^2.3.4", "enhanced-resolve": "^5.18.3", "jiti": "^2.6.1", "lightningcss": "1.30.2", "magic-string": "^0.30.21", "source-map-js": "^1.2.1", "tailwindcss": "4.1.18" } }, "sha512-DoR7U1P7iYhw16qJ49fgXUlry1t4CpXeErJHnQ44JgTSKMaZUdf17cfn5mHchfJ4KRBZRFA/Coo+MUF5+gOaCQ=="],
"@tailwindcss/oxide": ["@tailwindcss/oxide@4.1.18", "", { "optionalDependencies": { "@tailwindcss/oxide-android-arm64": "4.1.18", "@tailwindcss/oxide-darwin-arm64": "4.1.18", "@tailwindcss/oxide-darwin-x64": "4.1.18", "@tailwindcss/oxide-freebsd-x64": "4.1.18", "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.18", "@tailwindcss/oxide-linux-arm64-gnu": "4.1.18", "@tailwindcss/oxide-linux-arm64-musl": "4.1.18", "@tailwindcss/oxide-linux-x64-gnu": "4.1.18", "@tailwindcss/oxide-linux-x64-musl": "4.1.18", "@tailwindcss/oxide-wasm32-wasi": "4.1.18", "@tailwindcss/oxide-win32-arm64-msvc": "4.1.18", "@tailwindcss/oxide-win32-x64-msvc": "4.1.18" } }, "sha512-EgCR5tTS5bUSKQgzeMClT6iCY3ToqE1y+ZB0AKldj809QXk1Y+3jB0upOYZrn9aGIzPtUsP7sX4QQ4XtjBB95A=="],
"@tailwindcss/oxide-android-arm64": ["@tailwindcss/oxide-android-arm64@4.1.18", "", { "os": "android", "cpu": "arm64" }, "sha512-dJHz7+Ugr9U/diKJA0W6N/6/cjI+ZTAoxPf9Iz9BFRF2GzEX8IvXxFIi/dZBloVJX/MZGvRuFA9rqwdiIEZQ0Q=="],
"@tailwindcss/oxide-darwin-arm64": ["@tailwindcss/oxide-darwin-arm64@4.1.18", "", { "os": "darwin", "cpu": "arm64" }, "sha512-Gc2q4Qhs660bhjyBSKgq6BYvwDz4G+BuyJ5H1xfhmDR3D8HnHCmT/BSkvSL0vQLy/nkMLY20PQ2OoYMO15Jd0A=="],
"@tailwindcss/oxide-darwin-x64": ["@tailwindcss/oxide-darwin-x64@4.1.18", "", { "os": "darwin", "cpu": "x64" }, "sha512-FL5oxr2xQsFrc3X9o1fjHKBYBMD1QZNyc1Xzw/h5Qu4XnEBi3dZn96HcHm41c/euGV+GRiXFfh2hUCyKi/e+yw=="],
"@tailwindcss/oxide-freebsd-x64": ["@tailwindcss/oxide-freebsd-x64@4.1.18", "", { "os": "freebsd", "cpu": "x64" }, "sha512-Fj+RHgu5bDodmV1dM9yAxlfJwkkWvLiRjbhuO2LEtwtlYlBgiAT4x/j5wQr1tC3SANAgD+0YcmWVrj8R9trVMA=="],
"@tailwindcss/oxide-linux-arm-gnueabihf": ["@tailwindcss/oxide-linux-arm-gnueabihf@4.1.18", "", { "os": "linux", "cpu": "arm" }, "sha512-Fp+Wzk/Ws4dZn+LV2Nqx3IilnhH51YZoRaYHQsVq3RQvEl+71VGKFpkfHrLM/Li+kt5c0DJe/bHXK1eHgDmdiA=="],
"@tailwindcss/oxide-linux-arm64-gnu": ["@tailwindcss/oxide-linux-arm64-gnu@4.1.18", "", { "os": "linux", "cpu": "arm64" }, "sha512-S0n3jboLysNbh55Vrt7pk9wgpyTTPD0fdQeh7wQfMqLPM/Hrxi+dVsLsPrycQjGKEQk85Kgbx+6+QnYNiHalnw=="],
"@tailwindcss/oxide-linux-arm64-musl": ["@tailwindcss/oxide-linux-arm64-musl@4.1.18", "", { "os": "linux", "cpu": "arm64" }, "sha512-1px92582HkPQlaaCkdRcio71p8bc8i/ap5807tPRDK/uw953cauQBT8c5tVGkOwrHMfc2Yh6UuxaH4vtTjGvHg=="],
"@tailwindcss/oxide-linux-x64-gnu": ["@tailwindcss/oxide-linux-x64-gnu@4.1.18", "", { "os": "linux", "cpu": "x64" }, "sha512-v3gyT0ivkfBLoZGF9LyHmts0Isc8jHZyVcbzio6Wpzifg/+5ZJpDiRiUhDLkcr7f/r38SWNe7ucxmGW3j3Kb/g=="],
"@tailwindcss/oxide-linux-x64-musl": ["@tailwindcss/oxide-linux-x64-musl@4.1.18", "", { "os": "linux", "cpu": "x64" }, "sha512-bhJ2y2OQNlcRwwgOAGMY0xTFStt4/wyU6pvI6LSuZpRgKQwxTec0/3Scu91O8ir7qCR3AuepQKLU/kX99FouqQ=="],
"@tailwindcss/oxide-wasm32-wasi": ["@tailwindcss/oxide-wasm32-wasi@4.1.18", "", { "dependencies": { "@emnapi/core": "^1.7.1", "@emnapi/runtime": "^1.7.1", "@emnapi/wasi-threads": "^1.1.0", "@napi-rs/wasm-runtime": "^1.1.0", "@tybys/wasm-util": "^0.10.1", "tslib": "^2.4.0" }, "cpu": "none" }, "sha512-LffYTvPjODiP6PT16oNeUQJzNVyJl1cjIebq/rWWBF+3eDst5JGEFSc5cWxyRCJ0Mxl+KyIkqRxk1XPEs9x8TA=="],
"@tailwindcss/oxide-win32-arm64-msvc": ["@tailwindcss/oxide-win32-arm64-msvc@4.1.18", "", { "os": "win32", "cpu": "arm64" }, "sha512-HjSA7mr9HmC8fu6bdsZvZ+dhjyGCLdotjVOgLA2vEqxEBZaQo9YTX4kwgEvPCpRh8o4uWc4J/wEoFzhEmjvPbA=="],
"@tailwindcss/oxide-win32-x64-msvc": ["@tailwindcss/oxide-win32-x64-msvc@4.1.18", "", { "os": "win32", "cpu": "x64" }, "sha512-bJWbyYpUlqamC8dpR7pfjA0I7vdF6t5VpUGMWRkXVE3AXgIZjYUYAK7II1GNaxR8J1SSrSrppRar8G++JekE3Q=="],
"@tailwindcss/postcss": ["@tailwindcss/postcss@4.1.18", "", { "dependencies": { "@alloc/quick-lru": "^5.2.0", "@tailwindcss/node": "4.1.18", "@tailwindcss/oxide": "4.1.18", "postcss": "^8.4.41", "tailwindcss": "4.1.18" } }, "sha512-Ce0GFnzAOuPyfV5SxjXGn0CubwGcuDB0zcdaPuCSzAa/2vII24JTkH+I6jcbXLb1ctjZMZZI6OjDaLPJQL1S0g=="],
"@types/debug": ["@types/debug@4.1.12", "", { "dependencies": { "@types/ms": "*" } }, "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ=="],
"@types/estree": ["@types/estree@1.0.8", "", {}, "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="],
"@types/estree-jsx": ["@types/estree-jsx@1.0.5", "", { "dependencies": { "@types/estree": "*" } }, "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg=="],
"@types/hast": ["@types/hast@3.0.4", "", { "dependencies": { "@types/unist": "*" } }, "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ=="],
"@types/json-schema": ["@types/json-schema@7.0.15", "", {}, "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="],
"@types/mdast": ["@types/mdast@4.0.4", "", { "dependencies": { "@types/unist": "*" } }, "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA=="],
"@types/mdx": ["@types/mdx@2.0.13", "", {}, "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw=="],
"@types/ms": ["@types/ms@2.1.0", "", {}, "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA=="],
"@types/node": ["@types/node@25.0.2", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-gWEkeiyYE4vqjON/+Obqcoeffmk0NF15WSBwSs7zwVA2bAbTaE0SJ7P0WNGoJn8uE7fiaV5a7dKYIJriEqOrmA=="],
"@types/react": ["@types/react@19.2.7", "", { "dependencies": { "csstype": "^3.2.2" } }, "sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg=="],
"@types/react-dom": ["@types/react-dom@19.2.3", "", { "peerDependencies": { "@types/react": "^19.2.0" } }, "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ=="],
"@types/unist": ["@types/unist@3.0.3", "", {}, "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q=="],
"@ungap/structured-clone": ["@ungap/structured-clone@1.3.0", "", {}, "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g=="],
"acorn": ["acorn@8.15.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg=="],
"acorn-jsx": ["acorn-jsx@5.3.2", "", { "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ=="],
"ajv": ["ajv@8.17.1", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g=="],
"ajv-draft-04": ["ajv-draft-04@1.0.0", "", { "peerDependencies": { "ajv": "^8.5.0" }, "optionalPeers": ["ajv"] }, "sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw=="],
"ajv-formats": ["ajv-formats@3.0.1", "", { "dependencies": { "ajv": "^8.0.0" } }, "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ=="],
"argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="],
"aria-hidden": ["aria-hidden@1.2.6", "", { "dependencies": { "tslib": "^2.0.0" } }, "sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA=="],
"astring": ["astring@1.9.0", "", { "bin": { "astring": "bin/astring" } }, "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg=="],
"bail": ["bail@2.0.2", "", {}, "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw=="],
"baseline-browser-mapping": ["baseline-browser-mapping@2.9.10", "", { "bin": { "baseline-browser-mapping": "dist/cli.js" } }, "sha512-2VIKvDx8Z1a9rTB2eCkdPE5nSe28XnA+qivGnWHoB40hMMt/h1hSz0960Zqsn6ZyxWXUie0EBdElKv8may20AA=="],
"caniuse-lite": ["caniuse-lite@1.0.30001760", "", {}, "sha512-7AAMPcueWELt1p3mi13HR/LHH0TJLT11cnwDJEs3xA4+CK/PLKeO9Kl1oru24htkyUKtkGCvAx4ohB0Ttry8Dw=="],
"ccount": ["ccount@2.0.1", "", {}, "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg=="],
"character-entities": ["character-entities@2.0.2", "", {}, "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ=="],
"character-entities-html4": ["character-entities-html4@2.1.0", "", {}, "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA=="],
"character-entities-legacy": ["character-entities-legacy@3.0.0", "", {}, "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ=="],
"character-reference-invalid": ["character-reference-invalid@2.0.1", "", {}, "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw=="],
"chokidar": ["chokidar@5.0.0", "", { "dependencies": { "readdirp": "^5.0.0" } }, "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw=="],
"class-variance-authority": ["class-variance-authority@0.7.1", "", { "dependencies": { "clsx": "^2.1.1" } }, "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg=="],
"client-only": ["client-only@0.0.1", "", {}, "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA=="],
"clsx": ["clsx@2.1.1", "", {}, "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA=="],
"collapse-white-space": ["collapse-white-space@2.1.0", "", {}, "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw=="],
"comma-separated-tokens": ["comma-separated-tokens@2.0.3", "", {}, "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg=="],
"compute-scroll-into-view": ["compute-scroll-into-view@3.1.1", "", {}, "sha512-VRhuHOLoKYOy4UbilLbUzbYg93XLjv2PncJC50EuTWPA3gaja1UjBsUP/D/9/juV3vQFr6XBEzn9KCAHdUvOHw=="],
"cssesc": ["cssesc@3.0.0", "", { "bin": { "cssesc": "bin/cssesc" } }, "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg=="],
"csstype": ["csstype@3.2.3", "", {}, "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ=="],
"debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="],
"decode-named-character-reference": ["decode-named-character-reference@1.2.0", "", { "dependencies": { "character-entities": "^2.0.0" } }, "sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q=="],
"dequal": ["dequal@2.0.3", "", {}, "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA=="],
"detect-libc": ["detect-libc@2.1.2", "", {}, "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="],
"detect-node-es": ["detect-node-es@1.1.0", "", {}, "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ=="],
"devlop": ["devlop@1.1.0", "", { "dependencies": { "dequal": "^2.0.0" } }, "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA=="],
"enhanced-resolve": ["enhanced-resolve@5.18.4", "", { "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" } }, "sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q=="],
"esast-util-from-estree": ["esast-util-from-estree@2.0.0", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "devlop": "^1.0.0", "estree-util-visit": "^2.0.0", "unist-util-position-from-estree": "^2.0.0" } }, "sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ=="],
"esast-util-from-js": ["esast-util-from-js@2.0.1", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "acorn": "^8.0.0", "esast-util-from-estree": "^2.0.0", "vfile-message": "^4.0.0" } }, "sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw=="],
"esbuild": ["esbuild@0.27.1", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.27.1", "@esbuild/android-arm": "0.27.1", "@esbuild/android-arm64": "0.27.1", "@esbuild/android-x64": "0.27.1", "@esbuild/darwin-arm64": "0.27.1", "@esbuild/darwin-x64": "0.27.1", "@esbuild/freebsd-arm64": "0.27.1", "@esbuild/freebsd-x64": "0.27.1", "@esbuild/linux-arm": "0.27.1", "@esbuild/linux-arm64": "0.27.1", "@esbuild/linux-ia32": "0.27.1", "@esbuild/linux-loong64": "0.27.1", "@esbuild/linux-mips64el": "0.27.1", "@esbuild/linux-ppc64": "0.27.1", "@esbuild/linux-riscv64": "0.27.1", "@esbuild/linux-s390x": "0.27.1", "@esbuild/linux-x64": "0.27.1", "@esbuild/netbsd-arm64": "0.27.1", "@esbuild/netbsd-x64": "0.27.1", "@esbuild/openbsd-arm64": "0.27.1", "@esbuild/openbsd-x64": "0.27.1", "@esbuild/openharmony-arm64": "0.27.1", "@esbuild/sunos-x64": "0.27.1", "@esbuild/win32-arm64": "0.27.1", "@esbuild/win32-ia32": "0.27.1", "@esbuild/win32-x64": "0.27.1" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-yY35KZckJJuVVPXpvjgxiCuVEJT67F6zDeVTv4rizyPrfGBUpZQsvmxnN+C371c2esD/hNMjj4tpBhuueLN7aA=="],
"escape-string-regexp": ["escape-string-regexp@5.0.0", "", {}, "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw=="],
"estree-util-attach-comments": ["estree-util-attach-comments@3.0.0", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw=="],
"estree-util-build-jsx": ["estree-util-build-jsx@3.0.1", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", "estree-walker": "^3.0.0" } }, "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ=="],
"estree-util-is-identifier-name": ["estree-util-is-identifier-name@3.0.0", "", {}, "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg=="],
"estree-util-scope": ["estree-util-scope@1.0.0", "", { "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0" } }, "sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ=="],
"estree-util-to-js": ["estree-util-to-js@2.0.0", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "astring": "^1.8.0", "source-map": "^0.7.0" } }, "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg=="],
"estree-util-value-to-estree": ["estree-util-value-to-estree@3.5.0", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-aMV56R27Gv3QmfmF1MY12GWkGzzeAezAX+UplqHVASfjc9wNzI/X6hC0S9oxq61WT4aQesLGslWP9tKk6ghRZQ=="],
"estree-util-visit": ["estree-util-visit@2.0.0", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/unist": "^3.0.0" } }, "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww=="],
"estree-walker": ["estree-walker@3.0.3", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g=="],
"extend": ["extend@3.0.2", "", {}, "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="],
"fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="],
"fast-uri": ["fast-uri@3.1.0", "", {}, "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA=="],
"fast-xml-parser": ["fast-xml-parser@4.5.3", "", { "dependencies": { "strnum": "^1.1.1" }, "bin": { "fxparser": "src/cli/cli.js" } }, "sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig=="],
"fdir": ["fdir@6.5.0", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg=="],
"foreach": ["foreach@2.0.6", "", {}, "sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg=="],
"framer-motion": ["framer-motion@12.23.26", "", { "dependencies": { "motion-dom": "^12.23.23", "motion-utils": "^12.23.6", "tslib": "^2.4.0" }, "peerDependencies": { "@emotion/is-prop-valid": "*", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@emotion/is-prop-valid", "react", "react-dom"] }, "sha512-cPcIhgR42xBn1Uj+PzOyheMtZ73H927+uWPDVhUMqxy8UHt6Okavb6xIz9J/phFUHUj0OncR6UvMfJTXoc/LKA=="],
"fumadocs-core": ["fumadocs-core@16.2.5", "", { "dependencies": { "@formatjs/intl-localematcher": "^0.6.2", "@orama/orama": "^3.1.16", "@shikijs/rehype": "^3.20.0", "@shikijs/transformers": "^3.20.0", "estree-util-value-to-estree": "^3.5.0", "github-slugger": "^2.0.0", "hast-util-to-estree": "^3.1.3", "hast-util-to-jsx-runtime": "^2.3.6", "image-size": "^2.0.2", "negotiator": "^1.0.0", "npm-to-yarn": "^3.0.1", "path-to-regexp": "^8.3.0", "remark": "^15.0.1", "remark-gfm": "^4.0.1", "remark-rehype": "^11.1.2", "scroll-into-view-if-needed": "^3.1.0", "shiki": "^3.20.0", "unist-util-visit": "^5.0.0" }, "peerDependencies": { "@mixedbread/sdk": "^0.19.0", "@orama/core": "1.x.x", "@tanstack/react-router": "1.x.x", "@types/react": "*", "algoliasearch": "5.x.x", "lucide-react": "*", "next": "16.x.x", "react": "^19.2.0", "react-dom": "^19.2.0", "react-router": "7.x.x", "waku": "^0.26.0 || ^0.27.0", "zod": "*" }, "optionalPeers": ["@mixedbread/sdk", "@orama/core", "@tanstack/react-router", "@types/react", "algoliasearch", "lucide-react", "next", "react", "react-dom", "react-router", "waku", "zod"] }, "sha512-u07n2oQJ2XaEQpWOdCyJnICYEasQiZhTFNf40C+Q2AJ3kKFeiz42mHccea0t/sjfBbO9pEDHyvZVHhSf/Cm3AA=="],
"fumadocs-mdx": ["fumadocs-mdx@14.1.1", "", { "dependencies": { "@mdx-js/mdx": "^3.1.1", "@standard-schema/spec": "^1.0.0", "chokidar": "^5.0.0", "esbuild": "^0.27.1", "estree-util-value-to-estree": "^3.5.0", "js-yaml": "^4.1.1", "mdast-util-to-markdown": "^2.1.2", "picocolors": "^1.1.1", "picomatch": "^4.0.3", "remark-mdx": "^3.1.1", "tinyexec": "^1.0.2", "tinyglobby": "^0.2.15", "unified": "^11.0.5", "unist-util-remove-position": "^5.0.0", "unist-util-visit": "^5.0.0", "vfile": "^6.0.3", "zod": "^4.1.13" }, "peerDependencies": { "@fumadocs/mdx-remote": "^1.4.0", "fumadocs-core": "^15.0.0 || ^16.0.0", "next": "^15.3.0 || ^16.0.0", "react": "*", "vite": "6.x.x || 7.x.x" }, "optionalPeers": ["@fumadocs/mdx-remote", "next", "react", "vite"], "bin": { "fumadocs-mdx": "dist/bin.js" } }, "sha512-Lr+5+ved0unt6q8NeZPd5vXVNaiUBIG0cPKF0Rq4S/K76wch/qTXHnblPSsQlMTNSkCLlwg/nOsMwqsW5euj1Q=="],
"fumadocs-openapi": ["fumadocs-openapi@10.2.0", "", { "dependencies": { "@fumadocs/ui": "16.3.0", "@fumari/json-schema-to-typescript": "^2.0.0", "@radix-ui/react-accordion": "^1.2.12", "@radix-ui/react-dialog": "^1.1.15", "@radix-ui/react-select": "^2.2.6", "@radix-ui/react-slot": "^1.2.4", "@scalar/json-magic": "^0.8.6", "@scalar/openapi-parser": "0.23.7", "ajv": "^8.17.1", "class-variance-authority": "^0.7.1", "github-slugger": "^2.0.0", "hast-util-to-jsx-runtime": "^2.3.6", "js-yaml": "^4.1.1", "next-themes": "^0.4.6", "openapi-sampler": "^1.6.2", "react-hook-form": "^7.68.0", "remark": "^15.0.1", "remark-rehype": "^11.1.2", "tailwind-merge": "^3.4.0", "xml-js": "^1.6.11" }, "peerDependencies": { "@scalar/api-client-react": "*", "@types/react": "*", "fumadocs-core": "^16.2.0", "fumadocs-ui": "^16.2.0", "react": "^19.2.0", "react-dom": "^19.2.0" }, "optionalPeers": ["@scalar/api-client-react", "@types/react"] }, "sha512-9sD78x8rDCfF6y9Zr4n8MQuzgmu1G5oXXo6XKpC8s9n06FQYxRthbyMQCiAoOO79T9OE/XgxBur0VoIAv2XrYQ=="],
"fumadocs-ui": ["fumadocs-ui@16.2.5", "", { "dependencies": { "@radix-ui/react-accordion": "^1.2.12", "@radix-ui/react-collapsible": "^1.1.12", "@radix-ui/react-dialog": "^1.1.15", "@radix-ui/react-direction": "^1.1.1", "@radix-ui/react-navigation-menu": "^1.2.14", "@radix-ui/react-popover": "^1.1.15", "@radix-ui/react-presence": "^1.1.5", "@radix-ui/react-scroll-area": "^1.2.10", "@radix-ui/react-slot": "^1.2.4", "@radix-ui/react-tabs": "^1.1.13", "class-variance-authority": "^0.7.1", "fumadocs-core": "16.2.5", "lodash.merge": "^4.6.2", "next-themes": "^0.4.6", "postcss-selector-parser": "^7.1.1", "react-medium-image-zoom": "^5.4.0", "scroll-into-view-if-needed": "^3.1.0", "tailwind-merge": "^3.4.0" }, "peerDependencies": { "@types/react": "*", "next": "16.x.x", "react": "^19.2.0", "react-dom": "^19.2.0", "tailwindcss": "^4.0.0" }, "optionalPeers": ["@types/react", "next", "tailwindcss"] }, "sha512-pn16BD2CTk5vfzkxkRzSCzXOxn6ldon5StrUoxV4v6TkizkV5R6AfEyfX0wknVuWRu/2wgec9dLh3qu4R82zTQ=="],
"get-nonce": ["get-nonce@1.0.1", "", {}, "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q=="],
"github-slugger": ["github-slugger@2.0.0", "", {}, "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw=="],
"graceful-fs": ["graceful-fs@4.2.11", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="],
"hast-util-to-estree": ["hast-util-to-estree@3.1.3", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "comma-separated-tokens": "^2.0.0", "devlop": "^1.0.0", "estree-util-attach-comments": "^3.0.0", "estree-util-is-identifier-name": "^3.0.0", "hast-util-whitespace": "^3.0.0", "mdast-util-mdx-expression": "^2.0.0", "mdast-util-mdx-jsx": "^3.0.0", "mdast-util-mdxjs-esm": "^2.0.0", "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", "style-to-js": "^1.0.0", "unist-util-position": "^5.0.0", "zwitch": "^2.0.0" } }, "sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w=="],
"hast-util-to-html": ["hast-util-to-html@9.0.5", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "ccount": "^2.0.0", "comma-separated-tokens": "^2.0.0", "hast-util-whitespace": "^3.0.0", "html-void-elements": "^3.0.0", "mdast-util-to-hast": "^13.0.0", "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", "stringify-entities": "^4.0.0", "zwitch": "^2.0.4" } }, "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw=="],
"hast-util-to-jsx-runtime": ["hast-util-to-jsx-runtime@2.3.6", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "comma-separated-tokens": "^2.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", "hast-util-whitespace": "^3.0.0", "mdast-util-mdx-expression": "^2.0.0", "mdast-util-mdx-jsx": "^3.0.0", "mdast-util-mdxjs-esm": "^2.0.0", "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", "style-to-js": "^1.0.0", "unist-util-position": "^5.0.0", "vfile-message": "^4.0.0" } }, "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg=="],
"hast-util-to-string": ["hast-util-to-string@3.0.1", "", { "dependencies": { "@types/hast": "^3.0.0" } }, "sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A=="],
"hast-util-whitespace": ["hast-util-whitespace@3.0.0", "", { "dependencies": { "@types/hast": "^3.0.0" } }, "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw=="],
"html-void-elements": ["html-void-elements@3.0.0", "", {}, "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg=="],
"image-size": ["image-size@2.0.2", "", { "bin": { "image-size": "bin/image-size.js" } }, "sha512-IRqXKlaXwgSMAMtpNzZa1ZAe8m+Sa1770Dhk8VkSsP9LS+iHD62Zd8FQKs8fbPiagBE7BzoFX23cxFnwshpV6w=="],
"inline-style-parser": ["inline-style-parser@0.2.7", "", {}, "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA=="],
"is-alphabetical": ["is-alphabetical@2.0.1", "", {}, "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ=="],
"is-alphanumerical": ["is-alphanumerical@2.0.1", "", { "dependencies": { "is-alphabetical": "^2.0.0", "is-decimal": "^2.0.0" } }, "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw=="],
"is-decimal": ["is-decimal@2.0.1", "", {}, "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A=="],
"is-hexadecimal": ["is-hexadecimal@2.0.1", "", {}, "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg=="],
"is-plain-obj": ["is-plain-obj@4.1.0", "", {}, "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg=="],
"jiti": ["jiti@2.6.1", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ=="],
"js-yaml": ["js-yaml@4.1.1", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA=="],
"json-pointer": ["json-pointer@0.6.2", "", { "dependencies": { "foreach": "^2.0.4" } }, "sha512-vLWcKbOaXlO+jvRy4qNd+TI1QUPZzfJj1tpJ3vAXDych5XJf93ftpUKe5pKCrzyIIwgBJcOcCVRUfqQP25afBw=="],
"json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="],
"jsonpointer": ["jsonpointer@5.0.1", "", {}, "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ=="],
"leven": ["leven@4.1.0", "", {}, "sha512-KZ9W9nWDT7rF7Dazg8xyLHGLrmpgq2nVNFUckhqdW3szVP6YhCpp/RAnpmVExA9JvrMynjwSLVrEj3AepHR6ew=="],
"lightningcss": ["lightningcss@1.30.2", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-android-arm64": "1.30.2", "lightningcss-darwin-arm64": "1.30.2", "lightningcss-darwin-x64": "1.30.2", "lightningcss-freebsd-x64": "1.30.2", "lightningcss-linux-arm-gnueabihf": "1.30.2", "lightningcss-linux-arm64-gnu": "1.30.2", "lightningcss-linux-arm64-musl": "1.30.2", "lightningcss-linux-x64-gnu": "1.30.2", "lightningcss-linux-x64-musl": "1.30.2", "lightningcss-win32-arm64-msvc": "1.30.2", "lightningcss-win32-x64-msvc": "1.30.2" } }, "sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ=="],
"lightningcss-android-arm64": ["lightningcss-android-arm64@1.30.2", "", { "os": "android", "cpu": "arm64" }, "sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A=="],
"lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.30.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA=="],
"lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.30.2", "", { "os": "darwin", "cpu": "x64" }, "sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ=="],
"lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.30.2", "", { "os": "freebsd", "cpu": "x64" }, "sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA=="],
"lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.30.2", "", { "os": "linux", "cpu": "arm" }, "sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA=="],
"lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.30.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A=="],
"lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.30.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA=="],
"lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.30.2", "", { "os": "linux", "cpu": "x64" }, "sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w=="],
"lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.30.2", "", { "os": "linux", "cpu": "x64" }, "sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA=="],
"lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.30.2", "", { "os": "win32", "cpu": "arm64" }, "sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ=="],
"lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.30.2", "", { "os": "win32", "cpu": "x64" }, "sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw=="],
"lodash.merge": ["lodash.merge@4.6.2", "", {}, "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="],
"longest-streak": ["longest-streak@3.1.0", "", {}, "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g=="],
"lucide-react": ["lucide-react@0.561.0", "", { "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-Y59gMY38tl4/i0qewcqohPdEbieBy7SovpBL9IFebhc2mDd8x4PZSOsiFRkpPcOq6bj1r/mjH/Rk73gSlIJP2A=="],
"magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="],
"markdown-extensions": ["markdown-extensions@2.0.0", "", {}, "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q=="],
"markdown-table": ["markdown-table@3.0.4", "", {}, "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw=="],
"mdast-util-find-and-replace": ["mdast-util-find-and-replace@3.0.2", "", { "dependencies": { "@types/mdast": "^4.0.0", "escape-string-regexp": "^5.0.0", "unist-util-is": "^6.0.0", "unist-util-visit-parents": "^6.0.0" } }, "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg=="],
"mdast-util-from-markdown": ["mdast-util-from-markdown@2.0.2", "", { "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", "mdast-util-to-string": "^4.0.0", "micromark": "^4.0.0", "micromark-util-decode-numeric-character-reference": "^2.0.0", "micromark-util-decode-string": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "unist-util-stringify-position": "^4.0.0" } }, "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA=="],
"mdast-util-gfm": ["mdast-util-gfm@3.1.0", "", { "dependencies": { "mdast-util-from-markdown": "^2.0.0", "mdast-util-gfm-autolink-literal": "^2.0.0", "mdast-util-gfm-footnote": "^2.0.0", "mdast-util-gfm-strikethrough": "^2.0.0", "mdast-util-gfm-table": "^2.0.0", "mdast-util-gfm-task-list-item": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ=="],
"mdast-util-gfm-autolink-literal": ["mdast-util-gfm-autolink-literal@2.0.1", "", { "dependencies": { "@types/mdast": "^4.0.0", "ccount": "^2.0.0", "devlop": "^1.0.0", "mdast-util-find-and-replace": "^3.0.0", "micromark-util-character": "^2.0.0" } }, "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ=="],
"mdast-util-gfm-footnote": ["mdast-util-gfm-footnote@2.1.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.1.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0" } }, "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ=="],
"mdast-util-gfm-strikethrough": ["mdast-util-gfm-strikethrough@2.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg=="],
"mdast-util-gfm-table": ["mdast-util-gfm-table@2.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "markdown-table": "^3.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg=="],
"mdast-util-gfm-task-list-item": ["mdast-util-gfm-task-list-item@2.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ=="],
"mdast-util-mdx": ["mdast-util-mdx@3.0.0", "", { "dependencies": { "mdast-util-from-markdown": "^2.0.0", "mdast-util-mdx-expression": "^2.0.0", "mdast-util-mdx-jsx": "^3.0.0", "mdast-util-mdxjs-esm": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w=="],
"mdast-util-mdx-expression": ["mdast-util-mdx-expression@2.0.1", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ=="],
"mdast-util-mdx-jsx": ["mdast-util-mdx-jsx@3.2.0", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", "ccount": "^2.0.0", "devlop": "^1.1.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0", "parse-entities": "^4.0.0", "stringify-entities": "^4.0.0", "unist-util-stringify-position": "^4.0.0", "vfile-message": "^4.0.0" } }, "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q=="],
"mdast-util-mdxjs-esm": ["mdast-util-mdxjs-esm@2.0.1", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg=="],
"mdast-util-phrasing": ["mdast-util-phrasing@4.1.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "unist-util-is": "^6.0.0" } }, "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w=="],
"mdast-util-to-hast": ["mdast-util-to-hast@13.2.1", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "@ungap/structured-clone": "^1.0.0", "devlop": "^1.0.0", "micromark-util-sanitize-uri": "^2.0.0", "trim-lines": "^3.0.0", "unist-util-position": "^5.0.0", "unist-util-visit": "^5.0.0", "vfile": "^6.0.0" } }, "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA=="],
"mdast-util-to-markdown": ["mdast-util-to-markdown@2.1.2", "", { "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", "longest-streak": "^3.0.0", "mdast-util-phrasing": "^4.0.0", "mdast-util-to-string": "^4.0.0", "micromark-util-classify-character": "^2.0.0", "micromark-util-decode-string": "^2.0.0", "unist-util-visit": "^5.0.0", "zwitch": "^2.0.0" } }, "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA=="],
"mdast-util-to-string": ["mdast-util-to-string@4.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0" } }, "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg=="],
"micromark": ["micromark@4.0.2", "", { "dependencies": { "@types/debug": "^4.0.0", "debug": "^4.0.0", "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", "micromark-core-commonmark": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-combine-extensions": "^2.0.0", "micromark-util-decode-numeric-character-reference": "^2.0.0", "micromark-util-encode": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-resolve-all": "^2.0.0", "micromark-util-sanitize-uri": "^2.0.0", "micromark-util-subtokenize": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA=="],
"micromark-core-commonmark": ["micromark-core-commonmark@2.0.3", "", { "dependencies": { "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", "micromark-factory-destination": "^2.0.0", "micromark-factory-label": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-factory-title": "^2.0.0", "micromark-factory-whitespace": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-classify-character": "^2.0.0", "micromark-util-html-tag-name": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-resolve-all": "^2.0.0", "micromark-util-subtokenize": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg=="],
"micromark-extension-gfm": ["micromark-extension-gfm@3.0.0", "", { "dependencies": { "micromark-extension-gfm-autolink-literal": "^2.0.0", "micromark-extension-gfm-footnote": "^2.0.0", "micromark-extension-gfm-strikethrough": "^2.0.0", "micromark-extension-gfm-table": "^2.0.0", "micromark-extension-gfm-tagfilter": "^2.0.0", "micromark-extension-gfm-task-list-item": "^2.0.0", "micromark-util-combine-extensions": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w=="],
"micromark-extension-gfm-autolink-literal": ["micromark-extension-gfm-autolink-literal@2.1.0", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-sanitize-uri": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw=="],
"micromark-extension-gfm-footnote": ["micromark-extension-gfm-footnote@2.1.0", "", { "dependencies": { "devlop": "^1.0.0", "micromark-core-commonmark": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-sanitize-uri": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw=="],
"micromark-extension-gfm-strikethrough": ["micromark-extension-gfm-strikethrough@2.1.0", "", { "dependencies": { "devlop": "^1.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-classify-character": "^2.0.0", "micromark-util-resolve-all": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw=="],
"micromark-extension-gfm-table": ["micromark-extension-gfm-table@2.1.1", "", { "dependencies": { "devlop": "^1.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg=="],
"micromark-extension-gfm-tagfilter": ["micromark-extension-gfm-tagfilter@2.0.0", "", { "dependencies": { "micromark-util-types": "^2.0.0" } }, "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg=="],
"micromark-extension-gfm-task-list-item": ["micromark-extension-gfm-task-list-item@2.1.0", "", { "dependencies": { "devlop": "^1.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw=="],
"micromark-extension-mdx-expression": ["micromark-extension-mdx-expression@3.0.1", "", { "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0", "micromark-factory-mdx-expression": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-events-to-acorn": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q=="],
"micromark-extension-mdx-jsx": ["micromark-extension-mdx-jsx@3.0.2", "", { "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", "micromark-factory-mdx-expression": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-events-to-acorn": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "vfile-message": "^4.0.0" } }, "sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ=="],
"micromark-extension-mdx-md": ["micromark-extension-mdx-md@2.0.0", "", { "dependencies": { "micromark-util-types": "^2.0.0" } }, "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ=="],
"micromark-extension-mdxjs": ["micromark-extension-mdxjs@3.0.0", "", { "dependencies": { "acorn": "^8.0.0", "acorn-jsx": "^5.0.0", "micromark-extension-mdx-expression": "^3.0.0", "micromark-extension-mdx-jsx": "^3.0.0", "micromark-extension-mdx-md": "^2.0.0", "micromark-extension-mdxjs-esm": "^3.0.0", "micromark-util-combine-extensions": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ=="],
"micromark-extension-mdxjs-esm": ["micromark-extension-mdxjs-esm@3.0.0", "", { "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0", "micromark-core-commonmark": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-events-to-acorn": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "unist-util-position-from-estree": "^2.0.0", "vfile-message": "^4.0.0" } }, "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A=="],
"micromark-factory-destination": ["micromark-factory-destination@2.0.1", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA=="],
"micromark-factory-label": ["micromark-factory-label@2.0.1", "", { "dependencies": { "devlop": "^1.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg=="],
"micromark-factory-mdx-expression": ["micromark-factory-mdx-expression@2.0.3", "", { "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-events-to-acorn": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "unist-util-position-from-estree": "^2.0.0", "vfile-message": "^4.0.0" } }, "sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ=="],
"micromark-factory-space": ["micromark-factory-space@2.0.1", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg=="],
"micromark-factory-title": ["micromark-factory-title@2.0.1", "", { "dependencies": { "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw=="],
"micromark-factory-whitespace": ["micromark-factory-whitespace@2.0.1", "", { "dependencies": { "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ=="],
"micromark-util-character": ["micromark-util-character@2.1.1", "", { "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q=="],
"micromark-util-chunked": ["micromark-util-chunked@2.0.1", "", { "dependencies": { "micromark-util-symbol": "^2.0.0" } }, "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA=="],
"micromark-util-classify-character": ["micromark-util-classify-character@2.0.1", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q=="],
"micromark-util-combine-extensions": ["micromark-util-combine-extensions@2.0.1", "", { "dependencies": { "micromark-util-chunked": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg=="],
"micromark-util-decode-numeric-character-reference": ["micromark-util-decode-numeric-character-reference@2.0.2", "", { "dependencies": { "micromark-util-symbol": "^2.0.0" } }, "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw=="],
"micromark-util-decode-string": ["micromark-util-decode-string@2.0.1", "", { "dependencies": { "decode-named-character-reference": "^1.0.0", "micromark-util-character": "^2.0.0", "micromark-util-decode-numeric-character-reference": "^2.0.0", "micromark-util-symbol": "^2.0.0" } }, "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ=="],
"micromark-util-encode": ["micromark-util-encode@2.0.1", "", {}, "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw=="],
"micromark-util-events-to-acorn": ["micromark-util-events-to-acorn@2.0.3", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/unist": "^3.0.0", "devlop": "^1.0.0", "estree-util-visit": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "vfile-message": "^4.0.0" } }, "sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg=="],
"micromark-util-html-tag-name": ["micromark-util-html-tag-name@2.0.1", "", {}, "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA=="],
"micromark-util-normalize-identifier": ["micromark-util-normalize-identifier@2.0.1", "", { "dependencies": { "micromark-util-symbol": "^2.0.0" } }, "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q=="],
"micromark-util-resolve-all": ["micromark-util-resolve-all@2.0.1", "", { "dependencies": { "micromark-util-types": "^2.0.0" } }, "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg=="],
"micromark-util-sanitize-uri": ["micromark-util-sanitize-uri@2.0.1", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-encode": "^2.0.0", "micromark-util-symbol": "^2.0.0" } }, "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ=="],
"micromark-util-subtokenize": ["micromark-util-subtokenize@2.1.0", "", { "dependencies": { "devlop": "^1.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA=="],
"micromark-util-symbol": ["micromark-util-symbol@2.0.1", "", {}, "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q=="],
"micromark-util-types": ["micromark-util-types@2.0.2", "", {}, "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA=="],
"motion": ["motion@12.23.26", "", { "dependencies": { "framer-motion": "^12.23.26", "tslib": "^2.4.0" }, "peerDependencies": { "@emotion/is-prop-valid": "*", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@emotion/is-prop-valid", "react", "react-dom"] }, "sha512-Ll8XhVxY8LXMVYTCfme27WH2GjBrCIzY4+ndr5QKxsK+YwCtOi2B/oBi5jcIbik5doXuWT/4KKDOVAZJkeY5VQ=="],
"motion-dom": ["motion-dom@12.23.23", "", { "dependencies": { "motion-utils": "^12.23.6" } }, "sha512-n5yolOs0TQQBRUFImrRfs/+6X4p3Q4n1dUEqt/H58Vx7OW6RF+foWEgmTVDhIWJIMXOuNNL0apKH2S16en9eiA=="],
"motion-utils": ["motion-utils@12.23.6", "", {}, "sha512-eAWoPgr4eFEOFfg2WjIsMoqJTW6Z8MTUCgn/GZ3VRpClWBdnbjryiA3ZSNLyxCTmCQx4RmYX6jX1iWHbenUPNQ=="],
"ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="],
"nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="],
"negotiator": ["negotiator@1.0.0", "", {}, "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg=="],
"next": ["next@16.1.0", "", { "dependencies": { "@next/env": "16.1.0", "@swc/helpers": "0.5.15", "baseline-browser-mapping": "^2.8.3", "caniuse-lite": "^1.0.30001579", "postcss": "8.4.31", "styled-jsx": "5.1.6" }, "optionalDependencies": { "@next/swc-darwin-arm64": "16.1.0", "@next/swc-darwin-x64": "16.1.0", "@next/swc-linux-arm64-gnu": "16.1.0", "@next/swc-linux-arm64-musl": "16.1.0", "@next/swc-linux-x64-gnu": "16.1.0", "@next/swc-linux-x64-musl": "16.1.0", "@next/swc-win32-arm64-msvc": "16.1.0", "@next/swc-win32-x64-msvc": "16.1.0", "sharp": "^0.34.4" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", "@playwright/test": "^1.51.1", "babel-plugin-react-compiler": "*", "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "sass": "^1.3.0" }, "optionalPeers": ["@opentelemetry/api", "@playwright/test", "babel-plugin-react-compiler", "sass"], "bin": { "next": "dist/bin/next" } }, "sha512-Y+KbmDbefYtHDDQKLNrmzE/YYzG2msqo2VXhzh5yrJ54tx/6TmGdkR5+kP9ma7i7LwZpZMfoY3m/AoPPPKxtVw=="],
"next-themes": ["next-themes@0.4.6", "", { "peerDependencies": { "react": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc", "react-dom": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc" } }, "sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA=="],
"npm-to-yarn": ["npm-to-yarn@3.0.1", "", {}, "sha512-tt6PvKu4WyzPwWUzy/hvPFqn+uwXO0K1ZHka8az3NnrhWJDmSqI8ncWq0fkL0k/lmmi5tAC11FXwXuh0rFbt1A=="],
"oniguruma-parser": ["oniguruma-parser@0.12.1", "", {}, "sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w=="],
"oniguruma-to-es": ["oniguruma-to-es@4.3.4", "", { "dependencies": { "oniguruma-parser": "^0.12.1", "regex": "^6.0.1", "regex-recursion": "^6.0.2" } }, "sha512-3VhUGN3w2eYxnTzHn+ikMI+fp/96KoRSVK9/kMTcFqj1NRDh2IhQCKvYxDnWePKRXY/AqH+Fuiyb7VHSzBjHfA=="],
"openapi-sampler": ["openapi-sampler@1.6.2", "", { "dependencies": { "@types/json-schema": "^7.0.7", "fast-xml-parser": "^4.5.0", "json-pointer": "0.6.2" } }, "sha512-NyKGiFKfSWAZr4srD/5WDhInOWDhfml32h/FKUqLpEwKJt0kG0LGUU0MdyNkKrVGuJnw6DuPWq/sHCwAMpiRxg=="],
"openapi-types": ["openapi-types@12.1.3", "", {}, "sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw=="],
"parse-entities": ["parse-entities@4.0.2", "", { "dependencies": { "@types/unist": "^2.0.0", "character-entities-legacy": "^3.0.0", "character-reference-invalid": "^2.0.0", "decode-named-character-reference": "^1.0.0", "is-alphanumerical": "^2.0.0", "is-decimal": "^2.0.0", "is-hexadecimal": "^2.0.0" } }, "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw=="],
"path-to-regexp": ["path-to-regexp@8.3.0", "", {}, "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA=="],
"picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="],
"picomatch": ["picomatch@4.0.3", "", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="],
"postcss": ["postcss@8.5.6", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg=="],
"postcss-selector-parser": ["postcss-selector-parser@7.1.1", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg=="],
"property-information": ["property-information@7.1.0", "", {}, "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ=="],
"react": ["react@19.2.3", "", {}, "sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA=="],
"react-dom": ["react-dom@19.2.3", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.3" } }, "sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg=="],
"react-hook-form": ["react-hook-form@7.68.0", "", { "peerDependencies": { "react": "^16.8.0 || ^17 || ^18 || ^19" } }, "sha512-oNN3fjrZ/Xo40SWlHf1yCjlMK417JxoSJVUXQjGdvdRCU07NTFei1i1f8ApUAts+IVh14e4EdakeLEA+BEAs/Q=="],
"react-medium-image-zoom": ["react-medium-image-zoom@5.4.0", "", { "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-BsE+EnFVQzFIlyuuQrZ9iTwyKpKkqdFZV1ImEQN573QPqGrIUuNni7aF+sZwDcxlsuOMayCr6oO/PZR/yJnbRg=="],
"react-remove-scroll": ["react-remove-scroll@2.7.2", "", { "dependencies": { "react-remove-scroll-bar": "^2.3.7", "react-style-singleton": "^2.2.3", "tslib": "^2.1.0", "use-callback-ref": "^1.3.3", "use-sidecar": "^1.1.3" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q=="],
"react-remove-scroll-bar": ["react-remove-scroll-bar@2.3.8", "", { "dependencies": { "react-style-singleton": "^2.2.2", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" }, "optionalPeers": ["@types/react"] }, "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q=="],
"react-style-singleton": ["react-style-singleton@2.2.3", "", { "dependencies": { "get-nonce": "^1.0.0", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ=="],
"readdirp": ["readdirp@5.0.0", "", {}, "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ=="],
"recma-build-jsx": ["recma-build-jsx@1.0.0", "", { "dependencies": { "@types/estree": "^1.0.0", "estree-util-build-jsx": "^3.0.0", "vfile": "^6.0.0" } }, "sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew=="],
"recma-jsx": ["recma-jsx@1.0.1", "", { "dependencies": { "acorn-jsx": "^5.0.0", "estree-util-to-js": "^2.0.0", "recma-parse": "^1.0.0", "recma-stringify": "^1.0.0", "unified": "^11.0.0" }, "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-huSIy7VU2Z5OLv6oFLosQGGDqPqdO1iq6bWNAdhzMxSJP7RAso4fCZ1cKu8j9YHCZf3TPrq4dw3okhrylgcd7w=="],
"recma-parse": ["recma-parse@1.0.0", "", { "dependencies": { "@types/estree": "^1.0.0", "esast-util-from-js": "^2.0.0", "unified": "^11.0.0", "vfile": "^6.0.0" } }, "sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ=="],
"recma-stringify": ["recma-stringify@1.0.0", "", { "dependencies": { "@types/estree": "^1.0.0", "estree-util-to-js": "^2.0.0", "unified": "^11.0.0", "vfile": "^6.0.0" } }, "sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g=="],
"regex": ["regex@6.1.0", "", { "dependencies": { "regex-utilities": "^2.3.0" } }, "sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg=="],
"regex-recursion": ["regex-recursion@6.0.2", "", { "dependencies": { "regex-utilities": "^2.3.0" } }, "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg=="],
"regex-utilities": ["regex-utilities@2.3.0", "", {}, "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng=="],
"rehype-recma": ["rehype-recma@1.0.0", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/hast": "^3.0.0", "hast-util-to-estree": "^3.0.0" } }, "sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw=="],
"remark": ["remark@15.0.1", "", { "dependencies": { "@types/mdast": "^4.0.0", "remark-parse": "^11.0.0", "remark-stringify": "^11.0.0", "unified": "^11.0.0" } }, "sha512-Eht5w30ruCXgFmxVUSlNWQ9iiimq07URKeFS3hNc8cUWy1llX4KDWfyEDZRycMc+znsN9Ux5/tJ/BFdgdOwA3A=="],
"remark-gfm": ["remark-gfm@4.0.1", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-gfm": "^3.0.0", "micromark-extension-gfm": "^3.0.0", "remark-parse": "^11.0.0", "remark-stringify": "^11.0.0", "unified": "^11.0.0" } }, "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg=="],
"remark-mdx": ["remark-mdx@3.1.1", "", { "dependencies": { "mdast-util-mdx": "^3.0.0", "micromark-extension-mdxjs": "^3.0.0" } }, "sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg=="],
"remark-parse": ["remark-parse@11.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-from-markdown": "^2.0.0", "micromark-util-types": "^2.0.0", "unified": "^11.0.0" } }, "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA=="],
"remark-rehype": ["remark-rehype@11.1.2", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "mdast-util-to-hast": "^13.0.0", "unified": "^11.0.0", "vfile": "^6.0.0" } }, "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw=="],
"remark-stringify": ["remark-stringify@11.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-to-markdown": "^2.0.0", "unified": "^11.0.0" } }, "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw=="],
"require-from-string": ["require-from-string@2.0.2", "", {}, "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="],
"rough-notation": ["rough-notation@0.5.1", "", {}, "sha512-ITHofTzm13cWFVfoGsh/4c/k2Mg8geKgBCwex71UZLnNuw403tCRjYPQ68jSAd37DMbZIePXPjDgY0XdZi9HPw=="],
"sax": ["sax@1.4.3", "", {}, "sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ=="],
"scheduler": ["scheduler@0.27.0", "", {}, "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q=="],
"scroll-into-view-if-needed": ["scroll-into-view-if-needed@3.1.0", "", { "dependencies": { "compute-scroll-into-view": "^3.0.2" } }, "sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ=="],
"semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="],
"sharp": ["sharp@0.34.5", "", { "dependencies": { "@img/colour": "^1.0.0", "detect-libc": "^2.1.2", "semver": "^7.7.3" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.34.5", "@img/sharp-darwin-x64": "0.34.5", "@img/sharp-libvips-darwin-arm64": "1.2.4", "@img/sharp-libvips-darwin-x64": "1.2.4", "@img/sharp-libvips-linux-arm": "1.2.4", "@img/sharp-libvips-linux-arm64": "1.2.4", "@img/sharp-libvips-linux-ppc64": "1.2.4", "@img/sharp-libvips-linux-riscv64": "1.2.4", "@img/sharp-libvips-linux-s390x": "1.2.4", "@img/sharp-libvips-linux-x64": "1.2.4", "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", "@img/sharp-libvips-linuxmusl-x64": "1.2.4", "@img/sharp-linux-arm": "0.34.5", "@img/sharp-linux-arm64": "0.34.5", "@img/sharp-linux-ppc64": "0.34.5", "@img/sharp-linux-riscv64": "0.34.5", "@img/sharp-linux-s390x": "0.34.5", "@img/sharp-linux-x64": "0.34.5", "@img/sharp-linuxmusl-arm64": "0.34.5", "@img/sharp-linuxmusl-x64": "0.34.5", "@img/sharp-wasm32": "0.34.5", "@img/sharp-win32-arm64": "0.34.5", "@img/sharp-win32-ia32": "0.34.5", "@img/sharp-win32-x64": "0.34.5" } }, "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg=="],
"shiki": ["shiki@3.20.0", "", { "dependencies": { "@shikijs/core": "3.20.0", "@shikijs/engine-javascript": "3.20.0", "@shikijs/engine-oniguruma": "3.20.0", "@shikijs/langs": "3.20.0", "@shikijs/themes": "3.20.0", "@shikijs/types": "3.20.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-kgCOlsnyWb+p0WU+01RjkCH+eBVsjL1jOwUYWv0YDWkM2/A46+LDKVs5yZCUXjJG6bj4ndFoAg5iLIIue6dulg=="],
"source-map": ["source-map@0.7.6", "", {}, "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ=="],
"source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="],
"space-separated-tokens": ["space-separated-tokens@2.0.2", "", {}, "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q=="],
"stringify-entities": ["stringify-entities@4.0.4", "", { "dependencies": { "character-entities-html4": "^2.0.0", "character-entities-legacy": "^3.0.0" } }, "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg=="],
"strnum": ["strnum@1.1.2", "", {}, "sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA=="],
"style-to-js": ["style-to-js@1.1.21", "", { "dependencies": { "style-to-object": "1.0.14" } }, "sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ=="],
"style-to-object": ["style-to-object@1.0.14", "", { "dependencies": { "inline-style-parser": "0.2.7" } }, "sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw=="],
"styled-jsx": ["styled-jsx@5.1.6", "", { "dependencies": { "client-only": "0.0.1" }, "peerDependencies": { "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" } }, "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA=="],
"tailwind-merge": ["tailwind-merge@3.4.0", "", {}, "sha512-uSaO4gnW+b3Y2aWoWfFpX62vn2sR3skfhbjsEnaBI81WD1wBLlHZe5sWf0AqjksNdYTbGBEd0UasQMT3SNV15g=="],
"tailwindcss": ["tailwindcss@4.1.18", "", {}, "sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw=="],
"tapable": ["tapable@2.3.0", "", {}, "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg=="],
"tinyexec": ["tinyexec@1.0.2", "", {}, "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg=="],
"tinyglobby": ["tinyglobby@0.2.15", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.3" } }, "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ=="],
"trim-lines": ["trim-lines@3.0.1", "", {}, "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg=="],
"trough": ["trough@2.2.0", "", {}, "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw=="],
"tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="],
"tw-animate-css": ["tw-animate-css@1.4.0", "", {}, "sha512-7bziOlRqH0hJx80h/3mbicLW7o8qLsH5+RaLR2t+OHM3D0JlWGODQKQ4cxbK7WlvmUxpcj6Kgu6EKqjrGFe3QQ=="],
"typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="],
"undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="],
"unified": ["unified@11.0.5", "", { "dependencies": { "@types/unist": "^3.0.0", "bail": "^2.0.0", "devlop": "^1.0.0", "extend": "^3.0.0", "is-plain-obj": "^4.0.0", "trough": "^2.0.0", "vfile": "^6.0.0" } }, "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA=="],
"unist-util-is": ["unist-util-is@6.0.1", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g=="],
"unist-util-position": ["unist-util-position@5.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA=="],
"unist-util-position-from-estree": ["unist-util-position-from-estree@2.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ=="],
"unist-util-remove-position": ["unist-util-remove-position@5.0.0", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-visit": "^5.0.0" } }, "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q=="],
"unist-util-stringify-position": ["unist-util-stringify-position@4.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ=="],
"unist-util-visit": ["unist-util-visit@5.0.0", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0", "unist-util-visit-parents": "^6.0.0" } }, "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg=="],
"unist-util-visit-parents": ["unist-util-visit-parents@6.0.2", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0" } }, "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ=="],
"use-callback-ref": ["use-callback-ref@1.3.3", "", { "dependencies": { "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg=="],
"use-sidecar": ["use-sidecar@1.1.3", "", { "dependencies": { "detect-node-es": "^1.1.0", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ=="],
"util-deprecate": ["util-deprecate@1.0.2", "", {}, "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="],
"vfile": ["vfile@6.0.3", "", { "dependencies": { "@types/unist": "^3.0.0", "vfile-message": "^4.0.0" } }, "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q=="],
"vfile-message": ["vfile-message@4.0.3", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-stringify-position": "^4.0.0" } }, "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw=="],
"xml-js": ["xml-js@1.6.11", "", { "dependencies": { "sax": "^1.2.4" }, "bin": { "xml-js": "./bin/cli.js" } }, "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g=="],
"yaml": ["yaml@2.8.2", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A=="],
"zod": ["zod@4.2.0", "", {}, "sha512-Bd5fw9wlIhtqCCxotZgdTOMwGm1a0u75wARVEY9HMs1X17trvA/lMi4+MGK5EUfYkXVTbX8UDiDKW4OgzHVUZw=="],
"zwitch": ["zwitch@2.0.4", "", {}, "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A=="],
"@fumadocs/ui/fumadocs-core": ["fumadocs-core@16.3.0", "", { "dependencies": { "@formatjs/intl-localematcher": "^0.6.2", "@orama/orama": "^3.1.16", "@shikijs/rehype": "^3.20.0", "@shikijs/transformers": "^3.20.0", "estree-util-value-to-estree": "^3.5.0", "github-slugger": "^2.0.0", "hast-util-to-estree": "^3.1.3", "hast-util-to-jsx-runtime": "^2.3.6", "image-size": "^2.0.2", "negotiator": "^1.0.0", "npm-to-yarn": "^3.0.1", "path-to-regexp": "^8.3.0", "remark": "^15.0.1", "remark-gfm": "^4.0.1", "remark-rehype": "^11.1.2", "scroll-into-view-if-needed": "^3.1.0", "shiki": "^3.20.0", "unist-util-visit": "^5.0.0" }, "peerDependencies": { "@mixedbread/sdk": "^0.19.0", "@orama/core": "1.x.x", "@tanstack/react-router": "1.x.x", "@types/react": "*", "algoliasearch": "5.x.x", "lucide-react": "*", "next": "16.x.x", "react": "^19.2.0", "react-dom": "^19.2.0", "react-router": "7.x.x", "waku": "^0.26.0 || ^0.27.0", "zod": "*" }, "optionalPeers": ["@mixedbread/sdk", "@orama/core", "@tanstack/react-router", "@types/react", "algoliasearch", "lucide-react", "next", "react", "react-dom", "react-router", "waku", "zod"] }, "sha512-MQWnwBMnqot3hq9MCIyXgqGxUUaAKo2lBmgmbSReVUIihtENEOtTxvcYxczBWLRN5fg8+G+H5RLi3RBBVVI2Pw=="],
"@radix-ui/react-collection/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="],
"@radix-ui/react-dialog/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="],
"@radix-ui/react-popover/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="],
"@radix-ui/react-primitive/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="],
"@radix-ui/react-select/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="],
"@tailwindcss/oxide-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.7.1", "", { "dependencies": { "@emnapi/wasi-threads": "1.1.0", "tslib": "^2.4.0" }, "bundled": true }, "sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg=="],
"@tailwindcss/oxide-wasm32-wasi/@emnapi/runtime": ["@emnapi/runtime@1.7.1", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA=="],
"@tailwindcss/oxide-wasm32-wasi/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.1.0", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ=="],
"@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.1.0", "", { "dependencies": { "@emnapi/core": "^1.7.1", "@emnapi/runtime": "^1.7.1", "@tybys/wasm-util": "^0.10.1" }, "bundled": true }, "sha512-Fq6DJW+Bb5jaWE69/qOE0D1TUN9+6uWhCeZpdnSBk14pjLcCWR7Q8n49PTSPHazM37JqrsdpEthXy2xn6jWWiA=="],
"@tailwindcss/oxide-wasm32-wasi/@tybys/wasm-util": ["@tybys/wasm-util@0.10.1", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg=="],
"@tailwindcss/oxide-wasm32-wasi/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="],
"next/postcss": ["postcss@8.4.31", "", { "dependencies": { "nanoid": "^3.3.6", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" } }, "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ=="],
"parse-entities/@types/unist": ["@types/unist@2.0.11", "", {}, "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="],
}
}

24
docs/components.json Normal file
View file

@ -0,0 +1,24 @@
{
"$schema": "https://ui.shadcn.com/schema.json",
"style": "default",
"rsc": true,
"tsx": true,
"tailwind": {
"config": "",
"css": "app/global.css",
"baseColor": "neutral",
"cssVariables": true,
"prefix": ""
},
"iconLibrary": "lucide",
"aliases": {
"components": "@/components",
"utils": "@/lib/utils",
"ui": "@/components/ui",
"lib": "@/lib",
"hooks": "@/hooks"
},
"registries": {
"@magicui": "https://magicui.design/r/{name}.json"
}
}

View file

@ -0,0 +1,5 @@
"use client";
import { defineClientConfig } from "fumadocs-openapi/ui/client";
export default defineClientConfig({
});

View file

@ -0,0 +1,7 @@
import { createAPIPage } from "fumadocs-openapi/ui";
import client from "@/components/api-page.client";
import { openapi } from "@/lib/openapi";
export const APIPage = createAPIPage(openapi, {
client,
});

View file

@ -0,0 +1,256 @@
"use client";
import { useCopyButton } from "fumadocs-ui/utils/use-copy-button";
import { Check, Clipboard } from "lucide-react";
import {
type ComponentProps,
createContext,
type HTMLAttributes,
type ReactNode,
type RefObject,
useContext,
useMemo,
useRef,
} from "react";
import { buttonVariants } from "@/components/ui/button";
import { cn } from "@/lib/cn";
import { mergeRefs } from "@/lib/merge-refs";
import { Tabs, TabsContent, TabsList, TabsTrigger } from "./tabs.unstyled";
export interface CodeBlockProps extends ComponentProps<"figure"> {
/**
* Icon of code block
*
* When passed as a string, it assumes the value is the HTML of icon
*/
icon?: ReactNode;
/**
* Allow to copy code with copy button
*
* @defaultValue true
*/
allowCopy?: boolean;
/**
* Keep original background color generated by Shiki or Rehype Code
*
* @defaultValue false
*/
keepBackground?: boolean;
viewportProps?: HTMLAttributes<HTMLElement>;
/**
* show line numbers
*/
"data-line-numbers"?: boolean;
/**
* @defaultValue 1
*/
"data-line-numbers-start"?: number;
Actions?: (props: { className?: string; children?: ReactNode }) => ReactNode;
}
const TabsContext = createContext<{
containerRef: RefObject<HTMLDivElement | null>;
nested: boolean;
} | null>(null);
export function Pre(props: ComponentProps<"pre">) {
return (
<pre
{...props}
className={cn("min-w-full w-max *:flex *:flex-col", props.className)}
>
{props.children}
</pre>
);
}
export function CodeBlock({
ref,
title,
allowCopy = true,
keepBackground = false,
icon,
viewportProps = {},
children,
Actions = (props) => (
<div {...props} className={cn("empty:hidden", props.className)} />
),
...props
}: CodeBlockProps) {
const inTab = useContext(TabsContext) !== null;
const areaRef = useRef<HTMLDivElement>(null);
return (
<figure
ref={ref}
dir="ltr"
{...props}
className={cn(
inTab
? "bg-fd-secondary -mx-px -mb-px last:rounded-b-xl"
: "my-4 bg-fd-card rounded-xl",
keepBackground && "bg-(--shiki-light-bg) dark:bg-(--shiki-dark-bg)",
"shiki relative border shadow-sm outline-none not-prose overflow-hidden text-sm",
props.className,
)}
>
{title ? (
<div className="flex text-fd-muted-foreground items-center gap-2 h-9.5 border-b px-4">
{typeof icon === "string" ? (
<div
className="[&_svg]:size-3.5"
dangerouslySetInnerHTML={{
__html: icon,
}}
/>
) : (
icon
)}
<figcaption className="flex-1 truncate">{title}</figcaption>
{Actions({
className: "-me-2",
children: allowCopy && <CopyButton containerRef={areaRef} />,
})}
</div>
) : (
Actions({
className:
"absolute top-2 right-2 z-2 backdrop-blur-lg rounded-lg text-fd-muted-foreground",
children: allowCopy && <CopyButton containerRef={areaRef} />,
})
)}
<div
ref={areaRef}
{...viewportProps}
className={cn(
"text-[13px] py-3.5 overflow-auto max-h-[600px] fd-scroll-container",
viewportProps.className,
)}
style={
{
// space for toolbar
"--padding-right": !title ? "calc(var(--spacing) * 8)" : undefined,
counterSet: props["data-line-numbers"]
? `line ${Number(props["data-line-numbers-start"] ?? 1) - 1}`
: undefined,
...viewportProps.style,
} as object
}
>
{children}
</div>
</figure>
);
}
function CopyButton({
className,
containerRef,
...props
}: ComponentProps<"button"> & {
containerRef: RefObject<HTMLElement | null>;
}) {
const [checked, onClick] = useCopyButton(() => {
const pre = containerRef.current?.getElementsByTagName("pre").item(0);
if (!pre) return;
const clone = pre.cloneNode(true) as HTMLElement;
clone.querySelectorAll(".nd-copy-ignore").forEach((node) => {
node.replaceWith("\n");
});
void navigator.clipboard.writeText(clone.textContent ?? "");
});
return (
<button
type="button"
data-checked={checked || undefined}
className={cn(
buttonVariants({
className:
"hover:text-fd-accent-foreground data-checked:text-fd-accent-foreground",
size: "icon",
}),
className,
)}
aria-label={checked ? "Copied Text" : "Copy Text"}
onClick={onClick}
{...props}
>
{checked ? <Check /> : <Clipboard />}
</button>
);
}
export function CodeBlockTabs({ ref, ...props }: ComponentProps<typeof Tabs>) {
const containerRef = useRef<HTMLDivElement>(null);
const nested = useContext(TabsContext) !== null;
return (
<Tabs
ref={mergeRefs(containerRef, ref)}
{...props}
className={cn(
"bg-fd-card rounded-xl border",
!nested && "my-4",
props.className,
)}
>
<TabsContext.Provider
value={useMemo(
() => ({
containerRef,
nested,
}),
[nested],
)}
>
{props.children}
</TabsContext.Provider>
</Tabs>
);
}
export function CodeBlockTabsList(props: ComponentProps<typeof TabsList>) {
return (
<TabsList
{...props}
className={cn(
"flex flex-row px-2 overflow-x-auto text-fd-muted-foreground",
props.className,
)}
>
{props.children}
</TabsList>
);
}
export function CodeBlockTabsTrigger({
children,
...props
}: ComponentProps<typeof TabsTrigger>) {
return (
<TabsTrigger
{...props}
className={cn(
"relative group inline-flex text-sm font-medium text-nowrap items-center transition-colors gap-2 px-2 py-1.5 hover:text-fd-accent-foreground data-[state=active]:text-fd-primary [&_svg]:size-3.5",
props.className,
)}
>
<div className="absolute inset-x-2 bottom-0 h-px group-data-[state=active]:bg-fd-primary" />
{children}
</TabsTrigger>
);
}
// TODO: currently Vite RSC plugin has problem with `asChild` due to children is automatically wrapped in <Fragment />, maybe revisit this in future
export function CodeBlockTab(props: ComponentProps<typeof TabsContent>) {
return <TabsContent {...props} />;
}

View file

@ -0,0 +1,163 @@
"use client";
import * as Primitive from "@radix-ui/react-tabs";
import { useEffectEvent } from "fumadocs-core/utils/use-effect-event";
import {
type ComponentProps,
createContext,
useContext,
useLayoutEffect,
useMemo,
useRef,
useState,
} from "react";
import { mergeRefs } from "../lib/merge-refs";
type ChangeListener = (v: string) => void;
const listeners = new Map<string, ChangeListener[]>();
function addChangeListener(id: string, listener: ChangeListener): void {
const list = listeners.get(id) ?? [];
list.push(listener);
listeners.set(id, list);
}
function removeChangeListener(id: string, listener: ChangeListener): void {
const list = listeners.get(id) ?? [];
listeners.set(
id,
list.filter((item) => item !== listener),
);
}
export interface TabsProps extends ComponentProps<typeof Primitive.Tabs> {
/**
* Identifier for Sharing value of tabs
*/
groupId?: string;
/**
* Enable persistent
*/
persist?: boolean;
/**
* If true, updates the URL hash based on the tab's id
*/
updateAnchor?: boolean;
}
const TabsContext = createContext<{
valueToIdMap: Map<string, string>;
} | null>(null);
function useTabContext() {
const ctx = useContext(TabsContext);
if (!ctx) throw new Error("You must wrap your component in <Tabs>");
return ctx;
}
export const TabsList = Primitive.TabsList;
export const TabsTrigger = Primitive.TabsTrigger;
/**
* @internal You better not use it
*/
export function Tabs({
ref,
groupId,
persist = false,
updateAnchor = false,
defaultValue,
value: _value,
onValueChange: _onValueChange,
...props
}: TabsProps) {
const tabsRef = useRef<HTMLDivElement>(null);
const [value, setValue] =
_value === undefined
? // eslint-disable-next-line react-hooks/rules-of-hooks -- not supposed to change controlled/uncontrolled
useState(defaultValue)
: [_value, _onValueChange ?? (() => undefined)];
const onChange = useEffectEvent((v: string) => setValue(v));
const valueToIdMap = useMemo(() => new Map<string, string>(), []);
useLayoutEffect(() => {
if (!groupId) return;
const previous = persist
? localStorage.getItem(groupId)
: sessionStorage.getItem(groupId);
if (previous) onChange(previous);
addChangeListener(groupId, onChange);
return () => {
removeChangeListener(groupId, onChange);
};
}, [groupId, persist]);
useLayoutEffect(() => {
const hash = window.location.hash.slice(1);
if (!hash) return;
for (const [value, id] of valueToIdMap.entries()) {
if (id === hash) {
onChange(value);
tabsRef.current?.scrollIntoView();
break;
}
}
}, [valueToIdMap]);
return (
<Primitive.Tabs
ref={mergeRefs(ref, tabsRef)}
value={value}
onValueChange={(v: string) => {
if (updateAnchor) {
const id = valueToIdMap.get(v);
if (id) {
window.history.replaceState(null, "", `#${id}`);
}
}
if (groupId) {
listeners.get(groupId)?.forEach((item) => {
item(v);
});
if (persist) localStorage.setItem(groupId, v);
else sessionStorage.setItem(groupId, v);
} else {
setValue(v);
}
}}
{...props}
>
<TabsContext.Provider
value={useMemo(() => ({ valueToIdMap }), [valueToIdMap])}
>
{props.children}
</TabsContext.Provider>
</Primitive.Tabs>
);
}
export function TabsContent({
value,
...props
}: ComponentProps<typeof Primitive.TabsContent>) {
const { valueToIdMap } = useTabContext();
if (props.id) {
valueToIdMap.set(value, props.id);
}
return (
<Primitive.TabsContent value={value} {...props}>
{props.children}
</Primitive.TabsContent>
);
}

View file

@ -0,0 +1,62 @@
import * as React from "react"
import { Slot } from "@radix-ui/react-slot"
import { cva, type VariantProps } from "class-variance-authority"
import { cn } from "@/lib/utils"
const buttonVariants = cva(
"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
{
variants: {
variant: {
default: "bg-primary text-primary-foreground hover:bg-primary/90",
destructive:
"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
outline:
"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",
secondary:
"bg-secondary text-secondary-foreground hover:bg-secondary/80",
ghost:
"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",
link: "text-primary underline-offset-4 hover:underline",
},
size: {
default: "h-9 px-4 py-2 has-[>svg]:px-3",
sm: "h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",
lg: "h-10 rounded-md px-6 has-[>svg]:px-4",
icon: "size-9",
"icon-sm": "size-8",
"icon-lg": "size-10",
},
},
defaultVariants: {
variant: "default",
size: "default",
},
}
)
function Button({
className,
variant = "default",
size = "default",
asChild = false,
...props
}: React.ComponentProps<"button"> &
VariantProps<typeof buttonVariants> & {
asChild?: boolean
}) {
const Comp = asChild ? Slot : "button"
return (
<Comp
data-slot="button"
data-variant={variant}
data-size={size}
className={cn(buttonVariants({ variant, size, className }))}
{...props}
/>
)
}
export { Button, buttonVariants }

View file

@ -0,0 +1,103 @@
"use client"
import { useEffect, useRef } from "react"
import type React from "react"
import { useInView } from "motion/react"
import { annotate } from "rough-notation"
import { type RoughAnnotation } from "rough-notation/lib/model"
type AnnotationAction =
| "highlight"
| "underline"
| "box"
| "circle"
| "strike-through"
| "crossed-off"
| "bracket"
interface HighlighterProps {
children: React.ReactNode
action?: AnnotationAction
color?: string
strokeWidth?: number
animationDuration?: number
iterations?: number
padding?: number
multiline?: boolean
isView?: boolean
}
export function Highlighter({
children,
action = "highlight",
color = "#ffd1dc",
strokeWidth = 1.5,
animationDuration = 600,
iterations = 2,
padding = 2,
multiline = true,
isView = false,
}: HighlighterProps) {
const elementRef = useRef<HTMLSpanElement>(null)
const annotationRef = useRef<RoughAnnotation | null>(null)
const isInView = useInView(elementRef, {
once: true,
margin: "-10%",
})
// If isView is false, always show. If isView is true, wait for inView
const shouldShow = !isView || isInView
useEffect(() => {
if (!shouldShow) return
const element = elementRef.current
if (!element) return
const annotationConfig = {
type: action,
color,
strokeWidth,
animationDuration,
iterations,
padding,
multiline,
}
const annotation = annotate(element, annotationConfig)
annotationRef.current = annotation
annotationRef.current.show()
const resizeObserver = new ResizeObserver(() => {
annotation.hide()
annotation.show()
})
resizeObserver.observe(element)
resizeObserver.observe(document.body)
return () => {
if (element) {
annotate(element, { type: action }).remove()
resizeObserver.disconnect()
}
}
}, [
shouldShow,
action,
color,
strokeWidth,
animationDuration,
iterations,
padding,
multiline,
])
return (
<span ref={elementRef} className="relative inline-block bg-transparent">
{children}
</span>
)
}

View file

@ -0,0 +1,60 @@
import React from "react"
import { Slot } from "@radix-ui/react-slot"
import { cva, VariantProps } from "class-variance-authority"
import { cn } from "@/lib/utils"
const rainbowButtonVariants = cva(
cn(
"relative cursor-pointer group transition-all animate-rainbow",
"inline-flex items-center justify-center gap-2 shrink-0",
"rounded-sm outline-none focus-visible:ring-[3px] aria-invalid:border-destructive",
"text-sm font-medium whitespace-nowrap",
"disabled:pointer-events-none disabled:opacity-50",
"[&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0"
),
{
variants: {
variant: {
default:
"border-0 bg-[linear-gradient(#121213,#121213),linear-gradient(#121213_50%,rgba(18,18,19,0.6)_80%,rgba(18,18,19,0)),linear-gradient(90deg,var(--color-1),var(--color-5),var(--color-3),var(--color-4),var(--color-2))] bg-[length:200%] text-primary-foreground [background-clip:padding-box,border-box,border-box] [background-origin:border-box] [border:calc(0.125rem)_solid_transparent] before:absolute before:bottom-[-20%] before:left-1/2 before:z-0 before:h-1/5 before:w-3/5 before:-translate-x-1/2 before:animate-rainbow before:bg-[linear-gradient(90deg,var(--color-1),var(--color-5),var(--color-3),var(--color-4),var(--color-2))] before:[filter:blur(0.75rem)] dark:bg-[linear-gradient(#fff,#fff),linear-gradient(#fff_50%,rgba(255,255,255,0.6)_80%,rgba(0,0,0,0)),linear-gradient(90deg,var(--color-1),var(--color-5),var(--color-3),var(--color-4),var(--color-2))]",
outline:
"border border-input border-b-transparent bg-[linear-gradient(#ffffff,#ffffff),linear-gradient(#ffffff_50%,rgba(18,18,19,0.6)_80%,rgba(18,18,19,0)),linear-gradient(90deg,var(--color-1),var(--color-5),var(--color-3),var(--color-4),var(--color-2))] bg-[length:200%] text-accent-foreground [background-clip:padding-box,border-box,border-box] [background-origin:border-box] before:absolute before:bottom-[-20%] before:left-1/2 before:z-0 before:h-1/5 before:w-3/5 before:-translate-x-1/2 before:animate-rainbow before:bg-[linear-gradient(90deg,var(--color-1),var(--color-5),var(--color-3),var(--color-4),var(--color-2))] before:[filter:blur(0.75rem)] dark:bg-[linear-gradient(#0a0a0a,#0a0a0a),linear-gradient(#0a0a0a_50%,rgba(255,255,255,0.6)_80%,rgba(0,0,0,0)),linear-gradient(90deg,var(--color-1),var(--color-5),var(--color-3),var(--color-4),var(--color-2))]",
},
size: {
default: "h-9 px-4 py-2",
sm: "h-8 rounded-xl px-3 text-xs",
lg: "h-11 rounded-xl px-8",
icon: "size-9",
},
},
defaultVariants: {
variant: "default",
size: "default",
},
}
)
interface RainbowButtonProps
extends React.ButtonHTMLAttributes<HTMLButtonElement>,
VariantProps<typeof rainbowButtonVariants> {
asChild?: boolean
}
const RainbowButton = React.forwardRef<HTMLButtonElement, RainbowButtonProps>(
({ className, variant, size, asChild = false, ...props }, ref) => {
const Comp = asChild ? Slot : "button"
return (
<Comp
data-slot="button"
className={cn(rainbowButtonVariants({ variant, size, className }))}
ref={ref}
{...props}
/>
)
}
)
RainbowButton.displayName = "RainbowButton"
export { RainbowButton, rainbowButtonVariants, type RainbowButtonProps }

View file

@ -0,0 +1,19 @@
---
title: am_following_dataset
full: true
_openapi:
method: POST
toc: []
structuredData:
headings: []
contents:
- content: |
Return `True` if you're following the given dataset, `False` if not.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Return `True` if you're following the given dataset, `False` if not.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"am_following_dataset","method":"post"}]} />

View file

@ -0,0 +1,19 @@
---
title: am_following_group
full: true
_openapi:
method: POST
toc: []
structuredData:
headings: []
contents:
- content: |
Return `True` if you're following the given group, `False` if not.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Return `True` if you're following the given group, `False` if not.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"am_following_group","method":"post"}]} />

View file

@ -0,0 +1,19 @@
---
title: am_following_user
full: true
_openapi:
method: POST
toc: []
structuredData:
headings: []
contents:
- content: |
Return `True` if you're following the given user, `False` if not.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Return `True` if you're following the given user, `False` if not.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"am_following_user","method":"post"}]} />

View file

@ -0,0 +1,26 @@
---
title: api_token_create
full: true
_openapi:
method: POST
toc: []
structuredData:
headings: []
contents:
- content: >
Create new API Token for current user.
Apart from the `user` and `name` field that are required by default
implementation, there may be additional fields registered by
extensions.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Create new API Token for current user.
Apart from the `user` and `name` field that are required by default implementation, there may be additional fields registered by extensions.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"api_token_create","method":"post"}]} />

View file

@ -0,0 +1,19 @@
---
title: api_token_list
full: true
_openapi:
method: POST
toc: []
structuredData:
headings: []
contents:
- content: |
Return list of all available API tokens for the current user.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Return list of all available API tokens for the current user.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"api_token_list","method":"post"}]} />

View file

@ -0,0 +1,19 @@
---
title: api_token_revoke
full: true
_openapi:
method: DELETE
toc: []
structuredData:
headings: []
contents:
- content: |
Delete API Token.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Delete API Token.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"api_token_revoke","method":"delete"}]} />

View file

@ -0,0 +1,19 @@
---
title: bulk_update_delete
full: true
_openapi:
method: PUT
toc: []
structuredData:
headings: []
contents:
- content: |
Make a list of datasets deleted.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Make a list of datasets deleted.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"bulk_update_delete","method":"put"}]} />

View file

@ -0,0 +1,19 @@
---
title: bulk_update_private
full: true
_openapi:
method: PUT
toc: []
structuredData:
headings: []
contents:
- content: |
Make a list of datasets private.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Make a list of datasets private.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"bulk_update_private","method":"put"}]} />

View file

@ -0,0 +1,19 @@
---
title: bulk_update_public
full: true
_openapi:
method: PUT
toc: []
structuredData:
headings: []
contents:
- content: |
Make a list of datasets public.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Make a list of datasets public.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"bulk_update_public","method":"put"}]} />

View file

@ -0,0 +1,20 @@
---
title: config_option_list
full: true
_openapi:
method: POST
toc: []
structuredData:
headings: []
contents:
- content: >
Return a list of runtime-editable config option keys that can be
updated with `config_option_update()`.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Return a list of runtime-editable config option keys that can be updated with `config_option_update()`.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"config_option_list","method":"post"}]} />

View file

@ -0,0 +1,26 @@
---
title: config_option_show
full: true
_openapi:
method: POST
toc: []
structuredData:
headings: []
contents:
- content: >
Show the current value of a particular configuration option.
Only returns runtime-editable config options (the ones returned by
`config_option_list()`), which can be updated with the
`config_option_update()` action.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Show the current value of a particular configuration option.
Only returns runtime-editable config options (the ones returned by `config_option_list()`), which can be updated with the `config_option_update()` action.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"config_option_show","method":"post"}]} />

View file

@ -0,0 +1,68 @@
---
title: config_option_update
full: true
_openapi:
method: PUT
toc: []
structuredData:
headings: []
contents:
- content: >
Added in version 2.4.
Allows to modify some CKAN runtime-editable config options
It takes arbitrary key, value pairs and checks the keys against the
config options update schema. If some of the provided keys are not
present in the schema a `ValidationError` is raised. The values are
then validated against the schema, and if validation is passed, for
each key, value config option:
- It is stored on the `system_info` database table
- The Pylons `config` object is updated.
- The `app_globals` (`g`) object is updated (this only happens for
options explicitly defined in the `app_globals` module.
<Callout title="Note">You can see all available runtime-editable
configuration options calling the `config_option_list()`
action.</Callout>
<Callout title="Note">Extensions can modify which configuration
options are runtime-editable. For details, check [Making configuration
options
runtime-editable](https://docs.ckan.org/en/2.11/extensions/remote-config-update.html).</Callout>
<Callout title="Warning" type="warn">You should only add config
options that you are comfortable they can be edited during runtime,
such as ones you've added in your own extension, or have reviewed the
use of in core CKAN.</Callout>
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Added in version 2.4.
Allows to modify some CKAN runtime-editable config options
It takes arbitrary key, value pairs and checks the keys against the config options update schema. If some of the provided keys are not present in the schema a `ValidationError` is raised. The values are then validated against the schema, and if validation is passed, for each key, value config option:
- It is stored on the `system_info` database table
- The Pylons `config` object is updated.
- The `app_globals` (`g`) object is updated (this only happens for options explicitly defined in the `app_globals` module.
<Callout title="Note">You can see all available runtime-editable configuration options calling the `config_option_list()` action.</Callout>
<Callout title="Note">Extensions can modify which configuration options are runtime-editable. For details, check [Making configuration options runtime-editable](https://docs.ckan.org/en/2.11/extensions/remote-config-update.html).</Callout>
<Callout title="Warning" type="warn">You should only add config options that you are comfortable they can be edited during runtime, such as ones you've added in your own extension, or have reviewed the use of in core CKAN.</Callout>
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"config_option_update","method":"put"}]} />

View file

@ -0,0 +1,23 @@
---
title: current_package_list_with_resources
full: true
_openapi:
method: POST
toc: []
structuredData:
headings: []
contents:
- content: |
Return a list of the site's datasets (packages) and their resources.
The list is sorted most-recently-modified first.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Return a list of the site's datasets (packages) and their resources.
The list is sorted most-recently-modified first.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"current_package_list_with_resources","method":"post"}]} />

View file

@ -0,0 +1,19 @@
---
title: dataset_followee_count
full: true
_openapi:
method: POST
toc: []
structuredData:
headings: []
contents:
- content: |
Return the number of datasets that are followed by the given user.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Return the number of datasets that are followed by the given user.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"dataset_followee_count","method":"post"}]} />

View file

@ -0,0 +1,19 @@
---
title: dataset_follower_count
full: true
_openapi:
method: POST
toc: []
structuredData:
headings: []
contents:
- content: |
Returun the number of followers of a dataset.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Returun the number of followers of a dataset.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"dataset_follower_count","method":"post"}]} />

View file

@ -0,0 +1,19 @@
---
title: dataset_follower_list
full: true
_openapi:
method: POST
toc: []
structuredData:
headings: []
contents:
- content: |
Return the list of users that are following the given dataset.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Return the list of users that are following the given dataset.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"dataset_follower_list","method":"post"}]} />

View file

@ -0,0 +1,38 @@
---
title: dataset_purge
full: true
_openapi:
method: DELETE
toc: []
structuredData:
headings: []
contents:
- content: >
Purge a dataset.
<Callout title="Warning!" type="warn">Purging a dataset cannot be
undone!</Callout>
Purging a dataset completely removes the dataset from the CKAN
database, whereas deleting a dataset simply marks the dataset as
deleted (it will no longer show up in the front-end, but is still in
the db).
You must be authorized to purge the dataset.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Purge a dataset.
<Callout title="Warning!" type="warn">Purging a dataset cannot be undone!</Callout>
Purging a dataset completely removes the dataset from the CKAN database, whereas deleting a dataset simply marks the dataset as deleted (it will no longer show up in the front-end, but is still in the db).
You must be authorized to purge the dataset.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"dataset_purge","method":"delete"}]} />

View file

@ -0,0 +1,23 @@
---
title: follow_dataset
full: true
_openapi:
method: POST
toc: []
structuredData:
headings: []
contents:
- content: |
Start following a dataset.
You must provide your API key in the Authorization header.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Start following a dataset.
You must provide your API key in the Authorization header.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"follow_dataset","method":"post"}]} />

View file

@ -0,0 +1,23 @@
---
title: follow_group
full: true
_openapi:
method: POST
toc: []
structuredData:
headings: []
contents:
- content: |
Start following a group.
You must provide your API key in the Authorization header.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Start following a group.
You must provide your API key in the Authorization header.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"follow_group","method":"post"}]} />

View file

@ -0,0 +1,23 @@
---
title: follow_user
full: true
_openapi:
method: POST
toc: []
structuredData:
headings: []
contents:
- content: |
Start following another user.
You must provide your API key in the Authorization header.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Start following another user.
You must provide your API key in the Authorization header.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"follow_user","method":"post"}]} />

View file

@ -0,0 +1,25 @@
---
title: followee_count
full: true
_openapi:
method: POST
toc: []
structuredData:
headings: []
contents:
- content: >
Return the number of objects that are followed by the given user.
Counts all objects, of any type, that the given user is following
(e.g. followed users, followed datasets, followed groups).
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Return the number of objects that are followed by the given user.
Counts all objects, of any type, that the given user is following (e.g. followed users, followed datasets, followed groups).
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"followee_count","method":"post"}]} />

View file

@ -0,0 +1,25 @@
---
title: followee_list
full: true
_openapi:
method: POST
toc: []
structuredData:
headings: []
contents:
- content: >
Return the list of objects that are followed by the given user.
Returns all objects, of any type, that the given user is following
(e.g. followed users, followed datasets, followed groups).
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Return the list of objects that are followed by the given user.
Returns all objects, of any type, that the given user is following (e.g. followed users, followed datasets, followed groups).
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"followee_list","method":"post"}]} />

View file

@ -0,0 +1,19 @@
---
title: format_autocomplete
full: true
_openapi:
method: POST
toc: []
structuredData:
headings: []
contents:
- content: |
Return a list of resource formats whose names contain a string.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Return a list of resource formats whose names contain a string.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"format_autocomplete","method":"post"}]} />

View file

@ -0,0 +1,19 @@
---
title: get_site_user
full: true
_openapi:
method: POST
toc: []
structuredData:
headings: []
contents:
- content: |
Return the CKAN site user.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Return the CKAN site user.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"get_site_user","method":"post"}]} />

View file

@ -0,0 +1,19 @@
---
title: group_autocomplete
full: true
_openapi:
method: POST
toc: []
structuredData:
headings: []
contents:
- content: |
Return a list of group names that contain a string.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Return a list of group names that contain a string.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"group_autocomplete","method":"post"}]} />

View file

@ -0,0 +1,30 @@
---
title: group_create
full: true
_openapi:
method: POST
toc: []
structuredData:
headings: []
contents:
- content: >
Create a new group.
You must be authorized to create groups.
Plugins may change the parameters of this function depending on the
value of the `type` parameter, see the `IGroupForm` plugin interface.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Create a new group.
You must be authorized to create groups.
Plugins may change the parameters of this function depending on the value of the `type` parameter, see the `IGroupForm` plugin interface.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"group_create","method":"post"}]} />

View file

@ -0,0 +1,23 @@
---
title: group_delete
full: true
_openapi:
method: DELETE
toc: []
structuredData:
headings: []
contents:
- content: |
Delete a group.
You must be authorized to delete the group.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Delete a group.
You must be authorized to delete the group.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"group_delete","method":"delete"}]} />

View file

@ -0,0 +1,19 @@
---
title: group_followee_count
full: true
_openapi:
method: POST
toc: []
structuredData:
headings: []
contents:
- content: |
Return the number of groups that are followed by the given user.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Return the number of groups that are followed by the given user.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"group_followee_count","method":"post"}]} />

View file

@ -0,0 +1,19 @@
---
title: group_follower_list
full: true
_openapi:
method: POST
toc: []
structuredData:
headings: []
contents:
- content: |
Return the list of users that are following the given group.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Return the list of users that are following the given group.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"group_follower_list","method":"post"}]} />

View file

@ -0,0 +1,19 @@
---
title: group_list
full: true
_openapi:
method: POST
toc: []
structuredData:
headings: []
contents:
- content: |
Return a list of the names of the site's groups.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Return a list of the names of the site's groups.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"group_list","method":"post"}]} />

View file

@ -0,0 +1,19 @@
---
title: group_list_authz
full: true
_openapi:
method: POST
toc: []
structuredData:
headings: []
contents:
- content: |
Return the list of groups that the user is authorized to edit.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Return the list of groups that the user is authorized to edit.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"group_list_authz","method":"post"}]} />

View file

@ -0,0 +1,23 @@
---
title: group_member_create
full: true
_openapi:
method: POST
toc: []
structuredData:
headings: []
contents:
- content: |
Make a user a member of a group.
You must be authorized to edit the group.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Make a user a member of a group.
You must be authorized to edit the group.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"group_member_create","method":"post"}]} />

View file

@ -0,0 +1,23 @@
---
title: group_member_delete
full: true
_openapi:
method: DELETE
toc: []
structuredData:
headings: []
contents:
- content: |
Remove a user from a group.
You must be authorized to edit the group.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Remove a user from a group.
You must be authorized to edit the group.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"group_member_delete","method":"delete"}]} />

View file

@ -0,0 +1,17 @@
---
title: group_package_show
full: true
_openapi:
method: POST
toc: []
structuredData:
headings: []
contents:
- content: Return the datasets (packages) of a group.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Return the datasets (packages) of a group.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"group_package_show","method":"post"}]} />

View file

@ -0,0 +1,27 @@
---
title: group_patch
full: true
_openapi:
method: PATCH
toc: []
structuredData:
headings: []
contents:
- content: >
Patch a group.
The difference between the update and patch methods is that the patch
will perform an update of the provided parameters, while leaving all
other parameters unchanged, whereas the update methods deletes all
parameters not explicitly provided in the data_dict.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Patch a group.
The difference between the update and patch methods is that the patch will perform an update of the provided parameters, while leaving all other parameters unchanged, whereas the update methods deletes all parameters not explicitly provided in the data_dict.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"group_patch","method":"patch"}]} />

View file

@ -0,0 +1,42 @@
---
title: group_purge
full: true
_openapi:
method: DELETE
toc: []
structuredData:
headings: []
contents:
- content: >
Purge a group.
<Callout title="Warning!" type="warn">Purging a group cannot be
undone!</Callout>
Purging a group completely removes the group from the CKAN database,
whereas deleting a group simply marks the group as deleted (it will no
longer show up in the frontend, but is still in the db).
Datasets in the group will remain, just not in the purged group.
You must be authorized to purge the group.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Purge a group.
<Callout title="Warning!" type="warn">Purging a group cannot be undone!</Callout>
Purging a group completely removes the group from the CKAN database, whereas deleting a group simply marks the group as deleted (it will no longer show up in the frontend, but is still in the db).
Datasets in the group will remain, just not in the purged group.
You must be authorized to purge the group.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"group_purge","method":"delete"}]} />

View file

@ -0,0 +1,19 @@
---
title: group_show
full: true
_openapi:
method: POST
toc: []
structuredData:
headings: []
contents:
- content: >-
Return the details of a group (only its first 1000 datasets are
returned).
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Return the details of a group (only its first 1000 datasets are returned).
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"group_show","method":"post"}]} />

View file

@ -0,0 +1,38 @@
---
title: group_update
full: true
_openapi:
method: PUT
toc: []
structuredData:
headings: []
contents:
- content: >
Update a group.
You must be authorized to edit the group.
<Callout title="Note">Update methods may delete parameters not
explicitly provided in the data_dict. If you want to edit only a
specific attribute use `group_patch` instead.</Callout>
Plugins may change the parameters of this function depending on the
value of the group's `type` attribute, see the `IGroupForm` plugin
interface.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Update a group.
You must be authorized to edit the group.
<Callout title="Note">Update methods may delete parameters not explicitly provided in the data_dict. If you want to edit only a specific attribute use `group_patch` instead.</Callout>
Plugins may change the parameters of this function depending on the value of the group's `type` attribute, see the `IGroupForm` plugin interface.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"group_update","method":"put"}]} />

View file

@ -0,0 +1,19 @@
---
title: help_show
full: true
_openapi:
method: POST
toc: []
structuredData:
headings: []
contents:
- content: |
Return the help string for a particular API action.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Return the help string for a particular API action.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"help_show","method":"post"}]} />

View file

@ -0,0 +1,57 @@
---
title: ckanaction docs
---
import { Highlighter } from "@/components/ui/highlighter"
<Highlighter animationDuration={2000} isView action="box" color="#2596be">ckanaction is a <Highlighter animationDuration={5000} isView action="highlight" color="#2596be">Rust library crate</Highlighter> that acts as an API wrapper for the CKAN Actions API (v3). There is also an <Highlighter animationDuration={5000} isView action="highlight" color="#2596be">interactive web GUI</Highlighter>.</Highlighter>
This means that instead of using generic request library crates such as `reqwest`, a developer can use `ckanaction` instead to make API calls to their CKAN instance.
For example the following code can be ran to send an HTTP GET request to the `/package_list` endpoint of a local CKAN instance's API by using the `ckanaction` crate:
```rust
use dotenvy::dotenv;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Load environment variables from .env file
dotenv()?;
// Initialize and build CKAN struct
let ckan = ckanaction::CKAN::builder()
.url("http://localhost:5000")
.token(dotenvy::var("CKAN_API_TOKEN")?)
.build();
// Send request to /package_list and print output
let result = ckan.package_list()
.limit(5) // <-- This is an optional parameter you can remove
.call()
.await?;
println!("{result:#?}");
Ok(())
}
```
The source code of ckanaction can be found at [github.com/dathere/ckanaction](https://github.com/ckanaction).
<Highlighter isView action="underline" color="#2596be">You may also explore this web app</Highlighter> to view more code examples for each endpoint and also <Highlighter isView action="underline" color="#2596be">use an interactive GUI</Highlighter> for sending HTTP requests to any local or remote CKAN instance.
<Highlighter isView action="underline" color="#2596be">View the GIF below</Highlighter> to see how to point to a specific CKAN API endpoint using the interactive GUI, which by default points to a local CKAN instance endpoint's URL.
![ckanaction web app demo](/ckanaction-web-app-interactive-demo.gif)
import { GitMergeIcon, MousePointerClickIcon } from 'lucide-react';
<Cards>
<Card
icon={<MousePointerClickIcon />}
href="/docs/status_show"
title="Try out an endpoint!"
>
Explore the web GUI by using the `status_show` CKAN Actions API endpoint.
</Card>
<Card icon={<GitMergeIcon />} href="https://github.com/dathere/ckanaction" title="Source code">Explore the source code for the Rust library crate and web GUI.</Card>
</Cards>

View file

@ -0,0 +1,23 @@
---
title: job_cancel
full: true
_openapi:
method: DELETE
toc: []
structuredData:
headings: []
contents:
- content: |
Cancel a queued background job.
Removes the job from the queue and deletes it.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Cancel a queued background job.
Removes the job from the queue and deletes it.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"job_cancel","method":"delete"}]} />

View file

@ -0,0 +1,23 @@
---
title: job_clear
full: true
_openapi:
method: DELETE
toc: []
structuredData:
headings: []
contents:
- content: |
Clear background job queues.
Does not affect jobs that are already being processed.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Clear background job queues.
Does not affect jobs that are already being processed.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"job_clear","method":"delete"}]} />

View file

@ -0,0 +1,19 @@
---
title: job_list
full: true
_openapi:
method: POST
toc: []
structuredData:
headings: []
contents:
- content: |
List enqueued background jobs.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
List enqueued background jobs.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"job_list","method":"post"}]} />

View file

@ -0,0 +1,19 @@
---
title: job_show
full: true
_openapi:
method: POST
toc: []
structuredData:
headings: []
contents:
- content: |
Show details for a background job.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Show details for a background job.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"job_show","method":"post"}]} />

View file

@ -0,0 +1,19 @@
---
title: license_list
full: true
_openapi:
method: POST
toc: []
structuredData:
headings: []
contents:
- content: |
Return the list of licenses available for datasets on the site.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Return the list of licenses available for datasets on the site.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"license_list","method":"post"}]} />

View file

@ -0,0 +1,30 @@
---
title: member_create
full: true
_openapi:
method: POST
toc: []
structuredData:
headings: []
contents:
- content: >
Make an object (e.g. a user, dataset or group) a member of a group.
If the object is already a member of the group then the capacity of
the membership will be updated.
You must be authorized to edit the group.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Make an object (e.g. a user, dataset or group) a member of a group.
If the object is already a member of the group then the capacity of the membership will be updated.
You must be authorized to edit the group.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"member_create","method":"post"}]} />

View file

@ -0,0 +1,23 @@
---
title: member_delete
full: true
_openapi:
method: DELETE
toc: []
structuredData:
headings: []
contents:
- content: |
Remove an object (e.g. a user, dataset or group) from a group.
You must be authorized to edit a group to remove objects from it.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Remove an object (e.g. a user, dataset or group) from a group.
You must be authorized to edit a group to remove objects from it.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"member_delete","method":"delete"}]} />

View file

@ -0,0 +1,23 @@
---
title: member_list
full: true
_openapi:
method: POST
toc: []
structuredData:
headings: []
contents:
- content: |
Return the members of a group.
The user must have permission to "get" the group.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Return the members of a group.
The user must have permission to "get" the group.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"member_list","method":"post"}]} />

View file

@ -0,0 +1,19 @@
---
title: member_roles_list
full: true
_openapi:
method: POST
toc: []
structuredData:
headings: []
contents:
- content: |
Return the possible roles for members of groups and organizations.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Return the possible roles for members of groups and organizations.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"member_roles_list","method":"post"}]} />

View file

@ -0,0 +1,12 @@
{
"pages": [
"--- ---",
"index",
"---🎁 Interactive CKAN API GUI---",
"...",
"--- ---",
"[Source Code](https://github.com/dathere/ckanaction)",
"[Support and Feedback](https://support.dathere.com)",
"[Privacy Policy](https://dathere.com/privacy-policy/)"
]
}

View file

@ -0,0 +1,19 @@
---
title: organization_autocomplete
full: true
_openapi:
method: POST
toc: []
structuredData:
headings: []
contents:
- content: |
Return a list of organization names that contain a string.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Return a list of organization names that contain a string.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"organization_autocomplete","method":"post"}]} />

View file

@ -0,0 +1,30 @@
---
title: organization_create
full: true
_openapi:
method: POST
toc: []
structuredData:
headings: []
contents:
- content: >
Create a new organization.
You must be authorized to create organizations.
Plugins may change the parameters of this function depending on the
value of the `type` parameter, see the `IGroupForm` plugin interface.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Create a new organization.
You must be authorized to create organizations.
Plugins may change the parameters of this function depending on the value of the `type` parameter, see the `IGroupForm` plugin interface.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"organization_create","method":"post"}]} />

View file

@ -0,0 +1,26 @@
---
title: organization_delete
full: true
_openapi:
method: DELETE
toc: []
structuredData:
headings: []
contents:
- content: >
Delete an organization.
You must be authorized to delete the organization and no datasets
should belong to the organization unless
`'ckan.auth.create_unowned_dataset=True'`
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Delete an organization.
You must be authorized to delete the organization and no datasets should belong to the organization unless `'ckan.auth.create_unowned_dataset=True'`
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"organization_delete","method":"delete"}]} />

View file

@ -0,0 +1,20 @@
---
title: organization_followee_count
full: true
_openapi:
method: POST
toc: []
structuredData:
headings: []
contents:
- content: >
Return the number of organizations that are followed by the given
user.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Return the number of organizations that are followed by the given user.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"organization_followee_count","method":"post"}]} />

View file

@ -0,0 +1,19 @@
---
title: organization_followee_list
full: true
_openapi:
method: POST
toc: []
structuredData:
headings: []
contents:
- content: |
Return the list of organizations that are followed by the given user.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Return the list of organizations that are followed by the given user.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"organization_followee_list","method":"post"}]} />

View file

@ -0,0 +1,19 @@
---
title: organization_follower_count
full: true
_openapi:
method: POST
toc: []
structuredData:
headings: []
contents:
- content: |
Returun the number of followers of an organization.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Returun the number of followers of an organization.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"organization_follower_count","method":"post"}]} />

View file

@ -0,0 +1,19 @@
---
title: organization_follower_list
full: true
_openapi:
method: POST
toc: []
structuredData:
headings: []
contents:
- content: |
Return the list of users that are following the given organization.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Return the list of users that are following the given organization.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"organization_follower_list","method":"post"}]} />

View file

@ -0,0 +1,19 @@
---
title: organization_list
full: true
_openapi:
method: POST
toc: []
structuredData:
headings: []
contents:
- content: |
Return a list of the names of the site's organizations.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Return a list of the names of the site's organizations.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"organization_list","method":"post"}]} />

View file

@ -0,0 +1,57 @@
---
title: organization_list_for_user
full: true
_openapi:
method: POST
toc: []
structuredData:
headings: []
contents:
- content: >
Return the organizations that the user has a given permission for.
Specifically it returns the list of organizations that the currently
authorized user has a given permission (for example: "manage_group")
against.
By default this returns the list of organizations that the currently
authorized user is member of, in any capacity.
When a user becomes a member of an organization in CKAN they're given
a "capacity" (sometimes called a "role"), for example "member",
"editor" or "admin".
Each of these roles has certain permissions associated with it. For
example the admin role has the "admin" permission (which means they
have permission to do anything). The editor role has permissions like
"create_dataset", "update_dataset" and "delete_dataset". The member
role has the "read" permission.
This function returns the list of organizations that the authorized
user has a given permission for. For example the list of organizations
that the user is an admin of, or the list of organizations that the
user can create datasets in. This takes account of when permissions
cascade down an organization hierarchy.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Return the organizations that the user has a given permission for.
Specifically it returns the list of organizations that the currently authorized user has a given permission (for example: "manage_group") against.
By default this returns the list of organizations that the currently authorized user is member of, in any capacity.
When a user becomes a member of an organization in CKAN they're given a "capacity" (sometimes called a "role"), for example "member", "editor" or "admin".
Each of these roles has certain permissions associated with it. For example the admin role has the "admin" permission (which means they have permission to do anything). The editor role has permissions like "create_dataset", "update_dataset" and "delete_dataset". The member role has the "read" permission.
This function returns the list of organizations that the authorized user has a given permission for. For example the list of organizations that the user is an admin of, or the list of organizations that the user can create datasets in. This takes account of when permissions cascade down an organization hierarchy.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"organization_list_for_user","method":"post"}]} />

View file

@ -0,0 +1,23 @@
---
title: organization_member_create
full: true
_openapi:
method: POST
toc: []
structuredData:
headings: []
contents:
- content: |
Make a user a member of an organization.
You must be authorized to edit the organization.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Make a user a member of an organization.
You must be authorized to edit the organization.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"organization_member_create","method":"post"}]} />

View file

@ -0,0 +1,23 @@
---
title: organization_member_delete
full: true
_openapi:
method: DELETE
toc: []
structuredData:
headings: []
contents:
- content: |
Remove a user from an organization.
You must be authorized to edit the organization.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Remove a user from an organization.
You must be authorized to edit the organization.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"organization_member_delete","method":"delete"}]} />

View file

@ -0,0 +1,27 @@
---
title: organization_patch
full: true
_openapi:
method: PATCH
toc: []
structuredData:
headings: []
contents:
- content: >
Patch an organization.
The difference between the update and patch methods is that the patch
will perform an update of the provided parameters, while leaving all
other parameters unchanged, whereas the update methods deletes all
parameters not explicitly provided in the data_dict.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Patch an organization.
The difference between the update and patch methods is that the patch will perform an update of the provided parameters, while leaving all other parameters unchanged, whereas the update methods deletes all parameters not explicitly provided in the data_dict.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"organization_patch","method":"patch"}]} />

View file

@ -0,0 +1,44 @@
---
title: organization_purge
full: true
_openapi:
method: DELETE
toc: []
structuredData:
headings: []
contents:
- content: >
Purge an organization.
<Callout title="Warning!" type="warn">Purging an organization cannot
be undone!</Callout>
Purging an organization completely removes the organization from the
CKAN database, whereas deleting a organization simply marks the
organization as deleted (it will no longer show up in the frontend,
but is still in the db).
Datasets owned by the organization will remain, just not in an
organization anymore.
You must be authorized to purge the organization.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Purge an organization.
<Callout title="Warning!" type="warn">Purging an organization cannot be undone!</Callout>
Purging an organization completely removes the organization from the CKAN database, whereas deleting a organization simply marks the organization as deleted (it will no longer show up in the frontend, but is still in the db).
Datasets owned by the organization will remain, just not in an organization anymore.
You must be authorized to purge the organization.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"organization_purge","method":"delete"}]} />

View file

@ -0,0 +1,19 @@
---
title: organization_show
full: true
_openapi:
method: POST
toc: []
structuredData:
headings: []
contents:
- content: >-
Return the details of an organization (only its first 10 datasets are
returned).
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Return the details of an organization (only its first 10 datasets are returned).
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"organization_show","method":"post"}]} />

View file

@ -0,0 +1,31 @@
---
title: organization_update
full: true
_openapi:
method: PUT
toc: []
structuredData:
headings: []
contents:
- content: >
Update an organization.
You must be authorized to edit the organization.
<Callout title="Note">Update methods may delete parameters not
explicitly provided in the data_dict. If you want to edit only a
specific attribute use `organization_patch` instead.</Callout>
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Update an organization.
You must be authorized to edit the organization.
<Callout title="Note">Update methods may delete parameters not explicitly provided in the data_dict. If you want to edit only a specific attribute use `organization_patch` instead.</Callout>
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"organization_update","method":"put"}]} />

View file

@ -0,0 +1,25 @@
---
title: package_autocomplete
full: true
_openapi:
method: POST
toc: []
structuredData:
headings: []
contents:
- content: >
Return a list of datasets (packages) that match a string.
Datasets with names or titles that contain the query string will be
returned.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Return a list of datasets (packages) that match a string.
Datasets with names or titles that contain the query string will be returned.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"package_autocomplete","method":"post"}]} />

View file

@ -0,0 +1,39 @@
---
title: package_collaborator_create
full: true
_openapi:
method: POST
toc: []
structuredData:
headings: []
contents:
- content: >
Make a user a collaborator in a dataset.
If the user is already a collaborator in the dataset then their
capacity will be updated.
Currently you must be an Admin on the dataset owner organization to
manage collaborators.
Note: This action requires the collaborators feature to be enabled
with the
[`ckan.auth.allow_dataset_collaborators`](https://docs.ckan.org/en/2.11/maintaining/configuration.html#ckan-auth-allow-dataset-collaborators)
configuration option.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Make a user a collaborator in a dataset.
If the user is already a collaborator in the dataset then their capacity will be updated.
Currently you must be an Admin on the dataset owner organization to manage collaborators.
Note: This action requires the collaborators feature to be enabled with the [`ckan.auth.allow_dataset_collaborators`](https://docs.ckan.org/en/2.11/maintaining/configuration.html#ckan-auth-allow-dataset-collaborators) configuration option.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"package_collaborator_create","method":"post"}]} />

View file

@ -0,0 +1,33 @@
---
title: package_collaborator_delete
full: true
_openapi:
method: DELETE
toc: []
structuredData:
headings: []
contents:
- content: >
Remove a collaborator from a dataset.
Currently you must be an Admin on the dataset owner organization to
manage collaborators.
Note: This action requires the collaborators feature to be enabled
with the
[`ckan.auth.allow_dataset_collaborators`](https://docs.ckan.org/en/2.11/maintaining/configuration.html#ckan-auth-allow-dataset-collaborators)
configuration option.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Remove a collaborator from a dataset.
Currently you must be an Admin on the dataset owner organization to manage collaborators.
Note: This action requires the collaborators feature to be enabled with the [`ckan.auth.allow_dataset_collaborators`](https://docs.ckan.org/en/2.11/maintaining/configuration.html#ckan-auth-allow-dataset-collaborators) configuration option.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"package_collaborator_delete","method":"delete"}]} />

View file

@ -0,0 +1,33 @@
---
title: package_collaborator_list
full: true
_openapi:
method: POST
toc: []
structuredData:
headings: []
contents:
- content: >
Return the list of all collaborators for a given dataset (package).
Currently you must be an Admin on the dataset owner organization to
manage collaborators.
Note: This action requires the collaborators feature to be enabled
with the
[`ckan.auth.allow_dataset_collaborators`](https://docs.ckan.org/en/2.11/maintaining/configuration.html#ckan-auth-allow-dataset-collaborators)
configuration option.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Return the list of all collaborators for a given dataset (package).
Currently you must be an Admin on the dataset owner organization to manage collaborators.
Note: This action requires the collaborators feature to be enabled with the [`ckan.auth.allow_dataset_collaborators`](https://docs.ckan.org/en/2.11/maintaining/configuration.html#ckan-auth-allow-dataset-collaborators) configuration option.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"package_collaborator_list","method":"post"}]} />

View file

@ -0,0 +1,27 @@
---
title: package_collaborator_list_for_user
full: true
_openapi:
method: POST
toc: []
structuredData:
headings: []
contents:
- content: >
Return the list of all datasets the user is a collaborator in.
Note: This action requires the collaborators feature to be enabled
with the
[`ckan.auth.allow_dataset_collaborators`](https://docs.ckan.org/en/2.11/maintaining/configuration.html#ckan-auth-allow-dataset-collaborators)
configuration option.
---
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Return the list of all datasets the user is a collaborator in.
Note: This action requires the collaborators feature to be enabled with the [`ckan.auth.allow_dataset_collaborators`](https://docs.ckan.org/en/2.11/maintaining/configuration.html#ckan-auth-allow-dataset-collaborators) configuration option.
<APIPage document={"./lib/openapi.yml"} operations={[{"path":"package_collaborator_list_for_user","method":"post"}]} />

Some files were not shown because too many files have changed in this diff Show more