axiodb 2.30.93 → 2.31.94

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.
Files changed (47) hide show
  1. package/lib/Services/Aggregation/Aggregation.Operation.js +10 -47
  2. package/lib/Services/Aggregation/Aggregation.Operation.js.map +1 -1
  3. package/lib/Services/CRUD Operation/Create.operation.js +7 -53
  4. package/lib/Services/CRUD Operation/Create.operation.js.map +1 -1
  5. package/lib/Services/CRUD Operation/Delete.operation.js +12 -51
  6. package/lib/Services/CRUD Operation/Delete.operation.js.map +1 -1
  7. package/lib/Services/CRUD Operation/Reader.operation.js +12 -51
  8. package/lib/Services/CRUD Operation/Reader.operation.js.map +1 -1
  9. package/lib/Services/CRUD Operation/Update.operation.js +12 -51
  10. package/lib/Services/CRUD Operation/Update.operation.js.map +1 -1
  11. package/lib/Services/Indexation.operation.d.ts +5 -0
  12. package/lib/Services/Indexation.operation.js +7 -0
  13. package/lib/Services/Indexation.operation.js.map +1 -1
  14. package/lib/server/config/keys.js +30 -28
  15. package/lib/server/config/keys.js.map +1 -1
  16. package/lib/server/controller/Collections/Collection.controller.d.ts +1 -1
  17. package/lib/server/controller/Collections/Collection.controller.js +1 -15
  18. package/lib/server/controller/Collections/Collection.controller.js.map +1 -1
  19. package/lib/server/controller/Database/Databse.controller.d.ts +32 -2
  20. package/lib/server/controller/Database/Databse.controller.js +157 -14
  21. package/lib/server/controller/Database/Databse.controller.js.map +1 -1
  22. package/lib/server/controller/Operation/CRUD.controller.js +0 -9
  23. package/lib/server/controller/Operation/CRUD.controller.js.map +1 -1
  24. package/lib/server/controller/Stats.controller.d.ts +1 -1
  25. package/lib/server/controller/Stats.controller.js +1 -14
  26. package/lib/server/controller/Stats.controller.js.map +1 -1
  27. package/lib/server/public/AxioControl/.vite/manifest.json +2 -2
  28. package/lib/server/public/AxioControl/.vite/ssr-manifest.json +258 -0
  29. package/lib/server/public/AxioControl/assets/index-CdykjE_a.css +1 -0
  30. package/lib/server/public/AxioControl/assets/index-DImn3ep-.js +75 -0
  31. package/lib/server/public/AxioControl/index.html +2 -2
  32. package/lib/server/public/AxioControl/sw.js +1 -1
  33. package/lib/server/router/Router.js +1 -21
  34. package/lib/server/router/Router.js.map +1 -1
  35. package/lib/server/router/Routers/Collection.routes.js +1 -3
  36. package/lib/server/router/Routers/Collection.routes.js.map +1 -1
  37. package/lib/server/router/Routers/DB.routes.js +7 -3
  38. package/lib/server/router/Routers/DB.routes.js.map +1 -1
  39. package/lib/utility/ZipUnzip.utils.d.ts +31 -0
  40. package/lib/utility/ZipUnzip.utils.js +117 -0
  41. package/lib/utility/ZipUnzip.utils.js.map +1 -0
  42. package/package.json +6 -3
  43. package/lib/server/config/GlobalStorage.config.d.ts +0 -66
  44. package/lib/server/config/GlobalStorage.config.js +0 -95
  45. package/lib/server/config/GlobalStorage.config.js.map +0 -1
  46. package/lib/server/public/AxioControl/assets/index-CEUHQ44S.css +0 -1
  47. package/lib/server/public/AxioControl/assets/index-Cub2B5F8.js +0 -67
@@ -25,8 +25,8 @@
25
25
  <meta name="twitter:card" content="summary_large_image" />
26
26
  <link rel="canonical" href="https://axiodb.site" />
27
27
  <link rel="icon" type="image/svg+xml" href="AXioDB.png" />
28
- <script type="module" crossorigin src="/assets/index-Cub2B5F8.js"></script>
29
- <link rel="stylesheet" crossorigin href="/assets/index-CEUHQ44S.css">
28
+ <script type="module" crossorigin src="/assets/index-DImn3ep-.js"></script>
29
+ <link rel="stylesheet" crossorigin href="/assets/index-CdykjE_a.css">
30
30
  <link rel="manifest" href="/manifest.webmanifest"><script id="vite-plugin-pwa:register-sw" src="/registerSW.js"></script></head>
31
31
 
32
32
  <body>
@@ -1 +1 @@
1
- if(!self.define){let e,s={};const i=(i,n)=>(i=new URL(i+".js",n).href,s[i]||new Promise(s=>{if("document"in self){const e=document.createElement("script");e.src=i,e.onload=s,document.head.appendChild(e)}else e=i,importScripts(i),s()}).then(()=>{let e=s[i];if(!e)throw new Error(`Module ${i} didn’t register its module`);return e}));self.define=(n,r)=>{const t=e||("document"in self?document.currentScript.src:"")||location.href;if(s[t])return;let o={};const c=e=>i(e,t),l={module:{uri:t},exports:o,require:c};s[t]=Promise.all(n.map(e=>l[e]||c(e))).then(e=>(r(...e),o))}}define(["./workbox-5ffe50d4"],function(e){"use strict";self.skipWaiting(),e.clientsClaim(),e.precacheAndRoute([{url:"assets/index-CEUHQ44S.css",revision:null},{url:"assets/index-Cub2B5F8.js",revision:null},{url:"index.html",revision:"c5cfa685438aae07a1d92bc39f8d0bbc"},{url:"registerSW.js",revision:"1872c500de691dce40960bb85481de07"},{url:"manifest.webmanifest",revision:"531c27931688c6a365595ec1badc959b"}],{}),e.cleanupOutdatedCaches(),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("index.html")))});
1
+ if(!self.define){let e,s={};const i=(i,n)=>(i=new URL(i+".js",n).href,s[i]||new Promise(s=>{if("document"in self){const e=document.createElement("script");e.src=i,e.onload=s,document.head.appendChild(e)}else e=i,importScripts(i),s()}).then(()=>{let e=s[i];if(!e)throw new Error(`Module ${i} didn’t register its module`);return e}));self.define=(n,r)=>{const t=e||("document"in self?document.currentScript.src:"")||location.href;if(s[t])return;let o={};const l=e=>i(e,t),d={module:{uri:t},exports:o,require:l};s[t]=Promise.all(n.map(e=>d[e]||l(e))).then(e=>(r(...e),o))}}define(["./workbox-5ffe50d4"],function(e){"use strict";self.skipWaiting(),e.clientsClaim(),e.precacheAndRoute([{url:"assets/index-CdykjE_a.css",revision:null},{url:"assets/index-DImn3ep-.js",revision:null},{url:"index.html",revision:"ab645f9b401e24b62029db9d82267083"},{url:"registerSW.js",revision:"1872c500de691dce40960bb85481de07"},{url:"manifest.webmanifest",revision:"531c27931688c6a365595ec1badc959b"}],{}),e.cleanupOutdatedCaches(),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("index.html")))});
@@ -19,7 +19,6 @@ const outers_1 = require("outers");
19
19
  const promises_1 = require("node:fs/promises");
20
20
  // All Sub Routers
21
21
  const DB_routes_1 = __importDefault(require("./Routers/DB.routes"));
22
- const key_controller_1 = __importDefault(require("../controller/Key/key.controller"));
23
22
  const Collection_routes_1 = __importDefault(require("./Routers/Collection.routes"));
24
23
  const Operation_routes_1 = __importDefault(require("./Routers/Operation.routes"));
25
24
  const Stats_controller_1 = __importDefault(require("../controller/Stats.controller"));
@@ -33,21 +32,6 @@ function mainRouter(fastify, options, done) {
33
32
  return __awaiter(this, void 0, void 0, function* () {
34
33
  // Now you can access the AxioDB instance
35
34
  const { AxioDBInstance } = options;
36
- // Middlewares
37
- // Middleware for /db routes
38
- fastify.addHook("preHandler", (request, reply) => __awaiter(this, void 0, void 0, function* () {
39
- var _a;
40
- // Only apply middleware to routes starting with /db
41
- if (request.url.includes("/db") ||
42
- request.url.includes("/collection") ||
43
- request.url.includes("/dashboard-stats")) {
44
- const transactionToken = (_a = request.query) === null || _a === void 0 ? void 0 : _a.transactiontoken;
45
- const status = yield new key_controller_1.default(process.version).verifyKey(transactionToken);
46
- if (status.statusCode !== outers_1.StatusCodes.OK) {
47
- return reply.status(status.statusCode).send(status);
48
- }
49
- }
50
- }));
51
35
  fastify.get("/info", () => __awaiter(this, void 0, void 0, function* () {
52
36
  const PackageFile = JSON.parse(yield (0, promises_1.readFile)("./package.json", "utf-8"));
53
37
  const Reply = (0, responseBuilder_helper_1.default)(outers_1.StatusCodes.OK, "AxioDB Information", {
@@ -72,13 +56,9 @@ function mainRouter(fastify, options, done) {
72
56
  const Reply = (0, responseBuilder_helper_1.default)(outers_1.StatusCodes.OK, "Available routes", keys_1.AvailableRoutes);
73
57
  return reply.status(200).send(Reply);
74
58
  }));
75
- // Generate a new token for transacting with AxioDB Server
76
- fastify.get("/get-token", (request, reply) => __awaiter(this, void 0, void 0, function* () { return new key_controller_1.default(process.version).generateKey(); }));
77
59
  // Get Dashboard Stats
78
60
  fastify.get("/dashboard-stats", (request, reply) => __awaiter(this, void 0, void 0, function* () {
79
- var _a;
80
- const transactionToken = (_a = request.query) === null || _a === void 0 ? void 0 : _a.transactiontoken;
81
- return new Stats_controller_1.default(AxioDBInstance).getDashBoardStat(transactionToken);
61
+ return new Stats_controller_1.default(AxioDBInstance).getDashBoardStat();
82
62
  }));
83
63
  // Register the DB router
84
64
  fastify.register(DB_routes_1.default, {
@@ -1 +1 @@
1
- {"version":3,"file":"Router.js","sourceRoot":"","sources":["../../../source/server/router/Router.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Router.js","sourceRoot":"","sources":["../../../source/server/router/Router.ts"],"names":[],"mappings":"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"}
@@ -20,9 +20,7 @@ function collectionRouter(fastify, options) {
20
20
  const { AxioDBInstance } = options;
21
21
  // Get All Collection
22
22
  fastify.get("/all/", (request, reply) => __awaiter(this, void 0, void 0, function* () {
23
- var _a;
24
- const transactionToken = (_a = request.query) === null || _a === void 0 ? void 0 : _a.transactiontoken;
25
- return new Collection_controller_1.default(AxioDBInstance).getCollections(request, transactionToken);
23
+ return new Collection_controller_1.default(AxioDBInstance).getCollections(request);
26
24
  }));
27
25
  // Create Collection
28
26
  fastify.post("/create-collection", (request, reply) => __awaiter(this, void 0, void 0, function* () { return new Collection_controller_1.default(AxioDBInstance).createCollection(request); }));
@@ -1 +1 @@
1
- {"version":3,"file":"Collection.routes.js","sourceRoot":"","sources":["../../../../source/server/router/Routers/Collection.routes.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAcA,mCAwBC;AAhCD,+GAAsF;AAOtF,oBAAoB;AACpB,SAA8B,gBAAgB,CAC5C,OAAwB,EACxB,OAAsB;;QAEtB,MAAM,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC;QAEnC,qBAAqB;QACrB,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,CAAO,OAAO,EAAE,KAAK,EAAE,EAAE;;YAC5C,MAAM,gBAAgB,GAAG,MAAC,OAAO,CAAC,KAAa,0CAAE,gBAAgB,CAAC;YAClE,OAAO,IAAI,+BAAoB,CAAC,cAAc,CAAC,CAAC,cAAc,CAC5D,OAAO,EACP,gBAAgB,CACjB,CAAC;QACJ,CAAC,CAAA,CAAC,CAAC;QAEH,oBAAoB;QACpB,OAAO,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAO,OAAO,EAAE,KAAK,EAAE,EAAE,gDAC1D,OAAA,IAAI,+BAAoB,CAAC,cAAc,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA,GAAA,CACnE,CAAC;QAEF,oBAAoB;QACpB,OAAO,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAO,OAAO,EAAE,KAAK,EAAE,EAAE,gDAC7D,OAAA,IAAI,+BAAoB,CAAC,cAAc,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA,GAAA,CACnE,CAAC;IACJ,CAAC;CAAA"}
1
+ {"version":3,"file":"Collection.routes.js","sourceRoot":"","sources":["../../../../source/server/router/Routers/Collection.routes.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAcA,mCAoBC;AA5BD,+GAAsF;AAOtF,oBAAoB;AACpB,SAA8B,gBAAgB,CAC5C,OAAwB,EACxB,OAAsB;;QAEtB,MAAM,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC;QAEnC,qBAAqB;QACrB,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,CAAO,OAAO,EAAE,KAAK,EAAE,EAAE;YAC5C,OAAO,IAAI,+BAAoB,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC1E,CAAC,CAAA,CAAC,CAAC;QAEH,oBAAoB;QACpB,OAAO,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAO,OAAO,EAAE,KAAK,EAAE,EAAE,gDAC1D,OAAA,IAAI,+BAAoB,CAAC,cAAc,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA,GAAA,CACnE,CAAC;QAEF,oBAAoB;QACpB,OAAO,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAO,OAAO,EAAE,KAAK,EAAE,EAAE,gDAC7D,OAAA,IAAI,+BAAoB,CAAC,cAAc,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA,GAAA,CACnE,CAAC;IACJ,CAAC;CAAA"}
@@ -14,20 +14,24 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.default = dbRouter;
16
16
  const Databse_controller_1 = __importDefault(require("../../controller/Database/Databse.controller"));
17
+ const multipart_1 = __importDefault(require("@fastify/multipart"));
17
18
  // DB Routers
18
19
  function dbRouter(fastify, options) {
19
20
  return __awaiter(this, void 0, void 0, function* () {
20
21
  const { AxioDBInstance } = options; // Access the AxioDB instance passed from the main router
22
+ fastify.register(multipart_1.default);
21
23
  // Get all databases
22
24
  fastify.get("/databases", (request) => __awaiter(this, void 0, void 0, function* () {
23
- var _a;
24
- const transactionToken = (_a = request.query) === null || _a === void 0 ? void 0 : _a.transactiontoken;
25
- return new Databse_controller_1.default(AxioDBInstance).getDatabases(transactionToken);
25
+ return new Databse_controller_1.default(AxioDBInstance).getDatabases();
26
26
  }));
27
27
  // Create a new database
28
28
  fastify.post("/create-database", (request) => __awaiter(this, void 0, void 0, function* () { return new Databse_controller_1.default(AxioDBInstance).createDatabase(request); }));
29
29
  // Delete a database
30
30
  fastify.delete("/delete-database", (request) => __awaiter(this, void 0, void 0, function* () { return new Databse_controller_1.default(AxioDBInstance).deleteDatabase(request); }));
31
+ // Export Database
32
+ fastify.get("/export-database/", (request, reply) => __awaiter(this, void 0, void 0, function* () { return new Databse_controller_1.default(AxioDBInstance).exportDatabase(request, reply); }));
33
+ // Import Database
34
+ fastify.post("/import-database/", (request, reply) => __awaiter(this, void 0, void 0, function* () { return new Databse_controller_1.default(AxioDBInstance).importDatabase(request, reply); }));
31
35
  });
32
36
  }
33
37
  //# sourceMappingURL=DB.routes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DB.routes.js","sourceRoot":"","sources":["../../../../source/server/router/Routers/DB.routes.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAcA,2BAuBC;AA/BD,sGAA8E;AAO9E,aAAa;AACb,SAA8B,QAAQ,CACpC,OAAwB,EACxB,OAAsB;;QAEtB,MAAM,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,CAAC,yDAAyD;QAE7F,oBAAoB;QACpB,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,CAAO,OAAO,EAAE,EAAE;;YAC1C,MAAM,gBAAgB,GAAG,MAAC,OAAO,CAAC,KAAa,0CAAE,gBAAgB,CAAC;YAClE,OAAO,IAAI,4BAAkB,CAAC,cAAc,CAAC,CAAC,YAAY,CACxD,gBAAgB,CACjB,CAAC;QACJ,CAAC,CAAA,CAAC,CAAC;QAEH,wBAAwB;QACxB,OAAO,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAO,OAAO,EAAE,EAAE,gDACjD,OAAA,IAAI,4BAAkB,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA,GAAA,CAC/D,CAAC;QAEF,oBAAoB;QACpB,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAO,OAAO,EAAE,EAAE,gDACnD,OAAA,IAAI,4BAAkB,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA,GAAA,CAC/D,CAAC;IACJ,CAAC;CAAA"}
1
+ {"version":3,"file":"DB.routes.js","sourceRoot":"","sources":["../../../../source/server/router/Routers/DB.routes.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAeA,2BA+BC;AAxCD,sGAA8E;AAC9E,mEAAkD;AAOlD,aAAa;AACb,SAA8B,QAAQ,CACpC,OAAwB,EACxB,OAAsB;;QAEtB,MAAM,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,CAAC,yDAAyD;QAC7F,OAAO,CAAC,QAAQ,CAAC,mBAAgB,CAAC,CAAC;QAEnC,oBAAoB;QACpB,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,CAAO,OAAO,EAAE,EAAE;YAC1C,OAAO,IAAI,4BAAkB,CAAC,cAAc,CAAC,CAAC,YAAY,EAAE,CAAC;QAC/D,CAAC,CAAA,CAAC,CAAC;QAEH,wBAAwB;QACxB,OAAO,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAO,OAAO,EAAE,EAAE,gDACjD,OAAA,IAAI,4BAAkB,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA,GAAA,CAC/D,CAAC;QAEF,oBAAoB;QACpB,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAO,OAAO,EAAE,EAAE,gDACnD,OAAA,IAAI,4BAAkB,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA,GAAA,CAC/D,CAAC;QAEF,kBAAkB;QAClB,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAO,OAAO,EAAE,KAAK,EAAE,EAAE,gDACxD,OAAA,IAAI,4BAAkB,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA,GAAA,CACtE,CAAC;QAEF,kBAAkB;QAClB,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAO,OAAO,EAAE,KAAK,EAAE,EAAE,gDACzD,OAAA,IAAI,4BAAkB,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA,GAAA,CACtE,CAAC;IACJ,CAAC;CAAA"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Compresses a folder into a tar.gz archive.
3
+ *
4
+ * @param sourceFolder - The path to the folder to be compressed
5
+ * @param outPath - The destination path for the compressed archive
6
+ * @returns A Promise that resolves when compression is complete
7
+ *
8
+ * @example
9
+ * // Compress a folder to a tar.gz file
10
+ * await tarGzFolder('/path/to/source', '/path/to/archive.tar.gz');
11
+ */
12
+ export declare function tarGzFolder(sourceFolder: string, outPath: string): Promise<string>;
13
+ /**
14
+ * Unzips a .tar.gz file to a specified destination folder
15
+ *
16
+ * @param zipFilePath - The path to the compressed file to be unzipped
17
+ * @param destFolder - The destination folder where the contents will be extracted
18
+ * @returns A promise that resolves with the destination folder path when unzipping is complete
19
+ * @throws Will reject the promise with an error if unzipping fails
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * try {
24
+ * const extractedPath = await unzipFile('/path/to/archive.tar.gz', '/path/to/destination');
25
+ * console.log(`Files extracted to ${extractedPath}`);
26
+ * } catch (error) {
27
+ * console.error('Failed to unzip file:', error);
28
+ * }
29
+ * ```
30
+ */
31
+ export declare function unzipFile(zipFilePath: string, destFolder: string): Promise<string>;
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
36
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
37
+ return new (P || (P = Promise))(function (resolve, reject) {
38
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
39
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
40
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
41
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
42
+ });
43
+ };
44
+ var __importDefault = (this && this.__importDefault) || function (mod) {
45
+ return (mod && mod.__esModule) ? mod : { "default": mod };
46
+ };
47
+ Object.defineProperty(exports, "__esModule", { value: true });
48
+ exports.tarGzFolder = tarGzFolder;
49
+ exports.unzipFile = unzipFile;
50
+ const fs_1 = __importDefault(require("fs"));
51
+ const path_1 = __importDefault(require("path"));
52
+ const zlib_1 = __importDefault(require("zlib"));
53
+ const tar = __importStar(require("tar"));
54
+ /**
55
+ * Compresses a folder into a tar.gz archive.
56
+ *
57
+ * @param sourceFolder - The path to the folder to be compressed
58
+ * @param outPath - The destination path for the compressed archive
59
+ * @returns A Promise that resolves when compression is complete
60
+ *
61
+ * @example
62
+ * // Compress a folder to a tar.gz file
63
+ * await tarGzFolder('/path/to/source', '/path/to/archive.tar.gz');
64
+ */
65
+ function tarGzFolder(sourceFolder, outPath) {
66
+ return __awaiter(this, void 0, void 0, function* () {
67
+ return new Promise((resolve, reject) => {
68
+ const gzip = zlib_1.default.createGzip();
69
+ const dest = fs_1.default.createWriteStream(outPath);
70
+ tar
71
+ .c({
72
+ gzip: false, // let zlib handle gzip
73
+ cwd: path_1.default.dirname(sourceFolder),
74
+ }, [path_1.default.basename(sourceFolder)])
75
+ .pipe(gzip)
76
+ .pipe(dest)
77
+ .on("finish", () => {
78
+ resolve(outPath);
79
+ })
80
+ .on("error", reject);
81
+ });
82
+ });
83
+ }
84
+ /**
85
+ * Unzips a .tar.gz file to a specified destination folder
86
+ *
87
+ * @param zipFilePath - The path to the compressed file to be unzipped
88
+ * @param destFolder - The destination folder where the contents will be extracted
89
+ * @returns A promise that resolves with the destination folder path when unzipping is complete
90
+ * @throws Will reject the promise with an error if unzipping fails
91
+ *
92
+ * @example
93
+ * ```typescript
94
+ * try {
95
+ * const extractedPath = await unzipFile('/path/to/archive.tar.gz', '/path/to/destination');
96
+ * console.log(`Files extracted to ${extractedPath}`);
97
+ * } catch (error) {
98
+ * console.error('Failed to unzip file:', error);
99
+ * }
100
+ * ```
101
+ */
102
+ function unzipFile(zipFilePath, destFolder) {
103
+ return __awaiter(this, void 0, void 0, function* () {
104
+ return new Promise((resolve, reject) => {
105
+ const unzip = zlib_1.default.createUnzip();
106
+ const source = fs_1.default.createReadStream(zipFilePath);
107
+ source
108
+ .pipe(unzip)
109
+ .pipe(tar.x({ C: destFolder }))
110
+ .on("finish", () => {
111
+ resolve(destFolder);
112
+ })
113
+ .on("error", reject);
114
+ });
115
+ });
116
+ }
117
+ //# sourceMappingURL=ZipUnzip.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ZipUnzip.utils.js","sourceRoot":"","sources":["../../source/utility/ZipUnzip.utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBA,kCAuBC;AAoBD,8BAgBC;AA3ED,4CAAoB;AACpB,gDAAwB;AACxB,gDAAwB;AACxB,yCAA2B;AAE3B;;;;;;;;;;GAUG;AACH,SAAsB,WAAW,CAC/B,YAAoB,EACpB,OAAe;;QAEf,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,IAAI,GAAG,cAAI,CAAC,UAAU,EAAE,CAAC;YAC/B,MAAM,IAAI,GAAG,YAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAE3C,GAAG;iBACA,CAAC,CACA;gBACE,IAAI,EAAE,KAAK,EAAE,uBAAuB;gBACpC,GAAG,EAAE,cAAI,CAAC,OAAO,CAAC,YAAY,CAAC;aAChC,EACD,CAAC,cAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAC9B;iBACA,IAAI,CAAC,IAAI,CAAC;iBACV,IAAI,CAAC,IAAI,CAAC;iBACV,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;gBACjB,OAAO,CAAC,OAAO,CAAC,CAAC;YACnB,CAAC,CAAC;iBACD,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC;CAAA;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAsB,SAAS,CAC7B,WAAmB,EACnB,UAAkB;;QAElB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,KAAK,GAAG,cAAI,CAAC,WAAW,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,YAAE,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;YAEhD,MAAM;iBACH,IAAI,CAAC,KAAK,CAAC;iBACX,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;iBAC9B,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;gBACjB,OAAO,CAAC,UAAU,CAAC,CAAC;YACtB,CAAC,CAAC;iBACD,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC;CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "axiodb",
3
- "version": "2.30.93",
3
+ "version": "2.31.94",
4
4
  "description": "A blazing-fast, lightweight, and scalable nodejs package based DBMS for modern application. Supports schemas, encryption, and advanced query capabilities.",
5
5
  "main": "./lib/config/DB.js",
6
6
  "types": "./lib/config/DB.d.ts",
@@ -49,10 +49,13 @@
49
49
  "dependencies": {
50
50
  "@eslint/js": "^9.11.1",
51
51
  "@fastify/cors": "^11.0.1",
52
+ "@fastify/multipart": "^9.0.3",
52
53
  "@fastify/static": "^8.2.0",
54
+ "@types/tar": "^6.1.13",
53
55
  "fastify": "^5.4.0",
54
56
  "joi": "^17.13.3",
55
- "outers": "^8.6.2"
57
+ "outers": "^8.6.2",
58
+ "tar": "^7.4.3"
56
59
  },
57
60
  "devDependencies": {
58
61
  "@types/crypto-js": "^4.2.1",
@@ -66,4 +69,4 @@
66
69
  "npm": ">=6.0.0",
67
70
  "yarn": ">=1.0.0"
68
71
  }
69
- }
72
+ }
@@ -1,66 +0,0 @@
1
- /**
2
- * GlobalStorage Configuration
3
- * Provides a singleton class for global storage using a Map.
4
- */
5
- declare class GlobalStorage<T = any> {
6
- private storageMap;
7
- constructor();
8
- /**
9
- * Store a value with the specified key
10
- * @param key The unique identifier for the value
11
- * @param value The value to store
12
- * @returns The GlobalStorage instance for chaining
13
- */
14
- set(key: string, value: T): GlobalStorage<T>;
15
- /**
16
- * Retrieve a value by its key
17
- * @param key The key to look up
18
- * @returns The stored value or undefined if not found
19
- */
20
- get(key: string): T | undefined;
21
- /**
22
- * Get all stored key-value pairs
23
- * @returns Array of all entries [key, value]
24
- */
25
- getAll(): [string, T][];
26
- /**
27
- * Get all values in the storage
28
- * @returns Array of all values
29
- */
30
- getAllValues(): T[];
31
- /**
32
- * Get all keys in the storage
33
- * @returns Array of all keys
34
- */
35
- getAllKeys(): string[];
36
- /**
37
- * Update an existing value
38
- * @param key The key of the value to update
39
- * @param value The new value
40
- * @returns Boolean indicating success of operation
41
- */
42
- update(key: string, value: T): boolean;
43
- /**
44
- * Delete a value by its key
45
- * @param key The key to delete
46
- * @returns Boolean indicating if the item was successfully deleted
47
- */
48
- delete(key: string): boolean;
49
- /**
50
- * Check if a key exists in the storage
51
- * @param key The key to check
52
- * @returns Boolean indicating if the key exists
53
- */
54
- has(key: string): boolean;
55
- /**
56
- * Clear all values from the storage
57
- */
58
- clear(): void;
59
- /**
60
- * Get the size of the storage
61
- * @returns Number of key-value pairs in the storage
62
- */
63
- size(): number;
64
- }
65
- declare const _default: GlobalStorage<any>;
66
- export default _default;
@@ -1,95 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- /* eslint-disable @typescript-eslint/no-explicit-any */
4
- /**
5
- * GlobalStorage Configuration
6
- * Provides a singleton class for global storage using a Map.
7
- */
8
- class GlobalStorage {
9
- constructor() {
10
- this.storageMap = new Map();
11
- }
12
- /**
13
- * Store a value with the specified key
14
- * @param key The unique identifier for the value
15
- * @param value The value to store
16
- * @returns The GlobalStorage instance for chaining
17
- */
18
- set(key, value) {
19
- this.storageMap.set(key, value);
20
- return this;
21
- }
22
- /**
23
- * Retrieve a value by its key
24
- * @param key The key to look up
25
- * @returns The stored value or undefined if not found
26
- */
27
- get(key) {
28
- return this.storageMap.get(key);
29
- }
30
- /**
31
- * Get all stored key-value pairs
32
- * @returns Array of all entries [key, value]
33
- */
34
- getAll() {
35
- return Array.from(this.storageMap.entries());
36
- }
37
- /**
38
- * Get all values in the storage
39
- * @returns Array of all values
40
- */
41
- getAllValues() {
42
- return Array.from(this.storageMap.values());
43
- }
44
- /**
45
- * Get all keys in the storage
46
- * @returns Array of all keys
47
- */
48
- getAllKeys() {
49
- return Array.from(this.storageMap.keys());
50
- }
51
- /**
52
- * Update an existing value
53
- * @param key The key of the value to update
54
- * @param value The new value
55
- * @returns Boolean indicating success of operation
56
- */
57
- update(key, value) {
58
- if (this.storageMap.has(key)) {
59
- this.storageMap.set(key, value);
60
- return true;
61
- }
62
- return false;
63
- }
64
- /**
65
- * Delete a value by its key
66
- * @param key The key to delete
67
- * @returns Boolean indicating if the item was successfully deleted
68
- */
69
- delete(key) {
70
- return this.storageMap.delete(key);
71
- }
72
- /**
73
- * Check if a key exists in the storage
74
- * @param key The key to check
75
- * @returns Boolean indicating if the key exists
76
- */
77
- has(key) {
78
- return this.storageMap.has(key);
79
- }
80
- /**
81
- * Clear all values from the storage
82
- */
83
- clear() {
84
- this.storageMap.clear();
85
- }
86
- /**
87
- * Get the size of the storage
88
- * @returns Number of key-value pairs in the storage
89
- */
90
- size() {
91
- return this.storageMap.size;
92
- }
93
- }
94
- exports.default = new GlobalStorage();
95
- //# sourceMappingURL=GlobalStorage.config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"GlobalStorage.config.js","sourceRoot":"","sources":["../../../source/server/config/GlobalStorage.config.ts"],"names":[],"mappings":";;AAAA,uDAAuD;AACvD;;;GAGG;AACH,MAAM,aAAa;IAGjB;QACE,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,EAAa,CAAC;IACzC,CAAC;IAED;;;;;OAKG;IACI,GAAG,CAAC,GAAW,EAAE,KAAQ;QAC9B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACI,GAAG,CAAC,GAAW;QACpB,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAED;;;OAGG;IACI,MAAM;QACX,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED;;;OAGG;IACI,YAAY;QACjB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED;;;OAGG;IACI,UAAU;QACf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,GAAW,EAAE,KAAQ;QACjC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAChC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,GAAW;QACvB,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;IAED;;;;OAIG;IACI,GAAG,CAAC,GAAW;QACpB,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACI,KAAK;QACV,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACI,IAAI;QACT,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;IAC9B,CAAC;CACF;AAED,kBAAe,IAAI,aAAa,EAAE,CAAC"}
@@ -1 +0,0 @@
1
- /*! tailwindcss v4.1.11 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-50:oklch(97.1% .013 17.38);--color-red-100:oklch(93.6% .032 17.717);--color-red-200:oklch(88.5% .062 18.334);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-red-800:oklch(44.4% .177 26.899);--color-red-900:oklch(39.6% .141 25.723);--color-orange-100:oklch(95.4% .038 75.164);--color-orange-600:oklch(64.6% .222 41.116);--color-amber-100:oklch(96.2% .059 95.617);--color-amber-200:oklch(92.4% .12 95.746);--color-amber-600:oklch(66.6% .179 58.318);--color-amber-800:oklch(47.3% .137 46.201);--color-yellow-50:oklch(98.7% .026 102.212);--color-yellow-100:oklch(97.3% .071 103.193);--color-yellow-200:oklch(94.5% .129 101.54);--color-yellow-400:oklch(85.2% .199 91.936);--color-yellow-500:oklch(79.5% .184 86.047);--color-yellow-600:oklch(68.1% .162 75.834);--color-yellow-700:oklch(55.4% .135 66.442);--color-yellow-800:oklch(47.6% .114 61.907);--color-yellow-900:oklch(42.1% .095 57.708);--color-lime-100:oklch(96.7% .067 122.328);--color-lime-200:oklch(93.8% .127 124.321);--color-lime-800:oklch(45.3% .124 130.933);--color-green-50:oklch(98.2% .018 155.826);--color-green-100:oklch(96.2% .044 156.743);--color-green-200:oklch(92.5% .084 155.995);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-green-700:oklch(52.7% .154 150.069);--color-green-800:oklch(44.8% .119 151.328);--color-green-900:oklch(39.3% .095 152.535);--color-emerald-100:oklch(95% .052 163.051);--color-emerald-200:oklch(90.5% .093 164.15);--color-emerald-800:oklch(43.2% .095 166.913);--color-teal-100:oklch(95.3% .051 180.801);--color-teal-200:oklch(91% .096 180.426);--color-teal-800:oklch(43.7% .078 188.216);--color-cyan-100:oklch(95.6% .045 203.388);--color-cyan-200:oklch(91.7% .08 205.041);--color-cyan-800:oklch(45% .085 224.283);--color-sky-100:oklch(95.1% .026 236.824);--color-sky-200:oklch(90.1% .058 230.902);--color-sky-800:oklch(44.3% .11 240.79);--color-blue-50:oklch(97% .014 254.604);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-blue-800:oklch(42.4% .199 265.638);--color-blue-900:oklch(37.9% .146 265.522);--color-indigo-50:oklch(96.2% .018 272.314);--color-indigo-100:oklch(93% .034 272.788);--color-indigo-200:oklch(87% .065 274.039);--color-indigo-500:oklch(58.5% .233 277.117);--color-indigo-600:oklch(51.1% .262 276.966);--color-indigo-700:oklch(45.7% .24 277.023);--color-indigo-800:oklch(39.8% .195 277.366);--color-indigo-900:oklch(35.9% .144 278.697);--color-violet-100:oklch(94.3% .029 294.588);--color-violet-200:oklch(89.4% .057 293.283);--color-violet-800:oklch(43.2% .232 292.759);--color-purple-50:oklch(97.7% .014 308.299);--color-purple-100:oklch(94.6% .033 307.174);--color-purple-200:oklch(90.2% .063 306.703);--color-purple-600:oklch(55.8% .288 302.321);--color-purple-700:oklch(49.6% .265 301.924);--color-purple-800:oklch(43.8% .218 303.724);--color-purple-900:oklch(38.1% .176 304.987);--color-fuchsia-100:oklch(95.2% .037 318.852);--color-fuchsia-200:oklch(90.3% .076 319.62);--color-fuchsia-800:oklch(45.2% .211 324.591);--color-pink-100:oklch(94.8% .028 342.258);--color-pink-200:oklch(89.9% .061 343.231);--color-pink-800:oklch(45.9% .187 3.815);--color-rose-100:oklch(94.1% .03 12.58);--color-rose-200:oklch(89.2% .058 10.001);--color-rose-800:oklch(45.5% .188 13.697);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-md:28rem;--container-2xl:42rem;--container-3xl:48rem;--container-4xl:56rem;--container-7xl:80rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5/2.25);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-wider:.05em;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing)*0)}.z-50{z-index:50}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.mx-1{margin-inline:calc(var(--spacing)*1)}.mx-2{margin-inline:calc(var(--spacing)*2)}.mx-4{margin-inline:calc(var(--spacing)*4)}.mx-auto{margin-inline:auto}.mt-0\.5{margin-top:calc(var(--spacing)*.5)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-6{margin-top:calc(var(--spacing)*6)}.mt-8{margin-top:calc(var(--spacing)*8)}.mr-1{margin-right:calc(var(--spacing)*1)}.mr-2{margin-right:calc(var(--spacing)*2)}.mr-3{margin-right:calc(var(--spacing)*3)}.mr-4{margin-right:calc(var(--spacing)*4)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-5{margin-bottom:calc(var(--spacing)*5)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.mb-8{margin-bottom:calc(var(--spacing)*8)}.-ml-1{margin-left:calc(var(--spacing)*-1)}.ml-2{margin-left:calc(var(--spacing)*2)}.ml-3{margin-left:calc(var(--spacing)*3)}.ml-4{margin-left:calc(var(--spacing)*4)}.ml-5{margin-left:calc(var(--spacing)*5)}.ml-10{margin-left:calc(var(--spacing)*10)}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.h-2{height:calc(var(--spacing)*2)}.h-2\.5{height:calc(var(--spacing)*2.5)}.h-3{height:calc(var(--spacing)*3)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-12{height:calc(var(--spacing)*12)}.h-16{height:calc(var(--spacing)*16)}.h-20{height:calc(var(--spacing)*20)}.h-32{height:calc(var(--spacing)*32)}.h-48{height:calc(var(--spacing)*48)}.h-64{height:calc(var(--spacing)*64)}.h-full{height:100%}.max-h-\[90vh\]{max-height:90vh}.min-h-screen{min-height:100vh}.w-1\/2{width:50%}.w-1\/3{width:33.3333%}.w-2{width:calc(var(--spacing)*2)}.w-2\/3{width:66.6667%}.w-3{width:calc(var(--spacing)*3)}.w-3\/4{width:75%}.w-4{width:calc(var(--spacing)*4)}.w-5{width:calc(var(--spacing)*5)}.w-6{width:calc(var(--spacing)*6)}.w-8{width:calc(var(--spacing)*8)}.w-9{width:calc(var(--spacing)*9)}.w-10{width:calc(var(--spacing)*10)}.w-12{width:calc(var(--spacing)*12)}.w-16{width:calc(var(--spacing)*16)}.w-20{width:calc(var(--spacing)*20)}.w-24{width:calc(var(--spacing)*24)}.w-32{width:calc(var(--spacing)*32)}.w-48{width:calc(var(--spacing)*48)}.w-full{width:100%}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-7xl{max-width:var(--container-7xl)}.max-w-md{max-width:var(--container-md)}.min-w-16{min-width:calc(var(--spacing)*16)}.flex-1{flex:1}.flex-shrink-0{flex-shrink:0}.flex-grow{flex-grow:1}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.appearance-none{appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-1{gap:calc(var(--spacing)*1)}.gap-6{gap:calc(var(--spacing)*6)}.gap-8{gap:calc(var(--spacing)*8)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*2)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-3>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*3)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-4>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*4)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-6>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*6)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-x-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px*var(--tw-divide-y-reverse));border-bottom-width:calc(1px*calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-gray-200>:not(:last-child)){border-color:var(--color-gray-200)}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-4{border-style:var(--tw-border-style);border-width:4px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-2{border-top-style:var(--tw-border-style);border-top-width:2px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.border-amber-200{border-color:var(--color-amber-200)}.border-blue-100{border-color:var(--color-blue-100)}.border-blue-200{border-color:var(--color-blue-200)}.border-blue-500{border-color:var(--color-blue-500)}.border-cyan-200{border-color:var(--color-cyan-200)}.border-emerald-200{border-color:var(--color-emerald-200)}.border-fuchsia-200{border-color:var(--color-fuchsia-200)}.border-gray-100{border-color:var(--color-gray-100)}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.border-green-200{border-color:var(--color-green-200)}.border-indigo-100{border-color:var(--color-indigo-100)}.border-indigo-200{border-color:var(--color-indigo-200)}.border-lime-200{border-color:var(--color-lime-200)}.border-pink-200{border-color:var(--color-pink-200)}.border-purple-200{border-color:var(--color-purple-200)}.border-red-200{border-color:var(--color-red-200)}.border-red-400{border-color:var(--color-red-400)}.border-red-500{border-color:var(--color-red-500)}.border-rose-200{border-color:var(--color-rose-200)}.border-sky-200{border-color:var(--color-sky-200)}.border-teal-200{border-color:var(--color-teal-200)}.border-transparent{border-color:#0000}.border-violet-200{border-color:var(--color-violet-200)}.border-white{border-color:var(--color-white)}.border-yellow-200{border-color:var(--color-yellow-200)}.border-yellow-400{border-color:var(--color-yellow-400)}.bg-amber-100{background-color:var(--color-amber-100)}.bg-amber-600{background-color:var(--color-amber-600)}.bg-black{background-color:var(--color-black)}.bg-blue-50{background-color:var(--color-blue-50)}.bg-blue-100{background-color:var(--color-blue-100)}.bg-blue-600{background-color:var(--color-blue-600)}.bg-cyan-100{background-color:var(--color-cyan-100)}.bg-emerald-100{background-color:var(--color-emerald-100)}.bg-fuchsia-100{background-color:var(--color-fuchsia-100)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-200{background-color:var(--color-gray-200)}.bg-gray-300{background-color:var(--color-gray-300)}.bg-gray-600{background-color:var(--color-gray-600)}.bg-gray-800{background-color:var(--color-gray-800)}.bg-green-50{background-color:var(--color-green-50)}.bg-green-100{background-color:var(--color-green-100)}.bg-green-400{background-color:var(--color-green-400)}.bg-green-500{background-color:var(--color-green-500)}.bg-green-600{background-color:var(--color-green-600)}.bg-indigo-50{background-color:var(--color-indigo-50)}.bg-indigo-100{background-color:var(--color-indigo-100)}.bg-indigo-500{background-color:var(--color-indigo-500)}.bg-indigo-600{background-color:var(--color-indigo-600)}.bg-lime-100{background-color:var(--color-lime-100)}.bg-orange-100{background-color:var(--color-orange-100)}.bg-orange-600{background-color:var(--color-orange-600)}.bg-pink-100{background-color:var(--color-pink-100)}.bg-purple-50{background-color:var(--color-purple-50)}.bg-purple-100{background-color:var(--color-purple-100)}.bg-red-50{background-color:var(--color-red-50)}.bg-red-100{background-color:var(--color-red-100)}.bg-red-400{background-color:var(--color-red-400)}.bg-red-500{background-color:var(--color-red-500)}.bg-red-600{background-color:var(--color-red-600)}.bg-rose-100{background-color:var(--color-rose-100)}.bg-sky-100{background-color:var(--color-sky-100)}.bg-teal-100{background-color:var(--color-teal-100)}.bg-violet-100{background-color:var(--color-violet-100)}.bg-white{background-color:var(--color-white)}.bg-yellow-50{background-color:var(--color-yellow-50)}.bg-yellow-100{background-color:var(--color-yellow-100)}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-blue-50{--tw-gradient-from:var(--color-blue-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-blue-600{--tw-gradient-from:var(--color-blue-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-blue-700{--tw-gradient-from:var(--color-blue-700);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-indigo-50{--tw-gradient-from:var(--color-indigo-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-blue-50{--tw-gradient-to:var(--color-blue-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-indigo-50{--tw-gradient-to:var(--color-indigo-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-indigo-800{--tw-gradient-to:var(--color-indigo-800);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-purple-600{--tw-gradient-to:var(--color-purple-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.object-cover{object-fit:cover}.p-1{padding:calc(var(--spacing)*1)}.p-2{padding:calc(var(--spacing)*2)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-5{padding:calc(var(--spacing)*5)}.p-6{padding:calc(var(--spacing)*6)}.p-8{padding:calc(var(--spacing)*8)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-5{padding-inline:calc(var(--spacing)*5)}.px-6{padding-inline:calc(var(--spacing)*6)}.px-8{padding-inline:calc(var(--spacing)*8)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-2{padding-block:calc(var(--spacing)*2)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.py-6{padding-block:calc(var(--spacing)*6)}.py-8{padding-block:calc(var(--spacing)*8)}.py-12{padding-block:calc(var(--spacing)*12)}.pt-2{padding-top:calc(var(--spacing)*2)}.pt-3{padding-top:calc(var(--spacing)*3)}.pl-2{padding-left:calc(var(--spacing)*2)}.pl-4{padding-left:calc(var(--spacing)*4)}.pl-6{padding-left:calc(var(--spacing)*6)}.pl-10{padding-left:calc(var(--spacing)*10)}.text-center{text-align:center}.align-middle{vertical-align:middle}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-pre-wrap{white-space:pre-wrap}.text-amber-800{color:var(--color-amber-800)}.text-blue-100{color:var(--color-blue-100)}.text-blue-500{color:var(--color-blue-500)}.text-blue-600{color:var(--color-blue-600)}.text-blue-700{color:var(--color-blue-700)}.text-blue-800{color:var(--color-blue-800)}.text-blue-900{color:var(--color-blue-900)}.text-cyan-800{color:var(--color-cyan-800)}.text-emerald-800{color:var(--color-emerald-800)}.text-fuchsia-800{color:var(--color-fuchsia-800)}.text-gray-200{color:var(--color-gray-200)}.text-gray-300{color:var(--color-gray-300)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-800{color:var(--color-gray-800)}.text-gray-900{color:var(--color-gray-900)}.text-green-500{color:var(--color-green-500)}.text-green-600{color:var(--color-green-600)}.text-green-700{color:var(--color-green-700)}.text-green-800{color:var(--color-green-800)}.text-green-900{color:var(--color-green-900)}.text-indigo-500{color:var(--color-indigo-500)}.text-indigo-600{color:var(--color-indigo-600)}.text-indigo-700{color:var(--color-indigo-700)}.text-indigo-800{color:var(--color-indigo-800)}.text-lime-800{color:var(--color-lime-800)}.text-orange-600{color:var(--color-orange-600)}.text-pink-800{color:var(--color-pink-800)}.text-purple-600{color:var(--color-purple-600)}.text-purple-700{color:var(--color-purple-700)}.text-purple-800{color:var(--color-purple-800)}.text-purple-900{color:var(--color-purple-900)}.text-red-400{color:var(--color-red-400)}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-red-800{color:var(--color-red-800)}.text-rose-800{color:var(--color-rose-800)}.text-sky-800{color:var(--color-sky-800)}.text-teal-800{color:var(--color-teal-800)}.text-violet-800{color:var(--color-violet-800)}.text-white{color:var(--color-white)}.text-yellow-500{color:var(--color-yellow-500)}.text-yellow-600{color:var(--color-yellow-600)}.text-yellow-700{color:var(--color-yellow-700)}.text-yellow-800{color:var(--color-yellow-800)}.text-yellow-900{color:var(--color-yellow-900)}.uppercase{text-transform:uppercase}.opacity-25{opacity:.25}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-inner{--tw-shadow:inset 0 2px 4px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,visibility,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-300{--tw-duration:.3s;transition-duration:.3s}.select-none{-webkit-user-select:none;user-select:none}@media (hover:hover){.hover\:border-blue-400:hover{border-color:var(--color-blue-400)}.hover\:border-red-400:hover{border-color:var(--color-red-400)}.hover\:bg-blue-100:hover{background-color:var(--color-blue-100)}.hover\:bg-blue-600:hover{background-color:var(--color-blue-600)}.hover\:bg-blue-700:hover{background-color:var(--color-blue-700)}.hover\:bg-gray-50:hover{background-color:var(--color-gray-50)}.hover\:bg-gray-100:hover{background-color:var(--color-gray-100)}.hover\:bg-gray-200:hover{background-color:var(--color-gray-200)}.hover\:bg-green-700:hover{background-color:var(--color-green-700)}.hover\:bg-indigo-100:hover{background-color:var(--color-indigo-100)}.hover\:bg-indigo-700:hover{background-color:var(--color-indigo-700)}.hover\:bg-red-100:hover{background-color:var(--color-red-100)}.hover\:bg-red-700:hover{background-color:var(--color-red-700)}.hover\:text-blue-800:hover{color:var(--color-blue-800)}.hover\:text-gray-500:hover{color:var(--color-gray-500)}.hover\:text-gray-700:hover{color:var(--color-gray-700)}.hover\:text-gray-900:hover{color:var(--color-gray-900)}.hover\:text-indigo-900:hover{color:var(--color-indigo-900)}.hover\:text-red-800:hover{color:var(--color-red-800)}.hover\:text-red-900:hover{color:var(--color-red-900)}.hover\:text-white:hover{color:var(--color-white)}.hover\:shadow-lg:hover{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus\:border-blue-500:focus{border-color:var(--color-blue-500)}.focus\:border-indigo-500:focus{border-color:var(--color-indigo-500)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-blue-500:focus{--tw-ring-color:var(--color-blue-500)}.focus\:ring-indigo-500:focus{--tw-ring-color:var(--color-indigo-500)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}@media (min-width:40rem){.sm\:px-6{padding-inline:calc(var(--spacing)*6)}}@media (min-width:48rem){.md\:mb-0{margin-bottom:calc(var(--spacing)*0)}.md\:block{display:block}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:text-right{text-align:right}}@media (min-width:64rem){.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lg\:px-8{padding-inline:calc(var(--spacing)*8)}}}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes slideIn{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}.animate-fadeIn{animation:.3s ease-out fadeIn}.animate-slideIn{animation:.3s ease-out slideIn}.toggle-checkbox{z-index:5;transition:all .3s;right:0}.toggle-checkbox:checked{right:0;transform:translate(100%)}.toggle-label{transition:background-color .3s}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}