create-nkvs-mongoose-hono 1.0.0 → 1.0.1

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 (45) hide show
  1. package/data/.env +5 -0
  2. package/data/_modules/config.js +11 -3
  3. package/data/_modules/hono/error.js +1 -2
  4. package/data/_modules/hono/main.dev.js +3 -1
  5. package/data/_modules/hono/main.js +3 -4
  6. package/data/_modules/main.dev.js +16 -0
  7. package/data/_modules/main.js +10 -0
  8. package/data/_modules/mongoose/connect.js +2 -3
  9. package/data/_modules/mongoose/crud.js +2 -3
  10. package/data/_modules/plugins/app.dev.js +1 -3
  11. package/data/_modules/plugins/app.js +1 -3
  12. package/data/_modules/plugins/crud.js +2 -3
  13. package/data/_modules/plugins/doc.js +7 -6
  14. package/data/_modules/plugins/store.js +3 -0
  15. package/data/_modules/plugins/validator.js +1 -2
  16. package/data/package.json +2 -2
  17. package/data/src/middleware/_imports.dev.js +1 -1
  18. package/data/src/middleware/global.dev.js +3 -5
  19. package/data/src/middleware/global.js +2 -3
  20. package/data/src/middleware/test.dev.js +2 -4
  21. package/data/src/middleware/test.js +2 -4
  22. package/data/src/models/Apple.js +3 -4
  23. package/data/src/models/Color.js +1 -3
  24. package/data/src/routers/apples.dev.js +2 -4
  25. package/data/src/routers/apples.js +2 -6
  26. package/data/static/assets/config-DuGTvsaZ.js +1 -0
  27. package/data/static/assets/global-middleware-BVVqmyNN.js +1 -0
  28. package/data/static/assets/home-C8wFEWSp.js +1 -0
  29. package/data/static/assets/how-to-import-dev-middleware-Dkjtz_TK.js +1 -0
  30. package/data/static/assets/how-to-import-dev-router-C_FL_6YO.js +1 -0
  31. package/data/static/assets/how-to-import-middleware-pnpQzveJ.js +1 -0
  32. package/data/static/assets/how-to-import-model-7YtG50D5.js +1 -0
  33. package/data/static/assets/index-DNQIE9Ws.css +1 -0
  34. package/data/static/assets/index-DkMBvkWC.js +2 -0
  35. package/data/static/assets/middleware-CiGF19ia.js +1 -0
  36. package/data/static/assets/middleware-example-CqXnnA18.js +1 -0
  37. package/data/static/assets/models-2cm6KrTp.js +1 -0
  38. package/data/static/assets/routers-BVTEq3Lk.js +1 -0
  39. package/data/static/doc-test.json +24 -0
  40. package/data/static/doc.json +22 -1
  41. package/data/static/index.html +14 -11
  42. package/package.json +1 -1
  43. package/data/main.dev.js +0 -15
  44. package/data/main.js +0 -9
  45. package/data/package-lock.json +0 -639
package/data/.env ADDED
@@ -0,0 +1,5 @@
1
+ PORT=3000
2
+ MONGODB_URI=mongodb://127.0.0.1:27017/test
3
+ STATIC_PATH=/static/*
4
+ STATIC_ROOT=./
5
+ DOC_PATH=./static/doc.json
@@ -1,7 +1,15 @@
1
- export const MONGODB_URI = 'mongodb://127.0.0.1:27017/test'
1
+ import 'dotenv/config'
2
+
3
+ export const MONGODB_URI = process.env.MONGODB_URI
2
4
 
3
5
  export const excludedQueryKeys = ['page', 'sort', 'limit', 'fields', 'pretty']
4
6
 
5
- export const defaultSelectFields = '-__v'
7
+ export const defaultSelectFields = ''
8
+
9
+ export const PORT = process.env.PORT
10
+
11
+ export const STATIC_PATH = process.env.STATIC_PATH
12
+
13
+ export const STATIC_ROOT = process.env.STATIC_ROOT
6
14
 
7
- export const PORT = 8787
15
+ export const DOC_PATH = process.env.DOC_PATH
@@ -1,7 +1,6 @@
1
1
  import http from 'http'
2
- import { get } from 'nkv-store'
3
2
 
4
- get('app').onError = function (error, { status, json }) {
3
+ store.get('app').onError = function (error, { status, json }) {
5
4
  const errorMessages = []
6
5
  let code = 400
7
6
  if (error.name === 'ValidationError') {
@@ -1 +1,3 @@
1
- console.log('http://localhost:8787/apples/test')
1
+ import { PORT } from '../config.js'
2
+
3
+ console.log(`http://localhost:${PORT}/apples/test`)
@@ -1,11 +1,10 @@
1
- import { get } from 'nkv-store'
2
1
  import { Hono } from 'hono'
3
2
  import { serve } from '@hono/node-server'
4
3
  import { serveStatic } from '@hono/node-server/serve-static'
5
4
  import { etag } from 'hono/etag'
6
- import { PORT } from '../config.js'
5
+ import { PORT, STATIC_PATH, STATIC_ROOT } from '../config.js'
7
6
 
8
- const app = get('app')
7
+ const app = store.get('app')
9
8
  const honoApp = new Hono()
10
9
 
11
10
  app.globalMiddleware.forEach((middleware) => {
@@ -16,7 +15,7 @@ app.globalMiddleware.forEach((middleware) => {
16
15
  honoApp.use(middleware)
17
16
  })
18
17
 
19
- honoApp.use('/static/*', etag(), serveStatic({ root: './' }))
18
+ honoApp.use(STATIC_PATH, etag(), serveStatic({ root: STATIC_ROOT }))
20
19
 
21
20
  app.routers.forEach((router) => {
22
21
  const honoRouter = new Hono()
@@ -0,0 +1,16 @@
1
+ import './plugins/store.js'
2
+ import './plugins/app.js'
3
+ import './plugins/app.dev.js'
4
+ import './plugins/validator.js'
5
+ import '../src/models/_imports.js'
6
+ import './mongoose/connect.js'
7
+ import './mongoose/connect.dev.js'
8
+ import '../src/middleware/_imports.js'
9
+ import '../src/middleware/_imports.dev.js'
10
+ import '../src/routers/_imports.js'
11
+ import '../src/routers/_imports.dev.js'
12
+ import './plugins/crud.js'
13
+ import './plugins/doc.js'
14
+ import './hono/error.js'
15
+ import './hono/main.js'
16
+ import './hono/main.dev.js'
@@ -0,0 +1,10 @@
1
+ import './plugins/store.js'
2
+ import './plugins/app.js'
3
+ import './plugins/validator.js'
4
+ import '../src/models/_imports.js'
5
+ import './mongoose/connect.js'
6
+ import '../src/middleware/_imports.js'
7
+ import '../src/routers/_imports.js'
8
+ import './plugins/crud.js'
9
+ import './hono/error.js'
10
+ import './hono/main.js'
@@ -1,9 +1,8 @@
1
1
  import { connect, model, Schema } from 'mongoose'
2
- import { get } from 'nkv-store'
3
2
  import { MONGODB_URI } from '../config.js'
4
3
 
5
- const app = get('app')
6
- const { isArray } = get('validator')
4
+ const app = store.get('app')
5
+ const { isArray } = store.get('validator')
7
6
 
8
7
  for (const modelName in app.models) {
9
8
  const { schema, collection, options, middleware } = app.models[modelName]
@@ -1,8 +1,7 @@
1
- import { get } from 'nkv-store'
2
1
  import { excludedQueryKeys, defaultSelectFields } from '../config.js'
3
2
 
4
- const { models, mongooseModels } = get('app')
5
- const { isArray, isEmptyObject, isString, isNumber } = get('validator')
3
+ const { models, mongooseModels } = store.get('app')
4
+ const { isArray, isEmptyObject, isString, isNumber } = store.get('validator')
6
5
 
7
6
  export function findAll(modelName, { filter, sort, fields, page, limit, populate, count }) {
8
7
  return async function ({ json, req }) {
@@ -1,6 +1,4 @@
1
- import { set } from 'nkv-store'
2
-
3
- set('_app', {
1
+ store.set('_app', {
4
2
  globalMiddleware: {},
5
3
  middleware: {},
6
4
  routers: {}
@@ -1,6 +1,4 @@
1
- import { set } from 'nkv-store'
2
-
3
- set('app', {
1
+ store.set('app', {
4
2
  globalMiddleware: [],
5
3
  middleware: {},
6
4
  routers: [],
@@ -1,9 +1,8 @@
1
- import { get } from 'nkv-store'
2
1
  import * as crudMap from '../packages/crud.js'
3
2
  import * as crudHandlers from '../mongoose/crud.js'
4
3
 
5
- const app = get('app')
6
- const { isBoolean, isObject } = get('validator')
4
+ const app = store.get('app')
5
+ const { isBoolean, isObject } = store.get('validator')
7
6
 
8
7
  app.routers.forEach((router) => {
9
8
  if (!router.crud || !router.crud.model || !app.models[router.crud.model]) {
@@ -1,8 +1,8 @@
1
- import { get } from 'nkv-store'
2
1
  import fs from 'fs/promises'
2
+ import * as config from '../config.js'
3
3
 
4
- const app = get('app')
5
- const _app = get('_app')
4
+ const app = store.get('app')
5
+ const _app = store.get('_app')
6
6
 
7
7
  app.routers.forEach((router) => {
8
8
  const _router = _app.routers[router.path]
@@ -29,6 +29,7 @@ app.routers.forEach((router) => {
29
29
  })
30
30
 
31
31
  const doc = {
32
+ config,
32
33
  models: app.models,
33
34
  globalMiddleware: _app.globalMiddleware,
34
35
  middleware: _app.middleware,
@@ -43,11 +44,11 @@ const jsendDoc = {
43
44
  const content = JSON.stringify(jsendDoc, null, 2)
44
45
 
45
46
  try {
46
- const oldDocContent = await fs.readFile('./static/doc.json', { encoding: 'utf-8' })
47
+ const oldDocContent = await fs.readFile(config.DOC_PATH, { encoding: 'utf-8' })
47
48
 
48
49
  if (oldDocContent !== content) {
49
- await fs.writeFile('./static/doc.json', content)
50
+ await fs.writeFile(config.DOC_PATH, content)
50
51
  }
51
52
  } catch {
52
- await fs.writeFile('./static/doc.json', content)
53
+ await fs.writeFile(config.DOC_PATH, content)
53
54
  }
@@ -0,0 +1,3 @@
1
+ import * as store from 'nkv-store'
2
+
3
+ global.store = store
@@ -1,4 +1,3 @@
1
- import { set } from 'nkv-store'
2
1
  import * as validator from '../packages/validator.js'
3
2
 
4
- set('validator', { ...validator })
3
+ store.set('validator', { ...validator })
package/data/package.json CHANGED
@@ -4,8 +4,8 @@
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {
7
- "dev": "nodemon main.dev.js",
8
- "build": "ncc build main.js -m",
7
+ "dev": "nodemon _modules/main.dev.js",
8
+ "build": "ncc build _modules/main.js -m",
9
9
  "start": "node dist/index.js"
10
10
  },
11
11
  "keywords": [],
@@ -1,2 +1,2 @@
1
- import './test.dev.js'
2
1
  import './global.dev.js'
2
+ import './test.dev.js'
@@ -1,6 +1,4 @@
1
- import { get } from 'nkv-store'
1
+ const { globalMiddleware } = store.get('_app')
2
2
 
3
- const _app = get('_app')
4
-
5
- _app.globalMiddleware['cors'] = 'cors.'
6
- _app.globalMiddleware['prettyJSON'] = 'pretty JSON.'
3
+ globalMiddleware['cors'] = 'cors.'
4
+ globalMiddleware['prettyJSON'] = 'pretty JSON.'
@@ -1,7 +1,6 @@
1
- import { get } from 'nkv-store'
2
1
  import { cors } from 'hono/cors'
3
2
  import { prettyJSON } from 'hono/pretty-json'
4
3
 
5
- const app = get('app')
4
+ const { globalMiddleware } = store.get('app')
6
5
 
7
- app.globalMiddleware.push(cors(), prettyJSON())
6
+ globalMiddleware.push(cors(), prettyJSON())
@@ -1,5 +1,3 @@
1
- import { get } from 'nkv-store'
1
+ const { middleware } = store.get('_app')
2
2
 
3
- const _app = get('_app')
4
-
5
- _app.middleware['test'] = 'console log 1.'
3
+ middleware['test'] = 'console log 1.'
@@ -1,8 +1,6 @@
1
- import { get } from 'nkv-store'
1
+ const { middleware } = store.get('app')
2
2
 
3
- const app = get('app')
4
-
5
- app.middleware['test'] = async function (context, next) {
3
+ middleware['test'] = async function (context, next) {
6
4
  console.log(1)
7
5
  await next()
8
6
  }
@@ -1,6 +1,4 @@
1
- import { get } from 'nkv-store'
2
-
3
- get('app').models.Apple = {
1
+ store.get('app').models.Apple = {
4
2
  collection: 'apples',
5
3
  documentName: 'apple',
6
4
  schema: {
@@ -15,5 +13,6 @@ get('app').models.Apple = {
15
13
  },
16
14
  options: {
17
15
  timestamps: true
18
- }
16
+ },
17
+ middleware: [{ hook: 'pre', 'method': 'save', async handler(next) { await next() } }]
19
18
  }
@@ -1,6 +1,4 @@
1
- import { get } from 'nkv-store'
2
-
3
- get('app').models.Color = {
1
+ store.get('app').models.Color = {
4
2
  collection: 'colors',
5
3
  documentName: 'color',
6
4
  schema: {
@@ -1,10 +1,8 @@
1
- import { get } from 'nkv-store'
2
-
3
- get('_app').routers['/apples'] = {
1
+ store.get('_app').routers['/apples'] = {
4
2
  description: 'Apple',
5
3
  events: {
6
4
  'GET /test': {
7
5
  description: 'Apple test interface.'
8
6
  }
9
7
  }
10
- }
8
+ }
@@ -1,6 +1,4 @@
1
- import { get } from 'nkv-store'
2
-
3
- const router = {
1
+ store.get('app').routers.push({
4
2
  path: '/apples',
5
3
  crud: {
6
4
  model: 'Apple',
@@ -21,6 +19,4 @@ const router = {
21
19
  }
22
20
  }
23
21
  }
24
- }
25
-
26
- get('app').routers.push(router)
22
+ })
@@ -0,0 +1 @@
1
+ import{g as i,c as n,a as t,u as o,w as p,v as u,F as g,r as x,o as r,t as f}from"./index-DkMBvkWC.js";const _={class:"flex flex-col gap-4"},v={class:"border border-slate-200 rounded-lg overflow-hidden"},m={class:"flex justify-between"},y={class:"w-full"},h={class:"border-t border-slate-200"},w={class:"border-l border-slate-200 flex items-center focus-within:bg-slate-50 transition"},k={class:"border border-slate-200 rounded-lg overflow-hidden"},E={class:"w-full"},L={class:"px-4 py-3 w-64"},R={class:"border-l border-slate-200 px-4 py-3"},D={__name:"config",setup(U){const l=i("front-end"),c=i("back-end");function b(d){localStorage.setItem("configURL",d.target.value)}return(d,e)=>(r(),n("div",_,[t("div",v,[t("div",m,[e[2]||(e[2]=t("div",{class:"px-4 py-3 font-bold bg-slate-100 flex-1"},"FrontEnd Config",-1)),t("button",{class:"px-4 py-3 cursor-pointer border-l border-slate-200 hover:bg-slate-50 transition",onClick:e[0]||(e[0]=(...s)=>o(l).methods.refreshData&&o(l).methods.refreshData(...s))},"Refresh Data")]),t("table",y,[t("tbody",null,[t("tr",h,[e[4]||(e[4]=t("td",{class:"px-4 py-3 w-64"},"URL",-1)),t("td",w,[p(t("input",{type:"text","onUpdate:modelValue":e[1]||(e[1]=s=>o(l).config.URL=s),class:"w-full outline-none px-4 py-3",onChange:b},null,544),[[u,o(l).config.URL]]),e[3]||(e[3]=t("div",{class:"text-xs font-bold mr-4"},"Editable",-1))])])])])]),t("div",k,[e[5]||(e[5]=t("div",{class:"px-4 py-3 bg-slate-100 font-bold"},"BackEnd Config",-1)),t("table",E,[t("tbody",null,[(r(!0),n(g,null,x(o(c).config,(s,a)=>(r(),n("tr",{key:a,class:"even:bg-slate-100 border-t border-slate-200"},[t("td",L,f(a),1),t("td",R,f(s),1)]))),128))])])])]))}};export{D as default};
@@ -0,0 +1 @@
1
+ import{g as c,c as o,a as e,f as m,u as s,F as p,r as f,d as a,o as r,t as b}from"./index-DkMBvkWC.js";import{G as _,a as u,H as w}from"./how-to-import-dev-middleware-Dkjtz_TK.js";import{H as g}from"./how-to-import-middleware-pnpQzveJ.js";const x={class:"flex flex-col gap-4"},h={class:"border border-slate-200 rounded-lg overflow-hidden"},v={class:"flex justify-between"},y={class:"w-full"},M={class:"px-4 py-3 w-64"},k={class:"border-l border-slate-200 px-4 py-3"},C={__name:"global-middleware",setup(D){const l=c("front-end"),n=c("back-end");return(E,t)=>(r(),o("div",x,[e("div",h,[e("div",v,[t[1]||(t[1]=e("div",{class:"px-4 py-3 font-bold bg-slate-100 flex-1"},"Global Middleware Compass",-1)),e("button",{class:"px-4 py-3 cursor-pointer border-l border-slate-200 hover:bg-slate-50 transition",onClick:t[0]||(t[0]=(...d)=>s(l).methods.refreshData&&s(l).methods.refreshData(...d))},"Refresh Data")]),e("table",y,[(r(!0),o(p,null,f(s(n).globalMiddleware,(d,i)=>(r(),o("tr",{key:i,class:"even:bg-slate-100 border-t border-slate-200"},[e("td",M,b(i),1),e("td",k,b(d),1)]))),128))])]),s(l).methods.isEmptyObject(s(n).globalMiddleware)?(r(),o(p,{key:0},[a(_),a(g),a(u),a(w)],64)):m("",!0)]))}};export{C as default};
@@ -0,0 +1 @@
1
+ import{G as p,a as n,H as i}from"./how-to-import-dev-middleware-Dkjtz_TK.js";import{M as m}from"./middleware-example-CqXnnA18.js";import{_ as c,c as s,a as o,o as d,b as v,d as e,e as t}from"./index-DkMBvkWC.js";import{H as b}from"./how-to-import-middleware-pnpQzveJ.js";import{R as x,a as f,b as u,c as w,d as g,e as _,H as y,f as M,g as h}from"./how-to-import-dev-router-C_FL_6YO.js";import{M as D,H as R}from"./how-to-import-model-7YtG50D5.js";const H={},E={class:"border border-slate-200 rounded-lg overflow-hidden"};function k(l,a){return d(),s("div",E,[...a[0]||(a[0]=[o("div",{class:"px-4 py-3 bg-slate-100 font-bold"},"Middleware - Dev",-1),o("div",{class:"px-4 py-3 border-t border-slate-200"},"const { middleware } = store.get('_app')",-1),o("div",{class:"px-4 py-3 border-t border-slate-100"},"middleware['test'] = 'console log 1.'",-1)])])}const T=c(H,[["render",k]]),j={class:"flex flex-col gap-4"},$={__name:"home",setup(l){return(a,r)=>(d(),s("div",j,[r[0]||(r[0]=v('<div class="border border-slate-200 px-4 py-3 font-bold bg-slate-100 rounded-lg flex justify-between"><div>Example</div><a href="https://www.npmjs.com/package/create-nkvs-mongoose-hono" target="_blank">create-nkvs-mongoose-hono</a></div><div class="border border-slate-200 rounded-lg overflow-hidden"><div class="px-4 py-3 bg-slate-100 font-bold">npm create nkvs-mongoose-hono@latest project-name</div><div class="px-4 py-3 border-t border-slate-200">cd project-name</div><div class="px-4 py-3 border-t border-slate-200">npm install</div><div class="px-4 py-3 border-t border-slate-200">npm run dev</div><div class="px-4 py-3 border-t border-slate-200">npm run build</div><div class="px-4 py-3 border-t border-slate-200">npm run start</div></div>',2)),e(p),e(m),e(b),e(n),e(T),e(i),e(x),e(f),e(u),e(w),e(g),e(_),e(y),e(M),e(h),e(D),e(R),r[1]||(r[1]=o("div",{class:"border border-slate-200 px-4 py-3 text-center rounded-lg"},[t("For more details: "),o("a",{href:"https://mongoosejs.com/",class:"font-bold"},"Mongoose"),t(" and "),o("a",{href:"https://hono.dev/",class:"font-bold"},"Hono"),t(".")],-1))]))}};export{$ as default};
@@ -0,0 +1 @@
1
+ import{_ as d,c as o,b as l,o as s,a as r}from"./index-DkMBvkWC.js";const a={},i={class:"border border-slate-200 rounded-lg overflow-hidden"};function p(t,e){return s(),o("div",i,[...e[0]||(e[0]=[l('<div class="px-4 py-3 bg-slate-100 font-bold">Global Middleware</div><div class="px-4 py-3 border-t border-slate-200">import { cors } from &#39;hono/cors&#39;</div><div class="px-4 py-3 border-t border-slate-100">import { prettyJSON } from &#39;hono/pretty-json&#39;</div><div class="px-4 py-3 border-t border-slate-100">const { globalMiddleware } = store.get(&#39;app&#39;)</div><div class="px-4 py-3 border-t border-slate-100">globalMiddleware.push(cors(), prettyJSON())</div>',5)])])}const m=d(a,[["render",p]]),c={},n={class:"border border-slate-200 rounded-lg overflow-hidden"};function b(t,e){return s(),o("div",n,[...e[0]||(e[0]=[r("div",{class:"px-4 py-3 bg-slate-100 font-bold"},"Global Middleware - Dev",-1),r("div",{class:"px-4 py-3 border-t border-slate-200"},"const { globalMiddleware } = store.get('_app')",-1),r("div",{class:"px-4 py-3 border-t border-slate-100"},"globalMiddleware['cors'] = 'cors.'",-1),r("div",{class:"px-4 py-3 border-t border-slate-100"},"globalMiddleware['prettyJSON'] = 'pretty JSON.'",-1)])])}const w=d(c,[["render",b]]),v={},_={class:"border border-slate-200 rounded-lg overflow-hidden"};function f(t,e){return s(),o("div",_,[...e[0]||(e[0]=[r("div",{class:"px-4 py-3 bg-slate-100 font-bold"},"Global Middleware - Dev & Middleware - Dev / middleware/_import.dev.js",-1),r("div",{class:"px-4 py-3 border-t border-slate-200"},"import './global.dev.js'",-1),r("div",{class:"px-4 py-3 border-t border-slate-100"},"import './test.dev.js'",-1)])])}const y=d(v,[["render",f]]);export{m as G,y as H,w as a};
@@ -0,0 +1 @@
1
+ import{_ as e,c as t,b as l,o as d,a as o}from"./index-DkMBvkWC.js";const a={},p={class:"border border-slate-200 rounded-lg overflow-hidden"};function b(s,r){return d(),t("div",p,[...r[0]||(r[0]=[l('<div class="px-4 py-3 bg-slate-100 font-bold">Router</div><div class="px-4 py-3 border-t border-slate-200">store.get(&#39;app&#39;).routers.push({</div><div class="px-4 py-3 border-t border-slate-100">  path: &#39;/apples&#39;,</div><div class="px-4 py-3 border-t border-slate-100">  crud: {</div><div class="px-4 py-3 border-t border-slate-100">    model: &#39;Apple&#39;,</div><div class="px-4 py-3 border-t border-slate-100">    findAll: { count: true, populate: &#39;color&#39;, limit: 5 }</div><div class="px-4 py-3 border-t border-slate-100">    findOne: { populate: &#39;color&#39; }</div><div class="px-4 py-3 border-t border-slate-100">  },</div><div class="px-4 py-3 border-t border-slate-100">  events: {</div><div class="px-4 py-3 border-t border-slate-100">    &#39;GET /test&#39;: { middleware: [&#39;test&#39;], async handler({ json }) { return json({}) } }</div><div class="px-4 py-3 border-t border-slate-100">  }</div><div class="px-4 py-3 border-t border-slate-100">)}</div>',12)])])}const H=e(a,[["render",b]]),c={},n={class:"border border-slate-200 rounded-lg overflow-hidden"};function i(s,r){return d(),t("div",n,[...r[0]||(r[0]=[l('<div class="px-4 py-3 bg-slate-100 font-bold">Router / findAll</div><div class="px-4 py-3 border-t border-slate-200">Boolean or Object</div><table class="w-full"><thead><tr class="border-t border-slate-200"><th class="px-4 py-3 text-left w-32">Name</th><th class="px-4 py-3 border-l border-slate-200 text-left w-96">Type</th><th class="px-4 py-3 border-l border-slate-200 text-left">Example</th></tr></thead><tbody><tr class="border-t border-slate-200"><td class="px-4 py-3">middleware</td><td class="px-4 py-3 border-l border-slate-200">Array-String</td><td class="px-4 py-3 border-l border-slate-200">[&#39;test&#39;]</td></tr><tr class="border-t border-slate-200"><td class="px-4 py-3">filter</td><td class="px-4 py-3 border-l border-slate-200">Object</td><td class="px-4 py-3 border-l border-slate-200">{ &#39;age[gte]&#39;: 18 }</td></tr><tr class="border-t border-slate-200"><td class="px-4 py-3">fields</td><td class="px-4 py-3 border-l border-slate-200">String</td><td class="px-4 py-3 border-l border-slate-200">&#39;name color&#39; ✅, &#39;name -createdAt&#39; ❌, &#39;-createdAt -upadtedAt&#39; ❌</td></tr><tr class="border-t border-slate-200"><td class="px-4 py-3">sort</td><td class="px-4 py-3 border-l border-slate-200">String</td><td class="px-4 py-3 border-l border-slate-200">&#39;-createdAt&#39;</td></tr><tr class="border-t border-slate-200"><td class="px-4 py-3">page</td><td class="px-4 py-3 border-l border-slate-200">Number</td><td class="px-4 py-3 border-l border-slate-200">1</td></tr><tr class="border-t border-slate-200"><td class="px-4 py-3">limit</td><td class="px-4 py-3 border-l border-slate-200">Number or Boolean</td><td class="px-4 py-3 border-l border-slate-200">false, 10, If number &gt; 300 then number = 300</td></tr><tr class="border-t border-slate-200"><td class="px-4 py-3">populate</td><td class="px-4 py-3 border-l border-slate-200">String or Object or Array-Object</td><td class="px-4 py-3 border-l border-slate-200">&#39;color&#39;, { path: &#39;color&#39;, select: &#39;name&#39;, populate: {} }, [{ path: &#39;color&#39; }]</td></tr><tr class="border-t border-slate-200"><td class="px-4 py-3">count</td><td class="px-4 py-3 border-l border-slate-200">Boolean</td><td class="px-4 py-3 border-l border-slate-200">true</td></tr></tbody></table>',3)])])}const I=e(c,[["render",i]]),x={},y={class:"border border-slate-200 rounded-lg overflow-hidden"};function v(s,r){return d(),t("div",y,[...r[0]||(r[0]=[l('<div class="px-4 py-3 bg-slate-100 font-bold">Router / findOne</div><div class="px-4 py-3 border-t border-slate-200">Boolean or Object</div><table class="w-full"><thead><tr class="border-t border-slate-200"><th class="px-4 py-3 text-left w-32">Name</th><th class="px-4 py-3 border-l border-slate-200 text-left w-96">Type</th><th class="px-4 py-3 border-l border-slate-200 text-left">Example</th></tr></thead><tbody><tr class="border-t border-slate-200"><td class="px-4 py-3">middleware</td><td class="px-4 py-3 border-l border-slate-200">Array-String</td><td class="px-4 py-3 border-l border-slate-200">[&#39;test&#39;]</td></tr><tr class="border-t border-slate-200"><td class="px-4 py-3">filter</td><td class="px-4 py-3 border-l border-slate-200">Object</td><td class="px-4 py-3 border-l border-slate-200">{ &#39;age[gte]&#39;: 18 }</td></tr><tr class="border-t border-slate-200"><td class="px-4 py-3">fields</td><td class="px-4 py-3 border-l border-slate-200">String</td><td class="px-4 py-3 border-l border-slate-200">&#39;name color&#39; ✅, &#39;name -createdAt&#39; ❌, &#39;-createdAt -upadtedAt&#39; ❌</td></tr><tr class="border-t border-slate-200"><td class="px-4 py-3">populate</td><td class="px-4 py-3 border-l border-slate-200">String or Object or Array-Object</td><td class="px-4 py-3 border-l border-slate-200">&#39;color&#39;, { path: &#39;color&#39;, select: &#39;name&#39;, populate: {} }, [{ path: &#39;color&#39; }]</td></tr></tbody></table>',3)])])}const k=e(x,[["render",v]]),f={},u={class:"border border-slate-200 rounded-lg overflow-hidden"};function _(s,r){return d(),t("div",u,[...r[0]||(r[0]=[l('<div class="px-4 py-3 bg-slate-100 font-bold">Router / create</div><div class="px-4 py-3 border-t border-slate-200">Boolean or Object</div><table class="w-full"><thead><tr class="border-t border-slate-200"><th class="px-4 py-3 text-left w-32">Name</th><th class="px-4 py-3 border-l border-slate-200 text-left w-96">Type</th><th class="px-4 py-3 border-l border-slate-200 text-left">Example</th></tr></thead><tbody><tr class="border-t border-slate-200"><td class="px-4 py-3">middleware</td><td class="px-4 py-3 border-l border-slate-200">Array-String</td><td class="px-4 py-3 border-l border-slate-200">[&#39;test&#39;]</td></tr></tbody></table>',3)])])}const G=e(f,[["render",_]]),h={},m={class:"border border-slate-200 rounded-lg overflow-hidden"};function g(s,r){return d(),t("div",m,[...r[0]||(r[0]=[l('<div class="px-4 py-3 bg-slate-100 font-bold">Router / update</div><div class="px-4 py-3 border-t border-slate-200">Boolean or Object</div><table class="w-full"><thead><tr class="border-t border-slate-200"><th class="px-4 py-3 text-left w-32">Name</th><th class="px-4 py-3 border-l border-slate-200 text-left w-96">Type</th><th class="px-4 py-3 border-l border-slate-200 text-left">Example</th></tr></thead><tbody><tr class="border-t border-slate-200"><td class="px-4 py-3">middleware</td><td class="px-4 py-3 border-l border-slate-200">Array-String</td><td class="px-4 py-3 border-l border-slate-200">[&#39;test&#39;]</td></tr><tr class="border-t border-slate-200"><td class="px-4 py-3">ignoreFields</td><td class="px-4 py-3 border-l border-slate-200">Array</td><td class="px-4 py-3 border-l border-slate-200">[&#39;active&#39;]</td></tr><tr class="border-t border-slate-200"><td class="px-4 py-3">options</td><td class="px-4 py-3 border-l border-slate-200">Object</td><td class="px-4 py-3 border-l border-slate-200">{ new: true }</td></tr></tbody></table>',3)])])}const V=e(h,[["render",g]]),w={},$={class:"border border-slate-200 rounded-lg overflow-hidden"};function A(s,r){return d(),t("div",$,[...r[0]||(r[0]=[l('<div class="px-4 py-3 bg-slate-100 font-bold">Router / remove</div><div class="px-4 py-3 border-t border-slate-200">Boolean or Object</div><table class="w-full"><thead><tr class="border-t border-slate-200"><th class="px-4 py-3 text-left w-32">Name</th><th class="px-4 py-3 border-l border-slate-200 text-left w-96">Type</th><th class="px-4 py-3 border-l border-slate-200 text-left">Example</th></tr></thead><tbody><tr class="border-t border-slate-200"><td class="px-4 py-3">middleware</td><td class="px-4 py-3 border-l border-slate-200">Array-String</td><td class="px-4 py-3 border-l border-slate-200">[&#39;test&#39;]</td></tr></tbody></table>',3)])])}const C=e(w,[["render",A]]),R={},j={class:"border border-slate-200 rounded-lg overflow-hidden"};function O(s,r){return d(),t("div",j,[...r[0]||(r[0]=[o("div",{class:"px-4 py-3 bg-slate-100 font-bold"},"Router / _import.js",-1),o("div",{class:"px-4 py-3 border-t border-slate-200"},"import './apples.js'",-1)])])}const U=e(R,[["render",O]]),S={},B={class:"border border-slate-200 rounded-lg overflow-hidden"};function E(s,r){return d(),t("div",B,[...r[0]||(r[0]=[l('<div class="px-4 py-3 bg-slate-100 font-bold">Router - Dev</div><div class="px-4 py-3 border-t border-slate-200">store.get(&#39;_app&#39;).routers[&#39;/apples&#39;] = {</div><div class="px-4 py-3 border-t border-slate-100">  description: &#39;Apple&#39;,</div><div class="px-4 py-3 border-t border-slate-100">  events: {</div><div class="px-4 py-3 border-t border-slate-100">    &#39;GET /test&#39;: { description: &#39;Apple test interface.&#39; }</div><div class="px-4 py-3 border-t border-slate-100">  }</div><div class="px-4 py-3 border-t border-slate-100">}</div>',7)])])}const q=e(S,[["render",E]]),D={},N={class:"border border-slate-200 rounded-lg overflow-hidden"};function T(s,r){return d(),t("div",N,[...r[0]||(r[0]=[o("div",{class:"px-4 py-3 bg-slate-100 font-bold"},"Router - Dev / _import.dev.js",-1),o("div",{class:"px-4 py-3 border-t border-slate-200"},"import './apples.dev.js'",-1)])])}const z=e(D,[["render",T]]);export{U as H,H as R,I as a,k as b,G as c,V as d,C as e,q as f,z as g};
@@ -0,0 +1 @@
1
+ import{_ as o,c as s,a as e,o as d}from"./index-DkMBvkWC.js";const t={},a={class:"border border-slate-200 rounded-lg overflow-hidden"};function l(i,r){return d(),s("div",a,[...r[0]||(r[0]=[e("div",{class:"px-4 py-3 bg-slate-100 font-bold"},"Global Middleware & Middleware / middleware/_import.js",-1),e("div",{class:"px-4 py-3 border-t border-slate-200"},"import './global.js'",-1),e("div",{class:"px-4 py-3 border-t border-slate-100"},"import './test.js'",-1)])])}const n=o(t,[["render",l]]);export{n as H};
@@ -0,0 +1 @@
1
+ import{_ as d,c as o,b as a,o as s,a as r}from"./index-DkMBvkWC.js";const l={},p={class:"border border-slate-200 rounded-lg overflow-hidden"};function i(t,e){return s(),o("div",p,[...e[0]||(e[0]=[a('<div class="px-4 py-3 bg-slate-100 font-bold">Model</div><div class="px-4 py-3 border-t border-slate-200">store.get(&#39;app&#39;).models.Apple = {</div><div class="px-4 py-3 border-t border-slate-100">  collection: &#39;apples&#39;,</div><div class="px-4 py-3 border-t border-slate-100">  documentName: &#39;apple&#39;,</div><div class="px-4 py-3 border-t border-slate-100">  schema: {</div><div class="px-4 py-3 border-t border-slate-100">    name: { type: &#39;String&#39;, required: true },</div><div class="px-4 py-3 border-t border-slate-100">    color: { type: &#39;ObjectId&#39;, ref: &#39;Color&#39; },</div><div class="px-4 py-3 border-t border-slate-100">  },</div><div class="px-4 py-3 border-t border-slate-100">  options: { timestamps: true, methods: {}, statics: {} },</div><div class="px-4 py-3 border-t border-slate-100">  middleware: [{ hook: &#39;pre&#39;, &#39;method&#39;: &#39;save&#39;, async handler(next) { await next() } }]</div><div class="px-4 py-3 border-t border-slate-100">}</div>',11)])])}const x=d(l,[["render",i]]),c={},n={class:"border border-slate-200 rounded-lg overflow-hidden"};function b(t,e){return s(),o("div",n,[...e[0]||(e[0]=[r("div",{class:"px-4 py-3 bg-slate-100 font-bold"},"Model / _import.js",-1),r("div",{class:"px-4 py-3 border-t border-slate-200"},"import './Apple.js'",-1),r("div",{class:"px-4 py-3 border-t border-slate-100"},"import './Color.js'",-1)])])}const m=d(c,[["render",b]]);export{m as H,x as M};
@@ -0,0 +1 @@
1
+ @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-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight: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-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--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}}}@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-600:oklch(57.7% .245 27.325);--color-green-600:oklch(62.7% .194 149.214);--color-slate-50:oklch(98.4% .003 247.858);--color-slate-100:oklch(96.8% .007 247.896);--color-slate-200:oklch(92.9% .013 255.508);--color-white:#fff;--spacing:.25rem;--container-7xl:80rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--font-weight-bold:700;--radius-lg:.5rem;--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}::-webkit-calendar-picker-indicator{line-height:1}:-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{.pointer-events-none{pointer-events:none}.fixed{position:fixed}.sticky{position:sticky}.top-0{top:calc(var(--spacing)*0)}.top-4{top:calc(var(--spacing)*4)}.left-0{left:calc(var(--spacing)*0)}.z-50{z-index:50}.m-4{margin:calc(var(--spacing)*4)}.mx-4{margin-inline:calc(var(--spacing)*4)}.mx-auto{margin-inline:auto}.mr-4{margin-right:calc(var(--spacing)*4)}.flex{display:flex}.size-8{width:calc(var(--spacing)*8);height:calc(var(--spacing)*8)}.h-8{height:calc(var(--spacing)*8)}.w-8{width:calc(var(--spacing)*8)}.w-32{width:calc(var(--spacing)*32)}.w-64{width:calc(var(--spacing)*64)}.w-96{width:calc(var(--spacing)*96)}.w-full{width:100%}.max-w-7xl{max-width:var(--container-7xl)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.cursor-pointer{cursor:pointer}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-2{gap:calc(var(--spacing)*2)}.gap-4{gap:calc(var(--spacing)*4)}.overflow-hidden{overflow:hidden}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-slate-100{border-color:var(--color-slate-100)}.border-slate-200{border-color:var(--color-slate-200)}.border-b-slate-200{border-bottom-color:var(--color-slate-200)}.bg-slate-100{background-color:var(--color-slate-100)}.bg-white{background-color:var(--color-white)}.bg-white\/75{background-color:#ffffffbf}@supports (color:color-mix(in lab,red,red)){.bg-white\/75{background-color:color-mix(in oklab,var(--color-white)75%,transparent)}}.p-4{padding:calc(var(--spacing)*4)}.px-4{padding-inline:calc(var(--spacing)*4)}.py-1{padding-block:calc(var(--spacing)*1)}.py-3{padding-block:calc(var(--spacing)*3)}.pt-4{padding-top:calc(var(--spacing)*4)}.pr-4{padding-right:calc(var(--spacing)*4)}.text-center{text-align:center}.text-left{text-align:left}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-none{--tw-leading:1;line-height:1}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.text-green-600{color:var(--color-green-600)}.text-red-600{color:var(--color-red-600)}.shadow{--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)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-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,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))}.outline-none{--tw-outline-style:none;outline-style:none}.even\:bg-slate-100:nth-child(2n){background-color:var(--color-slate-100)}.focus-within\:bg-slate-50:focus-within{background-color:var(--color-slate-50)}@media(hover:hover){.hover\:bg-slate-50:hover{background-color:var(--color-slate-50)}}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{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-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@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}.custom-enter-active,.custom-leave-active{transition:.5s;transform:translateY(0)}.custom-enter-from,.custom-leave-to{opacity:0;transform:translateY(-2rem)}