@batijs/features 0.0.632 → 0.0.634

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -40,11 +40,16 @@ declare const categories: readonly [{
40
40
  }, {
41
41
  readonly label: "Database";
42
42
  readonly group: categoriesGroups.Data;
43
- readonly description: "Helping you get started with a database solution.";
43
+ readonly description: "The database your app talks to. SQLite runs embedded (and powers Cloudflare D1);\nPostgreSQL targets a Postgres server. Selected on its own you get a thin client; pair it with an ORM or query builder below.";
44
+ }, {
45
+ readonly label: "ORM / Query builder";
46
+ readonly group: categoriesGroups.Data;
47
+ readonly description: "Type-safe data access on top of your database. Requires choosing a Database above.";
44
48
  }, {
45
49
  readonly label: "Hosting";
46
50
  readonly group: categoriesGroups.Deployment;
47
51
  readonly description: "Quickly host your Vike project with a Serverless or VPS (coming soon) solution.";
52
+ readonly required: true;
48
53
  }, {
49
54
  readonly label: "Linter";
50
55
  readonly multiple: true;
@@ -81,6 +86,7 @@ declare const features: readonly [{
81
86
  readonly label: "FAQ";
82
87
  readonly href: "https://vike.dev/faq";
83
88
  }];
89
+ readonly tooltip: "Vike cannot be disabled. It is the foundation that allows all others tools to work cohesively";
84
90
  readonly invisibleCli: true;
85
91
  readonly readonly: true;
86
92
  }, {
@@ -325,18 +331,6 @@ declare const features: readonly [{
325
331
  readonly label: "API";
326
332
  readonly href: "https://fastify.dev/docs/latest/Reference/";
327
333
  }];
328
- }, {
329
- readonly category: "Database";
330
- readonly label: "Drizzle";
331
- readonly flag: "drizzle";
332
- readonly image: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgd2lkdGg9IjI4MHB4IiBoZWlnaHQ9IjI4MHB4IiBzdHlsZT0ic2hhcGUtcmVuZGVyaW5nOmdlb21ldHJpY1ByZWNpc2lvbjsgdGV4dC1yZW5kZXJpbmc6Z2VvbWV0cmljUHJlY2lzaW9uOyBpbWFnZS1yZW5kZXJpbmc6b3B0aW1pemVRdWFsaXR5OyBmaWxsLXJ1bGU6ZXZlbm9kZDsgY2xpcC1ydWxlOmV2ZW5vZGQiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KPGc+PHBhdGggc3R5bGU9Im9wYWNpdHk6MSIgZmlsbD0iIzAwMDAwMCIgZD0iTSAtMC41LC0wLjUgQyA5Mi44MzMzLC0wLjUgMTg2LjE2NywtMC41IDI3OS41LC0wLjVDIDI3OS41LDkyLjgzMzMgMjc5LjUsMTg2LjE2NyAyNzkuNSwyNzkuNUMgMTg2LjE2NywyNzkuNSA5Mi44MzMzLDI3OS41IC0wLjUsMjc5LjVDIC0wLjUsMTg2LjE2NyAtMC41LDkyLjgzMzMgLTAuNSwtMC41IFoiLz48L2c+CjxnPjxwYXRoIHN0eWxlPSJvcGFjaXR5OjEiIGZpbGw9IiNjMWYyNGQiIGQ9Ik0gMTMzLjUsODQuNSBDIDE0Mi44MTQsODIuNzI2OSAxNDYuNjQ3LDg2LjM5MzUgMTQ1LDk1LjVDIDEzNS45MDYsMTEyLjAyOCAxMjYuNTcyLDEyOC4zNjIgMTE3LDE0NC41QyAxMTEuMjQ5LDE0OS45ODQgMTA2LjI0OSwxNDkuMzE3IDEwMiwxNDIuNUMgMTAxLjMzMywxNDAuODMzIDEwMS4zMzMsMTM5LjE2NyAxMDIsMTM3LjVDIDExMS41NDcsMTE5LjA0MSAxMjIuMDQ3LDEwMS4zNzUgMTMzLjUsODQuNSBaIi8+PC9nPgo8Zz48cGF0aCBzdHlsZT0ib3BhY2l0eToxIiBmaWxsPSIjYzBmMTRkIiBkPSJNIDIyMy41LDg0LjUgQyAyMzMuNTM5LDgzLjY5NzIgMjM3LjAzOSw4OC4wMzA1IDIzNCw5Ny41QyAyMjUuMzQ3LDExMi44MDEgMjE2LjY4MSwxMjguMTM1IDIwOCwxNDMuNUMgMjAzLjM4NywxNDkuNzM3IDE5OC4zODcsMTUwLjA3MSAxOTMsMTQ0LjVDIDE5MS41NzgsMTQxLjk3IDE5MS4yNDUsMTM5LjMwMyAxOTIsMTM2LjVDIDIwMC41MiwxMjIuNzk0IDIwOC41MiwxMDguNzk0IDIxNiw5NC41QyAyMTguMjg5LDkwLjg4MTIgMjIwLjc4OSw4Ny41NDc5IDIyMy41LDg0LjUgWiIvPjwvZz4KPGc+PHBhdGggc3R5bGU9Im9wYWNpdHk6MSIgZmlsbD0iI2MwZjE0ZCIgZD0iTSA3NS41LDEyMC41IEMgODMuOTg4NSwxMTkuNjE4IDg3LjgyMTgsMTIzLjI4NSA4NywxMzEuNUMgNzcuOTA1NywxNDguMDI4IDY4LjU3MjQsMTY0LjM2MiA1OSwxODAuNUMgNTYuMDQ1MywxODQuMjc3IDUyLjIxMiwxODUuNDQzIDQ3LjUsMTg0QyA0My44Njk3LDE4MC45NSA0Mi43MDMsMTc3LjExNyA0NCwxNzIuNUMgNTMsMTU2LjUgNjIsMTQwLjUgNzEsMTI0LjVDIDcyLjM5NjgsMTIyLjkzIDczLjg5NjgsMTIxLjU5NiA3NS41LDEyMC41IFoiLz48L2c+CjxnPjxwYXRoIHN0eWxlPSJvcGFjaXR5OjEiIGZpbGw9IiNjMWYyNGQiIGQ9Ik0gMTY1LjUsMTIwLjUgQyAxNzQuMTY0LDExOS4zMzIgMTc3Ljk5NywxMjIuOTk5IDE3NywxMzEuNUMgMTY3LjQxNCwxNDcuNjcxIDE1OC4wOCwxNjQuMDA0IDE0OSwxODAuNUMgMTQ2LjM5OCwxODQuMjEyIDE0Mi44OTgsMTg1LjM3OCAxMzguNSwxODRDIDEzMy45MzEsMTgxLjQ1OSAxMzIuNDMxLDE3Ny42MjUgMTM0LDE3Mi41QyAxNDMuNTcyLDE1Ni4zNjIgMTUyLjkwNiwxNDAuMDI4IDE2MiwxMjMuNUMgMTYzLjE0NSwxMjIuMzY0IDE2NC4zMTIsMTIxLjM2NCAxNjUuNSwxMjAuNSBaIi8+PC9nPgo8L3N2Zz4K";
333
- readonly url: "https://orm.drizzle.team/";
334
- readonly tagline: "Headless TypeScript ORM that feels like SPA with SSR";
335
- readonly repo: "drizzle-team/drizzle-orm";
336
- readonly links: [{
337
- readonly label: "Docs & Getting started";
338
- readonly href: "https://orm.drizzle.team/docs/overview";
339
- }];
340
334
  }, {
341
335
  readonly category: "Database";
342
336
  readonly label: "SQLite";
@@ -354,6 +348,33 @@ declare const features: readonly [{
354
348
  }];
355
349
  }, {
356
350
  readonly category: "Database";
351
+ readonly label: "PostgreSQL";
352
+ readonly flag: "postgres";
353
+ readonly image: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMjggMTI4Ij48cGF0aCBkPSJNOTMuODA5IDkyLjExMmMuNzg1LTYuNTMzLjU1LTcuNDkyIDUuNDE2LTYuNDMzbDEuMjM1LjEwOGMzLjc0Mi4xNyA4LjYzNy0uNjAyIDExLjUxMy0xLjkzOCA2LjE5MS0yLjg3MyA5Ljg2MS03LjY2OCAzLjc1OC02LjQwOS0xMy45MjQgMi44NzMtMTQuODgxLTEuODQyLTE0Ljg4MS0xLjg0MiAxNC43MDMtMjEuODE1IDIwLjg0OS00OS41MDggMTUuNTQzLTU2LjI4Ny0xNC40Ny0xOC40ODktMzkuNTE3LTkuNzQ2LTM5LjkzNi05LjUybC0uMTM0LjAyNWMtMi43NTEtLjU3MS01LjgzLS45MTItOS4yODktLjk2OC02LjMwMS0uMTA0LTExLjA4MiAxLjY1Mi0xNC43MDkgNC40MDIgMCAwLTQ0LjY4My0xOC40MDktNDIuNjA0IDIzLjE1MS40NDIgOC44NDEgMTIuNjcyIDY2Ljg5OCAyNy4yNiA0OS4zNjIgNS4zMzItNi40MTIgMTAuNDg0LTExLjgzNCAxMC40ODQtMTEuODM0IDIuNTU4IDEuNjk5IDUuNjIyIDIuNTY3IDguODM0IDIuMjU1bC4yNDktLjIxMmMtLjA3OC43OTYtLjA0NCAxLjU3NS4wOTkgMi40OTctMy43NTcgNC4xOTktMi42NTMgNC45MzYtMTAuMTY2IDYuNDgyLTcuNjAyIDEuNTY2LTMuMTM2IDQuMzU1LS4yMjEgNS4wODQgMy41MzUuODg0IDExLjcxMiAyLjEzNiAxNy4yMzgtNS41OThsLS4yMi44ODJjMS40NzQgMS4xOCAxLjM3NSA4LjQ3NyAxLjU4MyAxMy42OS4yMDkgNS4yMTQuNTU4IDEwLjA3OSAxLjYyMSAxMi45NDggMS4wNjMgMi44NjggMi4zMTcgMTAuMjU2IDEyLjE5MSA4LjE0IDguMjUyLTEuNzY0IDE0LjU2MS00LjMwOSAxNS4xMzYtMjcuOTg1Ij48L3BhdGg+PHBhdGggZD0iTTc1LjQ1OCAxMjUuMjU2Yy00LjM2NyAwLTcuMjExLTEuNjg5LTguOTM4LTMuMzItMi42MDctMi40Ni0zLjY0MS01LjYyOS00LjI1OS03LjUyMmwtLjI2Ny0uNzljLTEuMjQ0LTMuMzU4LTEuNjY2LTguMTkzLTEuOTE2LTE0LjQxOS0uMDM4LS45MzUtLjA2NC0xLjg5OC0uMDkzLTIuOTE5LS4wMjEtLjc0Ny0uMDQ3LTEuNjg0LS4wODUtMi42NjRhMTguOCAxOC44IDAgMDEtNC45NjIgMS41NjhjLTMuMDc5LjUyNi02LjM4OS4zNTYtOS44NC0uNTA3LTIuNDM1LS42MDktNC45NjUtMS44NzEtNi40MDctMy44Mi00LjIwMyAzLjY4MS04LjIxMiAzLjE4Mi0xMC4zOTYgMi40NTMtMy44NTMtMS4yODUtNy4zMDEtNC44OTYtMTAuNTQyLTExLjAzNy0yLjMwOS00LjM3NS00LjU0Mi0xMC4wNzUtNi42MzgtMTYuOTQzLTMuNjUtMTEuOTYtNS45NjktMjQuNTU3LTYuMTc1LTI4LjY5M0M0LjI5MiAyMy42OTggNy43NzcgMTQuNDQgMTUuMjk2IDkuMTI5IDI3LjE1Ny43NTEgNDUuMTI4IDUuNjc4IDUxLjY4IDcuOTE1YzQuNDAyLTIuNjUzIDkuNTgxLTMuOTQ0IDE1LjQzMy0zLjg1MSAzLjE0My4wNTEgNi4xMzYuMzI3IDguOTE2LjgyMyAyLjktLjkxMiA4LjYyOC0yLjIyMSAxNS4xODUtMi4xMzkgMTIuMDgxLjE0NCAyMi4wOTIgNC44NTIgMjguOTQ5IDEzLjYxNSA0Ljg5NCA2LjI1MiAyLjQ3NCAxOS4zODEuNTk3IDI2LjY1MS0yLjY0MiAxMC4yMjYtNy4yNzEgMjEuMTAyLTEyLjk1NyAzMC41NyAxLjU0NC4wMTEgMy43ODEtLjE3NCA2Ljk2MS0uODMxIDYuMjc0LTEuMjk1IDguMTA5IDIuMDY5IDguNjA3IDMuNTc1IDEuOTk1IDYuMDQyLTYuNjc3IDEwLjYwOC05LjM4MiAxMS44NjQtMy40NjYgMS42MDktOS4xMTcgMi41ODktMTMuNzQ1IDIuMzc3bC0uMjAyLS4wMTMtMS4yMTYtLjEwNy0uMTIgMS4wMTQtLjExNi45OTFjLS4zMTEgMTEuOTk5LTIuMDI1IDE5LjU5OC01LjU1MiAyNC42MTktMy42OTcgNS4yNjQtOC44MzUgNi43MzktMTMuMzYxIDcuNzA5LTEuNTQ0LjMzLTIuOTQ3LjQ3NC00LjIxOS40NzR6bS05LjE5LTQzLjY3MWMyLjgxOSAyLjI1NiAzLjA2NiA2LjUwMSAzLjI4NyAxNC40MzQuMDI4Ljk5LjA1NCAxLjkyNy4wODkgMi44MDIuMTA2IDIuNjUuMzU1IDguODU1IDEuMzI3IDExLjQ3Ny4xMzcuMzcxLjI2Ljc0Ny4zOSAxLjE0NiAxLjA4MyAzLjMxNiAxLjYyNiA0Ljk3OSA2LjMwOSAzLjk3OCAzLjkzMS0uODQzIDUuOTUyLTEuNTk5IDcuNTM0LTMuODUxIDIuMjk5LTMuMjc0IDMuNTg1LTkuODYgMy44MjEtMTkuNTc1bDQuNzgzLjExNi00Ljc1LS41Ny4xNC0xLjE4NmMuNDU1LTMuOTEuNzgzLTYuNzM0IDMuMzk2LTguNjAyIDIuMDk3LTEuNDk4IDQuNDg2LTEuMzUzIDYuMzg5LTEuMDEtMi4wOTEtMS41OC0yLjY2OS0zLjQzMy0yLjgyMy00LjE5M2wtLjM5OS0xLjk2NSAxLjEyMS0xLjY2M2M2LjQ1Ny05LjU4IDExLjc4MS0yMS4zNTQgMTQuNjA5LTMyLjMwNCAyLjkwNi0xMS4yNTEgMi4wMi0xNy4yMjYgMS4xMzQtMTguMzU2LTExLjcyOS0xNC45ODctMzIuMDY4LTguNzk5LTM0LjE5Mi04LjA5N2wtLjM1OS4xOTQtMS44LjMzNS0uOTIyLS4xOTFjLTIuNTQyLS41MjgtNS4zNjYtLjgyLTguMzkzLS44NjktNC43NTYtLjA4LTguNTkzIDEuMDQ0LTExLjczOSAzLjQzMWwtMi4xODMgMS42NTUtMi41MzMtMS4wNDNjLTUuNDEyLTIuMjEzLTIxLjMwOC02LjY2Mi0yOS42OTYtLjcyMS00LjY1NiAzLjI5OC02Ljc3NyA5Ljc2LTYuMzA1IDE5LjIwNy4xNTYgMy4xMTkgMi4yNzUgMTQuOTI2IDUuNzcxIDI2LjM3NyA0LjgzMSAxNS44MjUgOS4yMjEgMjEuMDgyIDExLjA1NCAyMS42OTMuMzIuMTA4IDEuMTUtLjUzNyAxLjk3Ni0xLjUyOWEyNzAuNzA4IDI3MC43MDggMCAwMTEwLjY5NC0xMi4wN2wyLjc3LTIuOTE1IDMuMzQ5IDIuMjI1YzEuMzUuODk3IDIuODM5IDEuNDA2IDQuMzY4IDEuNTAybDcuOTg3LTYuODEyLTEuMTU3IDExLjgwOGMtLjAyNi4yNjUtLjAzOS42MjYuMDY1IDEuMjk2bC4zNDggMi4yMzgtMS41MSAxLjY4OC0uMTc0LjE5NiA0LjM4OCAyLjAyNSAxLjgzNi0yLjMwMXoiPjwvcGF0aD48cGF0aCBmaWxsPSIjMzM2NzkxIiBkPSJNMTE1LjczMSA3Ny40NGMtMTMuOTI1IDIuODczLTE0Ljg4Mi0xLjg0Mi0xNC44ODItMS44NDIgMTQuNzAzLTIxLjgxNiAyMC44NDktNDkuNTEgMTUuNTQ1LTU2LjI4N0MxMDEuOTI0LjgyMyA3Ni44NzUgOS41NjYgNzYuNDU3IDkuNzkzbC0uMTM1LjAyNGMtMi43NTEtLjU3MS01LjgzLS45MTEtOS4yOTEtLjk2Ny02LjMwMS0uMTAzLTExLjA4IDEuNjUyLTE0LjcwNyA0LjQwMiAwIDAtNDQuNjg0LTE4LjQwOC00Mi42MDYgMjMuMTUxLjQ0MiA4Ljg0MiAxMi42NzIgNjYuODk5IDI3LjI2IDQ5LjM2MyA1LjMzMi02LjQxMiAxMC40ODMtMTEuODM0IDEwLjQ4My0xMS44MzQgMi41NTkgMS42OTkgNS42MjIgMi41NjcgOC44MzMgMi4yNTVsLjI1LS4yMTJjLS4wNzguNzk2LS4wNDIgMS41NzUuMSAyLjQ5Ny0zLjc1OCA0LjE5OS0yLjY1NCA0LjkzNi0xMC4xNjcgNi40ODItNy42MDIgMS41NjYtMy4xMzYgNC4zNTUtLjIyIDUuMDg0IDMuNTM0Ljg4NCAxMS43MTIgMi4xMzYgMTcuMjM3LTUuNTk4bC0uMjIxLjg4MmMxLjQ3MyAxLjE4IDIuNTA3IDcuNjcyIDIuMzM0IDEzLjU1Ny0uMTc0IDUuODg1LS4yOSA5LjkyNi44NzEgMTMuMDgyIDEuMTYgMy4xNTYgMi4zMTYgMTAuMjU2IDEyLjE5MiA4LjE0IDguMjUyLTEuNzY4IDEyLjUyOC02LjM1MSAxMy4xMjQtMTMuOTk1LjQyMi01LjQzNSAxLjM3Ny00LjYzMSAxLjQzOC05LjQ5bC43NjctMi4zYy44ODQtNy4zNjcuMTQtOS43NDMgNS4yMjUtOC42MzhsMS4yMzUuMTA4YzMuNzQyLjE3IDguNjM5LS42MDIgMTEuNTE0LTEuOTM4IDYuMTktMi44NzEgOS44NjEtNy42NjcgMy43NTgtNi40MDh6Ij48L3BhdGg+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTc1Ljk1NyAxMjIuMzA3Yy04LjIzMiAwLTEwLjg0LTYuNTE5LTExLjkwNy05LjE4NS0xLjU2Mi0zLjkwNy0xLjg5OS0xOS4wNjktMS41NTEtMzEuNTAzYTEuNTkgMS41OSAwIDAxMS42NC0xLjU1IDEuNTk0IDEuNTk0IDAgMDExLjU1IDEuNjM5Yy0uNDAxIDE0LjM0MS4xNjggMjcuMzM3IDEuMzI0IDMwLjIyOSAxLjgwNCA0LjUwOSA0LjU0IDguNDUzIDEyLjI3NSA2Ljc5NiA3LjM0My0xLjU3NSAxMC4wOTMtNC4zNTkgMTEuMzE4LTExLjQ2Ljk0LTUuNDQ5IDIuNzk5LTIwLjk1MSAzLjAyOC0yNC4wMWExLjU5MyAxLjU5MyAwIDAxMS43MS0xLjQ3MiAxLjU5NyAxLjU5NyAwIDAxMS40NzIgMS43MWMtLjIzOSAzLjE4NS0yLjA4OSAxOC42NTctMy4wNjUgMjQuMzE1LTEuNDQ2IDguMzg3LTUuMTg1IDEyLjE5MS0xMy43OTQgMTQuMDM3LTEuNDYzLjMxMy0yLjc5Mi40NTMtNCAuNDU0ek0zMS4zMjEgOTAuNDY2YTYuNzEgNi43MSAwIDAxLTIuMTE2LS4zNWMtNS4zNDctMS43ODQtMTAuNDQtMTAuNDkyLTE1LjEzOC0yNS44ODUtMy41NzYtMTEuNzE3LTUuODQyLTIzLjk0Ny02LjA0MS0yNy45MjItLjU4OS0xMS43ODQgMi40NDUtMjAuMTIxIDkuMDItMjQuNzc4IDEzLjAwNy05LjIxNiAzNC44ODgtLjQ0IDM1LjgxMy0uMDYyYTEuNTk2IDEuNTk2IDAgMDEtMS4yMDcgMi45NTVjLS4yMTEtLjA4Ni0yMS4xOTMtOC40OTItMzIuNzY4LS4yODUtNS42MjIgMy45ODYtOC4yMDMgMTEuMzkyLTcuNjcyIDIyLjAxMS4xNjcgMy4zNDkgMi4yODQgMTUuMjg1IDUuOTA2IDI3LjE0OSA0LjE5NCAxMy43NDIgOC45NjcgMjIuNDEzIDEzLjA5NiAyMy43OS42NDguMjE2IDIuNjIuODczIDUuNDM5LTIuNTE3QTI0NS4yNzIgMjQ1LjI3MiAwIDAxNDUuODggNzMuMDQ2YTEuNTk2IDEuNTk2IDAgMDEyLjMwNCAyLjIwOGMtLjA0OC4wNS00Ljg0NyA1LjA2Ny0xMC4wNzcgMTEuMzU5LTIuNDc3IDIuOTc5LTQuODUxIDMuODUzLTYuNzg2IDMuODUzem02OS40MjktMTMuNDQ1YTEuNTk2IDEuNTk2IDAgMDEtMS4zMjItMi40ODdjMTQuODYzLTIyLjA1NSAyMC4wOC00OC43MDQgMTUuNjEyLTU0LjQxNC01LjYyNC03LjE4Ni0xMy41NjUtMTAuOTM5LTIzLjYwNC0xMS4xNTYtNy40MzMtLjE2LTEzLjM0MSAxLjczOC0xNC4zMDcgMi4wNjlsLS4yNDMuMDk5Yy0uOTcxLjMwNS0xLjcxNi0uMjI3LTEuOTk3LS44NDlhMS42IDEuNiAwIDAxLjYzMS0yLjAyNWMuMDQ2LS4wMjcuMTkyLS4wODkuNDI5LS4xNzZsLS4wMjEuMDA2LjAyMS0uMDA3YzEuNjQxLS42MDEgNy42MzktMi40IDE1LjA2OC0yLjMxNSAxMS4xMDguMTE4IDIwLjI4NCA0LjQwMSAyNi41MzQgMTIuMzg4IDIuOTU3IDMuNzc5IDIuOTY0IDEyLjQ4NS4wMTkgMjMuODg3LTMuMDAyIDExLjYyNS04LjY1MSAyNC4xMTgtMTUuNDk3IDM0LjI3Ny0uMzA2LjQ1Ny0uODEuNzAzLTEuMzIzLjcwM3ptLjc2IDEwLjIxYy0yLjUzOCAwLTQuODEzLS4zNTgtNi4xNzUtMS4xNzQtMS40LS44MzktMS42NjctMS45NzktMS43MDItMi41ODQtLjM4Mi02LjcxIDMuMzItNy44NzggNS4yMDgtOC40MTEtLjI2My0uMzk4LS42MzctLjg2Ni0xLjAyNC0xLjM0OS0xLjEwMS0xLjM3Ni0yLjYwOS0zLjI2LTMuNzcxLTYuMDc4LS4xODItLjQ0LS43NTItMS40NjMtMS40MTItMi42NDgtMy41NzktNi40MTgtMTEuMDI2LTE5Ljc3My02LjI0Mi0yNi42MTIgMi4yMTQtMy4xNjUgNi42MjMtNC40MTEgMTMuMTE5LTMuNzE2Qzk3LjYgMjguODM3IDg4LjUgMTAuNjI1IDY2LjkwNyAxMC4yNzFjLTYuNDk0LS4xMDgtMTEuODIgMS44ODktMTUuODIyIDUuOTMtOC45NiA5LjA0OS04LjYzNiAyNS40MjItOC42MzEgMjUuNTg2YTEuNTk1IDEuNTk1IDAgMTEtMy4xOS4wODRjLS4wMi0uNzI3LS4zNTQtMTcuOTA5IDkuNTU0LTI3LjkxNkM1My40NTUgOS4yNzIgNTkuNTU5IDYuOTYgNjYuOTYgNy4wODFjMTMuODE0LjIyNyAyMi43MDYgNy4yNSAyNy43MzIgMTMuMTAxIDUuNDc5IDYuMzc3IDguMTY1IDEzLjQxMSA4LjM4NiAxNS43NTkuMTY1IDEuNzQ2LTEuMDg4IDIuMDk1LTEuMzQxIDIuMTQ3bC0uNTc2LjAxM2MtNi4zNzUtMS4wMjEtMTAuNDY1LS4zMTItMTIuMTU2IDIuMTA0LTMuNjM5IDUuMjAxIDMuNDA2IDE3LjgzNCA2LjQxNCAyMy4yMjkuNzY4IDEuMzc2IDEuMzIyIDIuMzcxIDEuNTc2IDIuOTg1Ljk4OCAyLjM5NiAyLjI3NyA0LjAwNiAzLjMxMiA1LjMuOTExIDEuMTM4IDEuNyAyLjEyNSAxLjk4MiAzLjI4My4xMzEuMjMgMS45OSAyLjk4IDEzLjAyMS43MDMgMi43NjUtLjU3IDQuNDIzLS4wODMgNC45MyAxLjQ1Ljk5NyAzLjAxNS00LjU5NyA2LjUzMi03LjY5NCA3Ljk3LTIuNzc1IDEuMjktNy4yMDQgMi4xMDYtMTEuMDM2IDIuMTA2em0tNC42OTYtNC4wMjFjLjM1LjM1MyAyLjEwMS45NjIgNS43MjcuODA2IDMuMjI0LS4xMzggNi42MjQtLjgzOSA4LjY2NC0xLjc4NiAyLjYwOS0xLjIxMiA0LjM1MS0yLjU2NyA1LjI1My0zLjQ5MmwtLjUuMDkyYy03LjA1MyAxLjQ1Ni0xMi4wNDIgMS4yNjItMTQuODI4LS41NzdhNi4xNjIgNi4xNjIgMCAwMS0uNTQtLjQwMWMtLjMwMi4xMTktLjU4MS4xOTctLjc4LjI1My0xLjU4LjQ0My0zLjIxNC45MDItMi45OTYgNS4xMDV6bS00NS41NjIgOC45MTVjLTEuNzUyIDAtMy41OTYtLjIzOS01LjQ3OS0uNzEtMS45NTEtLjQ4OC01LjI0LTEuOTU3LTUuMTktNC4zNy4wNTctMi43MDcgMy45OTQtMy41MTkgNS40NzYtMy44MjQgNS4zNTQtMS4xMDMgNS43MDMtMS41NDUgNy4zNzYtMy42Ny40ODgtLjYxOSAxLjA5NS0xLjM5IDEuOTIzLTIuMzE0IDEuMjI5LTEuMzc2IDIuNTcyLTIuMDczIDMuOTkyLTIuMDczLjk4OSAwIDEuOC4zMzUgMi4zMzYuNTU4IDEuNzA4LjcwOCAzLjEzMyAyLjQyIDMuNzE5IDQuNDY3LjUyOSAxLjg0Ny4yNzYgMy42MjUtLjcxIDUuMDA2LTMuMjM3IDQuNTMzLTcuODg2IDYuOTMtMTMuNDQzIDYuOTN6bS03LjIyMi00Ljk0M2MuNDgxLjM3MiAxLjQ0NS44NjkgMi41MTggMS4xMzcgMS42MzEuNDA4IDMuMjEzLjYxNSA0LjcwNS42MTUgNC41NDYgMCA4LjE5Ni0xLjg4MiAxMC44NDctNS41OTQuNTUzLS43NzQuMzg3LTEuNzU3LjIzOS0yLjI3NC0uMzEtMS4wODMtMS4wOC0yLjA2OC0xLjg3My0yLjM5Ny0uNDMtLjE3OC0uNzg3LS4zMTQtMS4xMTUtLjMxNC0uMTc2IDAtLjcxMiAwLTEuNjE0IDEuMDA5YTQxLjE0NiA0MS4xNDYgMCAwMC0xLjc5NCAyLjE2MmMtMi4wODQgMi42NDYtMy4wMzkgMy41NDQtOS4yMzkgNC44MjEtMS41MTMuMzEtMi4yODkuNjI2LTIuNjc0LjgzNXptMTIuMjY5LTcuMzZhMS41OTYgMS41OTYgMCAwMS0xLjU3NS0xLjM1NCA4LjIxOCA4LjIxOCAwIDAxLS4wOC0uNzk5Yy00LjA2NC0uMDc2LTcuOTg1LTEuODItMTAuOTYyLTQuOTI2LTMuNzY0LTMuOTI3LTUuNDc3LTkuMzY4LTQuNjk5LTE0LjkyNy44NDUtNi4wMzcuNTI5LTExLjM2Ni4zNTktMTQuMjI5LS4wNDctLjc5Ni0uMDgxLTEuMzcxLS4wNzktMS43NjkuMDAzLS41MDUuMDEzLTEuODQ0IDQuNDg5LTQuMTEzIDEuNTkyLS44MDcgNC43ODQtMi4yMTUgOC4yNzEtMi41NzYgNS43NzctLjU5NyA5LjU4NSAxLjk3NiAxMC43MjUgNy4yNDYgMy4wNzcgMTQuMjI4LjI0NCAyMC41MjEtMS44MjUgMjUuMTE3LS4zODUuODU2LS43NDkgMS42NjQtMS4wNCAyLjQ0N2wtLjI1Ny42OWMtMS4wOTMgMi45MzEtMi4wMzggNS40NjMtMS43NDggNy4zNTRhMS41OTUgMS41OTUgMCAwMS0xLjMzNSAxLjgxOWwtLjI0NC4wMnpNNDIuNDY0IDQyLjI2bC4wNjIgMS4xMzljLjE3NiAyLjk3NC41MDQgOC41MDgtLjM4NCAxNC44Ni0uNjQxIDQuNTg1Ljc1OSA5LjA2IDMuODQzIDEyLjI3NiAyLjQzNyAyLjU0MiA1LjY0NCAzLjk0NSA4Ljk0IDMuOTQ1aC4wNjhjLjM2OS0xLjU1NS45ODItMy4xOTcgMS42NDItNC45NjZsLjI1NS0uNjg2Yy4zMjktLjg4NC43MTQtMS43NCAxLjEyMi0yLjY0NiAxLjk5MS00LjQyNCA0LjQ3LTkuOTMxIDEuNjE1LTIzLjEzMi0uNTY1LTIuNjE1LTEuOTM2LTQuMTI4LTQuMTg5LTQuNjI3LTQuNjI4LTEuMDIyLTExLjUyNSAyLjQ1OS0xMi45NzQgMy44Mzd6bTkuNjMtLjY3N2MtLjA4LjU2NCAxLjAzMyAyLjA3IDIuNDg1IDIuMjcxIDEuNDQ5LjIwMyAyLjY4OS0uOTc1IDIuNzY4LTEuNTM5LjA3OS0uNTY0LTEuMDMzLTEuMTg2LTIuNDg1LTEuMzg4LTEuNDUxLS4yMDItMi42OTEuMDkyLTIuNzY4LjY1NnptMi44MTggMi44MjZsLS40MDctLjAyOGMtLjktLjEyNS0xLjgxLS42OTItMi40MzMtMS41MTgtLjIxOS0uMjktLjU3Ni0uODUyLS41MDUtMS4zNTQuMTAxLS43MzYuOTk5LTEuMTc3IDIuNC0xLjE3Ny4zMTMgMCAuNjM5LjAyMy45NjcuMDY5Ljc2Ni4xMDYgMS40NzcuMzI3IDIuMDAyLjYyLjkxLjUwOC45NzcgMS4wNzUuOTM2IDEuMzY4LS4xMTIuODEzLTEuNDA1IDIuMDItMi45NiAyLjAyem0tMi4yODktMi43MzJjLjA0NS4zNDguOTA3IDEuNDk2IDIuMDI5IDEuNjUxbC4yNjEuMDE4YzEuMDM2IDAgMS44MS0uODE1IDEuOTAxLTEuMDgyLS4wOTYtLjE4Mi0uNzYyLS42MzQtMi4wMjUtLjgxYTUuODIzIDUuODIzIDAgMDAtLjgyMS0uMDU5Yy0uODEyIDAtMS4yNDMuMTgzLTEuMzQ1LjI4MnptNDMuNjA1LTEuMjQ1Yy4wNzkuNTY0LTEuMDMzIDIuMDctMi40ODQgMi4yNzItMS40NS4yMDItMi42OTEtLjk3NS0yLjc3MS0xLjUzOS0uMDc2LS41NjQgMS4wMzYtMS4xODcgMi40ODYtMS4zODggMS40NS0uMjAzIDIuNjg5LjA5MiAyLjc2OS42NTV6bS0yLjgxOSAyLjU2Yy0xLjM5NiAwLTIuNjAxLTEuMDg2LTIuNy0xLjc5MS0uMTE1LS44NDYgMS4yNzgtMS40ODkgMi43MTItMS42ODguMzE2LS4wNDQuNjI5LS4wNjYuOTMtLjA2NiAxLjIzOCAwIDIuMDU4LjM2MyAyLjE0Ljk0OS4wNTMuMzc5LS4yMzguOTY0LS43MzkgMS40OTItLjMzMS4zNDctMS4wMjYuOTQ4LTEuOTczIDEuMDc5bC0uMzcuMDI1em0uOTQzLTMuMDEzYy0uMjc2IDAtLjU2NC4wMjEtLjg1Ni4wNjEtMS40NDEuMjAxLTIuMzAxLjc3OS0yLjI1OSAxLjA4OS4wNDguMzQxLjk2OCAxLjMzMiAyLjE3MyAxLjMzMmwuMjk3LS4wMjFjLjc4Ny0uMTA5IDEuMzc4LS42MjMgMS42Ni0uOTE5LjQ0My0uNDY1LjYxOS0uOTAzLjU5OC0xLjA1Mi0uMDI4LS4xOTgtLjU2LS40OS0xLjYxMy0uNDl6bTMuOTY1IDMyLjg0M2ExLjU5NCAxLjU5NCAwIDAxLTEuMzI0LTIuNDgzYzMuMzk4LTUuMDc1IDIuNzc2LTEwLjI1IDIuMTc1LTE1LjI1NS0uMjU3LTIuMTMyLS41MjEtNC4zMzctLjQ1My02LjQ1My4wNy0yLjE3Ny4zNDctMy45NzMuNjE0LTUuNzEuMzE3LTIuMDU4LjYxNy00LjAwMi40OTMtNi4zMWExLjU5NSAxLjU5NSAwIDExMy4xODYtLjE3MmMuMTQyIDIuNjM4LS4xOTcgNC44MzgtLjUyNSA2Ljk2Ny0uMjUzIDEuNjQzLS41MTUgMy4zNDItLjU3OCA1LjMyNy0uMDYxIDEuODc0LjE3OCAzLjg2NC40MzEgNS45Ny42NCA1LjMyMiAxLjM2NSAxMS4zNTQtMi42OTEgMTcuNDExYTEuNTk2IDEuNTk2IDAgMDEtMS4zMjguNzA4eiI+PC9wYXRoPjwvc3ZnPg==";
354
+ readonly url: "https://www.postgresql.org/";
355
+ readonly tagline: "The world's most advanced open source relational database";
356
+ readonly repo: "postgres/postgres";
357
+ readonly links: [{
358
+ readonly label: "Docs";
359
+ readonly href: "https://www.postgresql.org/docs/";
360
+ }, {
361
+ readonly label: "postgres.js (client)";
362
+ readonly href: "https://github.com/porsager/postgres";
363
+ }];
364
+ }, {
365
+ readonly category: "ORM / Query builder";
366
+ readonly label: "Drizzle";
367
+ readonly flag: "drizzle";
368
+ readonly image: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgd2lkdGg9IjI4MHB4IiBoZWlnaHQ9IjI4MHB4IiBzdHlsZT0ic2hhcGUtcmVuZGVyaW5nOmdlb21ldHJpY1ByZWNpc2lvbjsgdGV4dC1yZW5kZXJpbmc6Z2VvbWV0cmljUHJlY2lzaW9uOyBpbWFnZS1yZW5kZXJpbmc6b3B0aW1pemVRdWFsaXR5OyBmaWxsLXJ1bGU6ZXZlbm9kZDsgY2xpcC1ydWxlOmV2ZW5vZGQiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KPGc+PHBhdGggc3R5bGU9Im9wYWNpdHk6MSIgZmlsbD0iIzAwMDAwMCIgZD0iTSAtMC41LC0wLjUgQyA5Mi44MzMzLC0wLjUgMTg2LjE2NywtMC41IDI3OS41LC0wLjVDIDI3OS41LDkyLjgzMzMgMjc5LjUsMTg2LjE2NyAyNzkuNSwyNzkuNUMgMTg2LjE2NywyNzkuNSA5Mi44MzMzLDI3OS41IC0wLjUsMjc5LjVDIC0wLjUsMTg2LjE2NyAtMC41LDkyLjgzMzMgLTAuNSwtMC41IFoiLz48L2c+CjxnPjxwYXRoIHN0eWxlPSJvcGFjaXR5OjEiIGZpbGw9IiNjMWYyNGQiIGQ9Ik0gMTMzLjUsODQuNSBDIDE0Mi44MTQsODIuNzI2OSAxNDYuNjQ3LDg2LjM5MzUgMTQ1LDk1LjVDIDEzNS45MDYsMTEyLjAyOCAxMjYuNTcyLDEyOC4zNjIgMTE3LDE0NC41QyAxMTEuMjQ5LDE0OS45ODQgMTA2LjI0OSwxNDkuMzE3IDEwMiwxNDIuNUMgMTAxLjMzMywxNDAuODMzIDEwMS4zMzMsMTM5LjE2NyAxMDIsMTM3LjVDIDExMS41NDcsMTE5LjA0MSAxMjIuMDQ3LDEwMS4zNzUgMTMzLjUsODQuNSBaIi8+PC9nPgo8Zz48cGF0aCBzdHlsZT0ib3BhY2l0eToxIiBmaWxsPSIjYzBmMTRkIiBkPSJNIDIyMy41LDg0LjUgQyAyMzMuNTM5LDgzLjY5NzIgMjM3LjAzOSw4OC4wMzA1IDIzNCw5Ny41QyAyMjUuMzQ3LDExMi44MDEgMjE2LjY4MSwxMjguMTM1IDIwOCwxNDMuNUMgMjAzLjM4NywxNDkuNzM3IDE5OC4zODcsMTUwLjA3MSAxOTMsMTQ0LjVDIDE5MS41NzgsMTQxLjk3IDE5MS4yNDUsMTM5LjMwMyAxOTIsMTM2LjVDIDIwMC41MiwxMjIuNzk0IDIwOC41MiwxMDguNzk0IDIxNiw5NC41QyAyMTguMjg5LDkwLjg4MTIgMjIwLjc4OSw4Ny41NDc5IDIyMy41LDg0LjUgWiIvPjwvZz4KPGc+PHBhdGggc3R5bGU9Im9wYWNpdHk6MSIgZmlsbD0iI2MwZjE0ZCIgZD0iTSA3NS41LDEyMC41IEMgODMuOTg4NSwxMTkuNjE4IDg3LjgyMTgsMTIzLjI4NSA4NywxMzEuNUMgNzcuOTA1NywxNDguMDI4IDY4LjU3MjQsMTY0LjM2MiA1OSwxODAuNUMgNTYuMDQ1MywxODQuMjc3IDUyLjIxMiwxODUuNDQzIDQ3LjUsMTg0QyA0My44Njk3LDE4MC45NSA0Mi43MDMsMTc3LjExNyA0NCwxNzIuNUMgNTMsMTU2LjUgNjIsMTQwLjUgNzEsMTI0LjVDIDcyLjM5NjgsMTIyLjkzIDczLjg5NjgsMTIxLjU5NiA3NS41LDEyMC41IFoiLz48L2c+CjxnPjxwYXRoIHN0eWxlPSJvcGFjaXR5OjEiIGZpbGw9IiNjMWYyNGQiIGQ9Ik0gMTY1LjUsMTIwLjUgQyAxNzQuMTY0LDExOS4zMzIgMTc3Ljk5NywxMjIuOTk5IDE3NywxMzEuNUMgMTY3LjQxNCwxNDcuNjcxIDE1OC4wOCwxNjQuMDA0IDE0OSwxODAuNUMgMTQ2LjM5OCwxODQuMjEyIDE0Mi44OTgsMTg1LjM3OCAxMzguNSwxODRDIDEzMy45MzEsMTgxLjQ1OSAxMzIuNDMxLDE3Ny42MjUgMTM0LDE3Mi41QyAxNDMuNTcyLDE1Ni4zNjIgMTUyLjkwNiwxNDAuMDI4IDE2MiwxMjMuNUMgMTYzLjE0NSwxMjIuMzY0IDE2NC4zMTIsMTIxLjM2NCAxNjUuNSwxMjAuNSBaIi8+PC9nPgo8L3N2Zz4K";
369
+ readonly url: "https://orm.drizzle.team/";
370
+ readonly tagline: "Headless TypeScript ORM that feels like SPA with SSR";
371
+ readonly repo: "drizzle-team/drizzle-orm";
372
+ readonly links: [{
373
+ readonly label: "Docs & Getting started";
374
+ readonly href: "https://orm.drizzle.team/docs/overview";
375
+ }];
376
+ }, {
377
+ readonly category: "ORM / Query builder";
357
378
  readonly label: "Kysely";
358
379
  readonly flag: "kysely";
359
380
  readonly image: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0nMTMyJyBoZWlnaHQ9JzEzMicgdmlld0JveD0nMCAwIDEzMiAxMzInIGZpbGw9J25vbmUnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc+PGcgY2xpcC1wYXRoPSd1cmwoI2NsaXAwXzhfMyknPjxyZWN0IHg9JzInIHk9JzInIHdpZHRoPScxMjgnIGhlaWdodD0nMTI4JyByeD0nMTYnIGZpbGw9J3doaXRlJy8+PHBhdGggZD0nTTQxLjI5ODMgMTA5VjIzLjkwOTFINDYuNDkxOFY3My4zMUg0Ny4wNzM1TDkxLjk0NTcgMjMuOTA5MUg5OC44NDI3TDYxLjkwNjIgNjQuMTY5NEw5OC41MTAzIDEwOUg5Mi4wMjg4TDU4LjU4MjQgNjcuOTA4N0w0Ni40OTE4IDgxLjI4NzNWMTA5SDQxLjI5ODNaJyBmaWxsPSdibGFjaycvPjwvZz48cmVjdCB4PScyJyB5PScyJyB3aWR0aD0nMTI4JyBoZWlnaHQ9JzEyOCcgcng9JzE2JyBzdHJva2U9JyMxMjEyMTInIHN0cm9rZS13aWR0aD0nNCcvPjxkZWZzPjxjbGlwUGF0aCBpZD0nY2xpcDBfOF8zJz48cmVjdCB4PScyJyB5PScyJyB3aWR0aD0nMTI4JyBoZWlnaHQ9JzEyOCcgcng9JzE2JyBmaWxsPSd3aGl0ZScvPjwvY2xpcFBhdGg+PC9kZWZzPjwvc3ZnPgo=";
@@ -365,7 +386,7 @@ declare const features: readonly [{
365
386
  readonly href: "https://kysely.dev/docs/getting-started";
366
387
  }];
367
388
  }, {
368
- readonly category: "Database";
389
+ readonly category: "ORM / Query builder";
369
390
  readonly label: "Prisma";
370
391
  readonly flag: "prisma";
371
392
  readonly image: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIwLjgzZW0iIGhlaWdodD0iMWVtIiB2aWV3Qm94PSIwIDAgMjU2IDMxMCI+PHBhdGggZD0iTTI1NC4zMTMgMjM1LjUxOUwxNDggOS43NDlBMTcuMDYzIDE3LjA2MyAwIDAgMCAxMzMuNDczLjAzN2ExNi44NyAxNi44NyAwIDAgMC0xNS41MzMgOC4wNTJMMi42MzMgMTk0Ljg0OGExNy40NjUgMTcuNDY1IDAgMCAwIC4xOTMgMTguNzQ3TDU5LjIgMzAwLjg5NmExOC4xMyAxOC4xMyAwIDAgMCAyMC4zNjMgNy40ODlsMTYzLjU5OS00OC4zOTJhMTcuOTI5IDE3LjkyOSAwIDAgMCAxMS4yNi05LjcyMmExNy41NDIgMTcuNTQyIDAgMCAwLS4xMDEtMTQuNzZsLS4wMDguMDA4Wm0tMjMuODAyIDkuNjgzbC0xMzguODIzIDQxLjA1Yy00LjIzNSAxLjI2LTguMy0yLjQxMS03LjQxOS02LjY4NWw0OS41OTgtMjM3LjQ4NGMuOTI3LTQuNDQzIDcuMDYzLTUuMTQ3IDkuMDAzLTEuMDM1bDkxLjgxNCAxOTQuOTczYTYuNjMgNi42MyAwIDAgMS00LjE4IDkuMThoLjAwN1oiLz48L3N2Zz4=";
@@ -401,6 +422,14 @@ declare const features: readonly [{
401
422
  readonly image: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIwLjk3ZW0iIGhlaWdodD0iMWVtIiB2aWV3Qm94PSIwIDAgMjU2IDI2NSI+PHBhdGggZmlsbD0iIzRGQjU4QiIgZD0ibTIzMy41NiAxNDEuOTI3bC4xNy4wMTNsMTcuODkyIDEuODdhNC45MjcgNC45MjcgMCAwIDEgMy4yMjUgMS43MDdsLjEzMy4xNjNsLS4xNy4wODVhNC45MyA0LjkzIDAgMCAxIDEuMDIgMy43NGExMzMuMjcyIDEzMy4yNzIgMCAwIDEtNDEuNjA0IDgxLjA4M2ExMjguODYgMTI4Ljg2IDAgMCAxLTg3LjYyOSAzNC4zOGExMjcuNDg4IDEyNy40ODggMCAwIDEtNDYuMTU2LTguNTdsLS44MDItLjMxMmE0LjcxNiA0LjcxNiAwIDAgMS0yLjY4Ni0yLjUzM2wtLjA3Ny0uMTg3YTQuODkxIDQuODkxIDAgMCAxLS4wODMtMy42Nmw3LjA2Mi0xNy4yM2E0Ljg0NiA0Ljg0NiAwIDAgMSA2LjExOC0yLjc5OWwuMTYzLjA2YzM2LjA5NyAxMy45MzkgNzYuOTggNi4wODkgMTA1LjM0OS0yMC4yMjdhMTA0LjQ1NSAxMDQuNDU1IDAgMCAwIDMyLjg5MS02My4zMmE0LjkzIDQuOTMgMCAwIDEgNS4wMTMtNC4yN2wuMTcuMDA3Wm0tMTkwLjA4IDY0LjMxbC4yNTEtLjAwMmwuMjUzLjAwMmM4LjEyLjA5MyAxNC42NTggNi42NTkgMTQuNzQ2IDE0Ljc0OXYuMjUzYzAgLjA4NCAwIC4xNjgtLjAwMi4yNTJjLS4xNDEgOC4yODQtNi45NyAxNC44ODYtMTUuMjU0IDE0Ljc0NWMtOC4yODQtLjE0MS0xNC44ODUtNi45Ny0xNC43NDUtMTUuMjU0Yy4xMzktOC4xMTUgNi42OTUtMTQuNjE1IDE0Ljc1LTE0Ljc0NVpNNC45MyAxNDcuMDgyaDE0Ni4zMTZhNC45NzMgNC45NzMgMCAwIDEgNC45MjggNC44NDRsLjAwMi4xNzF2MTguMzE2YTQuOTc0IDQuOTc0IDAgMCAxLTQuNzYgNS4wMWwtLjE3LjAwNUg0LjkzQTQuOTc1IDQuOTc1IDAgMCAxIDAgMTcwLjU4NHYtMTguNjU5YTQuOTc1IDQuOTc1IDAgMCAxIDQuNzU1LTQuODM4bC4xNzUtLjAwNVpNMTY5LjU2IDcuMzExYTQuOTc0IDQuOTc0IDAgMCAxIDIuODQ4IDIuNjM1YTUuMDk2IDUuMDk2IDAgMCAxIDAgMy44NjdsLTYuMzc1IDE2Ljk5OWE0Ljg0NSA0Ljg0NSAwIDAgMS02LjE2MiAyLjk3NEExMDEuMjI4IDEwMS4yMjggMCAwIDAgNjIuMTMgNTEuMjUyYTEwNS4yNjcgMTA1LjI2NyAwIDAgMC0zNC41MDcgNTQuOTlhNC45MyA0LjkzIDAgMCAxLTQuNzYgMy42OThoLTEuMTA1TDQuMjUgMTA1LjczM2E0Ljg4NiA0Ljg4NiAwIDAgMS0zLjEwMy0yLjI5NWgtLjA4NUE0LjkyOSA0LjkyOSAwIDAgMSAuNTEgOTkuNTdhMTMzLjM5MyAxMzMuMzkzIDAgMCAxIDQ0LjQxLTcwLjIwNEM3OS43MzkuNyAxMjcuMDE5LTcuNjY2IDE2OS41NiA3LjMxMVptLTY0LjgwNyA3My40MzRIMjUxLjA3YTQuOTcyIDQuOTcyIDAgMCAxIDQuOTIyIDQuNjdsLjAwOC4xNzR2MTguMzE3YTQuOTczIDQuOTczIDAgMCAxLTQuNzYgNS4wMWwtLjE3LjAwNUgxMDQuNzU0YTQuOTcyIDQuOTcyIDAgMCAxLTQuODg2LTQuODQybC0uMDAyLS4xNzNWODUuNzU5YTQuOTcyIDQuOTcyIDAgMCAxIDQuNzE1LTUuMDA4bC4xNzMtLjAwNlptMTAxLjU3Mi01NS44ODNsLjI1Mi0uMDAybC4yNTMuMDAyYzguMTIuMDkzIDE0LjY1OCA2LjY1OSAxNC43NDYgMTQuNzQ4di4yNTNjMCAuMDg1IDAgLjE3LS4wMDIuMjUzYy0uMTQgOC4yODQtNi45NyAxNC44ODUtMTUuMjU0IDE0Ljc0NGMtOC4yODQtLjE0LTE0Ljg4NS02Ljk3LTE0Ljc0NC0xNS4yNTNjLjEzOC04LjExNiA2LjY5NC0xNC42MTYgMTQuNzQ5LTE0Ljc0NVoiLz48L3N2Zz4=";
402
423
  readonly url: "https://segment.com";
403
424
  readonly disabled: true;
425
+ }, {
426
+ readonly category: "Hosting";
427
+ readonly label: "DIY";
428
+ readonly flag: "hosting-diy";
429
+ readonly image: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pg0KDQo8IURPQ1RZUEUgc3ZnICBQVUJMSUMgJy0vL1czQy8vRFREIFNWRyAxLjEvL0VOJyAgJ2h0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCc+DQoNCjwhLS0gVXBsb2FkZWQgdG86IFNWRyBSZXBvLCB3d3cuc3ZncmVwby5jb20sIEdlbmVyYXRvcjogU1ZHIFJlcG8gTWl4ZXIgVG9vbHMgLS0+DQo8c3ZnIGZpbGw9IiMwMDAwMDAiIHdpZHRoPSI4MDBweCIgaGVpZ2h0PSI4MDBweCIgdmlld0JveD0iMCAwIDEwNjkgMTA2OSIgc3R5bGU9ImZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDoyOyIgdmVyc2lvbj0iMS4xIiB4bWw6c3BhY2U9InByZXNlcnZlIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnNlcmlmPSJodHRwOi8vd3d3LnNlcmlmLmNvbS8iIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4NCg0KPHJlY3QgaGVpZ2h0PSIxMDY2LjY3IiBpZD0iU3RvcmFnZS1ob3N0aW5nIiBzdHlsZT0iZmlsbDpub25lOyIgd2lkdGg9IjEwNjYuNjciIHg9IjEuMTY3IiB5PSIwLjU5MiIvPg0KDQo8Zz4NCg0KPHBhdGggZD0iTTcxMS41ODQsNjE3LjI1OGwtMCw4My4zMzRjLTAsMTcuMjQ3IDE0LjAwMiwzMS4yNSAzMS4yNSwzMS4yNWMxNy4yNDcsLTAgMzEuMjUsLTE0LjAwMyAzMS4yNSwtMzEuMjVsLTAsLTgzLjMzNGMtMCwtMTcuMjQ3IC0xNC4wMDMsLTMxLjI1IC0zMS4yNSwtMzEuMjVjLTE3LjI0OCwwIC0zMS4yNSwxNC4wMDMgLTMxLjI1LDMxLjI1Wm0tMCwtMzMzLjMzM2wtMCw4My4zMzNjLTAsMTcuMjQ4IDE0LjAwMiwzMS4yNSAzMS4yNSwzMS4yNWMxNy4yNDcsMCAzMS4yNSwtMTQuMDAyIDMxLjI1LC0zMS4yNWwtMCwtODMuMzMzYy0wLC0xNy4yNDcgLTE0LjAwMywtMzEuMjUgLTMxLjI1LC0zMS4yNWMtMTcuMjQ4LC0wIC0zMS4yNSwxNC4wMDMgLTMxLjI1LDMxLjI1Wm0xLjE2NSwtMTM4LjAyNGwtMCwtMjguNjQzYy0wLC0xNy4yNTkgLTEzLjk5MSwtMzEuMjUgLTMxLjI1LC0zMS4yNWwtMjkyLjgzMiwwYy0xNy4yNTksMCAtMzEuMjUsMTMuOTkxIC0zMS4yNSwzMS4yNWwwLDI4LjY0M2MwLDI5Ljg2OSAxMC42Niw1OC40MjkgMjkuMjE1LDc5LjU1YzE5LjkxLDIyLjY2NSA0Ny4wODUsMzUuMDM0IDc1LjI0MywzNS4wMzRsMTQ2LjQxNiwtMGMyOC4xNTgsLTAgNTUuMzMzLC0xMi4zNjkgNzUuMjQzLC0zNS4wMzRjMTguNTU1LC0yMS4xMjEgMjkuMjE1LC00OS42ODEgMjkuMjE1LC03OS41NWwtMCwtMFptLTYyLjU1NCwyLjYwN2MtMC41NDEsMTMuMzk1IC01LjI1MywyNi4xNzUgLTEzLjYxNSwzNS42OTRjLTcuNTQ5LDguNTkyIC0xNy42MTIsMTMuNzgyIC0yOC4yODcsMTMuNzgzYy0wLjAwMiwtMCAtMTQ2LjQxOCwtMCAtMTQ2LjQxOCwtMGMtMTAuNjc3LC0wLjAwMSAtMjAuNzQsLTUuMTkxIC0yOC4yODksLTEzLjc4M2MtOC4zNjIsLTkuNTE5IC0xMy4wNzQsLTIyLjI5OSAtMTMuNjE1LC0zNS42OTRsMjMwLjIyNCwwWiIgc3R5bGU9ImZpbGwtb3BhY2l0eTowLjU7Ii8+DQoNCjxwYXRoIGQ9Ik0xMDEuNjg5LDQ5Mi4yNThjLTIyLjEzMSwyMC44OTcgLTM1LjkzOSw1MC41MDMgLTM1LjkzOSw4My4zMzRjMCw2Mi4wMiAwLDE0Ni4zMTMgMCwyMDguMzMzYzAsNTIuNDQ4IDM1LjIzOSw5Ni42NjYgODMuMzM0LDExMC4yN2wtMCw1Ni4zOTdjLTAsMTcuMjQ3IDE0LjAwMiwzMS4yNSAzMS4yNSwzMS4yNWMxNy4yNDcsLTAgMzEuMjUsLTE0LjAwMyAzMS4yNSwtMzEuMjVsLTAsLTUyLjA4NGw2NDUuODMzLDBsMCw1Mi4wODRjMCwxNy4yNDcgMTQuMDAzLDMxLjI1IDMxLjI1LDMxLjI1YzE3LjI0OCwtMCAzMS4yNSwtMTQuMDAzIDMxLjI1LC0zMS4yNWwwLC01Ni4zOTdjNDguMDk1LC0xMy42MDQgODMuMzM0LC01Ny44MjIgODMuMzMzLC0xMTAuMjdsMCwtMjA4LjMzM2MwLjAwMSwtMzIuODMxIC0xMy44MDcsLTYyLjQzNyAtMzUuOTM4LC04My4zMzRjMjIuMTMxLC0yMC44OTYgMzUuOTM5LC01MC41MDIgMzUuOTM4LC04My4zMzNsMCwtMjA4LjMzM2MwLjAwMSwtNjMuMjgzIC01MS4zLC0xMTQuNTgzIC0xMTQuNTgyLC0xMTQuNTg0bC03MDguMzM1LDBjLTYzLjI4MiwwLjAwMSAtMTE0LjU4Myw1MS4zMDEgLTExNC41ODMsMTE0LjU4NGMwLDYyLjAyIDAsMTQ2LjMxMyAwLDIwOC4zMzNjMCwzMi44MzEgMTMuODA4LDYyLjQzNyAzNS45MzksODMuMzMzWm04MzkuMDYxLDgzLjMzNGwwLDIwOC4zMzNjMC4wMDEsMjguNzY0IC0yMy4zMTcsNTIuMDgyIC01Mi4wODEsNTIuMDgzYy0wLjAwMywwIC03MDguMzM1LDAgLTcwOC4zMzUsMGMtMjguNzY2LC0wLjAwMSAtNTIuMDg0LC0yMy4zMTkgLTUyLjA4NCwtNTIuMDgzYzAsLTYyLjAyIDAsLTE0Ni4zMTMgMCwtMjA4LjMzM2MwLC0yOC43NjQgMjMuMzE4LC01Mi4wODMgNTIuMDgyLC01Mi4wODRjMC4wMDMsMCA3MDguMzM1LDAgNzA4LjMzNSwwYzI4Ljc2NiwwLjAwMSA1Mi4wODQsMjMuMzIgNTIuMDgzLDUyLjA4NFptLTY1Ni4yNSwtMzEuMjVjLTYzLjI0LC0wIC0xMTQuNTgzLDUxLjM0MyAtMTE0LjU4MywxMTQuNTgzYzAsNjMuMjQgNTEuMzQzLDExNC41ODMgMTE0LjU4MywxMTQuNTgzYzYzLjI0MSwwIDExNC41ODQsLTUxLjM0MyAxMTQuNTg0LC0xMTQuNTgzYy0wLC02My4yNCAtNTEuMzQzLC0xMTQuNTgzIC0xMTQuNTg0LC0xMTQuNTgzWm01NTIuMDg0LDcyLjkxNmwtMCw4My4zMzRjLTAsMTcuMjQ3IDE0LjAwMiwzMS4yNSAzMS4yNSwzMS4yNWMxNy4yNDcsLTAgMzEuMjUsLTE0LjAwMyAzMS4yNSwtMzEuMjVsLTAsLTgzLjMzNGMtMCwtMTcuMjQ3IC0xNC4wMDMsLTMxLjI1IC0zMS4yNSwtMzEuMjVjLTE3LjI0OCwwIC0zMS4yNSwxNC4wMDMgLTMxLjI1LDMxLjI1Wm0tNTUyLjA4NCwtMTAuNDE2YzI4Ljc0NiwtMCA1Mi4wODQsMjMuMzM3IDUyLjA4NCw1Mi4wODNjLTAsMjguNzQ2IC0yMy4zMzgsNTIuMDgzIC01Mi4wODQsNTIuMDgzYy0yOC43NDUsMCAtNTIuMDgzLC0yMy4zMzcgLTUyLjA4MywtNTIuMDgzYzAsLTI4Ljc0NiAyMy4zMzgsLTUyLjA4MyA1Mi4wODMsLTUyLjA4M1ptNjU2LjI1LC00MDYuMjVsMCwyMDguMzMzYzAuMDAxLDI4Ljc2NCAtMjMuMzE3LDUyLjA4MiAtNTIuMDgxLDUyLjA4M2MtMC4wMDMsMCAtNzA4LjMzNSwwIC03MDguMzM1LDBjLTI4Ljc2NiwtMC4wMDEgLTUyLjA4NCwtMjMuMzE5IC01Mi4wODQsLTUyLjA4M2MwLC02Mi4wMiAwLC0xNDYuMzEzIDAsLTIwOC4zMzNjMCwtMjguNzY0IDIzLjMxOCwtNTIuMDgzIDUyLjA4MiwtNTIuMDg0YzAuMDAzLDAgNzA4LjMzNSwwIDcwOC4zMzUsMGMyOC43NjYsMC4wMDEgNTIuMDg0LDIzLjMyIDUyLjA4Myw1Mi4wODRabS02NTYuMjUsMTAuNDE2Yy02My4yNCwwIC0xMTQuNTgzLDUxLjM0MyAtMTE0LjU4MywxMTQuNTg0YzAsNjMuMjQgNTEuMzQzLDExNC41ODMgMTE0LjU4MywxMTQuNTgzYzYzLjI0MSwtMCAxMTQuNTg0LC01MS4zNDMgMTE0LjU4NCwtMTE0LjU4M2MtMCwtNjMuMjQxIC01MS4zNDMsLTExNC41ODQgLTExNC41ODQsLTExNC41ODRabTU1Mi4wODQsNzIuOTE3bC0wLDgzLjMzM2MtMCwxNy4yNDggMTQuMDAyLDMxLjI1IDMxLjI1LDMxLjI1YzE3LjI0NywwIDMxLjI1LC0xNC4wMDIgMzEuMjUsLTMxLjI1bC0wLC04My4zMzNjLTAsLTE3LjI0NyAtMTQuMDAzLC0zMS4yNSAtMzEuMjUsLTMxLjI1Yy0xNy4yNDgsLTAgLTMxLjI1LDE0LjAwMyAtMzEuMjUsMzEuMjVabS01NTIuMDg0LC0xMC40MTdjMjguNzQ2LDAgNTIuMDg0LDIzLjMzOCA1Mi4wODQsNTIuMDg0Yy0wLDI4Ljc0NSAtMjMuMzM4LDUyLjA4MyAtNTIuMDg0LDUyLjA4M2MtMjguNzQ1LC0wIC01Mi4wODMsLTIzLjMzOCAtNTIuMDgzLC01Mi4wODNjMCwtMjguNzQ2IDIzLjMzOCwtNTIuMDg0IDUyLjA4MywtNTIuMDg0WiIvPg0KDQo8L2c+DQoNCjwvc3ZnPg==";
430
+ readonly invisibleCli: true;
431
+ readonly selected: true;
432
+ readonly tooltip: "Set up deployment yourself";
404
433
  }, {
405
434
  readonly category: "Hosting";
406
435
  readonly label: "Cloudflare";
@@ -469,10 +498,22 @@ declare const features: readonly [{
469
498
  readonly label: "Docs";
470
499
  readonly href: "https://github.com/aws/aws-cdk";
471
500
  }];
501
+ }, {
502
+ readonly category: "Hosting";
503
+ readonly label: "Docker";
504
+ readonly flag: "docker";
505
+ readonly image: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48IS0tIFVwbG9hZGVkIHRvOiBTVkcgUmVwbywgd3d3LnN2Z3JlcG8uY29tLCBHZW5lcmF0b3I6IFNWRyBSZXBvIE1peGVyIFRvb2xzIC0tPgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKYXJpYS1sYWJlbD0iRG9ja2VyIiByb2xlPSJpbWciCnZpZXdCb3g9IjAgMCA1MTIgNTEyIj48cmVjdAp3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIKcng9IjE1JSIKZmlsbD0iI2ZmZmZmZiIvPjxwYXRoIHN0cm9rZT0iIzA2NmRhNSIgc3Ryb2tlLXdpZHRoPSIzOCIgZD0iTTI5NiAyMjZoNDJtLTkyIDBoNDJtLTkxIDBoNDJtLTkxIDBoNDFtLTkxIDBoNDJtOC00Nmg0MW04IDBoNDJtNyAwaDQybS00Mi00Nmg0MiIvPjxwYXRoIGZpbGw9IiMwNjZkYTUiIGQ9Im00NzIgMjI4cy0xOC0xNy01NS0xMWMtNC0yOS0zNS00Ni0zNS00NnMtMjkgMzUtOCA3NGMtNiAzLTE2IDctMzEgN0g2OGMtNSAxOS01IDE0NSAxMzMgMTQ1IDk5IDAgMTczLTQ2IDIwOC0xMzAgNTIgNCA2My0zOSA2My0zOSIvPjwvc3ZnPg==";
506
+ readonly url: "https://www.docker.com/";
507
+ readonly tagline: "A safer container ecosystem, for everyone";
508
+ readonly links: [{
509
+ readonly label: "Docs";
510
+ readonly href: "https://docs.docker.com";
511
+ }];
472
512
  }, {
473
513
  readonly category: "Hosting";
474
514
  readonly label: "Dokploy";
475
515
  readonly flag: "dokploy";
516
+ readonly dependsOn: readonly ["docker"];
476
517
  readonly image: "data:image/svg+xml;base64,PHN2ZwogICB2aWV3Qm94PSIwIDAgNTk5Ljk5OTk5IDU5OS45OTk5OSIKICAgY2xhc3M9ImgtMTAgdy1hdXRvIgogICB3aWR0aD0iNjAwIgogICBoZWlnaHQ9IjYwMCIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8cGF0aAogICAgIGlkPSJwYXRoNCIKICAgICBzdHlsZT0iZGlzcGxheTppbmxpbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlLXdpZHRoOjEuMDUxMjE7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1kYXNob2Zmc2V0OjEwNS44Mjc7cGFpbnQtb3JkZXI6c3Ryb2tlIGZpbGwgbWFya2VycyIKICAgICBkPSJtIDQxNS42NDY5NCwxMzUuMTMwNTggYyAtNC4xMzAyNSwwLjg4NzE2IC00LjcwODgyLDQuOTgzMTUgLTQuMTMwMTUsMTUuODg3OTUgMC42MTU2LDExLjYwMDQgNS4zOTg1MywyOC4xMTAxMiAyNi45NTM2MSw0My42ODAzMiA5LjM3NTc5LDcuMDA3MyAyMC4yODU3NSw1LjE0NTUyIDE2Ljg0Mzk2LDExLjQ4MzM1IC05LjQxNzExLDE0LjQ3OTI1IC0xMy44NDk5NywxNy4wNzIxMyAtMzMuMTMzODMsMjMuMDI3NDMgLTguOTUyNzMsMi43NjQ4MSAtMjQuMDU2NDIsMS41NDQ0IC00MS42MDkwNSwtMy4zNDg2OCAtMTcuNTUyNjIsLTQuODkzMDcgLTM3LjQ2OTcxLC0xMy4wMzI2NCAtNTYuOTk3MzYsLTIxLjgyNjk4IC0xOS41Mjc2LC04Ljc5NDM1IC0zOC42ODEwMiwtMTguMjI1MzIgLTU1LjIxNTIzLC0yNS43MzAwMiAtMTYuNTM0MTYsLTcuNTA0NjggLTI5LjUzNjUsLTEzLjM0MzU4IC00MS4yODQ2MywtMTQuMjk2MDUgLTYuMTE2MjIsLTAuNDk1ODUgLTEyLjM0OTU2LC0wLjcyMjQgLTE4LjgzOTY3LC0wLjc4NDI5IC0xOS40NzAzMiwtMC4xODU2OCAtNDEuMjQ4NjksMS4xMTY5MSAtNjkuMDk2NTQsMS4xMTY5MSAtMTguODcwNjcsMCAtMzIuOTE0NjMsNi4zMTU3OCAtMzkuNzE4MDg4LDE3LjgyMzM1IC02LjgwMzQ1OCwxMS41MDc1NiAtNi44NDI2MTksMjQuNTI3ODkgLTcuMjEyNjk5LDM4LjU5MDkxIC0wLjM2MTUzNCwxMy43MzgyOSAtMS4wMjQyLDIzLjk2MzMgLTAuMzQ0OTI4LDMzLjIxMTY4IDAuNjc5MjczLDkuMjQ4MzYgMy4xOTMyODUsMTguMDQ2NDUgOS4wMDA5ODUsMjUuNDQyNTcgMi42MjE0MywzLjMzODQgNS4zMTAxNyw1LjI5NzAxIDkuMzA4OTYsOC4yMjY5NiAzLjk5ODc5LDIuOTI5OTIgOS4wNjM4OCw2LjI5MDYxIDE1LjEwNSw5Ljk3MDA2IDEyLjA4MjIyLDcuMzU4ODkgMjguMDQwMjMsMTUuOTY3MTYgNDYuNDMxODcsMjQuMjM1MzMgMzYuNzgzMjcsMTYuNTM2MzQgODMuMTY4MjksMzEuODQ0MjggMTI3LjY5OTQ1LDMxLjg0NDI4IDEwMy4xNzAxMywwIDIwMi42MzMxMSwtNzkuODI2MjggMjAyLjYzMzExLC03OS44MjYyOCA0LjU2MTc2LC0zLjU5MTEyIDUuMzQ4NjIsLTEwLjIwMDM1IDEuNzU3NDksLTE0Ljc2MjEyIC0zLjU5MTEyLC00LjU2MTc2IC0xMC4yMDAzNSwtNS4zNDg2MiAtMTQuNzYyMTEsLTEuNzU3NDggMCwwIC05Ny41OTg2Myw3NS4zMjE2NyAtMTg5LjYyODQ5LDc1LjMyMTY3IC0zOS42MTQyNiwwIC04My45NjIxOSwtMTQuMjA5NjEgLTExOS4wNzgzLC0yOS45OTY0NSAtMTcuNTU4MDUsLTcuODkzNDEgLTMyLjg0MzE5LC0xNi4xNDk4OSAtNDQuMTE1OTMsLTIzLjAxNTc2IC01LjYzNjM3LC0zLjQzMjkyIC0xMC4yNzgxLC02LjUyNjIyIC0xMy42MTY0NSwtOC45NzIyMyAtMy4zMzgzNSwtMi40NDYwMyAtNS42MTc1OSwtNC43ODU3MiAtNS4xOTg1NywtNC4yNTIwNyAtMS4yODA5OCwtMS42MzEzNyAtMi4xNTM3NSwtMy4xOTg2MSAtMi44MzUzOSwtNC45NTAxMyBoIDUzLjg0NTc4IGMgMTkuMTA2NzksMCAzMi44MzI1OCw3Ljc0Njc1IDUyLjMyNDQsMTYuNzIwODIgMTkuNDkxODIsOC45NzQwNSA0NC4xNDQwOCwxOC4zNTQwMSA4MS4wNjQzMywxNy42NzM0NyA1Mi44NDgxNywtMC45NzQxNyA4NC41OTQ1OCwtMTEuNDI0OSAxMTQuODI4MywtMjguODQ2NyAxNy40ODAyOSwtMTAuMDcyOCAzMC40NjM0NSwtMTguNTg5OSA0MS43NTQ3MiwtMzEuMDk4NTcgNy4zMTgyNSwtOC41NjAyNCAxMS43NDM5MiwtMTQuNTEyIDE3LjQwNDI4LC0yNC4yNTc3MyAzLjQ2MjExLC02LjA4NzU0IDkuOTc4ODcsLTYuNzc0NCAxOC4wNjA1OCwtNi43MTcxMiAxNS4zOTk1LDAuMTA5MTUgMzUuMTM5NjEsLTE5LjIwMjg4IDQxLjcxNzY4LC0zMC4zMzQwNSA2LjU3ODA5LC0xMS4xMzExOCA5Ljk5NjgsLTIyLjIxODc2IDAuNDA5MzIsLTIyLjI2NjYxIC05LjU4NzQ3LC0wLjA0NzggLTkuMTg0NjksOS42NjY5NiAtMjMuMjI2NywxMC45MDE5NCAtMTMuOTk2MjksMC40NTczOCAtMzEuODQ0ODEsMi4zNjIwNyAtMzkuNTI5MDUsMTcuMjczMTUgLTEuMzcyMTksLTUuNDg4NzQgLTguMTA5OTIsLTIxLjQwNDU4IC0zMC4yNTEwMywtMjcuMDY4NjcgLTIyLjE0MTEyLC01LjY2NDA4IC0xMy41MjU4OSwtMjEuMjg2OTcgLTI3LjMxOTYzLC0xOC4zMjQxNiB6IG0gLTIwNy42MTk3MSw0OS4xNDgwNCBjIDE4LjU1OTM3LC0xLjMxODc3IDM0Ljk4NDMzLDUuNzU0NzYgNTEuNjQyNzYsMTMuMTcwOTEgMTYuMDU0NjIsNy4yODcwMiAzNS4zMDkxNCwxNi43NjQ5MSA1NS4yNzA2NiwyNS43NTQ2NSAxOS45NjE1Miw4Ljk4OTc1IDQwLjYxNywxNy41MDk5NSA1OS45ODQ2OSwyMi45MDkgOS4xNTc3MywyLjU1Mjg2IDE4LjAxNjM0LDQuNDE4NzkgMjYuNTI2NjMsNS4yNDU3OCAtMjYuMzY2MzgsMTQuNDkyOTQgLTUyLjQ5MTYxLDIyLjYxMzU0IC0xMDAuMDQxNTUsMjMuNDkwMDQgLTMzLjMyNjQsMC42MTQzIC01My4zMTY5MywtNy4yMDQwNCAtNzEuODgyNjYsLTE1Ljc1MTc0IC0xOC41NjU3MywtOC41NDc2OSAtMzYuMzE0OTEsLTE4LjY0NjY1IC02MS4xMTgwMiwtMTguNjQ2NjUgaCAtNTUuNzAxODMgYyAwLjEwNjc3LC01LjM4Mjk0IDAuMzE3MTMsLTExLjYxMTI2IDAuNTE1MzUsLTE5LjE0MzU0IDAuMzYxNzUsLTEzLjc0NjU3IDEuNTU4MTMsLTIzLjgxNDc1IDQuMjk1MTgsLTI4LjQ0NDI3IDIuNzM3MDMsLTQuNjI5NTEgNi41NDA4NiwtNy40OTgwOCAyMS42MTk2MSwtNy40OTgwOCAyOC40NzU3NSwwIDUwLjQ2MjMyLC0xLjIyMjUgNjguODg5MTgsLTEuMDg2MSB6IG0gLTI1LjcxMTU1LDIwLjIxMzIgYyAtNS45NjE1NSwtNWUtNCAtMTAuNzk0OCw0LjgzMTgyIC0xMC43OTU0MywxMC43OTMzOSAtNWUtNCw1Ljk2MjM1IDQuODMzMDgsMTAuNzk1OTQgMTAuNzk1NDMsMTAuNzk1NDMgNS45NjE1NywtNi4zZS00IDEwLjc5MzksLTQuODMzODggMTAuNzkzNCwtMTAuNzk1NDMgLTYuM2UtNCwtNS45NjA3NyAtNC44MzI2MywtMTAuNzkyNzYgLTEwLjc5MzQsLTEwLjc5MzM5IHogbSAtNzIuMTcwMDksMTAxLjc0MzYgYyAtMC42NzU3OSwtMC4wMTggLTEuMzU2MDQsMC4wMDIgLTIuMDM2NzIsMC4wNjE3IC00Ljc0NDEsMC40MTcwNCAtOS4yNDU1NDYsMy4wOTcxNiAtMTEuODY1MTI0LDYuNjQ4MDkgLTIuNjE5NTc3LDMuNTUwOTMgLTMuNjU4NzA0LDcuNjgxNzEgLTMuNjU4NzA0LDExLjczNzgzIC00LjgxZS00LDEwNy43OTU1NiA5Mi44MzU5MTgsMTg4Ljc1OTg2IDIwNy40MTQ4NjgsMTg4Ljc2IDExNC41Nzg5NCwtMS40ZS00IDIwNy40MTUzNiwtODAuOTY0NDQgMjA3LjQxNDg3LC0xODguNzYgMCwtNC4wNTYxMiAtMS4wMzkxMiwtOC4xODY5IC0zLjY1ODY5LC0xMS43Mzc4MyAtMi42MTk1OSwtMy41NTA5MyAtNy4xMjEwMywtNi4yMzEwNSAtMTEuODY1MTMsLTYuNjQ4MDkgLTEuMzYxMzYsLTAuMTE5NzMgLTIuNzE4OTQsLTAuMDc2NiAtNC4wNDg4LDAuMTAwNiAtMy41NTc0MywwLjQ3MzYgLTYuODk1MywxLjg3NTc1IC0xMC4wODcxLDMuOTIxNTEgLTMyLjYzMzc3LDIwLjkxNjQ1IC05NS41MDU3OSw3My41NTE4MiAtMTc3Ljc1NTE1LDczLjU1MTgyIC04Mi4yNDkzNSwwIC0xNDUuMTIxMzgsLTUyLjYzNTM3IC0xNzcuNzU1MTMsLTczLjU1MTg2IC0zLjE5MTgsLTIuMDQ1NzYgLTYuNTI5NjgsLTMuNDQ3OSAtMTAuMDg3MSwtMy45MjE1MSAtMC42NjQ5MywtMC4wODg1IC0xLjMzNjI5LC0wLjE0NDIyIC0yLjAxMjA5LC0wLjE2MjIgeiBtIDEuNTY2NTUsMTkuOTk5NjkgYyAwLjEzNzksMC4wODA3IDAuMTAzMTMsMC4wMTk5IDAuMjU0NiwwLjExNzAzIDI5LjQxMjQ4LDE4Ljg1MTgzIDk3LjU0MTU4LDc2LjU2MTc4IDE4OC4wMzMxNyw3Ni41NjE3OCA5MC40OTE1OSwwIDE1OC42MjA3MSwtNTcuNzA5OTUgMTg4LjAzMzE5LC03Ni41NjE3OCAwLjE1MTQ3LC0wLjA5NyAwLjExNjcsLTAuMDM2MiAwLjI1NDU5LC0wLjExNzAzIC0wLjA2ODEsNy4zNTMxMyAtMC4yMDg5OCwxMC40Mjg2MSAtMS4yMDMxNCwxNy40Nzg0MyAtNy4zNTgwNyw5LjkxODUyIC04Ny40MjM3MSw5Ni45NDEyOSAtMTg3LjA4NDY0LDk2Ljk0MTI5IC05OS42NjA5NCwwIC0xNzkuNzI2NTYsLTg3LjAyMjc3IC0xODcuMDg0NjMsLTk2Ljk0MTI5IC0wLjk5NDE2LC03LjA0OTgyIC0xLjEzNTA1LC0xMC4xMjUzIC0xLjIwMzE0LC0xNy40Nzg0MyB6IG0gMTEuNDkxNDYsNTguNjkzMjYgYyAzNC4wNzAzNSwzMS4zMTkxNSAxMDAuNjAwOTksNzcuMDYyNzUgMTc2Ljc5NjMxLDc3LjA2Mjc1IDc2LjE5NTMxLDAgMTQyLjcyNTk4LC00NS43NDM2IDE3Ni43OTYzMywtNzcuMDYyNzUgLTI2LjE5NDM4LDY1LjMwNTMgLTk0LjQ3NTA2LDEwOS40NzE1MSAtMTc2Ljc5NjMzLDEwOS40NzE2NSAtODIuMzIxMjgsLTEuMWUtNCAtMTUwLjYwMTk0LC00NC4xNjYzNSAtMTc2Ljc5NjMxLC0xMDkuNDcxNjUgeiIKICAgICAvPgo8L3N2Zz4K";
477
518
  readonly url: "https://dokploy.com";
478
519
  readonly tagline: "Open source alternative to Heroku, Vercel, and Netlify. Self-host on any VPS";
@@ -481,8 +522,6 @@ declare const features: readonly [{
481
522
  readonly label: "Docs";
482
523
  readonly href: "https://docs.dokploy.com";
483
524
  }];
484
- readonly disabled: true;
485
- readonly invisibleCli: true;
486
525
  }, {
487
526
  readonly category: "Linter";
488
527
  readonly label: "ESLint";
@@ -547,8 +586,8 @@ declare const features: readonly [{
547
586
  readonly href: "https://storybook.js.org/docs";
548
587
  }];
549
588
  }];
550
- declare const flags: ("vike" | "react" | "vue" | "solid" | "tailwindcss" | "compiled-css" | "daisyui" | "shadcn-ui" | "mantine" | "authjs" | "auth0" | "telefunc" | "trpc" | "ts-rest" | "hono" | "h3" | "express" | "fastify" | "drizzle" | "sqlite" | "kysely" | "prisma" | "plausible.io" | "google-analytics" | "segment" | "cloudflare" | "edgeone" | "vercel" | "netlify" | "aws" | "dokploy" | "eslint" | "prettier" | "biome" | "oxlint" | "sentry" | "logrocket" | "storybook")[];
551
- declare const cliFlags: ("vike" | "react" | "vue" | "solid" | "tailwindcss" | "compiled-css" | "daisyui" | "shadcn-ui" | "mantine" | "authjs" | "auth0" | "telefunc" | "trpc" | "ts-rest" | "hono" | "h3" | "express" | "fastify" | "drizzle" | "sqlite" | "kysely" | "prisma" | "plausible.io" | "google-analytics" | "segment" | "cloudflare" | "edgeone" | "vercel" | "netlify" | "aws" | "dokploy" | "eslint" | "prettier" | "biome" | "oxlint" | "sentry" | "logrocket" | "storybook")[];
589
+ declare const flags: ("vike" | "react" | "vue" | "solid" | "tailwindcss" | "compiled-css" | "daisyui" | "shadcn-ui" | "mantine" | "authjs" | "auth0" | "telefunc" | "trpc" | "ts-rest" | "hono" | "h3" | "express" | "fastify" | "sqlite" | "postgres" | "drizzle" | "kysely" | "prisma" | "plausible.io" | "google-analytics" | "segment" | "hosting-diy" | "cloudflare" | "edgeone" | "vercel" | "netlify" | "aws" | "docker" | "dokploy" | "eslint" | "prettier" | "biome" | "oxlint" | "sentry" | "logrocket" | "storybook")[];
590
+ declare const cliFlags: ("vike" | "react" | "vue" | "solid" | "tailwindcss" | "compiled-css" | "daisyui" | "shadcn-ui" | "mantine" | "authjs" | "auth0" | "telefunc" | "trpc" | "ts-rest" | "hono" | "h3" | "express" | "fastify" | "sqlite" | "postgres" | "drizzle" | "kysely" | "prisma" | "plausible.io" | "google-analytics" | "segment" | "hosting-diy" | "cloudflare" | "edgeone" | "vercel" | "netlify" | "aws" | "docker" | "dokploy" | "eslint" | "prettier" | "biome" | "oxlint" | "sentry" | "logrocket" | "storybook")[];
552
591
  type Flags = (typeof flags)[number];
553
592
  //#endregion
554
593
  export { CategoryLabels as a, flags as i, cliFlags as n, categories as o, features as r, categoriesGroups as s, Flags as t };
@@ -15,6 +15,7 @@ const features = [
15
15
  label: "FAQ",
16
16
  href: "https://vike.dev/faq"
17
17
  }],
18
+ tooltip: "Vike cannot be disabled. It is the foundation that allows all others tools to work cohesively",
18
19
  invisibleCli: true,
19
20
  readonly: true
20
21
  },
@@ -285,19 +286,6 @@ const features = [
285
286
  href: "https://fastify.dev/docs/latest/Reference/"
286
287
  }]
287
288
  },
288
- {
289
- category: "Database",
290
- label: "Drizzle",
291
- flag: "drizzle",
292
- image: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgd2lkdGg9IjI4MHB4IiBoZWlnaHQ9IjI4MHB4IiBzdHlsZT0ic2hhcGUtcmVuZGVyaW5nOmdlb21ldHJpY1ByZWNpc2lvbjsgdGV4dC1yZW5kZXJpbmc6Z2VvbWV0cmljUHJlY2lzaW9uOyBpbWFnZS1yZW5kZXJpbmc6b3B0aW1pemVRdWFsaXR5OyBmaWxsLXJ1bGU6ZXZlbm9kZDsgY2xpcC1ydWxlOmV2ZW5vZGQiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KPGc+PHBhdGggc3R5bGU9Im9wYWNpdHk6MSIgZmlsbD0iIzAwMDAwMCIgZD0iTSAtMC41LC0wLjUgQyA5Mi44MzMzLC0wLjUgMTg2LjE2NywtMC41IDI3OS41LC0wLjVDIDI3OS41LDkyLjgzMzMgMjc5LjUsMTg2LjE2NyAyNzkuNSwyNzkuNUMgMTg2LjE2NywyNzkuNSA5Mi44MzMzLDI3OS41IC0wLjUsMjc5LjVDIC0wLjUsMTg2LjE2NyAtMC41LDkyLjgzMzMgLTAuNSwtMC41IFoiLz48L2c+CjxnPjxwYXRoIHN0eWxlPSJvcGFjaXR5OjEiIGZpbGw9IiNjMWYyNGQiIGQ9Ik0gMTMzLjUsODQuNSBDIDE0Mi44MTQsODIuNzI2OSAxNDYuNjQ3LDg2LjM5MzUgMTQ1LDk1LjVDIDEzNS45MDYsMTEyLjAyOCAxMjYuNTcyLDEyOC4zNjIgMTE3LDE0NC41QyAxMTEuMjQ5LDE0OS45ODQgMTA2LjI0OSwxNDkuMzE3IDEwMiwxNDIuNUMgMTAxLjMzMywxNDAuODMzIDEwMS4zMzMsMTM5LjE2NyAxMDIsMTM3LjVDIDExMS41NDcsMTE5LjA0MSAxMjIuMDQ3LDEwMS4zNzUgMTMzLjUsODQuNSBaIi8+PC9nPgo8Zz48cGF0aCBzdHlsZT0ib3BhY2l0eToxIiBmaWxsPSIjYzBmMTRkIiBkPSJNIDIyMy41LDg0LjUgQyAyMzMuNTM5LDgzLjY5NzIgMjM3LjAzOSw4OC4wMzA1IDIzNCw5Ny41QyAyMjUuMzQ3LDExMi44MDEgMjE2LjY4MSwxMjguMTM1IDIwOCwxNDMuNUMgMjAzLjM4NywxNDkuNzM3IDE5OC4zODcsMTUwLjA3MSAxOTMsMTQ0LjVDIDE5MS41NzgsMTQxLjk3IDE5MS4yNDUsMTM5LjMwMyAxOTIsMTM2LjVDIDIwMC41MiwxMjIuNzk0IDIwOC41MiwxMDguNzk0IDIxNiw5NC41QyAyMTguMjg5LDkwLjg4MTIgMjIwLjc4OSw4Ny41NDc5IDIyMy41LDg0LjUgWiIvPjwvZz4KPGc+PHBhdGggc3R5bGU9Im9wYWNpdHk6MSIgZmlsbD0iI2MwZjE0ZCIgZD0iTSA3NS41LDEyMC41IEMgODMuOTg4NSwxMTkuNjE4IDg3LjgyMTgsMTIzLjI4NSA4NywxMzEuNUMgNzcuOTA1NywxNDguMDI4IDY4LjU3MjQsMTY0LjM2MiA1OSwxODAuNUMgNTYuMDQ1MywxODQuMjc3IDUyLjIxMiwxODUuNDQzIDQ3LjUsMTg0QyA0My44Njk3LDE4MC45NSA0Mi43MDMsMTc3LjExNyA0NCwxNzIuNUMgNTMsMTU2LjUgNjIsMTQwLjUgNzEsMTI0LjVDIDcyLjM5NjgsMTIyLjkzIDczLjg5NjgsMTIxLjU5NiA3NS41LDEyMC41IFoiLz48L2c+CjxnPjxwYXRoIHN0eWxlPSJvcGFjaXR5OjEiIGZpbGw9IiNjMWYyNGQiIGQ9Ik0gMTY1LjUsMTIwLjUgQyAxNzQuMTY0LDExOS4zMzIgMTc3Ljk5NywxMjIuOTk5IDE3NywxMzEuNUMgMTY3LjQxNCwxNDcuNjcxIDE1OC4wOCwxNjQuMDA0IDE0OSwxODAuNUMgMTQ2LjM5OCwxODQuMjEyIDE0Mi44OTgsMTg1LjM3OCAxMzguNSwxODRDIDEzMy45MzEsMTgxLjQ1OSAxMzIuNDMxLDE3Ny42MjUgMTM0LDE3Mi41QyAxNDMuNTcyLDE1Ni4zNjIgMTUyLjkwNiwxNDAuMDI4IDE2MiwxMjMuNUMgMTYzLjE0NSwxMjIuMzY0IDE2NC4zMTIsMTIxLjM2NCAxNjUuNSwxMjAuNSBaIi8+PC9nPgo8L3N2Zz4K",
293
- url: "https://orm.drizzle.team/",
294
- tagline: "Headless TypeScript ORM that feels like SPA with SSR",
295
- repo: "drizzle-team/drizzle-orm",
296
- links: [{
297
- label: "Docs & Getting started",
298
- href: "https://orm.drizzle.team/docs/overview"
299
- }]
300
- },
301
289
  {
302
290
  category: "Database",
303
291
  label: "SQLite",
@@ -316,6 +304,35 @@ const features = [
316
304
  },
317
305
  {
318
306
  category: "Database",
307
+ label: "PostgreSQL",
308
+ flag: "postgres",
309
+ image: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMjggMTI4Ij48cGF0aCBkPSJNOTMuODA5IDkyLjExMmMuNzg1LTYuNTMzLjU1LTcuNDkyIDUuNDE2LTYuNDMzbDEuMjM1LjEwOGMzLjc0Mi4xNyA4LjYzNy0uNjAyIDExLjUxMy0xLjkzOCA2LjE5MS0yLjg3MyA5Ljg2MS03LjY2OCAzLjc1OC02LjQwOS0xMy45MjQgMi44NzMtMTQuODgxLTEuODQyLTE0Ljg4MS0xLjg0MiAxNC43MDMtMjEuODE1IDIwLjg0OS00OS41MDggMTUuNTQzLTU2LjI4Ny0xNC40Ny0xOC40ODktMzkuNTE3LTkuNzQ2LTM5LjkzNi05LjUybC0uMTM0LjAyNWMtMi43NTEtLjU3MS01LjgzLS45MTItOS4yODktLjk2OC02LjMwMS0uMTA0LTExLjA4MiAxLjY1Mi0xNC43MDkgNC40MDIgMCAwLTQ0LjY4My0xOC40MDktNDIuNjA0IDIzLjE1MS40NDIgOC44NDEgMTIuNjcyIDY2Ljg5OCAyNy4yNiA0OS4zNjIgNS4zMzItNi40MTIgMTAuNDg0LTExLjgzNCAxMC40ODQtMTEuODM0IDIuNTU4IDEuNjk5IDUuNjIyIDIuNTY3IDguODM0IDIuMjU1bC4yNDktLjIxMmMtLjA3OC43OTYtLjA0NCAxLjU3NS4wOTkgMi40OTctMy43NTcgNC4xOTktMi42NTMgNC45MzYtMTAuMTY2IDYuNDgyLTcuNjAyIDEuNTY2LTMuMTM2IDQuMzU1LS4yMjEgNS4wODQgMy41MzUuODg0IDExLjcxMiAyLjEzNiAxNy4yMzgtNS41OThsLS4yMi44ODJjMS40NzQgMS4xOCAxLjM3NSA4LjQ3NyAxLjU4MyAxMy42OS4yMDkgNS4yMTQuNTU4IDEwLjA3OSAxLjYyMSAxMi45NDggMS4wNjMgMi44NjggMi4zMTcgMTAuMjU2IDEyLjE5MSA4LjE0IDguMjUyLTEuNzY0IDE0LjU2MS00LjMwOSAxNS4xMzYtMjcuOTg1Ij48L3BhdGg+PHBhdGggZD0iTTc1LjQ1OCAxMjUuMjU2Yy00LjM2NyAwLTcuMjExLTEuNjg5LTguOTM4LTMuMzItMi42MDctMi40Ni0zLjY0MS01LjYyOS00LjI1OS03LjUyMmwtLjI2Ny0uNzljLTEuMjQ0LTMuMzU4LTEuNjY2LTguMTkzLTEuOTE2LTE0LjQxOS0uMDM4LS45MzUtLjA2NC0xLjg5OC0uMDkzLTIuOTE5LS4wMjEtLjc0Ny0uMDQ3LTEuNjg0LS4wODUtMi42NjRhMTguOCAxOC44IDAgMDEtNC45NjIgMS41NjhjLTMuMDc5LjUyNi02LjM4OS4zNTYtOS44NC0uNTA3LTIuNDM1LS42MDktNC45NjUtMS44NzEtNi40MDctMy44Mi00LjIwMyAzLjY4MS04LjIxMiAzLjE4Mi0xMC4zOTYgMi40NTMtMy44NTMtMS4yODUtNy4zMDEtNC44OTYtMTAuNTQyLTExLjAzNy0yLjMwOS00LjM3NS00LjU0Mi0xMC4wNzUtNi42MzgtMTYuOTQzLTMuNjUtMTEuOTYtNS45NjktMjQuNTU3LTYuMTc1LTI4LjY5M0M0LjI5MiAyMy42OTggNy43NzcgMTQuNDQgMTUuMjk2IDkuMTI5IDI3LjE1Ny43NTEgNDUuMTI4IDUuNjc4IDUxLjY4IDcuOTE1YzQuNDAyLTIuNjUzIDkuNTgxLTMuOTQ0IDE1LjQzMy0zLjg1MSAzLjE0My4wNTEgNi4xMzYuMzI3IDguOTE2LjgyMyAyLjktLjkxMiA4LjYyOC0yLjIyMSAxNS4xODUtMi4xMzkgMTIuMDgxLjE0NCAyMi4wOTIgNC44NTIgMjguOTQ5IDEzLjYxNSA0Ljg5NCA2LjI1MiAyLjQ3NCAxOS4zODEuNTk3IDI2LjY1MS0yLjY0MiAxMC4yMjYtNy4yNzEgMjEuMTAyLTEyLjk1NyAzMC41NyAxLjU0NC4wMTEgMy43ODEtLjE3NCA2Ljk2MS0uODMxIDYuMjc0LTEuMjk1IDguMTA5IDIuMDY5IDguNjA3IDMuNTc1IDEuOTk1IDYuMDQyLTYuNjc3IDEwLjYwOC05LjM4MiAxMS44NjQtMy40NjYgMS42MDktOS4xMTcgMi41ODktMTMuNzQ1IDIuMzc3bC0uMjAyLS4wMTMtMS4yMTYtLjEwNy0uMTIgMS4wMTQtLjExNi45OTFjLS4zMTEgMTEuOTk5LTIuMDI1IDE5LjU5OC01LjU1MiAyNC42MTktMy42OTcgNS4yNjQtOC44MzUgNi43MzktMTMuMzYxIDcuNzA5LTEuNTQ0LjMzLTIuOTQ3LjQ3NC00LjIxOS40NzR6bS05LjE5LTQzLjY3MWMyLjgxOSAyLjI1NiAzLjA2NiA2LjUwMSAzLjI4NyAxNC40MzQuMDI4Ljk5LjA1NCAxLjkyNy4wODkgMi44MDIuMTA2IDIuNjUuMzU1IDguODU1IDEuMzI3IDExLjQ3Ny4xMzcuMzcxLjI2Ljc0Ny4zOSAxLjE0NiAxLjA4MyAzLjMxNiAxLjYyNiA0Ljk3OSA2LjMwOSAzLjk3OCAzLjkzMS0uODQzIDUuOTUyLTEuNTk5IDcuNTM0LTMuODUxIDIuMjk5LTMuMjc0IDMuNTg1LTkuODYgMy44MjEtMTkuNTc1bDQuNzgzLjExNi00Ljc1LS41Ny4xNC0xLjE4NmMuNDU1LTMuOTEuNzgzLTYuNzM0IDMuMzk2LTguNjAyIDIuMDk3LTEuNDk4IDQuNDg2LTEuMzUzIDYuMzg5LTEuMDEtMi4wOTEtMS41OC0yLjY2OS0zLjQzMy0yLjgyMy00LjE5M2wtLjM5OS0xLjk2NSAxLjEyMS0xLjY2M2M2LjQ1Ny05LjU4IDExLjc4MS0yMS4zNTQgMTQuNjA5LTMyLjMwNCAyLjkwNi0xMS4yNTEgMi4wMi0xNy4yMjYgMS4xMzQtMTguMzU2LTExLjcyOS0xNC45ODctMzIuMDY4LTguNzk5LTM0LjE5Mi04LjA5N2wtLjM1OS4xOTQtMS44LjMzNS0uOTIyLS4xOTFjLTIuNTQyLS41MjgtNS4zNjYtLjgyLTguMzkzLS44NjktNC43NTYtLjA4LTguNTkzIDEuMDQ0LTExLjczOSAzLjQzMWwtMi4xODMgMS42NTUtMi41MzMtMS4wNDNjLTUuNDEyLTIuMjEzLTIxLjMwOC02LjY2Mi0yOS42OTYtLjcyMS00LjY1NiAzLjI5OC02Ljc3NyA5Ljc2LTYuMzA1IDE5LjIwNy4xNTYgMy4xMTkgMi4yNzUgMTQuOTI2IDUuNzcxIDI2LjM3NyA0LjgzMSAxNS44MjUgOS4yMjEgMjEuMDgyIDExLjA1NCAyMS42OTMuMzIuMTA4IDEuMTUtLjUzNyAxLjk3Ni0xLjUyOWEyNzAuNzA4IDI3MC43MDggMCAwMTEwLjY5NC0xMi4wN2wyLjc3LTIuOTE1IDMuMzQ5IDIuMjI1YzEuMzUuODk3IDIuODM5IDEuNDA2IDQuMzY4IDEuNTAybDcuOTg3LTYuODEyLTEuMTU3IDExLjgwOGMtLjAyNi4yNjUtLjAzOS42MjYuMDY1IDEuMjk2bC4zNDggMi4yMzgtMS41MSAxLjY4OC0uMTc0LjE5NiA0LjM4OCAyLjAyNSAxLjgzNi0yLjMwMXoiPjwvcGF0aD48cGF0aCBmaWxsPSIjMzM2NzkxIiBkPSJNMTE1LjczMSA3Ny40NGMtMTMuOTI1IDIuODczLTE0Ljg4Mi0xLjg0Mi0xNC44ODItMS44NDIgMTQuNzAzLTIxLjgxNiAyMC44NDktNDkuNTEgMTUuNTQ1LTU2LjI4N0MxMDEuOTI0LjgyMyA3Ni44NzUgOS41NjYgNzYuNDU3IDkuNzkzbC0uMTM1LjAyNGMtMi43NTEtLjU3MS01LjgzLS45MTEtOS4yOTEtLjk2Ny02LjMwMS0uMTAzLTExLjA4IDEuNjUyLTE0LjcwNyA0LjQwMiAwIDAtNDQuNjg0LTE4LjQwOC00Mi42MDYgMjMuMTUxLjQ0MiA4Ljg0MiAxMi42NzIgNjYuODk5IDI3LjI2IDQ5LjM2MyA1LjMzMi02LjQxMiAxMC40ODMtMTEuODM0IDEwLjQ4My0xMS44MzQgMi41NTkgMS42OTkgNS42MjIgMi41NjcgOC44MzMgMi4yNTVsLjI1LS4yMTJjLS4wNzguNzk2LS4wNDIgMS41NzUuMSAyLjQ5Ny0zLjc1OCA0LjE5OS0yLjY1NCA0LjkzNi0xMC4xNjcgNi40ODItNy42MDIgMS41NjYtMy4xMzYgNC4zNTUtLjIyIDUuMDg0IDMuNTM0Ljg4NCAxMS43MTIgMi4xMzYgMTcuMjM3LTUuNTk4bC0uMjIxLjg4MmMxLjQ3MyAxLjE4IDIuNTA3IDcuNjcyIDIuMzM0IDEzLjU1Ny0uMTc0IDUuODg1LS4yOSA5LjkyNi44NzEgMTMuMDgyIDEuMTYgMy4xNTYgMi4zMTYgMTAuMjU2IDEyLjE5MiA4LjE0IDguMjUyLTEuNzY4IDEyLjUyOC02LjM1MSAxMy4xMjQtMTMuOTk1LjQyMi01LjQzNSAxLjM3Ny00LjYzMSAxLjQzOC05LjQ5bC43NjctMi4zYy44ODQtNy4zNjcuMTQtOS43NDMgNS4yMjUtOC42MzhsMS4yMzUuMTA4YzMuNzQyLjE3IDguNjM5LS42MDIgMTEuNTE0LTEuOTM4IDYuMTktMi44NzEgOS44NjEtNy42NjcgMy43NTgtNi40MDh6Ij48L3BhdGg+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTc1Ljk1NyAxMjIuMzA3Yy04LjIzMiAwLTEwLjg0LTYuNTE5LTExLjkwNy05LjE4NS0xLjU2Mi0zLjkwNy0xLjg5OS0xOS4wNjktMS41NTEtMzEuNTAzYTEuNTkgMS41OSAwIDAxMS42NC0xLjU1IDEuNTk0IDEuNTk0IDAgMDExLjU1IDEuNjM5Yy0uNDAxIDE0LjM0MS4xNjggMjcuMzM3IDEuMzI0IDMwLjIyOSAxLjgwNCA0LjUwOSA0LjU0IDguNDUzIDEyLjI3NSA2Ljc5NiA3LjM0My0xLjU3NSAxMC4wOTMtNC4zNTkgMTEuMzE4LTExLjQ2Ljk0LTUuNDQ5IDIuNzk5LTIwLjk1MSAzLjAyOC0yNC4wMWExLjU5MyAxLjU5MyAwIDAxMS43MS0xLjQ3MiAxLjU5NyAxLjU5NyAwIDAxMS40NzIgMS43MWMtLjIzOSAzLjE4NS0yLjA4OSAxOC42NTctMy4wNjUgMjQuMzE1LTEuNDQ2IDguMzg3LTUuMTg1IDEyLjE5MS0xMy43OTQgMTQuMDM3LTEuNDYzLjMxMy0yLjc5Mi40NTMtNCAuNDU0ek0zMS4zMjEgOTAuNDY2YTYuNzEgNi43MSAwIDAxLTIuMTE2LS4zNWMtNS4zNDctMS43ODQtMTAuNDQtMTAuNDkyLTE1LjEzOC0yNS44ODUtMy41NzYtMTEuNzE3LTUuODQyLTIzLjk0Ny02LjA0MS0yNy45MjItLjU4OS0xMS43ODQgMi40NDUtMjAuMTIxIDkuMDItMjQuNzc4IDEzLjAwNy05LjIxNiAzNC44ODgtLjQ0IDM1LjgxMy0uMDYyYTEuNTk2IDEuNTk2IDAgMDEtMS4yMDcgMi45NTVjLS4yMTEtLjA4Ni0yMS4xOTMtOC40OTItMzIuNzY4LS4yODUtNS42MjIgMy45ODYtOC4yMDMgMTEuMzkyLTcuNjcyIDIyLjAxMS4xNjcgMy4zNDkgMi4yODQgMTUuMjg1IDUuOTA2IDI3LjE0OSA0LjE5NCAxMy43NDIgOC45NjcgMjIuNDEzIDEzLjA5NiAyMy43OS42NDguMjE2IDIuNjIuODczIDUuNDM5LTIuNTE3QTI0NS4yNzIgMjQ1LjI3MiAwIDAxNDUuODggNzMuMDQ2YTEuNTk2IDEuNTk2IDAgMDEyLjMwNCAyLjIwOGMtLjA0OC4wNS00Ljg0NyA1LjA2Ny0xMC4wNzcgMTEuMzU5LTIuNDc3IDIuOTc5LTQuODUxIDMuODUzLTYuNzg2IDMuODUzem02OS40MjktMTMuNDQ1YTEuNTk2IDEuNTk2IDAgMDEtMS4zMjItMi40ODdjMTQuODYzLTIyLjA1NSAyMC4wOC00OC43MDQgMTUuNjEyLTU0LjQxNC01LjYyNC03LjE4Ni0xMy41NjUtMTAuOTM5LTIzLjYwNC0xMS4xNTYtNy40MzMtLjE2LTEzLjM0MSAxLjczOC0xNC4zMDcgMi4wNjlsLS4yNDMuMDk5Yy0uOTcxLjMwNS0xLjcxNi0uMjI3LTEuOTk3LS44NDlhMS42IDEuNiAwIDAxLjYzMS0yLjAyNWMuMDQ2LS4wMjcuMTkyLS4wODkuNDI5LS4xNzZsLS4wMjEuMDA2LjAyMS0uMDA3YzEuNjQxLS42MDEgNy42MzktMi40IDE1LjA2OC0yLjMxNSAxMS4xMDguMTE4IDIwLjI4NCA0LjQwMSAyNi41MzQgMTIuMzg4IDIuOTU3IDMuNzc5IDIuOTY0IDEyLjQ4NS4wMTkgMjMuODg3LTMuMDAyIDExLjYyNS04LjY1MSAyNC4xMTgtMTUuNDk3IDM0LjI3Ny0uMzA2LjQ1Ny0uODEuNzAzLTEuMzIzLjcwM3ptLjc2IDEwLjIxYy0yLjUzOCAwLTQuODEzLS4zNTgtNi4xNzUtMS4xNzQtMS40LS44MzktMS42NjctMS45NzktMS43MDItMi41ODQtLjM4Mi02LjcxIDMuMzItNy44NzggNS4yMDgtOC40MTEtLjI2My0uMzk4LS42MzctLjg2Ni0xLjAyNC0xLjM0OS0xLjEwMS0xLjM3Ni0yLjYwOS0zLjI2LTMuNzcxLTYuMDc4LS4xODItLjQ0LS43NTItMS40NjMtMS40MTItMi42NDgtMy41NzktNi40MTgtMTEuMDI2LTE5Ljc3My02LjI0Mi0yNi42MTIgMi4yMTQtMy4xNjUgNi42MjMtNC40MTEgMTMuMTE5LTMuNzE2Qzk3LjYgMjguODM3IDg4LjUgMTAuNjI1IDY2LjkwNyAxMC4yNzFjLTYuNDk0LS4xMDgtMTEuODIgMS44ODktMTUuODIyIDUuOTMtOC45NiA5LjA0OS04LjYzNiAyNS40MjItOC42MzEgMjUuNTg2YTEuNTk1IDEuNTk1IDAgMTEtMy4xOS4wODRjLS4wMi0uNzI3LS4zNTQtMTcuOTA5IDkuNTU0LTI3LjkxNkM1My40NTUgOS4yNzIgNTkuNTU5IDYuOTYgNjYuOTYgNy4wODFjMTMuODE0LjIyNyAyMi43MDYgNy4yNSAyNy43MzIgMTMuMTAxIDUuNDc5IDYuMzc3IDguMTY1IDEzLjQxMSA4LjM4NiAxNS43NTkuMTY1IDEuNzQ2LTEuMDg4IDIuMDk1LTEuMzQxIDIuMTQ3bC0uNTc2LjAxM2MtNi4zNzUtMS4wMjEtMTAuNDY1LS4zMTItMTIuMTU2IDIuMTA0LTMuNjM5IDUuMjAxIDMuNDA2IDE3LjgzNCA2LjQxNCAyMy4yMjkuNzY4IDEuMzc2IDEuMzIyIDIuMzcxIDEuNTc2IDIuOTg1Ljk4OCAyLjM5NiAyLjI3NyA0LjAwNiAzLjMxMiA1LjMuOTExIDEuMTM4IDEuNyAyLjEyNSAxLjk4MiAzLjI4My4xMzEuMjMgMS45OSAyLjk4IDEzLjAyMS43MDMgMi43NjUtLjU3IDQuNDIzLS4wODMgNC45MyAxLjQ1Ljk5NyAzLjAxNS00LjU5NyA2LjUzMi03LjY5NCA3Ljk3LTIuNzc1IDEuMjktNy4yMDQgMi4xMDYtMTEuMDM2IDIuMTA2em0tNC42OTYtNC4wMjFjLjM1LjM1MyAyLjEwMS45NjIgNS43MjcuODA2IDMuMjI0LS4xMzggNi42MjQtLjgzOSA4LjY2NC0xLjc4NiAyLjYwOS0xLjIxMiA0LjM1MS0yLjU2NyA1LjI1My0zLjQ5MmwtLjUuMDkyYy03LjA1MyAxLjQ1Ni0xMi4wNDIgMS4yNjItMTQuODI4LS41NzdhNi4xNjIgNi4xNjIgMCAwMS0uNTQtLjQwMWMtLjMwMi4xMTktLjU4MS4xOTctLjc4LjI1My0xLjU4LjQ0My0zLjIxNC45MDItMi45OTYgNS4xMDV6bS00NS41NjIgOC45MTVjLTEuNzUyIDAtMy41OTYtLjIzOS01LjQ3OS0uNzEtMS45NTEtLjQ4OC01LjI0LTEuOTU3LTUuMTktNC4zNy4wNTctMi43MDcgMy45OTQtMy41MTkgNS40NzYtMy44MjQgNS4zNTQtMS4xMDMgNS43MDMtMS41NDUgNy4zNzYtMy42Ny40ODgtLjYxOSAxLjA5NS0xLjM5IDEuOTIzLTIuMzE0IDEuMjI5LTEuMzc2IDIuNTcyLTIuMDczIDMuOTkyLTIuMDczLjk4OSAwIDEuOC4zMzUgMi4zMzYuNTU4IDEuNzA4LjcwOCAzLjEzMyAyLjQyIDMuNzE5IDQuNDY3LjUyOSAxLjg0Ny4yNzYgMy42MjUtLjcxIDUuMDA2LTMuMjM3IDQuNTMzLTcuODg2IDYuOTMtMTMuNDQzIDYuOTN6bS03LjIyMi00Ljk0M2MuNDgxLjM3MiAxLjQ0NS44NjkgMi41MTggMS4xMzcgMS42MzEuNDA4IDMuMjEzLjYxNSA0LjcwNS42MTUgNC41NDYgMCA4LjE5Ni0xLjg4MiAxMC44NDctNS41OTQuNTUzLS43NzQuMzg3LTEuNzU3LjIzOS0yLjI3NC0uMzEtMS4wODMtMS4wOC0yLjA2OC0xLjg3My0yLjM5Ny0uNDMtLjE3OC0uNzg3LS4zMTQtMS4xMTUtLjMxNC0uMTc2IDAtLjcxMiAwLTEuNjE0IDEuMDA5YTQxLjE0NiA0MS4xNDYgMCAwMC0xLjc5NCAyLjE2MmMtMi4wODQgMi42NDYtMy4wMzkgMy41NDQtOS4yMzkgNC44MjEtMS41MTMuMzEtMi4yODkuNjI2LTIuNjc0LjgzNXptMTIuMjY5LTcuMzZhMS41OTYgMS41OTYgMCAwMS0xLjU3NS0xLjM1NCA4LjIxOCA4LjIxOCAwIDAxLS4wOC0uNzk5Yy00LjA2NC0uMDc2LTcuOTg1LTEuODItMTAuOTYyLTQuOTI2LTMuNzY0LTMuOTI3LTUuNDc3LTkuMzY4LTQuNjk5LTE0LjkyNy44NDUtNi4wMzcuNTI5LTExLjM2Ni4zNTktMTQuMjI5LS4wNDctLjc5Ni0uMDgxLTEuMzcxLS4wNzktMS43NjkuMDAzLS41MDUuMDEzLTEuODQ0IDQuNDg5LTQuMTEzIDEuNTkyLS44MDcgNC43ODQtMi4yMTUgOC4yNzEtMi41NzYgNS43NzctLjU5NyA5LjU4NSAxLjk3NiAxMC43MjUgNy4yNDYgMy4wNzcgMTQuMjI4LjI0NCAyMC41MjEtMS44MjUgMjUuMTE3LS4zODUuODU2LS43NDkgMS42NjQtMS4wNCAyLjQ0N2wtLjI1Ny42OWMtMS4wOTMgMi45MzEtMi4wMzggNS40NjMtMS43NDggNy4zNTRhMS41OTUgMS41OTUgMCAwMS0xLjMzNSAxLjgxOWwtLjI0NC4wMnpNNDIuNDY0IDQyLjI2bC4wNjIgMS4xMzljLjE3NiAyLjk3NC41MDQgOC41MDgtLjM4NCAxNC44Ni0uNjQxIDQuNTg1Ljc1OSA5LjA2IDMuODQzIDEyLjI3NiAyLjQzNyAyLjU0MiA1LjY0NCAzLjk0NSA4Ljk0IDMuOTQ1aC4wNjhjLjM2OS0xLjU1NS45ODItMy4xOTcgMS42NDItNC45NjZsLjI1NS0uNjg2Yy4zMjktLjg4NC43MTQtMS43NCAxLjEyMi0yLjY0NiAxLjk5MS00LjQyNCA0LjQ3LTkuOTMxIDEuNjE1LTIzLjEzMi0uNTY1LTIuNjE1LTEuOTM2LTQuMTI4LTQuMTg5LTQuNjI3LTQuNjI4LTEuMDIyLTExLjUyNSAyLjQ1OS0xMi45NzQgMy44Mzd6bTkuNjMtLjY3N2MtLjA4LjU2NCAxLjAzMyAyLjA3IDIuNDg1IDIuMjcxIDEuNDQ5LjIwMyAyLjY4OS0uOTc1IDIuNzY4LTEuNTM5LjA3OS0uNTY0LTEuMDMzLTEuMTg2LTIuNDg1LTEuMzg4LTEuNDUxLS4yMDItMi42OTEuMDkyLTIuNzY4LjY1NnptMi44MTggMi44MjZsLS40MDctLjAyOGMtLjktLjEyNS0xLjgxLS42OTItMi40MzMtMS41MTgtLjIxOS0uMjktLjU3Ni0uODUyLS41MDUtMS4zNTQuMTAxLS43MzYuOTk5LTEuMTc3IDIuNC0xLjE3Ny4zMTMgMCAuNjM5LjAyMy45NjcuMDY5Ljc2Ni4xMDYgMS40NzcuMzI3IDIuMDAyLjYyLjkxLjUwOC45NzcgMS4wNzUuOTM2IDEuMzY4LS4xMTIuODEzLTEuNDA1IDIuMDItMi45NiAyLjAyem0tMi4yODktMi43MzJjLjA0NS4zNDguOTA3IDEuNDk2IDIuMDI5IDEuNjUxbC4yNjEuMDE4YzEuMDM2IDAgMS44MS0uODE1IDEuOTAxLTEuMDgyLS4wOTYtLjE4Mi0uNzYyLS42MzQtMi4wMjUtLjgxYTUuODIzIDUuODIzIDAgMDAtLjgyMS0uMDU5Yy0uODEyIDAtMS4yNDMuMTgzLTEuMzQ1LjI4MnptNDMuNjA1LTEuMjQ1Yy4wNzkuNTY0LTEuMDMzIDIuMDctMi40ODQgMi4yNzItMS40NS4yMDItMi42OTEtLjk3NS0yLjc3MS0xLjUzOS0uMDc2LS41NjQgMS4wMzYtMS4xODcgMi40ODYtMS4zODggMS40NS0uMjAzIDIuNjg5LjA5MiAyLjc2OS42NTV6bS0yLjgxOSAyLjU2Yy0xLjM5NiAwLTIuNjAxLTEuMDg2LTIuNy0xLjc5MS0uMTE1LS44NDYgMS4yNzgtMS40ODkgMi43MTItMS42ODguMzE2LS4wNDQuNjI5LS4wNjYuOTMtLjA2NiAxLjIzOCAwIDIuMDU4LjM2MyAyLjE0Ljk0OS4wNTMuMzc5LS4yMzguOTY0LS43MzkgMS40OTItLjMzMS4zNDctMS4wMjYuOTQ4LTEuOTczIDEuMDc5bC0uMzcuMDI1em0uOTQzLTMuMDEzYy0uMjc2IDAtLjU2NC4wMjEtLjg1Ni4wNjEtMS40NDEuMjAxLTIuMzAxLjc3OS0yLjI1OSAxLjA4OS4wNDguMzQxLjk2OCAxLjMzMiAyLjE3MyAxLjMzMmwuMjk3LS4wMjFjLjc4Ny0uMTA5IDEuMzc4LS42MjMgMS42Ni0uOTE5LjQ0My0uNDY1LjYxOS0uOTAzLjU5OC0xLjA1Mi0uMDI4LS4xOTgtLjU2LS40OS0xLjYxMy0uNDl6bTMuOTY1IDMyLjg0M2ExLjU5NCAxLjU5NCAwIDAxLTEuMzI0LTIuNDgzYzMuMzk4LTUuMDc1IDIuNzc2LTEwLjI1IDIuMTc1LTE1LjI1NS0uMjU3LTIuMTMyLS41MjEtNC4zMzctLjQ1My02LjQ1My4wNy0yLjE3Ny4zNDctMy45NzMuNjE0LTUuNzEuMzE3LTIuMDU4LjYxNy00LjAwMi40OTMtNi4zMWExLjU5NSAxLjU5NSAwIDExMy4xODYtLjE3MmMuMTQyIDIuNjM4LS4xOTcgNC44MzgtLjUyNSA2Ljk2Ny0uMjUzIDEuNjQzLS41MTUgMy4zNDItLjU3OCA1LjMyNy0uMDYxIDEuODc0LjE3OCAzLjg2NC40MzEgNS45Ny42NCA1LjMyMiAxLjM2NSAxMS4zNTQtMi42OTEgMTcuNDExYTEuNTk2IDEuNTk2IDAgMDEtMS4zMjguNzA4eiI+PC9wYXRoPjwvc3ZnPg==",
310
+ url: "https://www.postgresql.org/",
311
+ tagline: "The world's most advanced open source relational database",
312
+ repo: "postgres/postgres",
313
+ links: [{
314
+ label: "Docs",
315
+ href: "https://www.postgresql.org/docs/"
316
+ }, {
317
+ label: "postgres.js (client)",
318
+ href: "https://github.com/porsager/postgres"
319
+ }]
320
+ },
321
+ {
322
+ category: "ORM / Query builder",
323
+ label: "Drizzle",
324
+ flag: "drizzle",
325
+ image: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgd2lkdGg9IjI4MHB4IiBoZWlnaHQ9IjI4MHB4IiBzdHlsZT0ic2hhcGUtcmVuZGVyaW5nOmdlb21ldHJpY1ByZWNpc2lvbjsgdGV4dC1yZW5kZXJpbmc6Z2VvbWV0cmljUHJlY2lzaW9uOyBpbWFnZS1yZW5kZXJpbmc6b3B0aW1pemVRdWFsaXR5OyBmaWxsLXJ1bGU6ZXZlbm9kZDsgY2xpcC1ydWxlOmV2ZW5vZGQiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KPGc+PHBhdGggc3R5bGU9Im9wYWNpdHk6MSIgZmlsbD0iIzAwMDAwMCIgZD0iTSAtMC41LC0wLjUgQyA5Mi44MzMzLC0wLjUgMTg2LjE2NywtMC41IDI3OS41LC0wLjVDIDI3OS41LDkyLjgzMzMgMjc5LjUsMTg2LjE2NyAyNzkuNSwyNzkuNUMgMTg2LjE2NywyNzkuNSA5Mi44MzMzLDI3OS41IC0wLjUsMjc5LjVDIC0wLjUsMTg2LjE2NyAtMC41LDkyLjgzMzMgLTAuNSwtMC41IFoiLz48L2c+CjxnPjxwYXRoIHN0eWxlPSJvcGFjaXR5OjEiIGZpbGw9IiNjMWYyNGQiIGQ9Ik0gMTMzLjUsODQuNSBDIDE0Mi44MTQsODIuNzI2OSAxNDYuNjQ3LDg2LjM5MzUgMTQ1LDk1LjVDIDEzNS45MDYsMTEyLjAyOCAxMjYuNTcyLDEyOC4zNjIgMTE3LDE0NC41QyAxMTEuMjQ5LDE0OS45ODQgMTA2LjI0OSwxNDkuMzE3IDEwMiwxNDIuNUMgMTAxLjMzMywxNDAuODMzIDEwMS4zMzMsMTM5LjE2NyAxMDIsMTM3LjVDIDExMS41NDcsMTE5LjA0MSAxMjIuMDQ3LDEwMS4zNzUgMTMzLjUsODQuNSBaIi8+PC9nPgo8Zz48cGF0aCBzdHlsZT0ib3BhY2l0eToxIiBmaWxsPSIjYzBmMTRkIiBkPSJNIDIyMy41LDg0LjUgQyAyMzMuNTM5LDgzLjY5NzIgMjM3LjAzOSw4OC4wMzA1IDIzNCw5Ny41QyAyMjUuMzQ3LDExMi44MDEgMjE2LjY4MSwxMjguMTM1IDIwOCwxNDMuNUMgMjAzLjM4NywxNDkuNzM3IDE5OC4zODcsMTUwLjA3MSAxOTMsMTQ0LjVDIDE5MS41NzgsMTQxLjk3IDE5MS4yNDUsMTM5LjMwMyAxOTIsMTM2LjVDIDIwMC41MiwxMjIuNzk0IDIwOC41MiwxMDguNzk0IDIxNiw5NC41QyAyMTguMjg5LDkwLjg4MTIgMjIwLjc4OSw4Ny41NDc5IDIyMy41LDg0LjUgWiIvPjwvZz4KPGc+PHBhdGggc3R5bGU9Im9wYWNpdHk6MSIgZmlsbD0iI2MwZjE0ZCIgZD0iTSA3NS41LDEyMC41IEMgODMuOTg4NSwxMTkuNjE4IDg3LjgyMTgsMTIzLjI4NSA4NywxMzEuNUMgNzcuOTA1NywxNDguMDI4IDY4LjU3MjQsMTY0LjM2MiA1OSwxODAuNUMgNTYuMDQ1MywxODQuMjc3IDUyLjIxMiwxODUuNDQzIDQ3LjUsMTg0QyA0My44Njk3LDE4MC45NSA0Mi43MDMsMTc3LjExNyA0NCwxNzIuNUMgNTMsMTU2LjUgNjIsMTQwLjUgNzEsMTI0LjVDIDcyLjM5NjgsMTIyLjkzIDczLjg5NjgsMTIxLjU5NiA3NS41LDEyMC41IFoiLz48L2c+CjxnPjxwYXRoIHN0eWxlPSJvcGFjaXR5OjEiIGZpbGw9IiNjMWYyNGQiIGQ9Ik0gMTY1LjUsMTIwLjUgQyAxNzQuMTY0LDExOS4zMzIgMTc3Ljk5NywxMjIuOTk5IDE3NywxMzEuNUMgMTY3LjQxNCwxNDcuNjcxIDE1OC4wOCwxNjQuMDA0IDE0OSwxODAuNUMgMTQ2LjM5OCwxODQuMjEyIDE0Mi44OTgsMTg1LjM3OCAxMzguNSwxODRDIDEzMy45MzEsMTgxLjQ1OSAxMzIuNDMxLDE3Ny42MjUgMTM0LDE3Mi41QyAxNDMuNTcyLDE1Ni4zNjIgMTUyLjkwNiwxNDAuMDI4IDE2MiwxMjMuNUMgMTYzLjE0NSwxMjIuMzY0IDE2NC4zMTIsMTIxLjM2NCAxNjUuNSwxMjAuNSBaIi8+PC9nPgo8L3N2Zz4K",
326
+ url: "https://orm.drizzle.team/",
327
+ tagline: "Headless TypeScript ORM that feels like SPA with SSR",
328
+ repo: "drizzle-team/drizzle-orm",
329
+ links: [{
330
+ label: "Docs & Getting started",
331
+ href: "https://orm.drizzle.team/docs/overview"
332
+ }]
333
+ },
334
+ {
335
+ category: "ORM / Query builder",
319
336
  label: "Kysely",
320
337
  flag: "kysely",
321
338
  image: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0nMTMyJyBoZWlnaHQ9JzEzMicgdmlld0JveD0nMCAwIDEzMiAxMzInIGZpbGw9J25vbmUnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc+PGcgY2xpcC1wYXRoPSd1cmwoI2NsaXAwXzhfMyknPjxyZWN0IHg9JzInIHk9JzInIHdpZHRoPScxMjgnIGhlaWdodD0nMTI4JyByeD0nMTYnIGZpbGw9J3doaXRlJy8+PHBhdGggZD0nTTQxLjI5ODMgMTA5VjIzLjkwOTFINDYuNDkxOFY3My4zMUg0Ny4wNzM1TDkxLjk0NTcgMjMuOTA5MUg5OC44NDI3TDYxLjkwNjIgNjQuMTY5NEw5OC41MTAzIDEwOUg5Mi4wMjg4TDU4LjU4MjQgNjcuOTA4N0w0Ni40OTE4IDgxLjI4NzNWMTA5SDQxLjI5ODNaJyBmaWxsPSdibGFjaycvPjwvZz48cmVjdCB4PScyJyB5PScyJyB3aWR0aD0nMTI4JyBoZWlnaHQ9JzEyOCcgcng9JzE2JyBzdHJva2U9JyMxMjEyMTInIHN0cm9rZS13aWR0aD0nNCcvPjxkZWZzPjxjbGlwUGF0aCBpZD0nY2xpcDBfOF8zJz48cmVjdCB4PScyJyB5PScyJyB3aWR0aD0nMTI4JyBoZWlnaHQ9JzEyOCcgcng9JzE2JyBmaWxsPSd3aGl0ZScvPjwvY2xpcFBhdGg+PC9kZWZzPjwvc3ZnPgo=",
@@ -328,7 +345,7 @@ const features = [
328
345
  }]
329
346
  },
330
347
  {
331
- category: "Database",
348
+ category: "ORM / Query builder",
332
349
  label: "Prisma",
333
350
  flag: "prisma",
334
351
  image: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIwLjgzZW0iIGhlaWdodD0iMWVtIiB2aWV3Qm94PSIwIDAgMjU2IDMxMCI+PHBhdGggZD0iTTI1NC4zMTMgMjM1LjUxOUwxNDggOS43NDlBMTcuMDYzIDE3LjA2MyAwIDAgMCAxMzMuNDczLjAzN2ExNi44NyAxNi44NyAwIDAgMC0xNS41MzMgOC4wNTJMMi42MzMgMTk0Ljg0OGExNy40NjUgMTcuNDY1IDAgMCAwIC4xOTMgMTguNzQ3TDU5LjIgMzAwLjg5NmExOC4xMyAxOC4xMyAwIDAgMCAyMC4zNjMgNy40ODlsMTYzLjU5OS00OC4zOTJhMTcuOTI5IDE3LjkyOSAwIDAgMCAxMS4yNi05LjcyMmExNy41NDIgMTcuNTQyIDAgMCAwLS4xMDEtMTQuNzZsLS4wMDguMDA4Wm0tMjMuODAyIDkuNjgzbC0xMzguODIzIDQxLjA1Yy00LjIzNSAxLjI2LTguMy0yLjQxMS03LjQxOS02LjY4NWw0OS41OTgtMjM3LjQ4NGMuOTI3LTQuNDQzIDcuMDYzLTUuMTQ3IDkuMDAzLTEuMDM1bDkxLjgxNCAxOTQuOTczYTYuNjMgNi42MyAwIDAgMS00LjE4IDkuMThoLjAwN1oiLz48L3N2Zz4=",
@@ -368,6 +385,15 @@ const features = [
368
385
  url: "https://segment.com",
369
386
  disabled: true
370
387
  },
388
+ {
389
+ category: "Hosting",
390
+ label: "DIY",
391
+ flag: "hosting-diy",
392
+ image: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pg0KDQo8IURPQ1RZUEUgc3ZnICBQVUJMSUMgJy0vL1czQy8vRFREIFNWRyAxLjEvL0VOJyAgJ2h0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCc+DQoNCjwhLS0gVXBsb2FkZWQgdG86IFNWRyBSZXBvLCB3d3cuc3ZncmVwby5jb20sIEdlbmVyYXRvcjogU1ZHIFJlcG8gTWl4ZXIgVG9vbHMgLS0+DQo8c3ZnIGZpbGw9IiMwMDAwMDAiIHdpZHRoPSI4MDBweCIgaGVpZ2h0PSI4MDBweCIgdmlld0JveD0iMCAwIDEwNjkgMTA2OSIgc3R5bGU9ImZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDoyOyIgdmVyc2lvbj0iMS4xIiB4bWw6c3BhY2U9InByZXNlcnZlIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnNlcmlmPSJodHRwOi8vd3d3LnNlcmlmLmNvbS8iIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4NCg0KPHJlY3QgaGVpZ2h0PSIxMDY2LjY3IiBpZD0iU3RvcmFnZS1ob3N0aW5nIiBzdHlsZT0iZmlsbDpub25lOyIgd2lkdGg9IjEwNjYuNjciIHg9IjEuMTY3IiB5PSIwLjU5MiIvPg0KDQo8Zz4NCg0KPHBhdGggZD0iTTcxMS41ODQsNjE3LjI1OGwtMCw4My4zMzRjLTAsMTcuMjQ3IDE0LjAwMiwzMS4yNSAzMS4yNSwzMS4yNWMxNy4yNDcsLTAgMzEuMjUsLTE0LjAwMyAzMS4yNSwtMzEuMjVsLTAsLTgzLjMzNGMtMCwtMTcuMjQ3IC0xNC4wMDMsLTMxLjI1IC0zMS4yNSwtMzEuMjVjLTE3LjI0OCwwIC0zMS4yNSwxNC4wMDMgLTMxLjI1LDMxLjI1Wm0tMCwtMzMzLjMzM2wtMCw4My4zMzNjLTAsMTcuMjQ4IDE0LjAwMiwzMS4yNSAzMS4yNSwzMS4yNWMxNy4yNDcsMCAzMS4yNSwtMTQuMDAyIDMxLjI1LC0zMS4yNWwtMCwtODMuMzMzYy0wLC0xNy4yNDcgLTE0LjAwMywtMzEuMjUgLTMxLjI1LC0zMS4yNWMtMTcuMjQ4LC0wIC0zMS4yNSwxNC4wMDMgLTMxLjI1LDMxLjI1Wm0xLjE2NSwtMTM4LjAyNGwtMCwtMjguNjQzYy0wLC0xNy4yNTkgLTEzLjk5MSwtMzEuMjUgLTMxLjI1LC0zMS4yNWwtMjkyLjgzMiwwYy0xNy4yNTksMCAtMzEuMjUsMTMuOTkxIC0zMS4yNSwzMS4yNWwwLDI4LjY0M2MwLDI5Ljg2OSAxMC42Niw1OC40MjkgMjkuMjE1LDc5LjU1YzE5LjkxLDIyLjY2NSA0Ny4wODUsMzUuMDM0IDc1LjI0MywzNS4wMzRsMTQ2LjQxNiwtMGMyOC4xNTgsLTAgNTUuMzMzLC0xMi4zNjkgNzUuMjQzLC0zNS4wMzRjMTguNTU1LC0yMS4xMjEgMjkuMjE1LC00OS42ODEgMjkuMjE1LC03OS41NWwtMCwtMFptLTYyLjU1NCwyLjYwN2MtMC41NDEsMTMuMzk1IC01LjI1MywyNi4xNzUgLTEzLjYxNSwzNS42OTRjLTcuNTQ5LDguNTkyIC0xNy42MTIsMTMuNzgyIC0yOC4yODcsMTMuNzgzYy0wLjAwMiwtMCAtMTQ2LjQxOCwtMCAtMTQ2LjQxOCwtMGMtMTAuNjc3LC0wLjAwMSAtMjAuNzQsLTUuMTkxIC0yOC4yODksLTEzLjc4M2MtOC4zNjIsLTkuNTE5IC0xMy4wNzQsLTIyLjI5OSAtMTMuNjE1LC0zNS42OTRsMjMwLjIyNCwwWiIgc3R5bGU9ImZpbGwtb3BhY2l0eTowLjU7Ii8+DQoNCjxwYXRoIGQ9Ik0xMDEuNjg5LDQ5Mi4yNThjLTIyLjEzMSwyMC44OTcgLTM1LjkzOSw1MC41MDMgLTM1LjkzOSw4My4zMzRjMCw2Mi4wMiAwLDE0Ni4zMTMgMCwyMDguMzMzYzAsNTIuNDQ4IDM1LjIzOSw5Ni42NjYgODMuMzM0LDExMC4yN2wtMCw1Ni4zOTdjLTAsMTcuMjQ3IDE0LjAwMiwzMS4yNSAzMS4yNSwzMS4yNWMxNy4yNDcsLTAgMzEuMjUsLTE0LjAwMyAzMS4yNSwtMzEuMjVsLTAsLTUyLjA4NGw2NDUuODMzLDBsMCw1Mi4wODRjMCwxNy4yNDcgMTQuMDAzLDMxLjI1IDMxLjI1LDMxLjI1YzE3LjI0OCwtMCAzMS4yNSwtMTQuMDAzIDMxLjI1LC0zMS4yNWwwLC01Ni4zOTdjNDguMDk1LC0xMy42MDQgODMuMzM0LC01Ny44MjIgODMuMzMzLC0xMTAuMjdsMCwtMjA4LjMzM2MwLjAwMSwtMzIuODMxIC0xMy44MDcsLTYyLjQzNyAtMzUuOTM4LC04My4zMzRjMjIuMTMxLC0yMC44OTYgMzUuOTM5LC01MC41MDIgMzUuOTM4LC04My4zMzNsMCwtMjA4LjMzM2MwLjAwMSwtNjMuMjgzIC01MS4zLC0xMTQuNTgzIC0xMTQuNTgyLC0xMTQuNTg0bC03MDguMzM1LDBjLTYzLjI4MiwwLjAwMSAtMTE0LjU4Myw1MS4zMDEgLTExNC41ODMsMTE0LjU4NGMwLDYyLjAyIDAsMTQ2LjMxMyAwLDIwOC4zMzNjMCwzMi44MzEgMTMuODA4LDYyLjQzNyAzNS45MzksODMuMzMzWm04MzkuMDYxLDgzLjMzNGwwLDIwOC4zMzNjMC4wMDEsMjguNzY0IC0yMy4zMTcsNTIuMDgyIC01Mi4wODEsNTIuMDgzYy0wLjAwMywwIC03MDguMzM1LDAgLTcwOC4zMzUsMGMtMjguNzY2LC0wLjAwMSAtNTIuMDg0LC0yMy4zMTkgLTUyLjA4NCwtNTIuMDgzYzAsLTYyLjAyIDAsLTE0Ni4zMTMgMCwtMjA4LjMzM2MwLC0yOC43NjQgMjMuMzE4LC01Mi4wODMgNTIuMDgyLC01Mi4wODRjMC4wMDMsMCA3MDguMzM1LDAgNzA4LjMzNSwwYzI4Ljc2NiwwLjAwMSA1Mi4wODQsMjMuMzIgNTIuMDgzLDUyLjA4NFptLTY1Ni4yNSwtMzEuMjVjLTYzLjI0LC0wIC0xMTQuNTgzLDUxLjM0MyAtMTE0LjU4MywxMTQuNTgzYzAsNjMuMjQgNTEuMzQzLDExNC41ODMgMTE0LjU4MywxMTQuNTgzYzYzLjI0MSwwIDExNC41ODQsLTUxLjM0MyAxMTQuNTg0LC0xMTQuNTgzYy0wLC02My4yNCAtNTEuMzQzLC0xMTQuNTgzIC0xMTQuNTg0LC0xMTQuNTgzWm01NTIuMDg0LDcyLjkxNmwtMCw4My4zMzRjLTAsMTcuMjQ3IDE0LjAwMiwzMS4yNSAzMS4yNSwzMS4yNWMxNy4yNDcsLTAgMzEuMjUsLTE0LjAwMyAzMS4yNSwtMzEuMjVsLTAsLTgzLjMzNGMtMCwtMTcuMjQ3IC0xNC4wMDMsLTMxLjI1IC0zMS4yNSwtMzEuMjVjLTE3LjI0OCwwIC0zMS4yNSwxNC4wMDMgLTMxLjI1LDMxLjI1Wm0tNTUyLjA4NCwtMTAuNDE2YzI4Ljc0NiwtMCA1Mi4wODQsMjMuMzM3IDUyLjA4NCw1Mi4wODNjLTAsMjguNzQ2IC0yMy4zMzgsNTIuMDgzIC01Mi4wODQsNTIuMDgzYy0yOC43NDUsMCAtNTIuMDgzLC0yMy4zMzcgLTUyLjA4MywtNTIuMDgzYzAsLTI4Ljc0NiAyMy4zMzgsLTUyLjA4MyA1Mi4wODMsLTUyLjA4M1ptNjU2LjI1LC00MDYuMjVsMCwyMDguMzMzYzAuMDAxLDI4Ljc2NCAtMjMuMzE3LDUyLjA4MiAtNTIuMDgxLDUyLjA4M2MtMC4wMDMsMCAtNzA4LjMzNSwwIC03MDguMzM1LDBjLTI4Ljc2NiwtMC4wMDEgLTUyLjA4NCwtMjMuMzE5IC01Mi4wODQsLTUyLjA4M2MwLC02Mi4wMiAwLC0xNDYuMzEzIDAsLTIwOC4zMzNjMCwtMjguNzY0IDIzLjMxOCwtNTIuMDgzIDUyLjA4MiwtNTIuMDg0YzAuMDAzLDAgNzA4LjMzNSwwIDcwOC4zMzUsMGMyOC43NjYsMC4wMDEgNTIuMDg0LDIzLjMyIDUyLjA4Myw1Mi4wODRabS02NTYuMjUsMTAuNDE2Yy02My4yNCwwIC0xMTQuNTgzLDUxLjM0MyAtMTE0LjU4MywxMTQuNTg0YzAsNjMuMjQgNTEuMzQzLDExNC41ODMgMTE0LjU4MywxMTQuNTgzYzYzLjI0MSwtMCAxMTQuNTg0LC01MS4zNDMgMTE0LjU4NCwtMTE0LjU4M2MtMCwtNjMuMjQxIC01MS4zNDMsLTExNC41ODQgLTExNC41ODQsLTExNC41ODRabTU1Mi4wODQsNzIuOTE3bC0wLDgzLjMzM2MtMCwxNy4yNDggMTQuMDAyLDMxLjI1IDMxLjI1LDMxLjI1YzE3LjI0NywwIDMxLjI1LC0xNC4wMDIgMzEuMjUsLTMxLjI1bC0wLC04My4zMzNjLTAsLTE3LjI0NyAtMTQuMDAzLC0zMS4yNSAtMzEuMjUsLTMxLjI1Yy0xNy4yNDgsLTAgLTMxLjI1LDE0LjAwMyAtMzEuMjUsMzEuMjVabS01NTIuMDg0LC0xMC40MTdjMjguNzQ2LDAgNTIuMDg0LDIzLjMzOCA1Mi4wODQsNTIuMDg0Yy0wLDI4Ljc0NSAtMjMuMzM4LDUyLjA4MyAtNTIuMDg0LDUyLjA4M2MtMjguNzQ1LC0wIC01Mi4wODMsLTIzLjMzOCAtNTIuMDgzLC01Mi4wODNjMCwtMjguNzQ2IDIzLjMzOCwtNTIuMDg0IDUyLjA4MywtNTIuMDg0WiIvPg0KDQo8L2c+DQoNCjwvc3ZnPg==",
393
+ invisibleCli: true,
394
+ selected: true,
395
+ tooltip: "Set up deployment yourself"
396
+ },
371
397
  {
372
398
  category: "Hosting",
373
399
  label: "Cloudflare",
@@ -441,10 +467,23 @@ const features = [
441
467
  href: "https://github.com/aws/aws-cdk"
442
468
  }]
443
469
  },
470
+ {
471
+ category: "Hosting",
472
+ label: "Docker",
473
+ flag: "docker",
474
+ image: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48IS0tIFVwbG9hZGVkIHRvOiBTVkcgUmVwbywgd3d3LnN2Z3JlcG8uY29tLCBHZW5lcmF0b3I6IFNWRyBSZXBvIE1peGVyIFRvb2xzIC0tPgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKYXJpYS1sYWJlbD0iRG9ja2VyIiByb2xlPSJpbWciCnZpZXdCb3g9IjAgMCA1MTIgNTEyIj48cmVjdAp3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIKcng9IjE1JSIKZmlsbD0iI2ZmZmZmZiIvPjxwYXRoIHN0cm9rZT0iIzA2NmRhNSIgc3Ryb2tlLXdpZHRoPSIzOCIgZD0iTTI5NiAyMjZoNDJtLTkyIDBoNDJtLTkxIDBoNDJtLTkxIDBoNDFtLTkxIDBoNDJtOC00Nmg0MW04IDBoNDJtNyAwaDQybS00Mi00Nmg0MiIvPjxwYXRoIGZpbGw9IiMwNjZkYTUiIGQ9Im00NzIgMjI4cy0xOC0xNy01NS0xMWMtNC0yOS0zNS00Ni0zNS00NnMtMjkgMzUtOCA3NGMtNiAzLTE2IDctMzEgN0g2OGMtNSAxOS01IDE0NSAxMzMgMTQ1IDk5IDAgMTczLTQ2IDIwOC0xMzAgNTIgNCA2My0zOSA2My0zOSIvPjwvc3ZnPg==",
475
+ url: "https://www.docker.com/",
476
+ tagline: "A safer container ecosystem, for everyone",
477
+ links: [{
478
+ label: "Docs",
479
+ href: "https://docs.docker.com"
480
+ }]
481
+ },
444
482
  {
445
483
  category: "Hosting",
446
484
  label: "Dokploy",
447
485
  flag: "dokploy",
486
+ dependsOn: ["docker"],
448
487
  image: "data:image/svg+xml;base64,PHN2ZwogICB2aWV3Qm94PSIwIDAgNTk5Ljk5OTk5IDU5OS45OTk5OSIKICAgY2xhc3M9ImgtMTAgdy1hdXRvIgogICB3aWR0aD0iNjAwIgogICBoZWlnaHQ9IjYwMCIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8cGF0aAogICAgIGlkPSJwYXRoNCIKICAgICBzdHlsZT0iZGlzcGxheTppbmxpbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlLXdpZHRoOjEuMDUxMjE7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1kYXNob2Zmc2V0OjEwNS44Mjc7cGFpbnQtb3JkZXI6c3Ryb2tlIGZpbGwgbWFya2VycyIKICAgICBkPSJtIDQxNS42NDY5NCwxMzUuMTMwNTggYyAtNC4xMzAyNSwwLjg4NzE2IC00LjcwODgyLDQuOTgzMTUgLTQuMTMwMTUsMTUuODg3OTUgMC42MTU2LDExLjYwMDQgNS4zOTg1MywyOC4xMTAxMiAyNi45NTM2MSw0My42ODAzMiA5LjM3NTc5LDcuMDA3MyAyMC4yODU3NSw1LjE0NTUyIDE2Ljg0Mzk2LDExLjQ4MzM1IC05LjQxNzExLDE0LjQ3OTI1IC0xMy44NDk5NywxNy4wNzIxMyAtMzMuMTMzODMsMjMuMDI3NDMgLTguOTUyNzMsMi43NjQ4MSAtMjQuMDU2NDIsMS41NDQ0IC00MS42MDkwNSwtMy4zNDg2OCAtMTcuNTUyNjIsLTQuODkzMDcgLTM3LjQ2OTcxLC0xMy4wMzI2NCAtNTYuOTk3MzYsLTIxLjgyNjk4IC0xOS41Mjc2LC04Ljc5NDM1IC0zOC42ODEwMiwtMTguMjI1MzIgLTU1LjIxNTIzLC0yNS43MzAwMiAtMTYuNTM0MTYsLTcuNTA0NjggLTI5LjUzNjUsLTEzLjM0MzU4IC00MS4yODQ2MywtMTQuMjk2MDUgLTYuMTE2MjIsLTAuNDk1ODUgLTEyLjM0OTU2LC0wLjcyMjQgLTE4LjgzOTY3LC0wLjc4NDI5IC0xOS40NzAzMiwtMC4xODU2OCAtNDEuMjQ4NjksMS4xMTY5MSAtNjkuMDk2NTQsMS4xMTY5MSAtMTguODcwNjcsMCAtMzIuOTE0NjMsNi4zMTU3OCAtMzkuNzE4MDg4LDE3LjgyMzM1IC02LjgwMzQ1OCwxMS41MDc1NiAtNi44NDI2MTksMjQuNTI3ODkgLTcuMjEyNjk5LDM4LjU5MDkxIC0wLjM2MTUzNCwxMy43MzgyOSAtMS4wMjQyLDIzLjk2MzMgLTAuMzQ0OTI4LDMzLjIxMTY4IDAuNjc5MjczLDkuMjQ4MzYgMy4xOTMyODUsMTguMDQ2NDUgOS4wMDA5ODUsMjUuNDQyNTcgMi42MjE0MywzLjMzODQgNS4zMTAxNyw1LjI5NzAxIDkuMzA4OTYsOC4yMjY5NiAzLjk5ODc5LDIuOTI5OTIgOS4wNjM4OCw2LjI5MDYxIDE1LjEwNSw5Ljk3MDA2IDEyLjA4MjIyLDcuMzU4ODkgMjguMDQwMjMsMTUuOTY3MTYgNDYuNDMxODcsMjQuMjM1MzMgMzYuNzgzMjcsMTYuNTM2MzQgODMuMTY4MjksMzEuODQ0MjggMTI3LjY5OTQ1LDMxLjg0NDI4IDEwMy4xNzAxMywwIDIwMi42MzMxMSwtNzkuODI2MjggMjAyLjYzMzExLC03OS44MjYyOCA0LjU2MTc2LC0zLjU5MTEyIDUuMzQ4NjIsLTEwLjIwMDM1IDEuNzU3NDksLTE0Ljc2MjEyIC0zLjU5MTEyLC00LjU2MTc2IC0xMC4yMDAzNSwtNS4zNDg2MiAtMTQuNzYyMTEsLTEuNzU3NDggMCwwIC05Ny41OTg2Myw3NS4zMjE2NyAtMTg5LjYyODQ5LDc1LjMyMTY3IC0zOS42MTQyNiwwIC04My45NjIxOSwtMTQuMjA5NjEgLTExOS4wNzgzLC0yOS45OTY0NSAtMTcuNTU4MDUsLTcuODkzNDEgLTMyLjg0MzE5LC0xNi4xNDk4OSAtNDQuMTE1OTMsLTIzLjAxNTc2IC01LjYzNjM3LC0zLjQzMjkyIC0xMC4yNzgxLC02LjUyNjIyIC0xMy42MTY0NSwtOC45NzIyMyAtMy4zMzgzNSwtMi40NDYwMyAtNS42MTc1OSwtNC43ODU3MiAtNS4xOTg1NywtNC4yNTIwNyAtMS4yODA5OCwtMS42MzEzNyAtMi4xNTM3NSwtMy4xOTg2MSAtMi44MzUzOSwtNC45NTAxMyBoIDUzLjg0NTc4IGMgMTkuMTA2NzksMCAzMi44MzI1OCw3Ljc0Njc1IDUyLjMyNDQsMTYuNzIwODIgMTkuNDkxODIsOC45NzQwNSA0NC4xNDQwOCwxOC4zNTQwMSA4MS4wNjQzMywxNy42NzM0NyA1Mi44NDgxNywtMC45NzQxNyA4NC41OTQ1OCwtMTEuNDI0OSAxMTQuODI4MywtMjguODQ2NyAxNy40ODAyOSwtMTAuMDcyOCAzMC40NjM0NSwtMTguNTg5OSA0MS43NTQ3MiwtMzEuMDk4NTcgNy4zMTgyNSwtOC41NjAyNCAxMS43NDM5MiwtMTQuNTEyIDE3LjQwNDI4LC0yNC4yNTc3MyAzLjQ2MjExLC02LjA4NzU0IDkuOTc4ODcsLTYuNzc0NCAxOC4wNjA1OCwtNi43MTcxMiAxNS4zOTk1LDAuMTA5MTUgMzUuMTM5NjEsLTE5LjIwMjg4IDQxLjcxNzY4LC0zMC4zMzQwNSA2LjU3ODA5LC0xMS4xMzExOCA5Ljk5NjgsLTIyLjIxODc2IDAuNDA5MzIsLTIyLjI2NjYxIC05LjU4NzQ3LC0wLjA0NzggLTkuMTg0NjksOS42NjY5NiAtMjMuMjI2NywxMC45MDE5NCAtMTMuOTk2MjksMC40NTczOCAtMzEuODQ0ODEsMi4zNjIwNyAtMzkuNTI5MDUsMTcuMjczMTUgLTEuMzcyMTksLTUuNDg4NzQgLTguMTA5OTIsLTIxLjQwNDU4IC0zMC4yNTEwMywtMjcuMDY4NjcgLTIyLjE0MTEyLC01LjY2NDA4IC0xMy41MjU4OSwtMjEuMjg2OTcgLTI3LjMxOTYzLC0xOC4zMjQxNiB6IG0gLTIwNy42MTk3MSw0OS4xNDgwNCBjIDE4LjU1OTM3LC0xLjMxODc3IDM0Ljk4NDMzLDUuNzU0NzYgNTEuNjQyNzYsMTMuMTcwOTEgMTYuMDU0NjIsNy4yODcwMiAzNS4zMDkxNCwxNi43NjQ5MSA1NS4yNzA2NiwyNS43NTQ2NSAxOS45NjE1Miw4Ljk4OTc1IDQwLjYxNywxNy41MDk5NSA1OS45ODQ2OSwyMi45MDkgOS4xNTc3MywyLjU1Mjg2IDE4LjAxNjM0LDQuNDE4NzkgMjYuNTI2NjMsNS4yNDU3OCAtMjYuMzY2MzgsMTQuNDkyOTQgLTUyLjQ5MTYxLDIyLjYxMzU0IC0xMDAuMDQxNTUsMjMuNDkwMDQgLTMzLjMyNjQsMC42MTQzIC01My4zMTY5MywtNy4yMDQwNCAtNzEuODgyNjYsLTE1Ljc1MTc0IC0xOC41NjU3MywtOC41NDc2OSAtMzYuMzE0OTEsLTE4LjY0NjY1IC02MS4xMTgwMiwtMTguNjQ2NjUgaCAtNTUuNzAxODMgYyAwLjEwNjc3LC01LjM4Mjk0IDAuMzE3MTMsLTExLjYxMTI2IDAuNTE1MzUsLTE5LjE0MzU0IDAuMzYxNzUsLTEzLjc0NjU3IDEuNTU4MTMsLTIzLjgxNDc1IDQuMjk1MTgsLTI4LjQ0NDI3IDIuNzM3MDMsLTQuNjI5NTEgNi41NDA4NiwtNy40OTgwOCAyMS42MTk2MSwtNy40OTgwOCAyOC40NzU3NSwwIDUwLjQ2MjMyLC0xLjIyMjUgNjguODg5MTgsLTEuMDg2MSB6IG0gLTI1LjcxMTU1LDIwLjIxMzIgYyAtNS45NjE1NSwtNWUtNCAtMTAuNzk0OCw0LjgzMTgyIC0xMC43OTU0MywxMC43OTMzOSAtNWUtNCw1Ljk2MjM1IDQuODMzMDgsMTAuNzk1OTQgMTAuNzk1NDMsMTAuNzk1NDMgNS45NjE1NywtNi4zZS00IDEwLjc5MzksLTQuODMzODggMTAuNzkzNCwtMTAuNzk1NDMgLTYuM2UtNCwtNS45NjA3NyAtNC44MzI2MywtMTAuNzkyNzYgLTEwLjc5MzQsLTEwLjc5MzM5IHogbSAtNzIuMTcwMDksMTAxLjc0MzYgYyAtMC42NzU3OSwtMC4wMTggLTEuMzU2MDQsMC4wMDIgLTIuMDM2NzIsMC4wNjE3IC00Ljc0NDEsMC40MTcwNCAtOS4yNDU1NDYsMy4wOTcxNiAtMTEuODY1MTI0LDYuNjQ4MDkgLTIuNjE5NTc3LDMuNTUwOTMgLTMuNjU4NzA0LDcuNjgxNzEgLTMuNjU4NzA0LDExLjczNzgzIC00LjgxZS00LDEwNy43OTU1NiA5Mi44MzU5MTgsMTg4Ljc1OTg2IDIwNy40MTQ4NjgsMTg4Ljc2IDExNC41Nzg5NCwtMS40ZS00IDIwNy40MTUzNiwtODAuOTY0NDQgMjA3LjQxNDg3LC0xODguNzYgMCwtNC4wNTYxMiAtMS4wMzkxMiwtOC4xODY5IC0zLjY1ODY5LC0xMS43Mzc4MyAtMi42MTk1OSwtMy41NTA5MyAtNy4xMjEwMywtNi4yMzEwNSAtMTEuODY1MTMsLTYuNjQ4MDkgLTEuMzYxMzYsLTAuMTE5NzMgLTIuNzE4OTQsLTAuMDc2NiAtNC4wNDg4LDAuMTAwNiAtMy41NTc0MywwLjQ3MzYgLTYuODk1MywxLjg3NTc1IC0xMC4wODcxLDMuOTIxNTEgLTMyLjYzMzc3LDIwLjkxNjQ1IC05NS41MDU3OSw3My41NTE4MiAtMTc3Ljc1NTE1LDczLjU1MTgyIC04Mi4yNDkzNSwwIC0xNDUuMTIxMzgsLTUyLjYzNTM3IC0xNzcuNzU1MTMsLTczLjU1MTg2IC0zLjE5MTgsLTIuMDQ1NzYgLTYuNTI5NjgsLTMuNDQ3OSAtMTAuMDg3MSwtMy45MjE1MSAtMC42NjQ5MywtMC4wODg1IC0xLjMzNjI5LC0wLjE0NDIyIC0yLjAxMjA5LC0wLjE2MjIgeiBtIDEuNTY2NTUsMTkuOTk5NjkgYyAwLjEzNzksMC4wODA3IDAuMTAzMTMsMC4wMTk5IDAuMjU0NiwwLjExNzAzIDI5LjQxMjQ4LDE4Ljg1MTgzIDk3LjU0MTU4LDc2LjU2MTc4IDE4OC4wMzMxNyw3Ni41NjE3OCA5MC40OTE1OSwwIDE1OC42MjA3MSwtNTcuNzA5OTUgMTg4LjAzMzE5LC03Ni41NjE3OCAwLjE1MTQ3LC0wLjA5NyAwLjExNjcsLTAuMDM2MiAwLjI1NDU5LC0wLjExNzAzIC0wLjA2ODEsNy4zNTMxMyAtMC4yMDg5OCwxMC40Mjg2MSAtMS4yMDMxNCwxNy40Nzg0MyAtNy4zNTgwNyw5LjkxODUyIC04Ny40MjM3MSw5Ni45NDEyOSAtMTg3LjA4NDY0LDk2Ljk0MTI5IC05OS42NjA5NCwwIC0xNzkuNzI2NTYsLTg3LjAyMjc3IC0xODcuMDg0NjMsLTk2Ljk0MTI5IC0wLjk5NDE2LC03LjA0OTgyIC0xLjEzNTA1LC0xMC4xMjUzIC0xLjIwMzE0LC0xNy40Nzg0MyB6IG0gMTEuNDkxNDYsNTguNjkzMjYgYyAzNC4wNzAzNSwzMS4zMTkxNSAxMDAuNjAwOTksNzcuMDYyNzUgMTc2Ljc5NjMxLDc3LjA2Mjc1IDc2LjE5NTMxLDAgMTQyLjcyNTk4LC00NS43NDM2IDE3Ni43OTYzMywtNzcuMDYyNzUgLTI2LjE5NDM4LDY1LjMwNTMgLTk0LjQ3NTA2LDEwOS40NzE1MSAtMTc2Ljc5NjMzLDEwOS40NzE2NSAtODIuMzIxMjgsLTEuMWUtNCAtMTUwLjYwMTk0LC00NC4xNjYzNSAtMTc2Ljc5NjMxLC0xMDkuNDcxNjUgeiIKICAgICAvPgo8L3N2Zz4K",
449
488
  url: "https://dokploy.com",
450
489
  tagline: "Open source alternative to Heroku, Vercel, and Netlify. Self-host on any VPS",
@@ -452,9 +491,7 @@ const features = [
452
491
  links: [{
453
492
  label: "Docs",
454
493
  href: "https://docs.dokploy.com"
455
- }],
456
- disabled: true,
457
- invisibleCli: true
494
+ }]
458
495
  },
459
496
  {
460
497
  category: "Linter",
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { a as CategoryLabels, i as flags, n as cliFlags, o as categories, r as features, s as categoriesGroups, t as Flags } from "./features-BpE9LMuZ.js";
1
+ import { a as CategoryLabels, i as flags, n as cliFlags, o as categories, r as features, s as categoriesGroups, t as Flags } from "./features-0vnv7iCL.js";
2
2
 
3
3
  //#region src/types.d.ts
4
4
  interface Feature<C = string> {
@@ -17,6 +17,7 @@ interface Feature<C = string> {
17
17
  invisibleCli?: boolean;
18
18
  readonly?: boolean;
19
19
  selected?: boolean;
20
+ tooltip?: string;
20
21
  }
21
22
  interface FeatureLink {
22
23
  label: string;
@@ -40,7 +41,13 @@ declare class BatiSet extends Set<Flags> {
40
41
  constructor(flags: Flags[], allFeatures: ReadonlyArray<Feature>, pm: string);
41
42
  private hasOneOf;
42
43
  get hasServer(): boolean;
44
+ /** A database engine is selected (SQLite or PostgreSQL). */
43
45
  get hasDatabase(): boolean;
46
+ /** An ORM or query builder is selected (Drizzle, Kysely or Prisma). */
47
+ get hasOrm(): boolean;
48
+ /** A database engine whose client and todo demo Bati scaffolds. Prisma is self-managed
49
+ * (it brings its own client and `DATABASE_URL`), so it opts out of the shared demo. */
50
+ get hasDbDemo(): boolean;
44
51
  get hasD1(): boolean;
45
52
  get hasDotEnvSecrets(): boolean;
46
53
  get hasUD(): boolean;
@@ -50,4 +57,4 @@ declare class BatiSet extends Set<Flags> {
50
57
  get hasPhoton(): boolean;
51
58
  }
52
59
  //#endregion
53
- export { BatiSet, Category, CategoryLabels, Feature, FeatureLink, Flags, categories, categoriesGroups, cliFlags, features, flags };
60
+ export { BatiSet, type Category, CategoryLabels, type Feature, type FeatureLink, Flags, categories, categoriesGroups, cliFlags, features, flags };
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { n as features, r as flags, t as cliFlags } from "./features-B53JK9Cw.js";
1
+ import { n as features, r as flags, t as cliFlags } from "./features-uGphBBds.js";
2
2
  //#region src/groups.ts
3
3
  let categoriesGroups = /* @__PURE__ */ function(categoriesGroups) {
4
4
  categoriesGroups["Frontend"] = "Frontend";
@@ -57,12 +57,19 @@ it's recommended to only install a Server if you really need to, as Vike doesn't
57
57
  {
58
58
  label: "Database",
59
59
  group: "Data",
60
- description: `Helping you get started with a database solution.`
60
+ description: `The database your app talks to. SQLite runs embedded (and powers Cloudflare D1);
61
+ PostgreSQL targets a Postgres server. Selected on its own you get a thin client; pair it with an ORM or query builder below.`
62
+ },
63
+ {
64
+ label: "ORM / Query builder",
65
+ group: "Data",
66
+ description: `Type-safe data access on top of your database. Requires choosing a Database above.`
61
67
  },
62
68
  {
63
69
  label: "Hosting",
64
70
  group: "Deployment",
65
- description: `Quickly host your Vike project with a Serverless or VPS (coming soon) solution.`
71
+ description: `Quickly host your Vike project with a Serverless or VPS (coming soon) solution.`,
72
+ required: true
66
73
  },
67
74
  {
68
75
  label: "Linter",
@@ -95,12 +102,14 @@ tailored for Vike.`
95
102
  var BatiSet = class extends Set {
96
103
  #servers;
97
104
  #databases;
105
+ #orm;
98
106
  pm;
99
107
  constructor(flags, allFeatures, pm) {
100
108
  super(flags);
101
109
  this.pm = pm;
102
110
  this.#servers = new Set(allFeatures.filter((f) => f.category === "Server").map((f) => f.flag));
103
111
  this.#databases = new Set(allFeatures.filter((f) => f.category === "Database").map((f) => f.flag));
112
+ this.#orm = new Set(allFeatures.filter((f) => f.category === "ORM / Query builder").map((f) => f.flag));
104
113
  }
105
114
  hasOneOf(a) {
106
115
  for (const x of this) if (a.has(x)) return true;
@@ -109,17 +118,27 @@ var BatiSet = class extends Set {
109
118
  get hasServer() {
110
119
  return this.hasOneOf(this.#servers);
111
120
  }
121
+ /** A database engine is selected (SQLite or PostgreSQL). */
112
122
  get hasDatabase() {
113
- return this.has("sqlite") || this.has("drizzle") || this.has("kysely");
123
+ return this.hasOneOf(this.#databases);
124
+ }
125
+ /** An ORM or query builder is selected (Drizzle, Kysely or Prisma). */
126
+ get hasOrm() {
127
+ return this.hasOneOf(this.#orm);
128
+ }
129
+ /** A database engine whose client and todo demo Bati scaffolds. Prisma is self-managed
130
+ * (it brings its own client and `DATABASE_URL`), so it opts out of the shared demo. */
131
+ get hasDbDemo() {
132
+ return this.hasDatabase && !this.has("prisma");
114
133
  }
115
134
  get hasD1() {
116
- return this.has("cloudflare") && (this.has("sqlite") || this.has("drizzle") || this.has("kysely"));
135
+ return this.has("cloudflare") && this.has("sqlite");
117
136
  }
118
137
  get hasDotEnvSecrets() {
119
138
  return !this.has("cloudflare");
120
139
  }
121
140
  get hasUD() {
122
- return this.has("cloudflare") || this.has("vercel") || this.has("netlify") || this.has("dokploy") || this.hasOneOf(this.#servers);
141
+ return this.has("cloudflare") || this.has("vercel") || this.has("netlify") || this.has("docker") || this.has("dokploy") || this.hasOneOf(this.#servers);
123
142
  }
124
143
  /**
125
144
  * @deprecated
package/dist/rules.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { a as CategoryLabels, t as Flags } from "./features-BpE9LMuZ.js";
1
+ import { a as CategoryLabels, t as Flags } from "./features-0vnv7iCL.js";
2
2
 
3
3
  //#region src/rules/enum.d.ts
4
4
  declare enum RulesMessage {
@@ -7,14 +7,17 @@ declare enum RulesMessage {
7
7
  ERROR_DRIZZLE_R_SERVER = 2,
8
8
  ERROR_KYSELY_R_SERVER = 3,
9
9
  ERROR_SQLITE_R_SERVER = 4,
10
- ERROR_DATA_R_SERVER = 5,
11
- ERROR_CLOUDFLARE_R_COMPAT_SERVER = 6,
12
- ERROR_AWS_R_COMPAT_SERVER = 7,
13
- ERROR_MANTINE_R_REACT = 8,
14
- ERROR_SHADCN_R_REACT = 9,
15
- WARN_SHADCN_R_TAILWINDCSS = 10,
16
- INFO_STACKBLITZ_COMPAT = 11,
17
- ERROR_STORYBOOK_R_UI_FRAMEWORK = 12
10
+ ERROR_POSTGRES_R_SERVER = 5,
11
+ ERROR_POSTGRES_X_SQLITE = 6,
12
+ ERROR_ORM_R_DATABASE = 7,
13
+ ERROR_DATA_R_SERVER = 8,
14
+ ERROR_CLOUDFLARE_R_COMPAT_SERVER = 9,
15
+ ERROR_AWS_R_COMPAT_SERVER = 10,
16
+ ERROR_MANTINE_R_REACT = 11,
17
+ ERROR_SHADCN_R_REACT = 12,
18
+ WARN_SHADCN_R_TAILWINDCSS = 13,
19
+ INFO_STACKBLITZ_COMPAT = 14,
20
+ ERROR_STORYBOOK_R_UI_FRAMEWORK = 15
18
21
  }
19
22
  //#endregion
20
23
  //#region src/rules/utils.d.ts
package/dist/rules.js CHANGED
@@ -1,4 +1,4 @@
1
- import { n as features, r as flags } from "./features-B53JK9Cw.js";
1
+ import { n as features, r as flags } from "./features-uGphBBds.js";
2
2
  //#region src/rules/enum.ts
3
3
  let RulesMessage = /* @__PURE__ */ function(RulesMessage) {
4
4
  RulesMessage[RulesMessage["ERROR_AUTH_R_SERVER"] = 0] = "ERROR_AUTH_R_SERVER";
@@ -6,19 +6,28 @@ let RulesMessage = /* @__PURE__ */ function(RulesMessage) {
6
6
  RulesMessage[RulesMessage["ERROR_DRIZZLE_R_SERVER"] = 2] = "ERROR_DRIZZLE_R_SERVER";
7
7
  RulesMessage[RulesMessage["ERROR_KYSELY_R_SERVER"] = 3] = "ERROR_KYSELY_R_SERVER";
8
8
  RulesMessage[RulesMessage["ERROR_SQLITE_R_SERVER"] = 4] = "ERROR_SQLITE_R_SERVER";
9
- RulesMessage[RulesMessage["ERROR_DATA_R_SERVER"] = 5] = "ERROR_DATA_R_SERVER";
10
- RulesMessage[RulesMessage["ERROR_CLOUDFLARE_R_COMPAT_SERVER"] = 6] = "ERROR_CLOUDFLARE_R_COMPAT_SERVER";
11
- RulesMessage[RulesMessage["ERROR_AWS_R_COMPAT_SERVER"] = 7] = "ERROR_AWS_R_COMPAT_SERVER";
12
- RulesMessage[RulesMessage["ERROR_MANTINE_R_REACT"] = 8] = "ERROR_MANTINE_R_REACT";
13
- RulesMessage[RulesMessage["ERROR_SHADCN_R_REACT"] = 9] = "ERROR_SHADCN_R_REACT";
14
- RulesMessage[RulesMessage["WARN_SHADCN_R_TAILWINDCSS"] = 10] = "WARN_SHADCN_R_TAILWINDCSS";
15
- RulesMessage[RulesMessage["INFO_STACKBLITZ_COMPAT"] = 11] = "INFO_STACKBLITZ_COMPAT";
16
- RulesMessage[RulesMessage["ERROR_STORYBOOK_R_UI_FRAMEWORK"] = 12] = "ERROR_STORYBOOK_R_UI_FRAMEWORK";
9
+ RulesMessage[RulesMessage["ERROR_POSTGRES_R_SERVER"] = 5] = "ERROR_POSTGRES_R_SERVER";
10
+ RulesMessage[RulesMessage["ERROR_POSTGRES_X_SQLITE"] = 6] = "ERROR_POSTGRES_X_SQLITE";
11
+ RulesMessage[RulesMessage["ERROR_ORM_R_DATABASE"] = 7] = "ERROR_ORM_R_DATABASE";
12
+ RulesMessage[RulesMessage["ERROR_DATA_R_SERVER"] = 8] = "ERROR_DATA_R_SERVER";
13
+ RulesMessage[RulesMessage["ERROR_CLOUDFLARE_R_COMPAT_SERVER"] = 9] = "ERROR_CLOUDFLARE_R_COMPAT_SERVER";
14
+ RulesMessage[RulesMessage["ERROR_AWS_R_COMPAT_SERVER"] = 10] = "ERROR_AWS_R_COMPAT_SERVER";
15
+ RulesMessage[RulesMessage["ERROR_MANTINE_R_REACT"] = 11] = "ERROR_MANTINE_R_REACT";
16
+ RulesMessage[RulesMessage["ERROR_SHADCN_R_REACT"] = 12] = "ERROR_SHADCN_R_REACT";
17
+ RulesMessage[RulesMessage["WARN_SHADCN_R_TAILWINDCSS"] = 13] = "WARN_SHADCN_R_TAILWINDCSS";
18
+ RulesMessage[RulesMessage["INFO_STACKBLITZ_COMPAT"] = 14] = "INFO_STACKBLITZ_COMPAT";
19
+ RulesMessage[RulesMessage["ERROR_STORYBOOK_R_UI_FRAMEWORK"] = 15] = "ERROR_STORYBOOK_R_UI_FRAMEWORK";
17
20
  return RulesMessage;
18
21
  }({});
19
22
  //#endregion
20
23
  //#region src/rules/utils.ts
21
24
  /**
25
+ * Returns a message if all given rules are not exclusive
26
+ */
27
+ function exclusive(message, rules) {
28
+ return (fts) => rules.every((r) => fts.has(r)) && message;
29
+ }
30
+ /**
22
31
  * Returns a message if ifPresent is present but any mustAlsoInclude is not
23
32
  */
24
33
  function requires(message, ifPresent, mustAlsoInclude) {
@@ -51,37 +60,42 @@ var rules_default = [
51
60
  requires(2, "drizzle", ["Server"]),
52
61
  requires(4, "sqlite", ["Server"]),
53
62
  requires(3, "kysely", ["Server"]),
54
- requires(5, "Data fetching", ["Server"]),
55
- filter(6, (fts) => {
63
+ requires(5, "postgres", ["Server"]),
64
+ exclusive(6, ["postgres", "sqlite"]),
65
+ requires(7, "drizzle", ["Database"]),
66
+ requires(7, "kysely", ["Database"]),
67
+ requires(7, "prisma", ["Database"]),
68
+ requires(8, "Data fetching", ["Server"]),
69
+ filter(9, (fts) => {
56
70
  if (fts.has("cloudflare")) {
57
71
  if (fts.has("hono") || fts.has("h3")) return false;
58
72
  return fts.has("Server");
59
73
  }
60
74
  return false;
61
75
  }),
62
- filter(7, (fts) => {
76
+ filter(10, (fts) => {
63
77
  if (fts.has("aws")) {
64
78
  if (fts.has("hono")) return false;
65
79
  return true;
66
80
  }
67
81
  return false;
68
82
  }),
69
- filter(8, (fts) => {
83
+ filter(11, (fts) => {
70
84
  if (fts.has("mantine")) return fts.has("vue") || fts.has("solid");
71
85
  return false;
72
86
  }),
73
- filter(9, (fts) => {
87
+ filter(12, (fts) => {
74
88
  if (fts.has("shadcn-ui")) return fts.has("vue") || fts.has("solid");
75
89
  return false;
76
90
  }),
77
- filter(10, (fts) => {
91
+ filter(13, (fts) => {
78
92
  if (fts.has("shadcn-ui")) return fts.has("daisyui") || fts.has("compiled-css");
79
93
  return false;
80
94
  }),
81
- filter(11, (fts) => {
82
- return fts.has("drizzle") || fts.has("sqlite") || fts.has("kysely") || fts.has("cloudflare");
95
+ filter(14, (fts) => {
96
+ return fts.has("drizzle") || fts.has("sqlite") || fts.has("kysely") || fts.has("postgres") || fts.has("cloudflare");
83
97
  }),
84
- filter(12, (fts) => {
98
+ filter(15, (fts) => {
85
99
  if (fts.has("storybook")) return !fts.has("react") && !fts.has("vue") && !fts.has("solid");
86
100
  return false;
87
101
  })
package/package.json CHANGED
@@ -1,8 +1,15 @@
1
1
  {
2
2
  "name": "@batijs/features",
3
- "version": "0.0.632",
3
+ "version": "0.0.634",
4
4
  "description": "",
5
5
  "type": "module",
6
+ "scripts": {
7
+ "test": "vitest run",
8
+ "test:ci": "vitest run",
9
+ "prepublishOnly": "bun run build",
10
+ "build": "tsdown",
11
+ "watch": "tsdown --watch"
12
+ },
6
13
  "keywords": [],
7
14
  "author": "Joël Charles <joel.charles91@gmail.com>",
8
15
  "repository": "https://github.com/vikejs/bati",
@@ -30,11 +37,5 @@
30
37
  },
31
38
  "files": [
32
39
  "dist/"
33
- ],
34
- "scripts": {
35
- "test": "vitest run",
36
- "test:ci": "vitest run",
37
- "build": "tsdown",
38
- "watch": "tsdown --watch"
39
- }
40
- }
40
+ ]
41
+ }
package/LICENSE.md DELETED
@@ -1,9 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2023-present Joël Charles
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
6
-
7
- The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
8
-
9
- 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 OR COPYRIGHT HOLDERS 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.