@directus/app 9.5.0 → 9.6.0

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 (868) hide show
  1. package/dist/assets/@directus_extensions-sdk.27762347.entry.js +1 -0
  2. package/dist/assets/active-line.e9818888.js +1 -0
  3. package/dist/assets/activity-log.85daf7a4.js +1 -0
  4. package/dist/assets/activity.d0569cd2.js +80 -0
  5. package/dist/assets/af.b15e3fdc.js +1 -0
  6. package/dist/assets/apl.8277d513.js +1 -0
  7. package/dist/assets/app-overview.6445a201.svg +86 -0
  8. package/dist/assets/ar-dz.5481d0db.js +1 -0
  9. package/dist/assets/ar-kw.77cb7412.js +1 -0
  10. package/dist/assets/ar-ly.d2852686.js +1 -0
  11. package/dist/assets/ar-ma.6b2052c4.js +1 -0
  12. package/dist/assets/ar-sa.0ce4896b.js +1 -0
  13. package/dist/assets/ar-tn.0075ee1e.js +1 -0
  14. package/dist/assets/ar.01c8813a.js +1 -0
  15. package/dist/assets/asciiarmor.c653ded3.js +1 -0
  16. package/dist/assets/asn.1.bd4bac01.js +1 -0
  17. package/dist/assets/asterisk.dd04622f.js +1 -0
  18. package/dist/assets/authentication.60521067.js +73 -0
  19. package/dist/assets/autorefresh.fcc43bee.js +1 -0
  20. package/dist/assets/aws.76e96460.js +1 -0
  21. package/dist/assets/az.839e5437.js +1 -0
  22. package/dist/assets/backing-directus.64e6ef1f.js +1 -0
  23. package/dist/assets/bg-BG.0d877a81.js +2 -0
  24. package/dist/assets/bg.71bbc37d.js +1 -0
  25. package/dist/assets/bn.28eb3677.js +1 -0
  26. package/dist/assets/br-FR.b5bf22f7.js +1 -0
  27. package/dist/assets/brainfuck.88714c3d.js +1 -0
  28. package/dist/assets/bs.b0570362.js +1 -0
  29. package/dist/assets/ca-ES.4ec66903.js +1 -0
  30. package/dist/assets/ca.d17b0b48.js +1 -0
  31. package/dist/assets/cli.9b6582a5.js +18 -0
  32. package/dist/assets/cli.c91d5269.js +4 -0
  33. package/dist/assets/clike.a23032a9.js +1 -0
  34. package/dist/assets/clojure.77bd41dc.js +1 -0
  35. package/dist/assets/cloudron.52aa95ca.js +1 -0
  36. package/dist/assets/cmake.d6a02425.js +1 -0
  37. package/dist/assets/cobol.12648bf5.js +1 -0
  38. package/dist/assets/codebase-overview.8d89aaef.js +1 -0
  39. package/dist/assets/coffeescript.c039cbb4.js +1 -0
  40. package/dist/assets/collections.dc3b49e6.js +106 -0
  41. package/dist/assets/commonlisp.f2084a1d.js +1 -0
  42. package/dist/assets/config-options.4f623f71.js +138 -0
  43. package/dist/assets/content-collections.ac942019.js +1 -0
  44. package/dist/assets/content-items.5657df9d.js +1 -0
  45. package/dist/assets/content.3725ebd8.js +1 -0
  46. package/dist/assets/creating-extensions.26964364.js +11 -0
  47. package/dist/assets/crystal.67f22611.js +1 -0
  48. package/dist/assets/cs.23d06f43.js +1 -0
  49. package/dist/assets/css.7d0bb97e.js +1 -0
  50. package/dist/assets/cy.3b5a8132.js +1 -0
  51. package/dist/assets/cypher.79c6a384.js +4 -0
  52. package/dist/assets/d.9f3975bc.js +1 -0
  53. package/dist/assets/da-DK.e4e3715f.js +1 -0
  54. package/dist/assets/da.18bc0ec4.js +1 -0
  55. package/dist/assets/dart.2413f6a0.js +1 -0
  56. package/dist/assets/data-model.d6b27512.js +1 -0
  57. package/dist/assets/de-DE.7cd8edca.js +1 -0
  58. package/dist/assets/de-at.a1f7dd1d.js +1 -0
  59. package/dist/assets/de.a8c4aad1.js +1 -0
  60. package/dist/assets/diff.e65cc025.js +1 -0
  61. package/dist/assets/digitalocean-app-platform.1a64c7ed.js +3 -0
  62. package/dist/assets/displays.3a79683e.js +49 -0
  63. package/dist/assets/django.9bb11ca6.js +1 -0
  64. package/dist/assets/docker.790722c7.js +82 -0
  65. package/dist/assets/dockerfile.6abd4f99.js +1 -0
  66. package/dist/assets/documentation.d06bab23.js +1 -0
  67. package/dist/assets/dtd.658f232c.js +1 -0
  68. package/dist/assets/dylan.bb250d49.js +1 -0
  69. package/dist/assets/ebnf.7167c45f.js +1 -0
  70. package/dist/assets/ecl.faa546da.js +1 -0
  71. package/dist/assets/eiffel.bdc2ca84.js +1 -0
  72. package/dist/assets/el.fd48dbad.js +1 -0
  73. package/dist/assets/elm.fc9c507a.js +1 -0
  74. package/dist/assets/email-templates.79e5e2ca.js +2 -0
  75. package/dist/assets/en-CA.54b75dac.js +1 -0
  76. package/dist/assets/en-GB.5d984991.js +1 -0
  77. package/dist/assets/en-au.1268cbf1.js +1 -0
  78. package/dist/assets/en-gb.0165e0db.js +1 -0
  79. package/dist/assets/en-nz.01361cd3.js +1 -0
  80. package/dist/assets/endpoints.04e33b95.js +27 -0
  81. package/dist/assets/eo.7ba085ab.js +1 -0
  82. package/dist/assets/erlang.63538b7a.js +1 -0
  83. package/dist/assets/es-419.768b23e7.js +1 -0
  84. package/dist/assets/es-CL.e4d38d3f.js +1 -0
  85. package/dist/assets/es-ES.5ed14f46.js +1 -0
  86. package/dist/assets/es-us.8d0a5dcc.js +1 -0
  87. package/dist/assets/es.33209895.js +1 -0
  88. package/dist/assets/et-EE.3c82a2a7.js +3 -0
  89. package/dist/assets/et.d879b698.js +1 -0
  90. package/dist/assets/eu.bfb2c22e.js +1 -0
  91. package/dist/assets/extensions.771f89ad.js +12 -0
  92. package/dist/assets/fa.d9f705ee.js +1 -0
  93. package/dist/assets/factor.9f9f4abb.js +1 -0
  94. package/dist/assets/faq.0cd56497.js +2 -0
  95. package/dist/assets/fcl.f9869b95.js +1 -0
  96. package/dist/assets/fi-FI.ea8c811c.js +1 -0
  97. package/dist/assets/fi.5a2e9662.js +1 -0
  98. package/dist/assets/fields.a96528be.js +135 -0
  99. package/dist/assets/file-library.680d5840.js +1 -0
  100. package/dist/assets/files.f21bf259.js +187 -0
  101. package/dist/assets/filter-rules.e04beb8f.js +60 -0
  102. package/dist/assets/folders.c3b0e112.js +132 -0
  103. package/dist/assets/forth.c127aeeb.js +1 -0
  104. package/dist/assets/fortran.971bd1fd.js +1 -0
  105. package/dist/assets/fr-CA.98b1ca99.js +1 -0
  106. package/dist/assets/fr-FR.76a38bd1.js +1 -0
  107. package/dist/assets/fr-ca.cd8c81b9.js +1 -0
  108. package/dist/assets/fr-ch.d9522a23.js +1 -0
  109. package/dist/assets/fr.56b3c7ac.js +1 -0
  110. package/dist/assets/gas.bf045d26.js +1 -0
  111. package/dist/assets/gcp.678c6445.js +60 -0
  112. package/dist/assets/gfm.4b4dba16.js +1 -0
  113. package/dist/assets/gherkin.28e46387.js +1 -0
  114. package/dist/assets/github-ci.23ecb36d.js +2 -0
  115. package/dist/assets/gl.addde635.js +1 -0
  116. package/dist/assets/glossary.3288b825.js +1 -0
  117. package/dist/assets/go.37f05be2.js +1 -0
  118. package/dist/assets/groovy.caed6356.js +1 -0
  119. package/dist/assets/haml.6d0c1fb8.js +1 -0
  120. package/dist/assets/handlebars.29c511b2.js +1 -0
  121. package/dist/assets/haskell-literate.212af0aa.js +1 -0
  122. package/dist/assets/haskell.701a5e5e.js +1 -0
  123. package/dist/assets/haxe.0989c172.js +1 -0
  124. package/dist/assets/he.343cc1d8.js +1 -0
  125. package/dist/assets/hi.b7726273.js +1 -0
  126. package/dist/assets/hooks.0082d595.js +60 -0
  127. package/dist/assets/hr-HR.17ae4a7f.js +1 -0
  128. package/dist/assets/hr.2709fc3c.js +1 -0
  129. package/dist/assets/htmlembedded.4af5b785.js +1 -0
  130. package/dist/assets/htmlmixed.a51c7358.js +1 -0
  131. package/dist/assets/http.d4f19e67.js +1 -0
  132. package/dist/assets/hu-HU.94582835.js +1 -0
  133. package/dist/assets/hu.ec48b74d.js +1 -0
  134. package/dist/assets/hy-am.30c58054.js +1 -0
  135. package/dist/assets/id-ID.730079b9.js +1 -0
  136. package/dist/assets/id.08bda718.js +1 -0
  137. package/dist/assets/idl.eeda14ab.js +1 -0
  138. package/dist/assets/iis.330abbee.js +24 -0
  139. package/dist/assets/index.071a9c3a.js +1 -0
  140. package/dist/assets/index.0d6f77da.js +1 -0
  141. package/dist/assets/index.0dddca1a.js +1 -0
  142. package/dist/assets/index.10548c32.js +1 -0
  143. package/dist/assets/index.10925874.js +1 -0
  144. package/dist/assets/index.146fba14.js +1 -0
  145. package/dist/assets/index.14876b51.js +1 -0
  146. package/dist/assets/index.1806be1f.js +1 -0
  147. package/dist/assets/index.205e1dad.js +1 -0
  148. package/dist/assets/index.326bb798.js +1 -0
  149. package/dist/assets/index.3677702f.css +1 -0
  150. package/dist/assets/index.37cffa7d.js +1 -0
  151. package/dist/assets/index.3ae28004.js +1 -0
  152. package/dist/assets/index.3fc14165.js +1 -0
  153. package/dist/assets/index.415d63b7.js +1 -0
  154. package/dist/assets/index.41b6a5ee.js +1 -0
  155. package/dist/assets/index.4aa69d22.js +1 -0
  156. package/dist/assets/index.4b8ae547.js +1 -0
  157. package/dist/assets/index.4e0946be.js +1 -0
  158. package/dist/assets/index.4f13b227.js +1 -0
  159. package/dist/assets/index.51574b0e.js +1 -0
  160. package/dist/assets/index.51882a25.js +1 -0
  161. package/dist/assets/index.51e43e6a.js +1 -0
  162. package/dist/assets/index.525f3896.js +1 -0
  163. package/dist/assets/index.5e04a811.js +1 -0
  164. package/dist/assets/index.5ea5bfa5.js +1 -0
  165. package/dist/assets/index.60c6d36d.js +1 -0
  166. package/dist/assets/index.625e71a7.js +1 -0
  167. package/dist/assets/index.6260e453.js +1 -0
  168. package/dist/assets/index.62fd2872.js +1 -0
  169. package/dist/assets/index.68a087d1.js +1 -0
  170. package/dist/assets/index.6e92d608.js +1 -0
  171. package/dist/assets/index.73b63f0e.js +1 -0
  172. package/dist/assets/index.7472dc76.js +1 -0
  173. package/dist/assets/index.76e3ec1d.js +1 -0
  174. package/dist/assets/index.7a271708.js +1 -0
  175. package/dist/assets/index.7a98f173.js +1 -0
  176. package/dist/assets/index.7badc515.js +1 -0
  177. package/dist/assets/index.7cfb4e9f.js +1 -0
  178. package/dist/assets/index.7e95afe7.js +1 -0
  179. package/dist/assets/index.8dee4a35.js +1 -0
  180. package/dist/assets/index.8fe44535.js +1 -0
  181. package/dist/assets/index.90abf85c.js +1 -0
  182. package/dist/assets/index.913c3bcb.js +1 -0
  183. package/dist/assets/index.93380fe6.js +1 -0
  184. package/dist/assets/index.98841743.js +1 -0
  185. package/dist/assets/index.9c5d89ae.js +1 -0
  186. package/dist/assets/index.a002e680.js +1 -0
  187. package/dist/assets/index.a09c6735.js +1 -0
  188. package/dist/assets/index.a2862ce9.js +1 -0
  189. package/dist/assets/index.a2ff10ff.js +1 -0
  190. package/dist/assets/index.a6e1eaac.js +1 -0
  191. package/dist/assets/index.a97e922c.js +1 -0
  192. package/dist/assets/index.ac67a5f3.js +1 -0
  193. package/dist/assets/index.b3b7693f.js +1 -0
  194. package/dist/assets/index.b6a98b96.js +1 -0
  195. package/dist/assets/index.c208f0fd.js +1 -0
  196. package/dist/assets/index.c440596f.js +1 -0
  197. package/dist/assets/index.c922886d.js +1 -0
  198. package/dist/assets/index.caf343d8.js +1 -0
  199. package/dist/assets/index.cd1e1e40.js +1 -0
  200. package/dist/assets/index.cd89a422.js +1 -0
  201. package/dist/assets/index.cf683d8c.js +1 -0
  202. package/dist/assets/index.cfae1a8b.js +1 -0
  203. package/dist/assets/index.d03f4b8b.js +1 -0
  204. package/dist/assets/index.d0b4ff86.js +1 -0
  205. package/dist/assets/index.d4834d17.js +1 -0
  206. package/dist/assets/index.d74fe2b2.js +26 -0
  207. package/dist/assets/index.d91c6632.css +1 -0
  208. package/dist/assets/index.df4b8c75.js +1 -0
  209. package/dist/assets/index.e041364c.js +1 -0
  210. package/dist/assets/index.e787f33f.js +1 -0
  211. package/dist/assets/index.e7be0f01.js +1 -0
  212. package/dist/assets/index.e7e6179d.js +1 -0
  213. package/dist/assets/index.e96faed1.js +1 -0
  214. package/dist/assets/index.eacd68de.js +1 -0
  215. package/dist/assets/index.f10b280f.js +1 -0
  216. package/dist/assets/index.f3c9fe2a.js +1 -0
  217. package/dist/assets/index.f52f3569.js +1 -0
  218. package/dist/assets/index.f6a253b6.js +1 -0
  219. package/dist/assets/index.f7322f54.entry.js +531 -0
  220. package/dist/assets/index.fc02ea02.js +1 -0
  221. package/dist/assets/index.fc550611.js +1 -0
  222. package/dist/assets/index.ff32b7e4.js +1 -0
  223. package/dist/assets/input-rich-text-html.12cfd6d6.js +239 -0
  224. package/dist/assets/input-rich-text-html.1d6673ff.css +1 -0
  225. package/dist/assets/insights.7e720aaa.js +1 -0
  226. package/dist/assets/installation.ac1195fb.js +1 -0
  227. package/dist/assets/interfaces.85a891f8.js +46 -0
  228. package/dist/assets/introduction.14ab0709.js +1 -0
  229. package/dist/assets/introduction.16cf3345.js +1 -0
  230. package/dist/assets/introduction.d2c3a9b1.js +4 -0
  231. package/dist/assets/introduction.f1b59346.js +90 -0
  232. package/dist/assets/is.b36ebc71.js +1 -0
  233. package/dist/assets/it-IT.c887dd87.js +1 -0
  234. package/dist/assets/it.3cadf6ad.js +1 -0
  235. package/dist/assets/items.ce1274b9.js +136 -0
  236. package/dist/assets/ja.df6f4b08.js +1 -0
  237. package/dist/assets/javascript-hint.2d9f90b8.js +1 -0
  238. package/dist/assets/javascript.aa968f57.js +1 -0
  239. package/dist/assets/jinja2.36c237ca.js +1 -0
  240. package/dist/assets/jsonlint.e8823cb8.js +8 -0
  241. package/dist/assets/jsx.197dce43.js +1 -0
  242. package/dist/assets/julia.c102dfd3.js +1 -0
  243. package/dist/assets/ka.805bf11c.js +1 -0
  244. package/dist/assets/kk.a6e57d44.js +1 -0
  245. package/dist/assets/ko-KR.b5ed9ca7.js +1 -0
  246. package/dist/assets/ko.08fe68a9.js +1 -0
  247. package/dist/assets/layouts.ff5441c6.js +54 -0
  248. package/dist/assets/lb.e01f5df5.js +1 -0
  249. package/dist/assets/livescript.21105db8.js +1 -0
  250. package/dist/assets/localization.27364f2b.js +1 -0
  251. package/dist/assets/lt.0d291ae5.js +1 -0
  252. package/dist/assets/lua.1d09048d.js +1 -0
  253. package/dist/assets/lv.00399f94.js +1 -0
  254. package/dist/assets/manual.63f9c5d3.js +10 -0
  255. package/dist/assets/mark-selection.48a3dbe8.js +1 -0
  256. package/dist/assets/match-highlighter.0df5b4f1.js +1 -0
  257. package/dist/assets/mathematica.2fe90942.js +1 -0
  258. package/dist/assets/mbox.5cb538b6.js +1 -0
  259. package/dist/assets/migrations.1bc30d80.js +19 -0
  260. package/dist/assets/mirc.96079655.js +1 -0
  261. package/dist/assets/mk.5d734698.js +1 -0
  262. package/dist/assets/mllike.7a80c37b.js +1 -0
  263. package/dist/assets/mn-MN.3b64cd12.js +1 -0
  264. package/dist/assets/modelica.f87d9a24.js +1 -0
  265. package/dist/assets/modules.dfe4aa4e.js +69 -0
  266. package/dist/assets/ms.d459f765.js +1 -0
  267. package/dist/assets/mscgen.1e50688f.js +1 -0
  268. package/dist/assets/multiplex.90c2363b.js +3 -0
  269. package/dist/assets/mumps.aa5704c7.js +1 -0
  270. package/dist/assets/nb.a3febc82.js +1 -0
  271. package/dist/assets/ne.afdfe3bf.js +1 -0
  272. package/dist/assets/nginx.f40bad27.js +1 -0
  273. package/dist/assets/nl-NL.a0c67bbb.js +1 -0
  274. package/dist/assets/nl.12cdd5b8.js +1 -0
  275. package/dist/assets/nn.535723b4.js +1 -0
  276. package/dist/assets/notifications.20bde137.js +153 -0
  277. package/dist/assets/nsis.99bbd756.js +1 -0
  278. package/dist/assets/ntriples.2e5020c8.js +1 -0
  279. package/dist/assets/octave.ee1a6e70.js +1 -0
  280. package/dist/assets/overlay.8ec15b1b.js +1 -0
  281. package/dist/assets/overview.01ff825c.js +1 -0
  282. package/dist/assets/overview.3a8bd973.js +1 -0
  283. package/dist/assets/oz.9fbab86e.js +1 -0
  284. package/dist/assets/panels.84ef6a84.js +65 -0
  285. package/dist/assets/pascal.c44d5320.js +1 -0
  286. package/dist/assets/pegjs.b32c7ead.js +1 -0
  287. package/dist/assets/perl.2729cf31.js +1 -0
  288. package/dist/assets/permissions.47d65b17.js +178 -0
  289. package/dist/assets/php.d6a66d9d.js +1 -0
  290. package/dist/assets/pig.47fa025c.js +1 -0
  291. package/dist/assets/pinia.f515d45e.entry.js +1 -0
  292. package/dist/assets/pl-PL.c389638f.js +1 -0
  293. package/dist/assets/pl.86440e6e.js +1 -0
  294. package/dist/assets/plesk-screenshot.00f26a33.png +0 -0
  295. package/dist/assets/plesk.0483440c.js +27 -0
  296. package/dist/assets/powershell.99a55b30.js +1 -0
  297. package/dist/assets/presets-bookmarks.82f3f9ef.js +1 -0
  298. package/dist/assets/presets.6ace4e86.js +164 -0
  299. package/dist/assets/project-settings.b6942d32.js +1 -0
  300. package/dist/assets/properties.1055d639.js +1 -0
  301. package/dist/assets/protobuf.4b3eb57a.js +1 -0
  302. package/dist/assets/pt-BR.fcdcd0d6.js +1 -0
  303. package/dist/assets/pt-br.cc4b694f.js +1 -0
  304. package/dist/assets/pt.73886c02.js +1 -0
  305. package/dist/assets/pug.000c324e.js +1 -0
  306. package/dist/assets/puppet.25546d2c.js +1 -0
  307. package/dist/assets/python.8450efc6.js +1 -0
  308. package/dist/assets/q.0ad76756.js +1 -0
  309. package/dist/assets/query.d7cae937.js +152 -0
  310. package/dist/assets/quickstart.7dce1be9.js +20 -0
  311. package/dist/assets/r.2e3f1373.js +1 -0
  312. package/dist/assets/relations.143e59a4.js +115 -0
  313. package/dist/assets/relationships.8a6a55ea.js +55 -0
  314. package/dist/assets/revisions.4a380f31.js +40 -0
  315. package/dist/assets/ro-RO.97f46d61.js +1 -0
  316. package/dist/assets/ro.c45ba3d9.js +1 -0
  317. package/dist/assets/roles.9a467f51.js +171 -0
  318. package/dist/assets/rpm.0f41e62d.js +1 -0
  319. package/dist/assets/rst.a4f3ba5f.js +1 -0
  320. package/dist/assets/ru-RU.08ba5d6b.js +1 -0
  321. package/dist/assets/ru.638f4fa4.js +1 -0
  322. package/dist/assets/ruby.5cb0ba51.js +1 -0
  323. package/dist/assets/running-locally.b2de8da4.js +28 -0
  324. package/dist/assets/rust.b7493419.js +1 -0
  325. package/dist/assets/sas.0cd3626d.js +1 -0
  326. package/dist/assets/sass.cd694623.js +1 -0
  327. package/dist/assets/scheme.3aaec68e.js +1 -0
  328. package/dist/assets/sdk.accde57c.js +355 -0
  329. package/dist/assets/security.c7ae152d.js +1 -0
  330. package/dist/assets/server.4707997f.js +114 -0
  331. package/dist/assets/settings.16ae0506.js +51 -0
  332. package/dist/assets/settings.d10a56a2.js +1 -0
  333. package/dist/assets/shell.330154a1.js +1 -0
  334. package/dist/assets/show-hint.08ce5b35.js +1 -0
  335. package/dist/assets/sieve.b4c7728e.js +1 -0
  336. package/dist/assets/simple.8763f2ec.js +1 -0
  337. package/dist/assets/sk.883343ad.js +1 -0
  338. package/dist/assets/sl-SI.59c76b0a.js +2 -0
  339. package/dist/assets/sl.9c1d7271.js +1 -0
  340. package/dist/assets/slim.9ea94231.js +1 -0
  341. package/dist/assets/smalltalk.8b61c119.js +1 -0
  342. package/dist/assets/smarty.706bb089.js +1 -0
  343. package/dist/assets/solr.67c7ee7a.js +1 -0
  344. package/dist/assets/soy.be473048.js +1 -0
  345. package/dist/assets/sparql.51a25620.js +1 -0
  346. package/dist/assets/spreadsheet.fcb893e8.js +1 -0
  347. package/dist/assets/sq.94f802c2.js +1 -0
  348. package/dist/assets/sql.4dc1acac.js +1 -0
  349. package/dist/assets/sr-CS.9a714a93.js +1 -0
  350. package/dist/assets/sr-cyrl.cf2bde33.js +1 -0
  351. package/dist/assets/sr.ae9ed7f6.js +1 -0
  352. package/dist/assets/sso.e2f0df9a.js +22 -0
  353. package/dist/assets/stex.84747908.js +1 -0
  354. package/dist/assets/stylus.7b96e081.js +1 -0
  355. package/dist/assets/support.0b9bd95f.js +1 -0
  356. package/dist/assets/sv-SE.7051901e.js +1 -0
  357. package/dist/assets/sv.4d9818be.js +1 -0
  358. package/dist/assets/swift.79848d55.js +1 -0
  359. package/dist/assets/ta-in.58b9457c.js +1 -0
  360. package/dist/assets/tcl.1970681b.js +1 -0
  361. package/dist/assets/textile.e83320ea.js +1 -0
  362. package/dist/assets/th-TH.ed8c9ce8.js +2 -0
  363. package/dist/assets/th.2e10ae87.js +1 -0
  364. package/dist/assets/themes.323d2c59.js +5 -0
  365. package/dist/assets/tiddlywiki.2b2e4ff7.js +1 -0
  366. package/dist/assets/tiki.9cc4254e.js +1 -0
  367. package/dist/assets/toml.9be02e0b.js +1 -0
  368. package/dist/assets/tornado.073889de.js +1 -0
  369. package/dist/assets/tr.56778c02.js +1 -0
  370. package/dist/assets/translations.bd6e2f4c.js +1 -0
  371. package/dist/assets/troff.8fa79cbc.js +1 -0
  372. package/dist/assets/ttcn-cfg.e7bac5a1.js +1 -0
  373. package/dist/assets/ttcn.1cc44c93.js +1 -0
  374. package/dist/assets/turtle.d5e9ffb3.js +1 -0
  375. package/dist/assets/twig.b04e6f4c.js +1 -0
  376. package/dist/assets/ubuntu.2e2a920e.js +11 -0
  377. package/dist/assets/ug.6363a215.js +1 -0
  378. package/dist/assets/uk-UA.1bd8aa98.js +1 -0
  379. package/dist/assets/uk.5a9060bd.js +1 -0
  380. package/dist/assets/upgrades-migrations.6b40146f.js +1 -0
  381. package/dist/assets/use-sync.6d20172a.js +1 -0
  382. package/dist/assets/user-directory.c5340005.js +1 -0
  383. package/dist/assets/users-roles-permissions.9d570863.js +1 -0
  384. package/dist/assets/users.2bcfad1a.js +252 -0
  385. package/dist/assets/utilities.e5c07634.js +60 -0
  386. package/dist/assets/uz.687d7fbd.js +1 -0
  387. package/dist/assets/vb.c986b370.js +1 -0
  388. package/dist/assets/vbscript.92f83a08.js +1 -0
  389. package/dist/assets/velocity.f11f1d03.js +1 -0
  390. package/dist/assets/vendor.546e1516.js +1976 -0
  391. package/dist/assets/vendor.9387af12.css +1 -0
  392. package/dist/assets/verilog.a24f0500.js +1 -0
  393. package/dist/assets/vhdl.a49602e6.js +1 -0
  394. package/dist/assets/vi.2bf54ce7.js +1 -0
  395. package/dist/assets/vue-i18n.feba4fda.entry.js +1 -0
  396. package/dist/assets/vue-router.9dd9c3aa.entry.js +1 -0
  397. package/dist/assets/vue.b07aacca.entry.js +1 -0
  398. package/dist/assets/vue.c4de942a.js +1 -0
  399. package/dist/assets/wast.6c6c82f6.js +1 -0
  400. package/dist/assets/webhooks.6086e8a1.js +147 -0
  401. package/dist/assets/webhooks.6b93563c.js +1 -0
  402. package/dist/assets/webidl.7ab89b46.js +1 -0
  403. package/dist/assets/xquery.0bb89cc8.js +1 -0
  404. package/dist/assets/yacas.ed921cd2.js +1 -0
  405. package/dist/assets/yaml-frontmatter.1248294d.js +1 -0
  406. package/dist/assets/yaml.b6cf6fc7.js +1 -0
  407. package/dist/assets/z80.84dfc6fb.js +1 -0
  408. package/dist/assets/zh-CN.39bd6632.js +1 -0
  409. package/dist/assets/zh-cn.aac76920.js +1 -0
  410. package/dist/assets/zh-tw.d89266cf.js +1 -0
  411. package/dist/favicon.ico +0 -0
  412. package/dist/index.html +7 -120
  413. package/dist/manifest.webmanifest +7 -25
  414. package/package.json +6 -6
  415. package/dist/assets/200-200-cover-100.6a119754.jpg +0 -0
  416. package/dist/assets/200-200-cover-50.b5c757be.jpg +0 -0
  417. package/dist/assets/200-200-cover-75.5e0d9ff8.jpg +0 -0
  418. package/dist/assets/@directus_extensions-sdk.f1e1c1f8.entry.js +0 -1
  419. package/dist/assets/active-line.116e8a0f.js +0 -1
  420. package/dist/assets/activity-log.809685f3.js +0 -1
  421. package/dist/assets/activity.21011780.js +0 -80
  422. package/dist/assets/add-field.880542d6.png +0 -0
  423. package/dist/assets/af.0ae12dd5.js +0 -1
  424. package/dist/assets/apl.5ef647d4.js +0 -1
  425. package/dist/assets/app-overview.1d041c7b.svg +0 -86
  426. package/dist/assets/ar-dz.4def840c.js +0 -1
  427. package/dist/assets/ar-kw.8e19bfac.js +0 -1
  428. package/dist/assets/ar-ly.1c517370.js +0 -1
  429. package/dist/assets/ar-ma.f01598f3.js +0 -1
  430. package/dist/assets/ar-sa.c5fe14e9.js +0 -1
  431. package/dist/assets/ar-tn.121f69b2.js +0 -1
  432. package/dist/assets/ar.bed29460.js +0 -1
  433. package/dist/assets/asciiarmor.99affac2.js +0 -1
  434. package/dist/assets/asn.1.23fb8a38.js +0 -1
  435. package/dist/assets/asterisk.5dd5867e.js +0 -1
  436. package/dist/assets/authentication.ad0509db.js +0 -73
  437. package/dist/assets/autorefresh.4de3a6ca.js +0 -1
  438. package/dist/assets/aws.8982a19c.js +0 -1
  439. package/dist/assets/az.706ff558.js +0 -1
  440. package/dist/assets/backing-directus.fd9c0b9e.js +0 -1
  441. package/dist/assets/bg-BG.280f817c.js +0 -2
  442. package/dist/assets/bg.1c68ab52.js +0 -1
  443. package/dist/assets/bn.52d26e23.js +0 -1
  444. package/dist/assets/br-FR.6a75d7c1.js +0 -1
  445. package/dist/assets/brainfuck.bc87fd47.js +0 -1
  446. package/dist/assets/bs.4d20add5.js +0 -1
  447. package/dist/assets/ca-ES.e335da6d.js +0 -1
  448. package/dist/assets/ca.a79eb6d2.js +0 -1
  449. package/dist/assets/cli.bd4ff238.js +0 -4
  450. package/dist/assets/cli.e6034ea9.js +0 -15
  451. package/dist/assets/clike.6c2d1b48.js +0 -1
  452. package/dist/assets/clojure.1ce4fa8e.js +0 -1
  453. package/dist/assets/cloudron.f44c1f67.js +0 -1
  454. package/dist/assets/cmake.eaf1d3a6.js +0 -1
  455. package/dist/assets/cobol.c31c9527.js +0 -1
  456. package/dist/assets/codebase-overview.a3da6d8b.js +0 -1
  457. package/dist/assets/coffeescript.b4b599ef.js +0 -1
  458. package/dist/assets/collections.a881ee76.js +0 -106
  459. package/dist/assets/commonlisp.7ddac9a9.js +0 -1
  460. package/dist/assets/config-options.fcabecb0.js +0 -133
  461. package/dist/assets/content-collections.c0245556.js +0 -1
  462. package/dist/assets/content-items.5f6c8054.js +0 -1
  463. package/dist/assets/content.c7aafb97.js +0 -1
  464. package/dist/assets/create-item.32e17f40.png +0 -0
  465. package/dist/assets/creating-extensions.3bd54c03.js +0 -11
  466. package/dist/assets/crystal.dde76d21.js +0 -1
  467. package/dist/assets/cs.b1e8bc14.js +0 -1
  468. package/dist/assets/css.d4d7bd7b.js +0 -1
  469. package/dist/assets/cy.ac181a59.js +0 -1
  470. package/dist/assets/cypher.5d6b6bb6.js +0 -4
  471. package/dist/assets/d.cc41caa4.js +0 -1
  472. package/dist/assets/da-DK.31685da1.js +0 -1
  473. package/dist/assets/da.4016bc22.js +0 -1
  474. package/dist/assets/dart.f3c45c4c.js +0 -1
  475. package/dist/assets/data-model.fce64021.js +0 -1
  476. package/dist/assets/de-DE.4cf007f5.js +0 -1
  477. package/dist/assets/de-at.c36ba3d5.js +0 -1
  478. package/dist/assets/de.31ae30a8.js +0 -1
  479. package/dist/assets/diff.c1542639.js +0 -1
  480. package/dist/assets/digitalocean-app-platform.5d0d1f93.js +0 -3
  481. package/dist/assets/displays.30e705b7.js +0 -49
  482. package/dist/assets/django.c4edc48a.js +0 -1
  483. package/dist/assets/docker.25994fc0.js +0 -82
  484. package/dist/assets/dockerfile.5693a227.js +0 -1
  485. package/dist/assets/documentation.b680c6e6.js +0 -1
  486. package/dist/assets/dtd.32c5f33d.js +0 -1
  487. package/dist/assets/dylan.43169119.js +0 -1
  488. package/dist/assets/ebnf.1ff40cbe.js +0 -1
  489. package/dist/assets/ecl.3a604120.js +0 -1
  490. package/dist/assets/eiffel.01caf57f.js +0 -1
  491. package/dist/assets/el.59a913c2.js +0 -1
  492. package/dist/assets/elm.6a194bb5.js +0 -1
  493. package/dist/assets/email-templates.16a93b70.js +0 -2
  494. package/dist/assets/empty-state.bbc4e874.png +0 -0
  495. package/dist/assets/en-CA.abfa05d9.js +0 -1
  496. package/dist/assets/en-GB.d9ec0957.js +0 -1
  497. package/dist/assets/en-au.169355d7.js +0 -1
  498. package/dist/assets/en-gb.0b977da8.js +0 -1
  499. package/dist/assets/en-nz.6296f2b6.js +0 -1
  500. package/dist/assets/endpoints.7539ee8c.js +0 -27
  501. package/dist/assets/eo.d92d8fbf.js +0 -1
  502. package/dist/assets/erlang.ce39711a.js +0 -1
  503. package/dist/assets/es-419.d31b2106.js +0 -1
  504. package/dist/assets/es-CL.9e233b1a.js +0 -1
  505. package/dist/assets/es-ES.7bd56b6c.js +0 -1
  506. package/dist/assets/es-us.35915abe.js +0 -1
  507. package/dist/assets/es.c516dd05.js +0 -1
  508. package/dist/assets/et-EE.c6c25e0e.js +0 -3
  509. package/dist/assets/et.420b5f6d.js +0 -1
  510. package/dist/assets/eu.edaff4b0.js +0 -1
  511. package/dist/assets/extensions.53c9a780.js +0 -12
  512. package/dist/assets/fa.f3993a60.js +0 -1
  513. package/dist/assets/factor.4af6f1df.js +0 -1
  514. package/dist/assets/faq.ff43f889.js +0 -2
  515. package/dist/assets/fcl.fff56dfe.js +0 -1
  516. package/dist/assets/fi-FI.ffa1989d.js +0 -1
  517. package/dist/assets/fi.3ee32d07.js +0 -1
  518. package/dist/assets/fields.343f5ff9.js +0 -135
  519. package/dist/assets/file-library.177b80e7.js +0 -1
  520. package/dist/assets/files.00a84d8b.js +0 -187
  521. package/dist/assets/filter-rules.1d359ed5.js +0 -60
  522. package/dist/assets/folders.9b1b4b91.js +0 -132
  523. package/dist/assets/forth.a11494d0.js +0 -1
  524. package/dist/assets/fortran.461d648e.js +0 -1
  525. package/dist/assets/fr-CA.0325e87d.js +0 -1
  526. package/dist/assets/fr-FR.e0d247ce.js +0 -1
  527. package/dist/assets/fr-ca.e2e64899.js +0 -1
  528. package/dist/assets/fr-ch.e9042a4c.js +0 -1
  529. package/dist/assets/fr.9d599b24.js +0 -1
  530. package/dist/assets/gas.87370c00.js +0 -1
  531. package/dist/assets/gcp.66b4d0d5.js +0 -49
  532. package/dist/assets/gfm.0d1c73a1.js +0 -1
  533. package/dist/assets/gherkin.144c9510.js +0 -1
  534. package/dist/assets/github-ci.6c0892e9.js +0 -2
  535. package/dist/assets/gl.b8341ed4.js +0 -1
  536. package/dist/assets/glossary.3dae6249.js +0 -1
  537. package/dist/assets/go.5d2b15cd.js +0 -1
  538. package/dist/assets/groovy.98c0ab23.js +0 -1
  539. package/dist/assets/haml.5483f001.js +0 -1
  540. package/dist/assets/handlebars.c6cd39d7.js +0 -1
  541. package/dist/assets/haskell-literate.f935039d.js +0 -1
  542. package/dist/assets/haskell.90b3655f.js +0 -1
  543. package/dist/assets/haxe.9d2e7d67.js +0 -1
  544. package/dist/assets/he.18403882.js +0 -1
  545. package/dist/assets/hi.e2a17765.js +0 -1
  546. package/dist/assets/hooks.d18ce175.js +0 -60
  547. package/dist/assets/hr.57f77dc3.js +0 -1
  548. package/dist/assets/htmlembedded.855a258a.js +0 -1
  549. package/dist/assets/htmlmixed.7c87b0f0.js +0 -1
  550. package/dist/assets/http.5613c227.js +0 -1
  551. package/dist/assets/hu-HU.5f89d00f.js +0 -1
  552. package/dist/assets/hu.adb9ccdc.js +0 -1
  553. package/dist/assets/hy-am.59b7a75e.js +0 -1
  554. package/dist/assets/id-ID.a9d3d91d.js +0 -1
  555. package/dist/assets/id.bc299c4a.js +0 -1
  556. package/dist/assets/idl.45cf818e.js +0 -1
  557. package/dist/assets/iis.d53945ae.js +0 -24
  558. package/dist/assets/index.03a7f3bc.js +0 -1
  559. package/dist/assets/index.05574ccd.js +0 -1
  560. package/dist/assets/index.07813a74.js +0 -1
  561. package/dist/assets/index.083b60db.js +0 -1
  562. package/dist/assets/index.0a4e2361.js +0 -1
  563. package/dist/assets/index.171487e6.css +0 -1
  564. package/dist/assets/index.19fb6927.js +0 -26
  565. package/dist/assets/index.1b6c82d7.js +0 -1
  566. package/dist/assets/index.1cbcb585.js +0 -1
  567. package/dist/assets/index.2069cd25.js +0 -1
  568. package/dist/assets/index.28b997d4.js +0 -1
  569. package/dist/assets/index.30151efc.js +0 -1
  570. package/dist/assets/index.37b78477.js +0 -1
  571. package/dist/assets/index.3a276397.entry.js +0 -531
  572. package/dist/assets/index.3a46f49f.js +0 -1
  573. package/dist/assets/index.3d49cc07.js +0 -1
  574. package/dist/assets/index.3f3d9fa8.js +0 -1
  575. package/dist/assets/index.4191f62b.js +0 -1
  576. package/dist/assets/index.4392b262.js +0 -1
  577. package/dist/assets/index.48f9411c.js +0 -1
  578. package/dist/assets/index.4941752f.js +0 -1
  579. package/dist/assets/index.4c2797ca.js +0 -1
  580. package/dist/assets/index.55963003.js +0 -1
  581. package/dist/assets/index.59a04935.js +0 -1
  582. package/dist/assets/index.5c24f70c.js +0 -1
  583. package/dist/assets/index.5c5e0c4e.js +0 -1
  584. package/dist/assets/index.5c98ffde.js +0 -1
  585. package/dist/assets/index.6143d636.js +0 -1
  586. package/dist/assets/index.62328d13.js +0 -1
  587. package/dist/assets/index.625b2c3c.js +0 -1
  588. package/dist/assets/index.6648089d.css +0 -1
  589. package/dist/assets/index.6754f5ff.js +0 -1
  590. package/dist/assets/index.6abc4c4a.js +0 -1
  591. package/dist/assets/index.702d69f2.js +0 -1
  592. package/dist/assets/index.71391947.js +0 -1
  593. package/dist/assets/index.714243aa.js +0 -1
  594. package/dist/assets/index.732d90e6.js +0 -1
  595. package/dist/assets/index.7411c17e.js +0 -1
  596. package/dist/assets/index.76c0176c.js +0 -1
  597. package/dist/assets/index.78970693.js +0 -1
  598. package/dist/assets/index.78ccd967.js +0 -1
  599. package/dist/assets/index.7a5e06da.js +0 -1
  600. package/dist/assets/index.80cc5b1a.js +0 -1
  601. package/dist/assets/index.8407c6cb.js +0 -1
  602. package/dist/assets/index.847d77c1.js +0 -1
  603. package/dist/assets/index.84e91583.js +0 -1
  604. package/dist/assets/index.87b8fa32.js +0 -1
  605. package/dist/assets/index.8da1270b.js +0 -1
  606. package/dist/assets/index.8de95117.js +0 -1
  607. package/dist/assets/index.8ff3a54b.js +0 -1
  608. package/dist/assets/index.97672267.js +0 -1
  609. package/dist/assets/index.9a1e39d1.js +0 -1
  610. package/dist/assets/index.9c05f463.js +0 -1
  611. package/dist/assets/index.9e449c69.js +0 -1
  612. package/dist/assets/index.9f8531c9.js +0 -1
  613. package/dist/assets/index.a4097a5e.js +0 -1
  614. package/dist/assets/index.aab3ad32.js +0 -1
  615. package/dist/assets/index.ab6dcaea.js +0 -1
  616. package/dist/assets/index.ae92e9ed.js +0 -1
  617. package/dist/assets/index.b267e02a.js +0 -1
  618. package/dist/assets/index.b3e4a522.js +0 -1
  619. package/dist/assets/index.b851dbc5.js +0 -1
  620. package/dist/assets/index.ba6d2e1d.js +0 -1
  621. package/dist/assets/index.bb6a02dc.js +0 -1
  622. package/dist/assets/index.bb84b1bd.js +0 -1
  623. package/dist/assets/index.bc098053.js +0 -1
  624. package/dist/assets/index.bca97bd3.js +0 -1
  625. package/dist/assets/index.bf27b868.js +0 -1
  626. package/dist/assets/index.c048a125.js +0 -1
  627. package/dist/assets/index.c2200ee4.js +0 -1
  628. package/dist/assets/index.c425fe84.js +0 -1
  629. package/dist/assets/index.ca9b3837.js +0 -1
  630. package/dist/assets/index.d068ed25.js +0 -1
  631. package/dist/assets/index.d82c8cfa.js +0 -1
  632. package/dist/assets/index.da02233c.js +0 -1
  633. package/dist/assets/index.ddff35c7.js +0 -1
  634. package/dist/assets/index.e22f8abe.js +0 -1
  635. package/dist/assets/index.e382ecdc.js +0 -1
  636. package/dist/assets/index.e3c8b335.js +0 -1
  637. package/dist/assets/index.ed1c4be4.js +0 -1
  638. package/dist/assets/index.f79a8990.js +0 -1
  639. package/dist/assets/index.fb3c7ac0.js +0 -1
  640. package/dist/assets/index.fded5c41.js +0 -1
  641. package/dist/assets/index.fe26f195.js +0 -1
  642. package/dist/assets/input-rich-text-html.65ba73f7.js +0 -233
  643. package/dist/assets/input-rich-text-html.d03d46a8.css +0 -1
  644. package/dist/assets/insights.3cc829e4.js +0 -1
  645. package/dist/assets/installation.25a626fb.js +0 -1
  646. package/dist/assets/interfaces.0d2bde70.js +0 -46
  647. package/dist/assets/introduction.07eddd48.js +0 -90
  648. package/dist/assets/introduction.39f4e226.js +0 -4
  649. package/dist/assets/introduction.95c347fa.js +0 -1
  650. package/dist/assets/introduction.f71eead0.js +0 -1
  651. package/dist/assets/is.2eb43668.js +0 -1
  652. package/dist/assets/it-IT.095b1e73.js +0 -1
  653. package/dist/assets/it.e663f69e.js +0 -1
  654. package/dist/assets/items.f84cadfc.js +0 -136
  655. package/dist/assets/ja.21755c02.js +0 -1
  656. package/dist/assets/javascript-hint.5bdb0231.js +0 -1
  657. package/dist/assets/javascript.29241fdc.js +0 -1
  658. package/dist/assets/jinja2.39842bae.js +0 -1
  659. package/dist/assets/jsonlint.09bf5bab.js +0 -8
  660. package/dist/assets/jsx.8de28f58.js +0 -1
  661. package/dist/assets/julia.ad6c52d8.js +0 -1
  662. package/dist/assets/ka.09267484.js +0 -1
  663. package/dist/assets/kk.c27d7d0f.js +0 -1
  664. package/dist/assets/ko-KR.0b7b6298.js +0 -1
  665. package/dist/assets/ko.86462d08.js +0 -1
  666. package/dist/assets/layouts.47ea97ab.js +0 -54
  667. package/dist/assets/lb.b4fb4102.js +0 -1
  668. package/dist/assets/livescript.ee260a8e.js +0 -1
  669. package/dist/assets/localization.bf31e95e.js +0 -1
  670. package/dist/assets/lt.bec1e735.js +0 -1
  671. package/dist/assets/lua.fcab0a17.js +0 -1
  672. package/dist/assets/lv.1d9eac62.js +0 -1
  673. package/dist/assets/m2a.347ed339.png +0 -0
  674. package/dist/assets/m2m.07bed843.png +0 -0
  675. package/dist/assets/m2o.ac02ed03.png +0 -0
  676. package/dist/assets/manual.817bb41a.js +0 -10
  677. package/dist/assets/mark-selection.14bd39dc.js +0 -1
  678. package/dist/assets/match-highlighter.e1f4ebb8.js +0 -1
  679. package/dist/assets/mathematica.4c290bd7.js +0 -1
  680. package/dist/assets/mbox.fbea4820.js +0 -1
  681. package/dist/assets/migrations.1fc0576b.js +0 -19
  682. package/dist/assets/mirc.acdeecf7.js +0 -1
  683. package/dist/assets/mk.ac873732.js +0 -1
  684. package/dist/assets/mllike.4a02b532.js +0 -1
  685. package/dist/assets/mn-MN.9d75cba3.js +0 -1
  686. package/dist/assets/modelica.85d5e0b2.js +0 -1
  687. package/dist/assets/modules.aa9cac56.js +0 -69
  688. package/dist/assets/ms.a8caaf33.js +0 -1
  689. package/dist/assets/mscgen.2c9167b3.js +0 -1
  690. package/dist/assets/multiplex.c15f482c.js +0 -3
  691. package/dist/assets/mumps.6a681e98.js +0 -1
  692. package/dist/assets/nb.c4e12345.js +0 -1
  693. package/dist/assets/ne.8c2e7d13.js +0 -1
  694. package/dist/assets/nginx.82a8c85b.js +0 -1
  695. package/dist/assets/nl-NL.0b898799.js +0 -1
  696. package/dist/assets/nl.15edef36.js +0 -1
  697. package/dist/assets/nn.33ea37c6.js +0 -1
  698. package/dist/assets/notifications.3798c5e9.js +0 -153
  699. package/dist/assets/nsis.de3724d7.js +0 -1
  700. package/dist/assets/ntriples.a29d8bcb.js +0 -1
  701. package/dist/assets/o2m.339378e0.png +0 -0
  702. package/dist/assets/octave.f67bef4b.js +0 -1
  703. package/dist/assets/original.888775a8.jpg +0 -0
  704. package/dist/assets/overlay.b3e1f82e.js +0 -1
  705. package/dist/assets/overview.54c9613c.js +0 -1
  706. package/dist/assets/overview.fe32c908.js +0 -1
  707. package/dist/assets/oz.ce2f819e.js +0 -1
  708. package/dist/assets/panels.0c7e4633.js +0 -65
  709. package/dist/assets/pascal.db0b64f7.js +0 -1
  710. package/dist/assets/pegjs.c5c07f6b.js +0 -1
  711. package/dist/assets/perl.44cf4d10.js +0 -1
  712. package/dist/assets/permissions.1444fce3.js +0 -178
  713. package/dist/assets/permissions.b47530e9.png +0 -0
  714. package/dist/assets/php.17effd63.js +0 -1
  715. package/dist/assets/pig.4447f159.js +0 -1
  716. package/dist/assets/pinia.20984854.entry.js +0 -1
  717. package/dist/assets/pl-PL.88d918cf.js +0 -1
  718. package/dist/assets/pl.8a0826b3.js +0 -1
  719. package/dist/assets/plesk-screenshot.9485a115.png +0 -0
  720. package/dist/assets/plesk.daedfdec.js +0 -21
  721. package/dist/assets/powershell.1f264757.js +0 -1
  722. package/dist/assets/presets-bookmarks.f728cc5f.js +0 -1
  723. package/dist/assets/presets.dc6baaec.js +0 -164
  724. package/dist/assets/project-settings.1a98dfa5.js +0 -1
  725. package/dist/assets/properties.0d8a6aae.js +0 -1
  726. package/dist/assets/protobuf.df95db32.js +0 -1
  727. package/dist/assets/pt-BR.c8c96e63.js +0 -1
  728. package/dist/assets/pt-br.e87cb008.js +0 -1
  729. package/dist/assets/pt.de450764.js +0 -1
  730. package/dist/assets/pug.8d41d1be.js +0 -1
  731. package/dist/assets/puppet.0d6bcdab.js +0 -1
  732. package/dist/assets/python.6643b699.js +0 -1
  733. package/dist/assets/q.5a04e18a.js +0 -1
  734. package/dist/assets/query.7f986fd7.js +0 -152
  735. package/dist/assets/quickstart.159dd1ff.js +0 -11
  736. package/dist/assets/r.f3a2cf7a.js +0 -1
  737. package/dist/assets/relations.6d91ed11.js +0 -115
  738. package/dist/assets/relationships.33fbbfc0.js +0 -55
  739. package/dist/assets/revisions.0e3bd24b.js +0 -40
  740. package/dist/assets/ro-RO.b5957327.js +0 -1
  741. package/dist/assets/ro.1786958f.js +0 -1
  742. package/dist/assets/roles.95ebb028.js +0 -171
  743. package/dist/assets/rpm.756f8c88.js +0 -1
  744. package/dist/assets/rst.6bc99bab.js +0 -1
  745. package/dist/assets/ru-RU.230415aa.js +0 -1
  746. package/dist/assets/ru.2c0e4894.js +0 -1
  747. package/dist/assets/ruby.3c0e57e9.js +0 -1
  748. package/dist/assets/running-locally.29a0f2d9.js +0 -28
  749. package/dist/assets/rust.7ef79fbc.js +0 -1
  750. package/dist/assets/sas.f21126e1.js +0 -1
  751. package/dist/assets/sass.ab45f48c.js +0 -1
  752. package/dist/assets/scheme.c6be56b9.js +0 -1
  753. package/dist/assets/sdk.43fd35f7.js +0 -348
  754. package/dist/assets/security.93aa3fa6.js +0 -1
  755. package/dist/assets/server.af830537.js +0 -114
  756. package/dist/assets/settings.721cc223.js +0 -1
  757. package/dist/assets/settings.d50c2dc3.js +0 -51
  758. package/dist/assets/shell.821e3cd2.js +0 -1
  759. package/dist/assets/show-hint.05df6eda.js +0 -1
  760. package/dist/assets/sieve.9a8aca75.js +0 -1
  761. package/dist/assets/simple.a6c44ee7.js +0 -1
  762. package/dist/assets/sk.e174a41b.js +0 -1
  763. package/dist/assets/sl-SI.a0734f51.js +0 -2
  764. package/dist/assets/sl.34422efd.js +0 -1
  765. package/dist/assets/slim.bf9a0a37.js +0 -1
  766. package/dist/assets/smalltalk.c1484de8.js +0 -1
  767. package/dist/assets/smarty.b7345017.js +0 -1
  768. package/dist/assets/solr.b8447a9b.js +0 -1
  769. package/dist/assets/soy.e4f8442f.js +0 -1
  770. package/dist/assets/sparql.d90a5254.js +0 -1
  771. package/dist/assets/spreadsheet.d6d6876c.js +0 -1
  772. package/dist/assets/sq.ee367a13.js +0 -1
  773. package/dist/assets/sql.6e1011fe.js +0 -1
  774. package/dist/assets/sr-CS.7f2f9516.js +0 -1
  775. package/dist/assets/sr-cyrl.0abb2793.js +0 -1
  776. package/dist/assets/sr.efb7e3ec.js +0 -1
  777. package/dist/assets/sso.cdae46d9.js +0 -22
  778. package/dist/assets/stex.dcc1c298.js +0 -1
  779. package/dist/assets/stylus.c67ff4ff.js +0 -1
  780. package/dist/assets/support.0591d87c.js +0 -1
  781. package/dist/assets/sv-SE.23424e62.js +0 -1
  782. package/dist/assets/sv.b9d19aa9.js +0 -1
  783. package/dist/assets/swift.84099452.js +0 -1
  784. package/dist/assets/ta-in.8c88aa82.js +0 -1
  785. package/dist/assets/tcl.2c52a2bf.js +0 -1
  786. package/dist/assets/terminal-install.44adb787.png +0 -0
  787. package/dist/assets/terminal-start.72064e09.png +0 -0
  788. package/dist/assets/textile.cc219320.js +0 -1
  789. package/dist/assets/th-TH.73da43c8.js +0 -2
  790. package/dist/assets/th.d0e24ade.js +0 -1
  791. package/dist/assets/themes.b1eb7ab6.js +0 -5
  792. package/dist/assets/tiddlywiki.3cd0302e.js +0 -1
  793. package/dist/assets/tiki.0cbe2322.js +0 -1
  794. package/dist/assets/toml.c701ff10.js +0 -1
  795. package/dist/assets/tornado.3456d025.js +0 -1
  796. package/dist/assets/tr.d887c301.js +0 -1
  797. package/dist/assets/translations-2.29d07342.png +0 -0
  798. package/dist/assets/translations.2f0017a9.png +0 -0
  799. package/dist/assets/translations.866c3e24.js +0 -1
  800. package/dist/assets/troff.2cb0b6c3.js +0 -1
  801. package/dist/assets/ttcn-cfg.177a79d7.js +0 -1
  802. package/dist/assets/ttcn.615119d0.js +0 -1
  803. package/dist/assets/turtle.9f74f9ab.js +0 -1
  804. package/dist/assets/twig.0498a8bd.js +0 -1
  805. package/dist/assets/ubuntu.c24c1bbd.js +0 -11
  806. package/dist/assets/ug.2ae6849b.js +0 -1
  807. package/dist/assets/uk-UA.20b58ca2.js +0 -1
  808. package/dist/assets/uk.69d22b7d.js +0 -1
  809. package/dist/assets/upgrades-migrations.d9e217c8.js +0 -1
  810. package/dist/assets/use-sync.4163a308.js +0 -1
  811. package/dist/assets/user-directory.88f66846.js +0 -1
  812. package/dist/assets/users-roles-permissions.2c43c5a9.js +0 -1
  813. package/dist/assets/users.83f5130a.js +0 -252
  814. package/dist/assets/utilities.833a9bee.js +0 -60
  815. package/dist/assets/uz.a2abf7be.js +0 -1
  816. package/dist/assets/vb.b20ab1c8.js +0 -1
  817. package/dist/assets/vbscript.f5b5895a.js +0 -1
  818. package/dist/assets/velocity.83212b52.js +0 -1
  819. package/dist/assets/vendor.9c15ff54.js +0 -2041
  820. package/dist/assets/vendor.fe7856f0.css +0 -1
  821. package/dist/assets/verilog.65c681b4.js +0 -1
  822. package/dist/assets/vhdl.b1ee8307.js +0 -1
  823. package/dist/assets/vi.cc30f87c.js +0 -1
  824. package/dist/assets/vue-i18n.eb71fdd3.entry.js +0 -1
  825. package/dist/assets/vue-router.568152dc.entry.js +0 -1
  826. package/dist/assets/vue.40191742.entry.js +0 -1
  827. package/dist/assets/vue.6f8d3092.js +0 -1
  828. package/dist/assets/wast.4d449e41.js +0 -1
  829. package/dist/assets/webhooks.59c32103.js +0 -147
  830. package/dist/assets/webhooks.dcd21715.js +0 -1
  831. package/dist/assets/webidl.0627d676.js +0 -1
  832. package/dist/assets/xquery.d15c12e9.js +0 -1
  833. package/dist/assets/yacas.cbcb8ee5.js +0 -1
  834. package/dist/assets/yaml-frontmatter.2536f248.js +0 -1
  835. package/dist/assets/yaml.0f11002b.js +0 -1
  836. package/dist/assets/z80.65a8f8ed.js +0 -1
  837. package/dist/assets/zh-CN.77260539.js +0 -1
  838. package/dist/assets/zh-cn.f12689f7.js +0 -1
  839. package/dist/assets/zh-tw.c5aeda5a.js +0 -1
  840. package/dist/img/icons/android-chrome-192x192.png +0 -0
  841. package/dist/img/icons/android-chrome-512x512.png +0 -0
  842. package/dist/img/icons/apple-touch-icon-152x152.png +0 -0
  843. package/dist/img/icons/apple-touch-icon.png +0 -0
  844. package/dist/img/icons/favicon-16x16.png +0 -0
  845. package/dist/img/icons/favicon-32x32.png +0 -0
  846. package/dist/img/icons/maskable.png +0 -0
  847. package/dist/img/splashscreens/apple-splash-1125-2436.jpg +0 -0
  848. package/dist/img/splashscreens/apple-splash-1136-640.jpg +0 -0
  849. package/dist/img/splashscreens/apple-splash-1242-2208.jpg +0 -0
  850. package/dist/img/splashscreens/apple-splash-1242-2688.jpg +0 -0
  851. package/dist/img/splashscreens/apple-splash-1334-750.jpg +0 -0
  852. package/dist/img/splashscreens/apple-splash-1536-2048.jpg +0 -0
  853. package/dist/img/splashscreens/apple-splash-1620-2160.jpg +0 -0
  854. package/dist/img/splashscreens/apple-splash-1668-2224.jpg +0 -0
  855. package/dist/img/splashscreens/apple-splash-1668-2388.jpg +0 -0
  856. package/dist/img/splashscreens/apple-splash-1792-828.jpg +0 -0
  857. package/dist/img/splashscreens/apple-splash-2048-1536.jpg +0 -0
  858. package/dist/img/splashscreens/apple-splash-2048-2732.jpg +0 -0
  859. package/dist/img/splashscreens/apple-splash-2160-1620.jpg +0 -0
  860. package/dist/img/splashscreens/apple-splash-2208-1242.jpg +0 -0
  861. package/dist/img/splashscreens/apple-splash-2224-1668.jpg +0 -0
  862. package/dist/img/splashscreens/apple-splash-2388-1668.jpg +0 -0
  863. package/dist/img/splashscreens/apple-splash-2436-1125.jpg +0 -0
  864. package/dist/img/splashscreens/apple-splash-2688-1242.jpg +0 -0
  865. package/dist/img/splashscreens/apple-splash-2732-2048.jpg +0 -0
  866. package/dist/img/splashscreens/apple-splash-640-1136.jpg +0 -0
  867. package/dist/img/splashscreens/apple-splash-750-1334.jpg +0 -0
  868. package/dist/img/splashscreens/apple-splash-828-1792.jpg +0 -0
@@ -1 +0,0 @@
1
- import{r as a,p as l,q as s,w as c,z as o,R as e}from"./vendor.9c15ff54.js";const u=o("div",{class:"markdown-body"},[o("p",null,"Directus is available as a 1-click install on the Cloudron Store."),o("p",null,[o("a",{href:"https://cloudron.io/button.html?app=io.directus9.cloudronapp",target:"_blank",rel:"noopener noreferrer"},[o("img",{src:"https://cloudron.io/img/button.svg",alt:"Install"})])]),o("p",null,[e("The source code for the package can be found "),o("a",{href:"https://git.cloudron.io/cloudron/directus-app/",target:"_blank",rel:"noopener noreferrer"},"here"),e(".")]),o("p",null,[e("You can also test the directus installation on the demo Cloudron instance - "),o("a",{href:"https://my.demo.cloudron.io",target:"_blank",rel:"noopener noreferrer"},"https://my.demo.cloudron.io"),e(" (username: "),o("code",null,"cloudron"),e(" password: "),o("code",null,"cloudron"),e(").")])],-1),m={setup(d,{expose:t}){const r={title:"Cloudron One-Click Install",modularExtension:!1};return t({frontmatter:r}),(p,i)=>{const n=a("DocsWrapper");return l(),s(n,{frontmatter:r},{default:c(()=>[u]),_:1})}}};export{m as default};
@@ -1 +0,0 @@
1
- import{bK as g}from"./vendor.9c15ff54.js";function b(f,u){return u.forEach(function(t){t&&typeof t!="string"&&!Array.isArray(t)&&Object.keys(t).forEach(function(i){if(i!=="default"&&!(i in f)){var c=Object.getOwnPropertyDescriptor(t,i);Object.defineProperty(f,i,c.get?c:{enumerable:!0,get:function(){return t[i]}})}})}),Object.freeze(f)}var l={exports:{}};(function(f,u){(function(t){t(g.exports)})(function(t){t.defineMode("cmake",function(){var i=/({)?[a-zA-Z0-9_]+(})?/;function c(e,r){for(var n,o,a=!1;!e.eol()&&(n=e.next())!=r.pending;){if(n==="$"&&o!="\\"&&r.pending=='"'){a=!0;break}o=n}return a&&e.backUp(1),n==r.pending?r.continueString=!1:r.continueString=!0,"string"}function p(e,r){var n=e.next();return n==="$"?e.match(i)?"variable-2":"variable":r.continueString?(e.backUp(1),c(e,r)):e.match(/(\s+)?\w+\(/)||e.match(/(\s+)?\w+\ \(/)?(e.backUp(1),"def"):n=="#"?(e.skipToEnd(),"comment"):n=="'"||n=='"'?(r.pending=n,c(e,r)):n=="("||n==")"?"bracket":n.match(/[0-9]/)?"number":(e.eatWhile(/[\w-]/),null)}return{startState:function(){var e={};return e.inDefinition=!1,e.inInclude=!1,e.continueString=!1,e.pending=!1,e},token:function(e,r){return e.eatSpace()?null:p(e,r)}}}),t.defineMIME("text/x-cmake","cmake")})})();var d=l.exports,k=Object.freeze(b({__proto__:null,[Symbol.toStringTag]:"Module",default:d},[l.exports]));export{k as c};
@@ -1 +0,0 @@
1
- import{bK as F}from"./vendor.9c15ff54.js";function Y(D,e){return e.forEach(function(R){R&&typeof R!="string"&&!Array.isArray(R)&&Object.keys(R).forEach(function(O){if(O!=="default"&&!(O in D)){var S=Object.getOwnPropertyDescriptor(R,O);Object.defineProperty(D,O,S.get?S:{enumerable:!0,get:function(){return R[O]}})}})}),Object.freeze(D)}var G={exports:{}};(function(D,e){(function(R){R(F.exports)})(function(R){R.defineMode("cobol",function(){var O="builtin",S="comment",P="string",M="atom",r="number",o="keyword",B="header",l="def",f="link";function U(E){for(var T={},I=E.split(" "),A=0;A<I.length;++A)T[I[A]]=!0;return T}var n=U("TRUE FALSE ZEROES ZEROS ZERO SPACES SPACE LOW-VALUE LOW-VALUES "),i=U("ACCEPT ACCESS ACQUIRE ADD ADDRESS ADVANCING AFTER ALIAS ALL ALPHABET ALPHABETIC ALPHABETIC-LOWER ALPHABETIC-UPPER ALPHANUMERIC ALPHANUMERIC-EDITED ALSO ALTER ALTERNATE AND ANY ARE AREA AREAS ARITHMETIC ASCENDING ASSIGN AT ATTRIBUTE AUTHOR AUTO AUTO-SKIP AUTOMATIC B-AND B-EXOR B-LESS B-NOT B-OR BACKGROUND-COLOR BACKGROUND-COLOUR BEEP BEFORE BELL BINARY BIT BITS BLANK BLINK BLOCK BOOLEAN BOTTOM BY CALL CANCEL CD CF CH CHARACTER CHARACTERS CLASS CLOCK-UNITS CLOSE COBOL CODE CODE-SET COL COLLATING COLUMN COMMA COMMIT COMMITMENT COMMON COMMUNICATION COMP COMP-0 COMP-1 COMP-2 COMP-3 COMP-4 COMP-5 COMP-6 COMP-7 COMP-8 COMP-9 COMPUTATIONAL COMPUTATIONAL-0 COMPUTATIONAL-1 COMPUTATIONAL-2 COMPUTATIONAL-3 COMPUTATIONAL-4 COMPUTATIONAL-5 COMPUTATIONAL-6 COMPUTATIONAL-7 COMPUTATIONAL-8 COMPUTATIONAL-9 COMPUTE CONFIGURATION CONNECT CONSOLE CONTAINED CONTAINS CONTENT CONTINUE CONTROL CONTROL-AREA CONTROLS CONVERTING COPY CORR CORRESPONDING COUNT CRT CRT-UNDER CURRENCY CURRENT CURSOR DATA DATE DATE-COMPILED DATE-WRITTEN DAY DAY-OF-WEEK DB DB-ACCESS-CONTROL-KEY DB-DATA-NAME DB-EXCEPTION DB-FORMAT-NAME DB-RECORD-NAME DB-SET-NAME DB-STATUS DBCS DBCS-EDITED DE DEBUG-CONTENTS DEBUG-ITEM DEBUG-LINE DEBUG-NAME DEBUG-SUB-1 DEBUG-SUB-2 DEBUG-SUB-3 DEBUGGING DECIMAL-POINT DECLARATIVES DEFAULT DELETE DELIMITED DELIMITER DEPENDING DESCENDING DESCRIBED DESTINATION DETAIL DISABLE DISCONNECT DISPLAY DISPLAY-1 DISPLAY-2 DISPLAY-3 DISPLAY-4 DISPLAY-5 DISPLAY-6 DISPLAY-7 DISPLAY-8 DISPLAY-9 DIVIDE DIVISION DOWN DROP DUPLICATE DUPLICATES DYNAMIC EBCDIC EGI EJECT ELSE EMI EMPTY EMPTY-CHECK ENABLE END END. END-ACCEPT END-ACCEPT. END-ADD END-CALL END-COMPUTE END-DELETE END-DISPLAY END-DIVIDE END-EVALUATE END-IF END-INVOKE END-MULTIPLY END-OF-PAGE END-PERFORM END-READ END-RECEIVE END-RETURN END-REWRITE END-SEARCH END-START END-STRING END-SUBTRACT END-UNSTRING END-WRITE END-XML ENTER ENTRY ENVIRONMENT EOP EQUAL EQUALS ERASE ERROR ESI EVALUATE EVERY EXCEEDS EXCEPTION EXCLUSIVE EXIT EXTEND EXTERNAL EXTERNALLY-DESCRIBED-KEY FD FETCH FILE FILE-CONTROL FILE-STREAM FILES FILLER FINAL FIND FINISH FIRST FOOTING FOR FOREGROUND-COLOR FOREGROUND-COLOUR FORMAT FREE FROM FULL FUNCTION GENERATE GET GIVING GLOBAL GO GOBACK GREATER GROUP HEADING HIGH-VALUE HIGH-VALUES HIGHLIGHT I-O I-O-CONTROL ID IDENTIFICATION IF IN INDEX INDEX-1 INDEX-2 INDEX-3 INDEX-4 INDEX-5 INDEX-6 INDEX-7 INDEX-8 INDEX-9 INDEXED INDIC INDICATE INDICATOR INDICATORS INITIAL INITIALIZE INITIATE INPUT INPUT-OUTPUT INSPECT INSTALLATION INTO INVALID INVOKE IS JUST JUSTIFIED KANJI KEEP KEY LABEL LAST LD LEADING LEFT LEFT-JUSTIFY LENGTH LENGTH-CHECK LESS LIBRARY LIKE LIMIT LIMITS LINAGE LINAGE-COUNTER LINE LINE-COUNTER LINES LINKAGE LOCAL-STORAGE LOCALE LOCALLY LOCK MEMBER MEMORY MERGE MESSAGE METACLASS MODE MODIFIED MODIFY MODULES MOVE MULTIPLE MULTIPLY NATIONAL NATIVE NEGATIVE NEXT NO NO-ECHO NONE NOT NULL NULL-KEY-MAP NULL-MAP NULLS NUMBER NUMERIC NUMERIC-EDITED OBJECT OBJECT-COMPUTER OCCURS OF OFF OMITTED ON ONLY OPEN OPTIONAL OR ORDER ORGANIZATION OTHER OUTPUT OVERFLOW OWNER PACKED-DECIMAL PADDING PAGE PAGE-COUNTER PARSE PERFORM PF PH PIC PICTURE PLUS POINTER POSITION POSITIVE PREFIX PRESENT PRINTING PRIOR PROCEDURE PROCEDURE-POINTER PROCEDURES PROCEED PROCESS PROCESSING PROGRAM PROGRAM-ID PROMPT PROTECTED PURGE QUEUE QUOTE QUOTES RANDOM RD READ READY REALM RECEIVE RECONNECT RECORD RECORD-NAME RECORDS RECURSIVE REDEFINES REEL REFERENCE REFERENCE-MONITOR REFERENCES RELATION RELATIVE RELEASE REMAINDER REMOVAL RENAMES REPEATED REPLACE REPLACING REPORT REPORTING REPORTS REPOSITORY REQUIRED RERUN RESERVE RESET RETAINING RETRIEVAL RETURN RETURN-CODE RETURNING REVERSE-VIDEO REVERSED REWIND REWRITE RF RH RIGHT RIGHT-JUSTIFY ROLLBACK ROLLING ROUNDED RUN SAME SCREEN SD SEARCH SECTION SECURE SECURITY SEGMENT SEGMENT-LIMIT SELECT SEND SENTENCE SEPARATE SEQUENCE SEQUENTIAL SET SHARED SIGN SIZE SKIP1 SKIP2 SKIP3 SORT SORT-MERGE SORT-RETURN SOURCE SOURCE-COMPUTER SPACE-FILL SPECIAL-NAMES STANDARD STANDARD-1 STANDARD-2 START STARTING STATUS STOP STORE STRING SUB-QUEUE-1 SUB-QUEUE-2 SUB-QUEUE-3 SUB-SCHEMA SUBFILE SUBSTITUTE SUBTRACT SUM SUPPRESS SYMBOLIC SYNC SYNCHRONIZED SYSIN SYSOUT TABLE TALLYING TAPE TENANT TERMINAL TERMINATE TEST TEXT THAN THEN THROUGH THRU TIME TIMES TITLE TO TOP TRAILING TRAILING-SIGN TRANSACTION TYPE TYPEDEF UNDERLINE UNEQUAL UNIT UNSTRING UNTIL UP UPDATE UPON USAGE USAGE-MODE USE USING VALID VALIDATE VALUE VALUES VARYING VLR WAIT WHEN WHEN-COMPILED WITH WITHIN WORDS WORKING-STORAGE WRITE XML XML-CODE XML-EVENT XML-NTEXT XML-TEXT ZERO ZERO-FILL "),t=U("- * ** / + < <= = > >= "),N={digit:/\d/,digit_or_colon:/[\d:]/,hex:/[0-9a-f]/i,sign:/[+-]/,exponent:/e/i,keyword_char:/[^\s\(\[\;\)\]]/,symbol:/[\w*+\-]/};function u(E,T){return E==="0"&&T.eat(/x/i)?(T.eatWhile(N.hex),!0):((E=="+"||E=="-")&&N.digit.test(T.peek())&&(T.eat(N.sign),E=T.next()),N.digit.test(E)?(T.eat(E),T.eatWhile(N.digit),T.peek()=="."&&(T.eat("."),T.eatWhile(N.digit)),T.eat(N.exponent)&&(T.eat(N.sign),T.eatWhile(N.digit)),!0):!1)}return{startState:function(){return{indentStack:null,indentation:0,mode:!1}},token:function(E,T){if(T.indentStack==null&&E.sol()&&(T.indentation=6),E.eatSpace())return null;var I=null;switch(T.mode){case"string":for(var A=!1;(A=E.next())!=null;)if((A=='"'||A=="'")&&!E.match(/['"]/,!1)){T.mode=!1;break}I=P;break;default:var C=E.next(),L=E.column();if(L>=0&&L<=5)I=l;else if(L>=72&&L<=79)E.skipToEnd(),I=B;else if(C=="*"&&L==6)E.skipToEnd(),I=S;else if(C=='"'||C=="'")T.mode="string",I=P;else if(C=="'"&&!N.digit_or_colon.test(E.peek()))I=M;else if(C==".")I=f;else if(u(C,E))I=r;else{if(E.current().match(N.symbol))for(;L<71&&E.eat(N.symbol)!==void 0;)L++;i&&i.propertyIsEnumerable(E.current().toUpperCase())?I=o:t&&t.propertyIsEnumerable(E.current().toUpperCase())?I=O:n&&n.propertyIsEnumerable(E.current().toUpperCase())?I=M:I=null}}return I},indent:function(E){return E.indentStack==null?E.indentation:E.indentStack.indent}}}),R.defineMIME("text/x-cobol","cobol")})})();var H=G.exports,a=Object.freeze(Y({__proto__:null,[Symbol.toStringTag]:"Module",default:H},[G.exports]));export{a as c};
@@ -1 +0,0 @@
1
- import{r as n,p as o,q as l,w as c,z as e,R as a}from"./vendor.9c15ff54.js";const i=e("div",{class:"markdown-body"},[e("blockquote",null,[e("p",null,[e("strong",null,"The core concepts behind Directus are simple, however the problems that must be solved to honor them can be remarkably complex."),a(" We strive to design and engineer the most elegant solutions possible, so that our codebase remains accessible.")])]),e("h2",{id:"monorepo"},[a("Monorepo "),e("a",{class:"header-anchor",href:"#monorepo"},"#")]),e("p",null,[a("The primary Directus repository is located at "),e("a",{href:"https://github.com/directus/directus",target:"_blank",rel:"noopener noreferrer"},[e("code",null,"directus/directus")]),a(" and houses the Admin App (Vue.js 3 w/ Composition API), API (Node.js), project documentation (Markdown), API Specification (OpenAPI), and other smaller packages used internally. Directus follows a monorepo design similar to React or Babel \u2014 this page will outline our monorepo\u2019s design and structure.")]),e("h2",{id:"%2Fapi"},[e("code",null,"/api"),a(),e("a",{class:"header-anchor",href:"#%2Fapi"},"#")]),e("p",null,"Contains the Directus API (REST+GraphQL), written in Node.js."),e("h4",{id:"%2Fapi%2Fsrc%2Fcli"},[e("code",null,"/api/src/cli"),a(),e("a",{class:"header-anchor",href:"#%2Fapi%2Fsrc%2Fcli"},"#")]),e("p",null,[a("The CLI commands and matching functions that the "),e("code",null,"directus"),a(" package ships with.")]),e("h4",{id:"%2Fapi%2Fsrc%2Fcontrollers"},[e("code",null,"/api/src/controllers"),a(),e("a",{class:"header-anchor",href:"#%2Fapi%2Fsrc%2Fcontrollers"},"#")]),e("p",null,"Route handler controllers for the endpoints in the API."),e("h4",{id:"%2Fapi%2Fsrc%2Fdatabase"},[e("code",null,"/api/src/database"),a(),e("a",{class:"header-anchor",href:"#%2Fapi%2Fsrc%2Fdatabase"},"#")]),e("p",null,"Database manipulation abstraction, system migrations, and system data. Also where you\u2019d find the main query runner."),e("h4",{id:"%2Fapi%2Fsrc%2Fexceptions"},[e("code",null,"/api/src/exceptions"),a(),e("a",{class:"header-anchor",href:"#%2Fapi%2Fsrc%2Fexceptions"},"#")]),e("p",null,"Classes for the different errors the API is expected to throw. Used to set the HTTP status and error codes."),e("h4",{id:"%2Fapi%2Fsrc%2Fmiddleware"},[e("code",null,"/api/src/middleware"),a(),e("a",{class:"header-anchor",href:"#%2Fapi%2Fsrc%2Fmiddleware"},"#")]),e("p",null,"Various (express) routing middleware. Includes things like cache-checker, authenticator, etc."),e("h4",{id:"%2Fapi%2Fsrc%2Fservices"},[e("code",null,"/api/src/services"),a(),e("a",{class:"header-anchor",href:"#%2Fapi%2Fsrc%2Fservices"},"#")]),e("p",null,"Internal services. The main abstraction for interfacing with the data in the database. Both GraphQL and REST requests are \u201Ctranslated\u201D to use these services as the main logic in the platform."),e("h4",{id:"%2Fapi%2Fsrc%2Ftypes"},[e("code",null,"/api/src/types"),a(),e("a",{class:"header-anchor",href:"#%2Fapi%2Fsrc%2Ftypes"},"#")]),e("p",null,"TypeScript types that are shared between the different parts of the API."),e("h4",{id:"%2Fapi%2Fsrc%2Futils"},[e("code",null,"/api/src/utils"),a(),e("a",{class:"header-anchor",href:"#%2Fapi%2Fsrc%2Futils"},"#")]),e("p",null,"Various utility functions."),e("h2",{id:"%2Fapp"},[e("code",null,"/app"),a(),e("a",{class:"header-anchor",href:"#%2Fapp"},"#")]),e("p",null,"Contains the Directus Admin App, written in Vue.js 3 w/ the Composition API."),e("h4",{id:"%2Fapp%2Fpublic"},[e("code",null,"/app/public"),a(),e("a",{class:"header-anchor",href:"#%2Fapp%2Fpublic"},"#")]),e("p",null,"Assets that are included with the app, but not bundled."),e("h4",{id:"%2Fapp%2Fsrc%2Fassets"},[e("code",null,"/app/src/assets"),a(),e("a",{class:"header-anchor",href:"#%2Fapp%2Fsrc%2Fassets"},"#")]),e("p",null,"Files that are included within the app. Are bundled / optimized in the build step."),e("h4",{id:"%2Fapp%2Fsrc%2Fcomponents"},[e("code",null,"/app/src/components"),a(),e("a",{class:"header-anchor",href:"#%2Fapp%2Fsrc%2Fcomponents"},"#")]),e("p",null,"(Base) components that are used across the platform. Contains \u201Cbasic building blocks\u201D like button, input, etc."),e("h4",{id:"%2Fapp%2Fsrc%2Fcomposables"},[e("code",null,"/app/src/composables"),a(),e("a",{class:"header-anchor",href:"#%2Fapp%2Fsrc%2Fcomposables"},"#")]),e("p",null,"Reusable parts of reactive logic that can be used between Vue components. Includes things reactively calculating time from now, fetching a single item, etc."),e("h4",{id:"%2Fapp%2Fsrc%2Fdirectives"},[e("code",null,"/app/src/directives"),a(),e("a",{class:"header-anchor",href:"#%2Fapp%2Fsrc%2Fdirectives"},"#")]),e("p",null,[a("Custom Vue directives (e.g. "),e("code",null,"v-tooltip"),a(").")]),e("h4",{id:"%2Fapp%2Fsrc%2Finterfaces"},[e("code",null,"/app/src/interfaces"),a(),e("a",{class:"header-anchor",href:"#%2Fapp%2Fsrc%2Finterfaces"},"#")]),e("p",null,"The core-included interfaces."),e("h4",{id:"%2Fapp%2Fsrc%2Flang"},[e("code",null,"/app/src/lang"),a(),e("a",{class:"header-anchor",href:"#%2Fapp%2Fsrc%2Flang"},"#")]),e("p",null,[a("Translations abstraction, and language files. The language yaml files are maintained through "),e("a",{href:"https://locales.directus.io",target:"_blank",rel:"noopener noreferrer"},"Crowdin"),a(".")]),e("h4",{id:"%2Fapp%2Fsrc%2Flayouts"},[e("code",null,"/app/src/layouts"),a(),e("a",{class:"header-anchor",href:"#%2Fapp%2Fsrc%2Flayouts"},"#")]),e("p",null,"The core-included layouts."),e("h4",{id:"%2Fapp%2Fsrc%2Fmodules"},[e("code",null,"/app/src/modules"),a(),e("a",{class:"header-anchor",href:"#%2Fapp%2Fsrc%2Fmodules"},"#")]),e("p",null,"The core-included modules."),e("h4",{id:"%2Fapp%2Fsrc%2Froutes"},[e("code",null,"/app/src/routes"),a(),e("a",{class:"header-anchor",href:"#%2Fapp%2Fsrc%2Froutes"},"#")]),e("p",null,"The routes in the app. Modules define their own routes, so this only includes the \u201Csystem\u201D things that don\u2019t belong to module, like login."),e("h4",{id:"%2Fapp%2Fsrc%2Fstores"},[e("code",null,"/app/src/stores"),a(),e("a",{class:"header-anchor",href:"#%2Fapp%2Fsrc%2Fstores"},"#")]),e("p",null,[e("a",{href:"https://pinia.esm.dev",target:"_blank",rel:"noopener noreferrer"},"Pinia"),a(" based stores used for global state tracking.")]),e("h4",{id:"%2Fapp%2Fsrc%2Fstyles"},[e("code",null,"/app/src/styles"),a(),e("a",{class:"header-anchor",href:"#%2Fapp%2Fsrc%2Fstyles"},"#")]),e("p",null,"Global styles in the app. Every component has their own component styles, these are just the global styles."),e("h4",{id:"%2Fapp%2Fsrc%2Ftypes"},[e("code",null,"/app/src/types"),a(),e("a",{class:"header-anchor",href:"#%2Fapp%2Fsrc%2Ftypes"},"#")]),e("p",null,"TypeScript types that are shared between the different parts of the API."),e("h4",{id:"%2Fapp%2Fsrc%2Futils"},[e("code",null,"/app/src/utils"),a(),e("a",{class:"header-anchor",href:"#%2Fapp%2Fsrc%2Futils"},"#")]),e("p",null,"Utility functions used in various parts of the app."),e("h4",{id:"%2Fapp%2Fsrc%2Fviews"},[e("code",null,"/app/src/views"),a(),e("a",{class:"header-anchor",href:"#%2Fapp%2Fsrc%2Fviews"},"#")]),e("p",null,"The (two) main views used in the app: public / private. Also contains \u201Cinternal\u201D coupled components for those two views."),e("h2",{id:"%2Fdocs"},[e("code",null,"/docs"),a(),e("a",{class:"header-anchor",href:"#%2Fdocs"},"#")]),e("p",null,"Contains all the platform\u2019s documentation, written in markdown with additional VuePress formatting."),e("h2",{id:"%2Fpackages"},[e("code",null,"/packages"),a(),e("a",{class:"header-anchor",href:"#%2Fpackages"},"#")]),e("p",null,"The various sub-packages of the platform. Including the SDK, the file-storage adapters, title formatter, etc."),e("h2",{id:"%2Ftests"},[e("code",null,"/tests"),a(),e("a",{class:"header-anchor",href:"#%2Ftests"},"#")]),e("p",null,"Tests are maintained on a per-package base. This folder contains the platform-wide (end-to-end) tests.")],-1),F={setup(p,{expose:r}){const s={title:"Codebase Overview",modularExtension:!1};return r({frontmatter:s}),(h,d)=>{const t=n("DocsWrapper");return o(),l(t,{frontmatter:s},{default:c(()=>[i]),_:1})}}};export{F as default};
@@ -1 +0,0 @@
1
- import{bK as Z}from"./vendor.9c15ff54.js";function K(t,k){return k.forEach(function(o){o&&typeof o!="string"&&!Array.isArray(o)&&Object.keys(o).forEach(function(u){if(u!=="default"&&!(u in t)){var d=Object.getOwnPropertyDescriptor(o,u);Object.defineProperty(t,u,d.get?d:{enumerable:!0,get:function(){return o[u]}})}})}),Object.freeze(t)}var w={exports:{}};(function(t,k){(function(o){o(Z.exports)})(function(o){o.defineMode("coffeescript",function(u,d){var g="error";function v(e){return new RegExp("^(("+e.join(")|(")+"))\\b")}var z=/^(?:->|=>|\+[+=]?|-[\-=]?|\*[\*=]?|\/[\/=]?|[=!]=|<[><]?=?|>>?=?|%=?|&=?|\|=?|\^=?|\~|!|\?|(or|and|\|\||&&|\?)=)/,O=/^(?:[()\[\]{},:`=;]|\.\.?\.?)/,x=/^[_A-Za-z$][_A-Za-z$0-9]*/,A=/^@[_A-Za-z$][_A-Za-z$0-9]*/,E=v(["and","or","not","is","isnt","in","instanceof","typeof"]),h=["for","while","loop","if","unless","else","switch","try","catch","finally","class"],s=["break","by","continue","debugger","delete","do","in","of","new","return","then","this","@","throw","when","until","extends"],_=v(h.concat(s));h=v(h);var S=/^('{3}|\"{3}|['\"])/,j=/^(\/{3}|\/)/,$=["Infinity","NaN","undefined","null","true","false","on","off","yes","no"],M=v($);function l(e,n){if(e.sol()){n.scope.align===null&&(n.scope.align=!1);var r=n.scope.offset;if(e.eatSpace()){var f=e.indentation();return f>r&&n.scope.type=="coffee"?"indent":f<r?"dedent":null}else r>0&&y(e,n)}if(e.eatSpace())return null;var i=e.peek();if(e.match("####"))return e.skipToEnd(),"comment";if(e.match("###"))return n.tokenize=P,n.tokenize(e,n);if(i==="#")return e.skipToEnd(),"comment";if(e.match(/^-?[0-9\.]/,!1)){var p=!1;if(e.match(/^-?\d*\.\d+(e[\+\-]?\d+)?/i)&&(p=!0),e.match(/^-?\d+\.\d*/)&&(p=!0),e.match(/^-?\.\d+/)&&(p=!0),p)return e.peek()=="."&&e.backUp(1),"number";var c=!1;if(e.match(/^-?0x[0-9a-f]+/i)&&(c=!0),e.match(/^-?[1-9]\d*(e[\+\-]?\d+)?/)&&(c=!0),e.match(/^-?0(?![\dx])/i)&&(c=!0),c)return"number"}if(e.match(S))return n.tokenize=b(e.current(),!1,"string"),n.tokenize(e,n);if(e.match(j)){if(e.current()!="/"||e.match(/^.*\//,!1))return n.tokenize=b(e.current(),!0,"string-2"),n.tokenize(e,n);e.backUp(1)}return e.match(z)||e.match(E)?"operator":e.match(O)?"punctuation":e.match(M)?"atom":e.match(A)||n.prop&&e.match(x)?"property":e.match(_)?"keyword":e.match(x)?"variable":(e.next(),g)}function b(e,n,r){return function(f,i){for(;!f.eol();)if(f.eatWhile(/[^'"\/\\]/),f.eat("\\")){if(f.next(),n&&f.eol())return r}else{if(f.match(e))return i.tokenize=l,r;f.eat(/['"\/]/)}return n&&(d.singleLineStringErrors?r=g:i.tokenize=l),r}}function P(e,n){for(;!e.eol();){if(e.eatWhile(/[^#]/),e.match("###")){n.tokenize=l;break}e.eatWhile("#")}return"comment"}function a(e,n,r){r=r||"coffee";for(var f=0,i=!1,p=null,c=n.scope;c;c=c.prev)if(c.type==="coffee"||c.type=="}"){f=c.offset+u.indentUnit;break}r!=="coffee"?(i=null,p=e.column()+e.current().length):n.scope.align&&(n.scope.align=!1),n.scope={offset:f,type:r,prev:n.scope,align:i,alignOffset:p}}function y(e,n){if(!!n.scope.prev)if(n.scope.type==="coffee"){for(var r=e.indentation(),f=!1,i=n.scope;i;i=i.prev)if(r===i.offset){f=!0;break}if(!f)return!0;for(;n.scope.prev&&n.scope.offset!==r;)n.scope=n.scope.prev;return!1}else return n.scope=n.scope.prev,!1}function R(e,n){var r=n.tokenize(e,n),f=e.current();f==="return"&&(n.dedent=!0),((f==="->"||f==="=>")&&e.eol()||r==="indent")&&a(e,n);var i="[({".indexOf(f);if(i!==-1&&a(e,n,"])}".slice(i,i+1)),h.exec(f)&&a(e,n),f=="then"&&y(e,n),r==="dedent"&&y(e,n))return g;if(i="])}".indexOf(f),i!==-1){for(;n.scope.type=="coffee"&&n.scope.prev;)n.scope=n.scope.prev;n.scope.type==f&&(n.scope=n.scope.prev)}return n.dedent&&e.eol()&&(n.scope.type=="coffee"&&n.scope.prev&&(n.scope=n.scope.prev),n.dedent=!1),r}var I={startState:function(e){return{tokenize:l,scope:{offset:e||0,type:"coffee",prev:null,align:!1},prop:!1,dedent:0}},token:function(e,n){var r=n.scope.align===null&&n.scope;r&&e.sol()&&(r.align=!1);var f=R(e,n);return f&&f!="comment"&&(r&&(r.align=!0),n.prop=f=="punctuation"&&e.current()=="."),f},indent:function(e,n){if(e.tokenize!=l)return 0;var r=e.scope,f=n&&"])}".indexOf(n.charAt(0))>-1;if(f)for(;r.type=="coffee"&&r.prev;)r=r.prev;var i=f&&r.type===n.charAt(0);return r.align?r.alignOffset-(i?1:0):(i?r.prev:r).offset},lineComment:"#",fold:"indent"};return I}),o.defineMIME("application/vnd.coffeescript","coffeescript"),o.defineMIME("text/x-coffeescript","coffeescript"),o.defineMIME("text/coffeescript","coffeescript")})})();var N=w.exports,U=Object.freeze(K({__proto__:null,[Symbol.toStringTag]:"Module",default:N},[w.exports]));export{w as a,U as c};
@@ -1,106 +0,0 @@
1
- import{r as a,p as r,q as h,w as s,z as e,t as n,R as t}from"./vendor.9c15ff54.js";const d={class:"markdown-body"},p={class:"two-up"},u={class:"left"},_=t("Collections are the individual collections of items, similar to tables in a database. Changes to collections will alter the schema of the database. "),g=t("Learn more about Collections"),m=t("."),f=e("div",{class:"right"},[e("p",null,[e("div",{class:"table-of-contents"},[e("ul",null,[e("li",null,[e("a",{href:"#the-collection-object"},"The Collection Object")]),e("li",null,[e("a",{href:"#list-collections"},"List Collections")]),e("li",null,[e("a",{href:"#retrieve-a-collection"},"Retrieve a Collection")]),e("li",null,[e("a",{href:"#create-a-collection"},"Create a Collection")]),e("li",null,[e("a",{href:"#update-a-collection"},"Update a Collection")]),e("li",null,[e("a",{href:"#delete-a-collection"},"Delete a Collection")])])])])],-1),j=e("hr",null,null,-1),y=e("h2",{id:"the-collection-object"},[t("The Collection Object "),e("a",{class:"header-anchor",href:"#the-collection-object"},"#")],-1),b={class:"two-up"},v={class:"left"},q=e("div",{class:"definitions"},[e("p",null,[e("code",null,"collection"),t(),e("strong",null,"string"),e("br"),t(" Name of the collection. This matches the table name in the database.")])],-1),w=e("h4",{id:"meta"},[t("Meta "),e("a",{class:"header-anchor",href:"#meta"},"#")],-1),T=e("p",null,"Directus metadata, primarily used in the Admin App.",-1),x={class:"definitions"},A=e("p",null,[e("code",null,"collection"),t(),e("strong",null,"string"),e("br"),t(" Name of the collection. This matches the table name in the database.")],-1),C=e("p",null,[e("code",null,"icon"),t(),e("strong",null,"string"),e("br"),t(" Icon displayed in the Admin App when working with this collection.")],-1),E=e("p",null,[e("code",null,"note"),t(),e("strong",null,"string"),e("br"),t(" Short description displayed in the Admin App.")],-1),S=e("p",null,[e("code",null,"display_template"),t(),e("strong",null,"string"),e("br"),t(" How items in this collection should be displayed when viewed relationally in the Admin App.")],-1),k=e("p",null,[e("code",null,"hidden"),t(),e("strong",null,"boolean"),e("br"),t(" Whether or not this collection is hidden in the Admin App.")],-1),P=e("p",null,[e("code",null,"singleton"),t(),e("strong",null,"boolean"),e("br"),t(" Whether or not this collection is treated as a singleton.")],-1),R=e("p",null,[e("code",null,"translations"),t(),e("strong",null,"array"),e("br"),t(" How this collection\u2019s name is displayed in the different languages in the Admin App.")],-1),L=e("p",null,[e("code",null,"archive_field"),t(),e("strong",null,"string"),e("br"),t(" What field in the collection holds the archived state.")],-1),W=e("p",null,[e("code",null,"archive_value"),t(),e("strong",null,"string"),e("br"),t(" What value the archive field should be set to when archiving an item.")],-1),O=e("p",null,[e("code",null,"unarchive_value"),t(),e("strong",null,"string"),e("br"),t(" What value the archive field should be set to when unarchiving an item.")],-1),Q=e("p",null,[e("code",null,"archive_app_filter"),t(),e("strong",null,"boolean"),e("br"),t(" Whether or not the Admin App should allow the user to view archived items.")],-1),D=e("p",null,[e("code",null,"sort_field"),t(),e("strong",null,"boolean"),e("br"),t(" What field holds the sort value on the collection. The Admin App uses this to allow drag-and-drop manual sorting.")],-1),B=e("code",null,"accountability",-1),G=t(),H=e("strong",null,"string",-1),I=e("br",null,null,-1),N=t(" What data is tracked. One of "),M=e("code",null,"all",-1),U=t(", "),V=e("code",null,"activity",-1),Y=t(". See "),z=t("Accountability"),F=t(" for more information."),J=e("code",null,"item_duplication_fields",-1),K=t(),X=e("strong",null,"array",-1),Z=e("br",null,null,-1),$=t(" What fields are duplicated during \u201CSave as copy\u201D action of an item in this collection. See "),ee=t("Duplication"),te=t(" for more information."),se=e("code",null,"group",-1),le=t(),ne=e("strong",null,"string",-1),oe=e("br",null,null,-1),ae=t(" The name of the parent collection. This is used in "),ce=t("grouping/nesting of collections"),ie=t("."),re=e("code",null,"sort",-1),he=t(),de=e("strong",null,"number",-1),pe=e("br",null,null,-1),ue=t(" What sort order of the collection relative to other collections of the same level. This is used in "),_e=t("sorting of collections"),ge=t("."),me=e("p",null,[e("code",null,"collapse"),t(),e("strong",null,"string"),e("br"),t(" What is the default behavior of this collection or \u201Cfolder\u201D collection when it has nested collections. One of "),e("code",null,"open"),t(", "),e("code",null,"closed"),t(", "),e("code",null,"locked"),t(".")],-1),fe=e("h4",{id:"schema"},[t("Schema "),e("a",{class:"header-anchor",href:"#schema"},"#")],-1),je=e("p",null,"\u201CRaw\u201D database information. Based on the database vendor used, different information might be returned. The following are available for all drivers.",-1),ye=e("div",{class:"definitions"},[e("p",null,[e("code",null,"name"),t(),e("strong",null,"string"),e("br"),t(" The table name.")]),e("p",null,[e("code",null,"comment"),t(),e("strong",null,"string"),e("br"),t(" The table comment.")])],-1),be={class:"tip hint"},ve=t("\u201Cfolder\u201D collections do not hold any data"),qe=t(", hence their schema would be "),we=e("code",null,"null",-1),Te=t("."),xe=e("div",{class:"right"},[e("pre",null,[e("code",{class:"language-json"},[t(`{
2
- `),e("span",{class:"hljs-attr"},'"collection"'),t(": "),e("span",{class:"hljs-string"},'"articles"'),t(`,
3
- `),e("span",{class:"hljs-attr"},'"meta"'),t(`: {
4
- `),e("span",{class:"hljs-attr"},'"collection"'),t(": "),e("span",{class:"hljs-string"},'"articles"'),t(`,
5
- `),e("span",{class:"hljs-attr"},'"icon"'),t(": "),e("span",{class:"hljs-string"},'"article"'),t(`,
6
- `),e("span",{class:"hljs-attr"},'"note"'),t(": "),e("span",{class:"hljs-string"},'"Blog posts"'),t(`,
7
- `),e("span",{class:"hljs-attr"},'"display_template"'),t(": "),e("span",{class:"hljs-string"},'"{{ title }}"'),t(`,
8
- `),e("span",{class:"hljs-attr"},'"hidden"'),t(": "),e("span",{class:"hljs-literal"},"false"),t(`,
9
- `),e("span",{class:"hljs-attr"},'"singleton"'),t(": "),e("span",{class:"hljs-literal"},"false"),t(`,
10
- `),e("span",{class:"hljs-attr"},'"translations"'),t(`: [
11
- {
12
- `),e("span",{class:"hljs-attr"},'"language"'),t(": "),e("span",{class:"hljs-string"},'"en-US"'),t(`,
13
- `),e("span",{class:"hljs-attr"},'"translation"'),t(": "),e("span",{class:"hljs-string"},'"Articles"'),t(`
14
- },
15
- {
16
- `),e("span",{class:"hljs-attr"},'"language"'),t(": "),e("span",{class:"hljs-string"},'"nl-NL"'),t(`,
17
- `),e("span",{class:"hljs-attr"},'"translation"'),t(": "),e("span",{class:"hljs-string"},'"Artikelen"'),t(`
18
- }
19
- ],
20
- `),e("span",{class:"hljs-attr"},'"archive_field"'),t(": "),e("span",{class:"hljs-string"},'"status"'),t(`,
21
- `),e("span",{class:"hljs-attr"},'"archive_value"'),t(": "),e("span",{class:"hljs-string"},'"archived"'),t(`,
22
- `),e("span",{class:"hljs-attr"},'"unarchive_value"'),t(": "),e("span",{class:"hljs-string"},'"draft"'),t(`,
23
- `),e("span",{class:"hljs-attr"},'"archive_app_filter"'),t(": "),e("span",{class:"hljs-literal"},"true"),t(`,
24
- `),e("span",{class:"hljs-attr"},'"sort_field"'),t(": "),e("span",{class:"hljs-string"},'"sort"'),t(`,
25
- `),e("span",{class:"hljs-attr"},'"item_duplication_fields"'),t(": "),e("span",{class:"hljs-literal"},"null"),t(`,
26
- `),e("span",{class:"hljs-attr"},'"sort"'),t(": "),e("span",{class:"hljs-number"},"1"),t(`
27
- },
28
- `),e("span",{class:"hljs-attr"},'"schema"'),t(`: {
29
- `),e("span",{class:"hljs-attr"},'"name"'),t(": "),e("span",{class:"hljs-string"},'"pages"'),t(`,
30
- `),e("span",{class:"hljs-attr"},'"comment"'),t(": "),e("span",{class:"hljs-literal"},"null"),t(`
31
- }
32
- }
33
- `)])])],-1),Ae=e("hr",null,null,-1),Ce=e("h2",{id:"list-collections"},[t("List Collections "),e("a",{class:"header-anchor",href:"#list-collections"},"#")],-1),Ee=e("p",null,"List the available collections.",-1),Se={class:"two-up"},ke=e("div",{class:"left"},[e("h3",{id:"query-parameters"},[t("Query Parameters "),e("a",{class:"header-anchor",href:"#query-parameters"},"#")]),e("p",null,"This endpoint doesn\u2019t currently support any query parameters."),e("h3",{id:"returns"},[t("Returns "),e("a",{class:"header-anchor",href:"#returns"},"#")]),e("p",null,[t("An array of "),e("a",{href:"#the-collection-object"},"collection objects"),t(".")])],-1),Pe={class:"right"},Re=e("h3",{id:"rest-api"},[t("REST API "),e("a",{class:"header-anchor",href:"#rest-api"},"#")],-1),Le=e("pre",null,[e("code",null,`GET /collections
34
- SEARCH /collections
35
- `)],-1),We=t("Learn more about SEARCH ->"),Oe=e("h3",{id:"graphql"},[t("GraphQL "),e("a",{class:"header-anchor",href:"#graphql"},"#")],-1),Qe=e("pre",null,[e("code",null,`POST /graphql/system
36
- `)],-1),De=e("pre",null,[e("code",{class:"language-graphql"},[e("span",{class:"hljs-keyword"},"type"),e("span",{class:"hljs-type"}," Query"),t(` {
37
- collections: [directus_collections]
38
- }
39
- `)])],-1),Be=e("h5",{id:"example"},[t("Example "),e("a",{class:"header-anchor",href:"#example"},"#")],-1),Ge=e("pre",null,[e("code",{class:"language-graphql"},[e("span",{class:"hljs-keyword"},"query"),t(` {
40
- collections {
41
- `),e("span",{class:"hljs-keyword"},"..."),t(`
42
- }
43
- }
44
- `)])],-1),He=e("hr",null,null,-1),Ie=e("h2",{id:"retrieve-a-collection"},[t("Retrieve a Collection "),e("a",{class:"header-anchor",href:"#retrieve-a-collection"},"#")],-1),Ne=e("p",null,"Retrieve a single collection by table name.",-1),Me=e("div",{class:"two-up"},[e("div",{class:"left"},[e("h3",{id:"query-parameters-2"},[t("Query Parameters "),e("a",{class:"header-anchor",href:"#query-parameters-2"},"#")]),e("p",null,"This endpoint doesn\u2019t currently support any query parameters."),e("h3",{id:"returns-2"},[t("Returns "),e("a",{class:"header-anchor",href:"#returns-2"},"#")]),e("p",null,[t("A "),e("a",{href:"#the-collection-object"},"collection object"),t(".")])]),e("div",{class:"right"},[e("h3",{id:"rest-api-2"},[t("REST API "),e("a",{class:"header-anchor",href:"#rest-api-2"},"#")]),e("pre",null,[e("code",null,`GET /collections/:collection
45
- `)]),e("h5",{id:"example-2"},[t("Example "),e("a",{class:"header-anchor",href:"#example-2"},"#")]),e("pre",null,[e("code",null,`GET /collections/articles
46
- `)]),e("h3",{id:"graphql-2"},[t("GraphQL "),e("a",{class:"header-anchor",href:"#graphql-2"},"#")]),e("pre",null,[e("code",null,`POST /graphql/system
47
- `)]),e("pre",null,[e("code",{class:"language-graphql"},[e("span",{class:"hljs-keyword"},"type"),e("span",{class:"hljs-type"}," Query"),t(` {
48
- collections_by_name(name:`),e("span",{class:"hljs-type"}," String"),t(`!): directus_collections
49
- }
50
- `)])]),e("h5",{id:"example-3"},[t("Example "),e("a",{class:"header-anchor",href:"#example-3"},"#")]),e("pre",null,[e("code",{class:"language-graphql"},[e("span",{class:"hljs-keyword"},"query"),t(` {
51
- collections_by_name(name: `),e("span",{class:"hljs-string"},'"articles"'),t(`) {
52
- `),e("span",{class:"hljs-keyword"},"..."),t(`
53
- }
54
- }
55
- `)])])])],-1),Ue=e("hr",null,null,-1),Ve=e("h2",{id:"create-a-collection"},[t("Create a Collection "),e("a",{class:"header-anchor",href:"#create-a-collection"},"#")],-1),Ye=e("p",null,"Create a new Collection. This will create a new table in the database as well.",-1),ze={class:"two-up"},Fe={class:"left"},Je=e("h3",{id:"query-parameters-3"},[t("Query Parameters "),e("a",{class:"header-anchor",href:"#query-parameters-3"},"#")],-1),Ke=e("p",null,"This endpoint doesn\u2019t currently support any query parameters.",-1),Xe=e("h3",{id:"request-body"},[t("Request Body "),e("a",{class:"header-anchor",href:"#request-body"},"#")],-1),Ze=e("p",null,[t("The "),e("code",null,"collection"),t(" property is required, all other properties of the "),e("a",{href:"#the-collection-object"},"collection object"),t(" are optional.")],-1),$e=t("You are able to provide an array of "),et=e("code",null,"fields",-1),tt=t(" to be created during the creation of the collection. See the "),st=t("fields object"),lt=t(" for more information on what properties are available in a field."),nt=e("h3",{id:"returns-3"},[t("Returns "),e("a",{class:"header-anchor",href:"#returns-3"},"#")],-1),ot=e("p",null,[t("The "),e("a",{href:"#the-collection-object"},"collection object"),t(" for the collection created in this request.")],-1),at={class:"tip hint"},ct=t("Make sure to pass an empty object for schema ("),it=e("code",null,"schema: {}",-1),rt=t(") when creating collections. Alternatively, you can omit it entirely or use "),ht=e("code",null,"schema: null",-1),dt=t(" to create "),pt=t("\u201Cfolder\u201D collections"),ut=t("."),_t=e("div",{class:"right"},[e("h3",{id:"rest-api-3"},[t("REST API "),e("a",{class:"header-anchor",href:"#rest-api-3"},"#")]),e("pre",null,[e("code",null,`POST /collections
56
- `)]),e("h5",{id:"example-4"},[t("Example "),e("a",{class:"header-anchor",href:"#example-4"},"#")]),e("pre",null,[e("code",{class:"language-json"},[e("span",{class:"hljs-comment"},"// POST /collections"),t(`
57
-
58
- {
59
- `),e("span",{class:"hljs-attr"},'"collection"'),t(": "),e("span",{class:"hljs-string"},'"testimonials"'),t(`,
60
- `),e("span",{class:"hljs-attr"},'"meta"'),t(`: {
61
- `),e("span",{class:"hljs-attr"},'"icon"'),t(": "),e("span",{class:"hljs-string"},'"format_quote"'),t(`
62
- }
63
- }
64
- `)])]),e("h3",{id:"graphql-3"},[t("GraphQL "),e("a",{class:"header-anchor",href:"#graphql-3"},"#")]),e("pre",null,[e("code",null,`POST /graphql/system
65
- `)]),e("pre",null,[e("code",{class:"language-graphql"},[e("span",{class:"hljs-keyword"},"type"),e("span",{class:"hljs-type"}," Mutation"),t(` {
66
- create_collections_item(data: directus_collections): directus_collections
67
- }
68
- `)])]),e("h5",{id:"example-5"},[t("Example "),e("a",{class:"header-anchor",href:"#example-5"},"#")]),e("pre",null,[e("code",{class:"language-graphql"},[e("span",{class:"hljs-keyword"},"mutation"),t(` {
69
- create_collections_item(data: {
70
- collection: `),e("span",{class:"hljs-string"},'"testimonials"'),t(`,
71
- meta: {
72
- icon: `),e("span",{class:"hljs-string"},'"format_quote"'),t(`
73
- }
74
- }) {
75
- `),e("span",{class:"hljs-keyword"},"..."),t(`
76
- }
77
- }
78
- `)])])],-1),gt=e("hr",null,null,-1),mt=e("h2",{id:"update-a-collection"},[t("Update a Collection "),e("a",{class:"header-anchor",href:"#update-a-collection"},"#")],-1),ft=e("p",null,"Update the metadata for an existing collection.",-1),jt=e("div",{class:"two-up"},[e("div",{class:"left"},[e("h3",{id:"query-parameters-4"},[t("Query Parameters "),e("a",{class:"header-anchor",href:"#query-parameters-4"},"#")]),e("p",null,"This endpoint doesn\u2019t currently support any query parameters."),e("h3",{id:"request-body-2"},[t("Request Body "),e("a",{class:"header-anchor",href:"#request-body-2"},"#")]),e("p",null,[t("You can only update the "),e("code",null,"meta"),t(" values of the "),e("a",{href:"#the-collection-object"},"collection object"),t(". Updating the collection name is not supported at this time.")]),e("h3",{id:"returns-4"},[t("Returns "),e("a",{class:"header-anchor",href:"#returns-4"},"#")]),e("p",null,[t("The "),e("a",{href:"#the-collection-object"},"collection object"),t(" for the updated collection in this request.")])]),e("div",{class:"right"},[e("h3",{id:"rest-api-4"},[t("REST API "),e("a",{class:"header-anchor",href:"#rest-api-4"},"#")]),e("pre",null,[e("code",null,`PATCH /collections/:collection
79
- `)]),e("h5",{id:"example-6"},[t("Example "),e("a",{class:"header-anchor",href:"#example-6"},"#")]),e("pre",null,[e("code",{class:"language-json"},[e("span",{class:"hljs-comment"},"// PATCH /collections/testimonials"),t(`
80
-
81
- {
82
- `),e("span",{class:"hljs-attr"},'"meta"'),t(`: {
83
- `),e("span",{class:"hljs-attr"},'"note"'),t(": "),e("span",{class:"hljs-string"},'"Short quotes from happy customers."'),t(`
84
- }
85
- }
86
- `)])]),e("h3",{id:"graphql-4"},[t("GraphQL "),e("a",{class:"header-anchor",href:"#graphql-4"},"#")]),e("pre",null,[e("code",null,`POST /graphql/system
87
- `)]),e("pre",null,[e("code",{class:"language-graphql"},[e("span",{class:"hljs-keyword"},"type"),e("span",{class:"hljs-type"}," Mutation"),t(` {
88
- update_collections_item(collection:`),e("span",{class:"hljs-type"}," String"),t(`!, data: update_directus_collections_input!): directus_collections
89
- }
90
- `)])]),e("h5",{id:"example-7"},[t("Example "),e("a",{class:"header-anchor",href:"#example-7"},"#")]),e("pre",null,[e("code",{class:"language-graphql"},[e("span",{class:"hljs-keyword"},"mutation"),t(` {
91
- update_collections_item(collection: `),e("span",{class:"hljs-string"},'"testimonials"'),t(", data: { meta: { note: "),e("span",{class:"hljs-string"},'"Short quotes from happy customers."'),t(` } }) {
92
- collection
93
- }
94
- }
95
- `)])])])],-1),yt=e("hr",null,null,-1),bt=e("h2",{id:"delete-a-collection"},[t("Delete a Collection "),e("a",{class:"header-anchor",href:"#delete-a-collection"},"#")],-1),vt=e("p",null,"Delete a collection.",-1),qt=e("div",{class:"two-up"},[e("div",{class:"left"},[e("div",{class:"danger hint"},[e("div",{class:"hint-title"},"Destructive"),e("p",null,"Be aware, this will delete the table from the database, including all items in it. This action can\u2019t be undone.")])]),e("div",{class:"right"},[e("h3",{id:"rest-api-5"},[t("REST API "),e("a",{class:"header-anchor",href:"#rest-api-5"},"#")]),e("pre",null,[e("code",null,`DELETE /collections/:collection
96
- `)]),e("h5",{id:"example-8"},[t("Example "),e("a",{class:"header-anchor",href:"#example-8"},"#")]),e("pre",null,[e("code",null,`DELETE /collections/articles
97
- `)]),e("h3",{id:"graphql-5"},[t("GraphQL "),e("a",{class:"header-anchor",href:"#graphql-5"},"#")]),e("pre",null,[e("code",null,`POST /graphql/system
98
- `)]),e("pre",null,[e("code",{class:"language-graphql"},[e("span",{class:"hljs-keyword"},"type"),e("span",{class:"hljs-type"}," Mutation"),t(` {
99
- delete_collections_item(collection:`),e("span",{class:"hljs-type"}," String"),t(`!): delete_collection
100
- }
101
- `)])]),e("h5",{id:"example-9"},[t("Example "),e("a",{class:"header-anchor",href:"#example-9"},"#")]),e("pre",null,[e("code",{class:"language-graphql"},[e("span",{class:"hljs-keyword"},"mutation"),t(` {
102
- delete_collections_item(collection: `),e("span",{class:"hljs-string"},'"articles"'),t(`) {
103
- collection
104
- }
105
- }
106
- `)])])])],-1),wt=e("hr",null,null,-1),Et={setup(Tt,{expose:c}){const o={title:"Collections",modularExtension:!1,pageClass:"page-reference"};return c({frontmatter:o}),(xt,At)=>{const l=a("router-link"),i=a("DocsWrapper");return r(),h(i,{frontmatter:o},{default:s(()=>[e("div",d,[e("div",p,[e("div",u,[e("blockquote",null,[e("p",null,[_,n(l,{to:"/docs/getting-started/glossary/#collections"},{default:s(()=>[g]),_:1}),m])])]),f]),j,y,e("div",b,[e("div",v,[q,w,T,e("div",x,[A,C,E,S,k,P,R,L,W,O,Q,D,e("p",null,[B,G,H,I,N,M,U,V,Y,n(l,{to:"/docs/configuration/data-model/#accountability"},{default:s(()=>[z]),_:1}),F]),e("p",null,[J,K,X,Z,$,n(l,{to:"/docs/configuration/data-model/#duplication"},{default:s(()=>[ee]),_:1}),te]),e("p",null,[se,le,ne,oe,ae,n(l,{to:"/docs/configuration/data-model/#sorting-grouping"},{default:s(()=>[ce]),_:1}),ie]),e("p",null,[re,he,de,pe,ue,n(l,{to:"/docs/configuration/data-model/#sorting-grouping"},{default:s(()=>[_e]),_:1}),ge]),me]),fe,je,ye,e("div",be,[e("p",null,[n(l,{to:"/docs/configuration/data-model/#sorting-grouping"},{default:s(()=>[ve]),_:1}),qe,we,Te])])]),xe]),Ae,Ce,Ee,e("div",Se,[ke,e("div",Pe,[Re,Le,e("p",null,[n(l,{to:"/docs/reference/introduction/#search-http-method"},{default:s(()=>[We]),_:1})]),Oe,Qe,De,Be,Ge])]),He,Ie,Ne,Me,Ue,Ve,Ye,e("div",ze,[e("div",Fe,[Je,Ke,Xe,Ze,e("p",null,[$e,et,tt,n(l,{to:"/docs/reference/system/fields/#the-fields-object"},{default:s(()=>[st]),_:1}),lt]),nt,ot,e("div",at,[e("p",null,[ct,it,rt,ht,dt,n(l,{to:"/docs/configuration/data-model/#sorting-grouping"},{default:s(()=>[pt]),_:1}),ut])])]),_t]),gt,mt,ft,jt,yt,bt,vt,qt,wt])]),_:1})}}};export{Et as default};
@@ -1 +0,0 @@
1
- import{bK as y}from"./vendor.9c15ff54.js";function k(c,s){return s.forEach(function(i){i&&typeof i!="string"&&!Array.isArray(i)&&Object.keys(i).forEach(function(l){if(l!=="default"&&!(l in c)){var u=Object.getOwnPropertyDescriptor(i,l);Object.defineProperty(c,l,u.get?u:{enumerable:!0,get:function(){return i[l]}})}})}),Object.freeze(c)}var x={exports:{}};(function(c,s){(function(i){i(y.exports)})(function(i){i.defineMode("commonlisp",function(l){var u=/^(block|let*|return-from|catch|load-time-value|setq|eval-when|locally|symbol-macrolet|flet|macrolet|tagbody|function|multiple-value-call|the|go|multiple-value-prog1|throw|if|progn|unwind-protect|labels|progv|let|quote)$/,d=/^with|^def|^do|^prog|case$|^cond$|bind$|when$|unless$/,a=/^(?:[+\-]?(?:\d+|\d*\.\d+)(?:[efd][+\-]?\d+)?|[+\-]?\d+(?:\/[+\-]?\d+)?|#b[+\-]?[01]+|#o[+\-]?[0-7]+|#x[+\-]?[\da-f]+)/,b=/[^\s'`,@()\[\]";]/,o;function f(e){for(var n;n=e.next();)if(n=="\\")e.next();else if(!b.test(n)){e.backUp(1);break}return e.current()}function p(e,n){if(e.eatSpace())return o="ws",null;if(e.match(a))return"number";var t=e.next();if(t=="\\"&&(t=e.next()),t=='"')return(n.tokenize=m)(e,n);if(t=="(")return o="open","bracket";if(t==")"||t=="]")return o="close","bracket";if(t==";")return e.skipToEnd(),o="ws","comment";if(/['`,@]/.test(t))return null;if(t=="|")return e.skipTo("|")?(e.next(),"symbol"):(e.skipToEnd(),"error");if(t=="#"){var t=e.next();return t=="("?(o="open","bracket"):/[+\-=\.']/.test(t)||/\d/.test(t)&&e.match(/^\d*#/)?null:t=="|"?(n.tokenize=v)(e,n):t==":"?(f(e),"meta"):t=="\\"?(e.next(),f(e),"string-2"):"error"}else{var r=f(e);return r=="."?null:(o="symbol",r=="nil"||r=="t"||r.charAt(0)==":"?"atom":n.lastType=="open"&&(u.test(r)||d.test(r))?"keyword":r.charAt(0)=="&"?"variable-2":"variable")}}function m(e,n){for(var t=!1,r;r=e.next();){if(r=='"'&&!t){n.tokenize=p;break}t=!t&&r=="\\"}return"string"}function v(e,n){for(var t,r;t=e.next();){if(t=="#"&&r=="|"){n.tokenize=p;break}r=t}return o="ws","comment"}return{startState:function(){return{ctx:{prev:null,start:0,indentTo:0},lastType:null,tokenize:p}},token:function(e,n){e.sol()&&typeof n.ctx.indentTo!="number"&&(n.ctx.indentTo=n.ctx.start+1),o=null;var t=n.tokenize(e,n);return o!="ws"&&(n.ctx.indentTo==null?o=="symbol"&&d.test(e.current())?n.ctx.indentTo=n.ctx.start+l.indentUnit:n.ctx.indentTo="next":n.ctx.indentTo=="next"&&(n.ctx.indentTo=e.column()),n.lastType=o),o=="open"?n.ctx={prev:n.ctx,start:e.column(),indentTo:null}:o=="close"&&(n.ctx=n.ctx.prev||n.ctx),t},indent:function(e,n){var t=e.ctx.indentTo;return typeof t=="number"?t:e.ctx.start+1},closeBrackets:{pairs:'()[]{}""'},lineComment:";;",blockCommentStart:"#|",blockCommentEnd:"|#"}}),i.defineMIME("text/x-common-lisp","commonlisp")})})();var h=x.exports,g=Object.freeze(k({__proto__:null,[Symbol.toStringTag]:"Module",default:h},[x.exports]));export{g as c};
@@ -1,133 +0,0 @@
1
- import{r as s,p as r,q as i,w as n,z as l,t as o,R as e}from"./vendor.9c15ff54.js";const c={class:"markdown-body"},h=l("blockquote",null,[l("p",null,"Environment variables are used for all configuration within a Directus project. These variables can be defined in a number of ways, which we cover below.")],-1),_=l("p",null,[l("div",{class:"table-of-contents"},[l("ul",null,[l("li",null,[l("a",{href:"#configuration-files"},"Configuration Files")]),l("li",null,[l("a",{href:"#environment-variable-files"},"Environment Variable Files")]),l("li",null,[l("a",{href:"#type-casting-and-nesting"},"Type Casting and Nesting")]),l("li",null,[l("a",{href:"#environment-syntax-prefix"},"Environment Syntax Prefix")]),l("li",null,[l("a",{href:"#general"},"General")]),l("li",null,[l("a",{href:"#database"},"Database")]),l("li",null,[l("a",{href:"#security"},"Security")]),l("li",null,[l("a",{href:"#cors"},"CORS")]),l("li",null,[l("a",{href:"#rate-limiting"},"Rate Limiting")]),l("li",null,[l("a",{href:"#cache"},"Cache")]),l("li",null,[l("a",{href:"#file-storage"},"File Storage")]),l("li",null,[l("a",{href:"#assets"},"Assets")]),l("li",null,[l("a",{href:"#authentication"},"Authentication")]),l("li",null,[l("a",{href:"#extensions"},"Extensions")]),l("li",null,[l("a",{href:"#email"},"Email")]),l("li",null,[l("a",{href:"#admin-account"},"Admin Account")]),l("li",null,[l("a",{href:"#telemetry"},"Telemetry")])])])],-1),p=l("h2",{id:"configuration-files"},[e("Configuration Files "),l("a",{class:"header-anchor",href:"#configuration-files"},"#")],-1),f=l("p",null,[e("By default, Directus will read the "),l("code",null,".env"),e(" file located next to your project\u2019s "),l("code",null,"package.json"),e(" (typically in the root folder of your project) for its configuration. You can change this path and filename by setting the "),l("code",null,"CONFIG_PATH"),e(" environment variable before starting Directus. For example:")],-1),m=l("pre",null,[l("code",{class:"language-bash"},[e("CONFIG_PATH="),l("span",{class:"hljs-string"},'"/path/to/config.js"'),e(` npx directus start
2
- `)])],-1),E=l("p",null,[e("In case you prefer using a configuration file instead of environment variables, you can also use the "),l("code",null,"CONFIG_PATH"),e(" environment variable to instruct Directus to use a local configuration file instead of environment variables. The config file can be one of the following formats:")],-1),g=l("ul",null,[l("li",null,[l("a",{href:"#env"},".env")]),l("li",null,[l("a",{href:"#config-json"},"config.json")]),l("li",null,[l("a",{href:"#config-yaml"},"config.yaml")]),l("li",null,[l("a",{href:"#config-js"},"config.js")])],-1),A=l("h3",{id:".env"},[e(".env "),l("a",{class:"header-anchor",href:"#.env"},"#")],-1),T=l("p",null,"If the config path has no file extension, or a file extension that\u2019s not one of the other supported formats, Directus will try reading the file config path as environment variables. This has the following structure:",-1),R=l("pre",null,[l("code",null,`PORT=8055
3
-
4
- DB_CLIENT="pg"
5
- DB_HOST="localhost"
6
- DB_PORT=5432
7
-
8
- etc
9
- `)],-1),b=l("h3",{id:"config.json"},[e("config.json "),l("a",{class:"header-anchor",href:"#config.json"},"#")],-1),O=l("p",null,"If you prefer a single JSON file for your configuration, create a JSON file with the environment variables as keys, for example:",-1),S=l("pre",null,[l("code",null,`CONFIG_PATH="/path/to/config.json"
10
- `)],-1),I=l("pre",null,[l("code",{class:"language-json"},[e(`{
11
- `),l("span",{class:"hljs-attr"},'"PORT"'),e(": "),l("span",{class:"hljs-number"},"8055"),e(`,
12
-
13
- `),l("span",{class:"hljs-attr"},'"DB_CLIENT"'),e(": "),l("span",{class:"hljs-string"},'"pg"'),e(`,
14
- `),l("span",{class:"hljs-attr"},'"DB_HOST"'),e(": "),l("span",{class:"hljs-string"},'"localhost"'),e(`,
15
- `),l("span",{class:"hljs-attr"},'"DB_PORT"'),e(": "),l("span",{class:"hljs-number"},"5432"),e(`
16
-
17
- `),l("span",{class:"hljs-comment"},"// etc"),e(`
18
- }
19
- `)])],-1),y=l("h3",{id:"config.yaml"},[e("config.yaml "),l("a",{class:"header-anchor",href:"#config.yaml"},"#")],-1),D=l("p",null,[e("Similar to JSON, you can use a "),l("code",null,".yaml"),e(" (or "),l("code",null,".yml"),e(") file for your config:")],-1),C=l("pre",null,[l("code",null,`CONFIG_PATH="/path/to/config.yaml"
20
- `)],-1),L=l("pre",null,[l("code",{class:"language-yaml"},[l("span",{class:"hljs-attr"},"PORT:"),e(),l("span",{class:"hljs-number"},"8055"),e(`
21
-
22
- `),l("span",{class:"hljs-attr"},"DB_CLIENT:"),e(),l("span",{class:"hljs-string"},"pg"),e(`
23
- `),l("span",{class:"hljs-attr"},"DB_HOST:"),e(),l("span",{class:"hljs-string"},"localhost"),e(`
24
- `),l("span",{class:"hljs-attr"},"DB_PORT:"),e(),l("span",{class:"hljs-number"},"5432"),e(`
25
- `),l("span",{class:"hljs-comment"},"#"),e(`
26
- `),l("span",{class:"hljs-comment"},"# etc"),e(`
27
- `)])],-1),v=l("h3",{id:"config.js"},[e("config.js "),l("a",{class:"header-anchor",href:"#config.js"},"#")],-1),w=l("p",null,[e("Using a JavaScript file for your config allows you to dynamically generate the configuration of the project during startup. The JavaScript configuration supports two different formats, either an "),l("strong",null,"Object Structure"),e(" where the key is the environment variable name:")],-1),U=l("pre",null,[l("code",{class:"language-js"},[l("span",{class:"hljs-comment"},"// Object Sytax"),e(`
28
-
29
- `),l("span",{class:"hljs-built_in"},"module"),e(`.exports = {
30
- `),l("span",{class:"hljs-attr"},"PORT"),e(": "),l("span",{class:"hljs-number"},"8055"),e(`,
31
-
32
- `),l("span",{class:"hljs-attr"},"DB_CLIENT"),e(": "),l("span",{class:"hljs-string"},"'pg'"),e(`,
33
- `),l("span",{class:"hljs-attr"},"DB_HOST"),e(": "),l("span",{class:"hljs-string"},"'localhost'"),e(`,
34
- `),l("span",{class:"hljs-attr"},"DB_PORT"),e(": "),l("span",{class:"hljs-number"},"5432"),e(`,
35
-
36
- `),l("span",{class:"hljs-comment"},"// etc"),e(`
37
- };
38
- `)])],-1),N=l("p",null,[e("Or a "),l("strong",null,"Function Structure"),e(" that "),l("em",null,"returns"),e(" the same object format as above. The function gets "),l("code",null,"process.env"),e(" as its parameter.")],-1),P=l("pre",null,[l("code",{class:"language-js"},[l("span",{class:"hljs-comment"},"// Function Syntax"),e(`
39
-
40
- `),l("span",{class:"hljs-built_in"},"module"),e(".exports = "),l("span",{class:"hljs-function"},[l("span",{class:"hljs-keyword"},"function"),e(" ("),l("span",{class:"hljs-params"},"env"),e(") ")]),e(`{
41
- `),l("span",{class:"hljs-keyword"},"return"),e(` {
42
- `),l("span",{class:"hljs-attr"},"PORT"),e(": "),l("span",{class:"hljs-number"},"8055"),e(`,
43
-
44
- `),l("span",{class:"hljs-attr"},"DB_CLIENT"),e(": "),l("span",{class:"hljs-string"},"'pg'"),e(`,
45
- `),l("span",{class:"hljs-attr"},"DB_HOST"),e(": "),l("span",{class:"hljs-string"},"'localhost'"),e(`,
46
- `),l("span",{class:"hljs-attr"},"DB_PORT"),e(": "),l("span",{class:"hljs-number"},"5432"),e(`,
47
-
48
- `),l("span",{class:"hljs-comment"},"// etc"),e(`
49
- };
50
- };
51
- `)])],-1),H=l("h2",{id:"environment-variable-files"},[e("Environment Variable Files "),l("a",{class:"header-anchor",href:"#environment-variable-files"},"#")],-1),V=l("p",null,[e("Any of the environment variable values can be imported from a file, by appending "),l("code",null,"_FILE"),e(" to the environment variable name. This is especially useful when used in conjunction with Docker Secrets, so you can keep sensitive data out of your compose files. For example:")],-1),x=l("pre",null,[l("code",null,`DB_PASSWORD_FILE="/run/secrets/db_password"
52
- `)],-1),M=l("h2",{id:"type-casting-and-nesting"},[e("Type Casting and Nesting "),l("a",{class:"header-anchor",href:"#type-casting-and-nesting"},"#")],-1),G=l("p",null,"Environment variables are automatically type cast based on the structure of the variable, for example:",-1),B=l("pre",null,[l("code",null,`PUBLIC_URL="https://example.com"
53
- // "https://example.com"
54
-
55
- DB_HOST="3306"
56
- // 3306
57
-
58
- CORS_ENABLED="false"
59
- // false
60
-
61
- STORAGE_LOCATIONS="s3,local,example"
62
- // ["s3", "local", "example"]
63
- `)],-1),j=l("p",null,[e("In cases where the environment variables are converted to a configuration object for third party library use, like in "),l("code",null,"DB_*"),e(" or "),l("code",null,"RATE_LIMITER_REDIS_*"),e(", the environment variable will be converted to camelCase. You can use a double underscore ("),l("code",null,"__"),e(") for nested objects:")],-1),k=l("pre",null,[l("code",null,`DB_CLIENT="pg"
64
- DB_CONNECTION_STRING="postgresql://postgres:example@127.0.0.1"
65
- DB_SSL__REJECT_UNAUTHORIZED="false"
66
-
67
- {
68
- client: "pg",
69
- connectionString: "postgresql://postgres:example@127.0.0.1",
70
- ssl: {
71
- rejectUnauthorized: false
72
- }
73
- }
74
- `)],-1),W=l("h2",{id:"environment-syntax-prefix"},[e("Environment Syntax Prefix "),l("a",{class:"header-anchor",href:"#environment-syntax-prefix"},"#")],-1),q=l("p",null,[e("Directus will attempt to "),l("a",{href:"#type-casting-and-nesting"},"automatically type cast environment variables"),e(" based on context clues. If you have a specific need for a given type, you can tell Directus what type to use for the given value by prefixing the value with "),l("code",null,"{type}:"),e(". The following types are available:")],-1),F=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Syntax Prefix"),l("th",null,"Example"),l("th",null,"Output")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"string")]),l("td",null,[l("code",null,"string:value")]),l("td",null,[l("code",null,'"value"')])]),l("tr",null,[l("td",null,[l("code",null,"number")]),l("td",null,[l("code",null,"number:3306")]),l("td",null,[l("code",null,"3306")])]),l("tr",null,[l("td",null,[l("code",null,"regex")]),l("td",null,[l("code",null,"regex:\\.example\\.com$")]),l("td",null,[l("code",null,"/\\.example\\.com$/")])]),l("tr",null,[l("td",null,[l("code",null,"array")]),l("td",null,[l("code",null,"array:https://example.com,https://example2.com"),e(),l("br"),e(),l("code",null,"array:string:https://example.com,regex:\\.example3\\.com$")]),l("td",null,[l("code",null,'["https://example.com", "https://example2.com"]'),e(),l("br"),e(),l("code",null,'["https://example.com", "https://example2.com", /\\.example3\\.com$/]')])])])],-1),Y=l("hr",null,null,-1),K=l("h2",{id:"general"},[e("General "),l("a",{class:"header-anchor",href:"#general"},"#")],-1),z=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"CONFIG_PATH")]),l("td",null,[e("Where your config file is located. See "),l("a",{href:"#configuration-files"},"Configuration Files")]),l("td",null,[l("code",null,".env")])]),l("tr",null,[l("td",null,[l("code",null,"PORT")]),l("td",null,"What port to run the API under."),l("td",null,[l("code",null,"8055")])]),l("tr",null,[l("td",null,[l("code",null,"PUBLIC_URL"),l("sup",null,"[1]")]),l("td",null,"URL where your API can be reached on the web."),l("td",null,[l("code",null,"/")])]),l("tr",null,[l("td",null,[l("code",null,"LOG_LEVEL")]),l("td",null,[e("What level of detail to log. One of "),l("code",null,"fatal"),e(", "),l("code",null,"error"),e(", "),l("code",null,"warn"),e(", "),l("code",null,"info"),e(", "),l("code",null,"debug"),e(", "),l("code",null,"trace"),e(" or "),l("code",null,"silent"),e(".")]),l("td",null,[l("code",null,"info")])]),l("tr",null,[l("td",null,[l("code",null,"LOG_STYLE")]),l("td",null,[e("Render the logs human readable (pretty) or as JSON. One of "),l("code",null,"pretty"),e(", "),l("code",null,"raw"),e(".")]),l("td",null,[l("code",null,"pretty")])]),l("tr",null,[l("td",null,[l("code",null,"MAX_PAYLOAD_SIZE")]),l("td",null,"Controls the maximum request body size. Accepts number of bytes, or human readable string."),l("td",null,[l("code",null,"100kb")])]),l("tr",null,[l("td",null,[l("code",null,"ROOT_REDIRECT")]),l("td",null,[e("Where to redirect to when navigating to "),l("code",null,"/"),e(". Accepts a relative path, absolute URL, or "),l("code",null,"false"),e(" to disable.")]),l("td",null,[l("code",null,"./admin")])]),l("tr",null,[l("td",null,[l("code",null,"SERVE_APP")]),l("td",null,[e("Whether or not to serve the Admin App under "),l("code",null,"/admin"),e(".")]),l("td",null,[l("code",null,"true")])])])],-1),X=l("p",null,[l("sup",null,"[1]"),e(" The PUBLIC_URL value is used for things like OAuth redirects, forgot-password emails, and logos that needs to be publicly available on the internet.")],-1),J=l("div",{class:"tip hint"},[l("div",{class:"hint-title"},"Additional Logger Variables"),l("p",null,[e("All "),l("code",null,"LOGGER_*"),e(" environment variables are passed to the "),l("code",null,"options"),e(" configuration of a "),l("a",{href:"https://github.com/pinojs/pino/blob/master/docs/api.md#options",target:"_blank",rel:"noopener noreferrer"},[l("code",null,"Pino"),e(" instance")]),e(". All "),l("code",null,"LOGGER_HTTP*"),e(" environment variables are passed to the "),l("code",null,"options"),e(" configuration of a "),l("a",{href:"https://github.com/pinojs/pino-http#api",target:"_blank",rel:"noopener noreferrer"},[l("code",null,"Pino-http"),e(" instance")]),e(". Based on your project\u2019s needs, you can extend the "),l("code",null,"LOGGER_*"),e(" environment variables with any config you need to pass to the logger instance. If a LOGGER_LEVELS key is added, these values will be passed to the logger formatter, as described "),l("a",{href:"https://github.com/pinojs/pino/blob/master/docs/help.md#mapping-pino-log-levels-to-google-cloud-logging-stackdriver-serverity-levels",target:"_blank",rel:"noopener noreferrer"},"here"),e(" for example. The format for adding LEVELS values is: "),l("code",null,'LOGGER_LEVELS="trace:DEBUG,debug:DEBUG,info:INFO,warn:WARNING,error:ERROR,fatal:CRITICAL"')])],-1),Z=l("h2",{id:"database"},[e("Database "),l("a",{class:"header-anchor",href:"#database"},"#")],-1),Q=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"DB_CLIENT")]),l("td",null,[l("strong",null,"Required"),e(". What database client to use. One of "),l("code",null,"pg"),e(" or "),l("code",null,"postgres"),e(", "),l("code",null,"mysql"),e(", "),l("code",null,"oracledb"),e(", "),l("code",null,"mssql"),e(", or "),l("code",null,"sqlite3"),e(".")]),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"DB_HOST")]),l("td",null,[e("Database host. "),l("strong",null,"Required"),e(" when using "),l("code",null,"pg"),e(", "),l("code",null,"mysql"),e(", "),l("code",null,"oracledb"),e(", or "),l("code",null,"mssql"),e(".")]),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"DB_PORT")]),l("td",null,[e("Database port. "),l("strong",null,"Required"),e(" when using "),l("code",null,"pg"),e(", "),l("code",null,"mysql"),e(", "),l("code",null,"oracledb"),e(", or "),l("code",null,"mssql"),e(".")]),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"DB_DATABASE")]),l("td",null,[e("Database name. "),l("strong",null,"Required"),e(" when using "),l("code",null,"pg"),e(", "),l("code",null,"mysql"),e(", "),l("code",null,"oracledb"),e(", or "),l("code",null,"mssql"),e(".")]),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"DB_USER")]),l("td",null,[e("Database user. "),l("strong",null,"Required"),e(" when using "),l("code",null,"pg"),e(", "),l("code",null,"mysql"),e(", "),l("code",null,"oracledb"),e(", or "),l("code",null,"mssql"),e(".")]),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"DB_PASSWORD")]),l("td",null,[e("Database user\u2019s password. "),l("strong",null,"Required"),e(" when using "),l("code",null,"pg"),e(", "),l("code",null,"mysql"),e(", "),l("code",null,"oracledb"),e(", or "),l("code",null,"mssql"),e(".")]),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"DB_FILENAME")]),l("td",null,[e("Where to read/write the SQLite database. "),l("strong",null,"Required"),e(" when using "),l("code",null,"sqlite3"),e(".")]),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"DB_CONNECTION_STRING")]),l("td",null,[e("When using "),l("code",null,"pg"),e(", you can submit a connection string instead of individual properties. Using this will ignore any of the other connection settings.")]),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"DB_POOL_*")]),l("td",null,[e("Pooling settings. Passed on to "),l("a",{href:"https://github.com/vincit/tarn.js#usage",target:"_blank",rel:"noopener noreferrer"},[e("the "),l("code",null,"tarn.js")]),e(" library.")]),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"DB_EXCLUDE_TABLES")]),l("td",null,"CSV of tables you want Directus to ignore completely"),l("td",null,[l("code",null,"spatial_ref_sys,sysdiagrams")])]),l("tr",null,[l("td",null,[l("code",null,"DB_CHARSET")]),l("td",null,"Charset/collation to use in the connection to MySQL/MariaDB"),l("td",null,[l("code",null,"UTF8_GENERAL_CI")])]),l("tr",null,[l("td",null,[l("code",null,"DB_VERSION")]),l("td",null,"Database version, in case you use the PostgreSQL adapter to connect a non-standard database. Not normally required."),l("td",null,"\u2013")])])],-1),$=l("div",{class:"tip hint"},[l("div",{class:"hint-title"},"Additional Database Variables"),l("p",null,[e("All "),l("code",null,"DB_*"),e(" environment variables are passed to the "),l("code",null,"connection"),e(" configuration of a "),l("a",{href:"http://knexjs.org",target:"_blank",rel:"noopener noreferrer"},[l("code",null,"Knex"),e(" instance")]),e(". Based on your project\u2019s needs, you can extend the "),l("code",null,"DB_*"),e(" environment variables with any config you need to pass to the database instance.")])],-1),ll=l("div",{class:"tip hint"},[l("div",{class:"hint-title"},"Pooling"),l("p",null,[e("All the "),l("code",null,"DB_POOL_"),e(" prefixed options are passed to "),l("a",{href:"https://github.com/vincit/tarn.js#usage",target:"_blank",rel:"noopener noreferrer"},[l("code",null,"tarn.js")]),e(" through "),l("a",{href:"http://knexjs.org/#Installation-pooling",target:"_blank",rel:"noopener noreferrer"},"Knex")])],-1),el=l("h2",{id:"security"},[e("Security "),l("a",{class:"header-anchor",href:"#security"},"#")],-1),nl=l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])],-1),tl=l("tr",null,[l("td",null,[l("code",null,"KEY")]),l("td",null,"Unique identifier for the project."),l("td",null,"\u2013")],-1),ol=l("tr",null,[l("td",null,[l("code",null,"SECRET")]),l("td",null,"Secret string for the project."),l("td",null,"\u2013")],-1),ul=l("tr",null,[l("td",null,[l("code",null,"ACCESS_TOKEN_TTL")]),l("td",null,"The duration that the access token is valid."),l("td",null,[l("code",null,"15m")])],-1),sl=l("tr",null,[l("td",null,[l("code",null,"REFRESH_TOKEN_TTL")]),l("td",null,"The duration that the refresh token is valid, and also how long users stay logged-in to the App."),l("td",null,[l("code",null,"7d")])],-1),al=l("tr",null,[l("td",null,[l("code",null,"REFRESH_TOKEN_COOKIE_DOMAIN")]),l("td",null,"Which domain to use for the refresh cookie. Useful for development mode."),l("td",null,"\u2013")],-1),dl=l("tr",null,[l("td",null,[l("code",null,"REFRESH_TOKEN_COOKIE_SECURE")]),l("td",null,"Whether or not to use a secure cookie for the refresh token in cookie mode."),l("td",null,[l("code",null,"false")])],-1),rl=l("tr",null,[l("td",null,[l("code",null,"REFRESH_TOKEN_COOKIE_SAME_SITE")]),l("td",null,[e("Value for "),l("code",null,"sameSite"),e(" in the refresh token cookie when in cookie mode.")]),l("td",null,[l("code",null,"lax")])],-1),il=l("tr",null,[l("td",null,[l("code",null,"REFRESH_TOKEN_COOKIE_NAME")]),l("td",null,"Name of refresh token cookie ."),l("td",null,[l("code",null,"directus_refresh_token")])],-1),cl=l("td",null,[l("code",null,"PASSWORD_RESET_URL_ALLOW_LIST")],-1),hl=e("List of URLs that can be used "),_l=e("as "),pl=l("code",null,"reset_url",-1),fl=e(" in /password/request"),ml=l("td",null,"\u2013",-1),El=l("td",null,[l("code",null,"USER_INVITE_URL_ALLOW_LIST")],-1),gl=e("List of URLs that can be used "),Al=e("as "),Tl=l("code",null,"invite_url",-1),Rl=e(" in /users/invite"),bl=l("td",null,"\u2013",-1),Ol=l("tr",null,[l("td",null,[l("code",null,"IP_TRUST_PROXY")]),l("td",null,[e("Settings for "),l("a",{href:"https://expressjs.com/en/guide/behind-proxies.html",target:"_blank",rel:"noopener noreferrer"},"express\u2019 trust proxy setting")]),l("td",null,"true")],-1),Sl=l("tr",null,[l("td",null,[l("code",null,"IP_CUSTOM_HEADER")]),l("td",null,"What custom request header to use for the IP address"),l("td",null,"false")],-1),Il=l("tr",null,[l("td",null,[l("code",null,"CONTENT_SECURITY_POLICY")]),l("td",null,[e("Custom options for the Content-Security-Policy header. See "),l("a",{href:"https://helmetjs.github.io",target:"_blank",rel:"noopener noreferrer"},"helmet\u2019s documentation"),e(" for more information.")]),l("td",null,"\u2013")],-1),yl=l("div",{class:"tip hint"},[l("div",{class:"hint-title"},"Cookie Strictness"),l("p",null,[e("Browser are pretty strict when it comes to third-party cookies. If you\u2019re running into unexpected problems when running your project and API on different domains, make sure to verify your configuration for "),l("code",null,"REFRESH_TOKEN_COOKIE_NAME"),e(", "),l("code",null,"REFRESH_TOKEN_COOKIE_SECURE"),e(" and "),l("code",null,"REFRESH_TOKEN_COOKIE_SAME_SITE"),e(".")])],-1),Dl=l("h3",{id:"hashing"},[e("Hashing "),l("a",{class:"header-anchor",href:"#hashing"},"#")],-1),Cl=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"HASH_MEMORY_COST")]),l("td",null,"How much memory to use when generating hashes, in KiB."),l("td",null,[l("code",null,"4096"),e(" (4 MiB)")])]),l("tr",null,[l("td",null,[l("code",null,"HASH_LENGTH")]),l("td",null,"The length of the hash function output in bytes."),l("td",null,[l("code",null,"32")])]),l("tr",null,[l("td",null,[l("code",null,"HASH_TIME_COST")]),l("td",null,"The amount of passes (iterations) used by the hash function. It increases hash strength at the cost of time required to compute."),l("td",null,[l("code",null,"3")])]),l("tr",null,[l("td",null,[l("code",null,"HASH_PARALLELISM")]),l("td",null,[e("The amount of threads to compute the hash on. Each thread has a memory pool with "),l("code",null,"HASH_MEMORY_COST"),e(" size.")]),l("td",null,[l("code",null,"1"),e(" (single thread)")])]),l("tr",null,[l("td",null,[l("code",null,"HASH_TYPE")]),l("td",null,[e("The variant of the hash function ("),l("code",null,"0"),e(": argon2d, "),l("code",null,"1"),e(": argon2i, or "),l("code",null,"2"),e(": argon2id).")]),l("td",null,[l("code",null,"1"),e(" (argon2i)")])]),l("tr",null,[l("td",null,[l("code",null,"HASH_ASSOCIATED_DATA")]),l("td",null,"An extra and optional non-secret value. The value will be included B64 encoded in the parameters portion of the digest."),l("td",null,"\u2013")])])],-1),Ll=e("Argon2\u2019s hashing function is used by Directus for three purposes: 1) hashing user passwords, 2) generating hashes for the "),vl=l("code",null,"Hash",-1),wl=e(" field type in collections, and 3) the "),Ul=e("generate a hash API endpoint"),Nl=e("."),Pl=l("p",null,[e("All "),l("code",null,"HASH_*"),e(" environment variable parameters are passed to the "),l("code",null,"argon2.hash"),e(" function. See the "),l("a",{href:"https://github.com/ranisalt/node-argon2/wiki/Options",target:"_blank",rel:"noopener noreferrer"},"node-argon2 library options page"),e(" for reference.")],-1),Hl=l("div",{class:"tip hint"},[l("div",{class:"hint-title"},"Memory Usage"),l("p",null,[e("Modifying "),l("code",null,"HASH_MEMORY_COST"),e(" and/or "),l("code",null,"HASH_PARALLELISM"),e(" will affect the amount of memory directus uses when computing hashes; each thread gets "),l("code",null,"HASH_MEMORY_COST"),e(" amount of memory, so the total additional memory will be these two values multiplied. This may cause out of memory errors, especially when running in containerized environments.")])],-1),Vl=l("h2",{id:"cors"},[e("CORS "),l("a",{class:"header-anchor",href:"#cors"},"#")],-1),xl=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"CORS_ENABLED")]),l("td",null,"Whether or not to enable the CORS headers."),l("td",null,[l("code",null,"true")])]),l("tr",null,[l("td",null,[l("code",null,"CORS_ORIGIN")]),l("td",null,[e("Value for the "),l("code",null,"Access-Control-Allow-Origin"),e(" header. Use "),l("code",null,"true"),e(" to match the Origin header, or provide a domain or a CSV of domains for specific access")]),l("td",null,[l("code",null,"true")])]),l("tr",null,[l("td",null,[l("code",null,"CORS_METHODS")]),l("td",null,[e("Value for the "),l("code",null,"Access-Control-Allow-Methods"),e(" header.")]),l("td",null,[l("code",null,"GET,POST,PATCH,DELETE")])]),l("tr",null,[l("td",null,[l("code",null,"CORS_ALLOWED_HEADERS")]),l("td",null,[e("Value for the "),l("code",null,"Access-Control-Allow-Headers"),e(" header.")]),l("td",null,[l("code",null,"Content-Type,Authorization")])]),l("tr",null,[l("td",null,[l("code",null,"CORS_EXPOSED_HEADERS")]),l("td",null,[e("Value for the "),l("code",null,"Access-Control-Expose-Headers"),e(" header.")]),l("td",null,[l("code",null,"Content-Range")])]),l("tr",null,[l("td",null,[l("code",null,"CORS_CREDENTIALS")]),l("td",null,[e("Whether or not to send the "),l("code",null,"Access-Control-Allow-Credentials"),e(" header.")]),l("td",null,[l("code",null,"true")])]),l("tr",null,[l("td",null,[l("code",null,"CORS_MAX_AGE")]),l("td",null,[e("Value for the "),l("code",null,"Access-Control-Max-Age"),e(" header.")]),l("td",null,[l("code",null,"18000")])])])],-1),Ml=l("h2",{id:"rate-limiting"},[e("Rate Limiting "),l("a",{class:"header-anchor",href:"#rate-limiting"},"#")],-1),Gl=l("p",null,[e("You can use the built-in rate-limiter to prevent users from hitting the API too much. Simply enabling the rate-limiter will set a default maximum of 50 requests per second, tracked in memory. Once you have multiple copies of Directus running under a load-balancer, or your user base grows so much that memory is no longer a viable place to store the rate limiter information, you can use an external "),l("code",null,"memcache"),e(" or "),l("code",null,"redis"),e(" instance to store the rate limiter data.")],-1),Bl=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"RATE_LIMITER_ENABLED")]),l("td",null,"Whether or not to enable rate limiting on the API."),l("td",null,[l("code",null,"false")])]),l("tr",null,[l("td",null,[l("code",null,"RATE_LIMITER_POINTS")]),l("td",null,"The amount of allowed hits per duration."),l("td",null,[l("code",null,"50")])]),l("tr",null,[l("td",null,[l("code",null,"RATE_LIMITER_DURATION")]),l("td",null,"The time window in seconds in which the points are counted."),l("td",null,[l("code",null,"1")])]),l("tr",null,[l("td",null,[l("code",null,"RATE_LIMITER_STORE")]),l("td",null,[e("Where to store the rate limiter counts. One of "),l("code",null,"memory"),e(", "),l("code",null,"redis"),e(", or "),l("code",null,"memcache"),e(".")]),l("td",null,[l("code",null,"memory")])])])],-1),jl=l("p",null,[e("Based on the "),l("code",null,"RATE_LIMITER_STORE"),e(" used, you must also provide the following configurations:")],-1),kl=l("h3",{id:"memory"},[e("Memory "),l("a",{class:"header-anchor",href:"#memory"},"#")],-1),Wl=l("p",null,"No additional configuration required.",-1),ql=l("h3",{id:"redis"},[e("Redis "),l("a",{class:"header-anchor",href:"#redis"},"#")],-1),Fl=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"RATE_LIMITER_REDIS")]),l("td",null,[e("Redis connection string, eg: "),l("code",null,"redis://:authpassword@127.0.0.1:6380/4")]),l("td",null,"\u2014")])])],-1),Yl=l("p",null,"Alternatively, you can provide the individual connection parameters:",-1),Kl=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"RATE_LIMITER_REDIS_HOST")]),l("td",null,"Hostname of the Redis instance"),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"RATE_LIMITER_REDIS_PORT")]),l("td",null,"Port of the Redis instance"),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"RATE_LIMITER_REDIS_PASSWORD")]),l("td",null,"Password for your Redis instance"),l("td",null,"\u2013")])])],-1),zl=l("h3",{id:"memcache"},[e("Memcache "),l("a",{class:"header-anchor",href:"#memcache"},"#")],-1),Xl=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"RATE_LIMITER_MEMCACHE")]),l("td",null,[e("Location of your memcache instance. You can use "),l("a",{href:"#environment-syntax-prefix"},[l("code",null,"array:"),e(" syntax")]),e(", eg: "),l("code",null,"array:<instance-1>,<instance-2>"),e(" for multiple memcache instances.")]),l("td",null,"\u2014")])])],-1),Jl=l("div",{class:"tip hint"},[l("div",{class:"hint-title"},"Additional Rate Limiter Variables"),l("p",null,[e("All "),l("code",null,"RATE_LIMITER_*"),e(" variables are passed directly to a "),l("code",null,"rate-limiter-flexible"),e(" instance. Depending on your project\u2019s needs, you can extend the above environment variables to configure any of "),l("a",{href:"https://github.com/animir/node-rate-limiter-flexible/wiki/Options",target:"_blank",rel:"noopener noreferrer"},[e("the "),l("code",null,"rate-limiter-flexible"),e(" options")]),e(".")])],-1),Zl=l("h3",{id:"example%3A-basic"},[e("Example: Basic "),l("a",{class:"header-anchor",href:"#example%3A-basic"},"#")],-1),Ql=l("pre",null,[l("code",null,`// 10 requests per 5 seconds
75
-
76
- RATE_LIMITER_POINTS="10"
77
- RATE_LIMITER_DURATION="5"
78
- `)],-1),$l=l("h3",{id:"example%3A-redis"},[e("Example: Redis "),l("a",{class:"header-anchor",href:"#example%3A-redis"},"#")],-1),le=l("pre",null,[l("code",null,`RATE_LIMITER_ENABLED="true"
79
-
80
- RATE_LIMITER_POINTS="10"
81
- RATE_LIMITER_DURATION="5"
82
-
83
- RATE_LIMITER_STORE="redis"
84
-
85
- RATE_LIMITER_REDIS="redis://@127.0.0.1"
86
- `)],-1),ee=l("h2",{id:"cache"},[e("Cache "),l("a",{class:"header-anchor",href:"#cache"},"#")],-1),ne=l("p",null,"Directus has a built-in data-caching option. Enabling this will cache the output of requests (based on the current user and exact query parameters used) into to configured cache storage location. This drastically improves API performance, as subsequent requests are served straight from this cache. Enabling cache will also make Directus return accurate cache-control headers. Depending on your setup, this will further improve performance by caching the request in middleman servers (like CDNs) and even the browser.",-1),te=l("div",{class:"tip hint"},[l("div",{class:"hint-title"},"Assets Cache"),l("p",null,[e("The cache-control header for the "),l("code",null,"/assets"),e(" endpoint is separate from the regular data-cache. This is useful as it\u2019s often possible to cache assets for far longer than you would cache database content. "),l("a",{href:"#assets"},"Learn More")])],-1),oe=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"CACHE_ENABLED")]),l("td",null,"Whether or not caching is enabled."),l("td",null,[l("code",null,"false")])]),l("tr",null,[l("td",null,[l("code",null,"CACHE_TTL"),l("sup",null,"[1]")]),l("td",null,"How long the cache is persisted."),l("td",null,[l("code",null,"30m")])]),l("tr",null,[l("td",null,[l("code",null,"CACHE_CONTROL_S_MAXAGE")]),l("td",null,[e("Whether to not to add the "),l("code",null,"s-maxage"),e(" expiration flag. Set to a number for a custom value")]),l("td",null,[l("code",null,"0")])]),l("tr",null,[l("td",null,[l("code",null,"CACHE_AUTO_PURGE"),l("sup",null,"[2]")]),l("td",null,[e("Automatically purge the cache on "),l("code",null,"create"),e(", "),l("code",null,"update"),e(", and "),l("code",null,"delete"),e(" actions.")]),l("td",null,[l("code",null,"false")])]),l("tr",null,[l("td",null,[l("code",null,"CACHE_SCHEMA"),l("sup",null,"[3]")]),l("td",null,[e("Whether or not the database schema is cached. One of "),l("code",null,"false"),e(", "),l("code",null,"true")]),l("td",null,[l("code",null,"true")])]),l("tr",null,[l("td",null,[l("code",null,"CACHE_PERMISSIONS"),l("sup",null,"[3]")]),l("td",null,[e("Whether or not the user permissions are cached. One of "),l("code",null,"false"),e(", "),l("code",null,"true")]),l("td",null,[l("code",null,"true")])]),l("tr",null,[l("td",null,[l("code",null,"CACHE_NAMESPACE")]),l("td",null,"How to scope the cache data."),l("td",null,[l("code",null,"directus-cache")])]),l("tr",null,[l("td",null,[l("code",null,"CACHE_STORE"),l("sup",null,"[4]")]),l("td",null,[e("Where to store the cache data. Either "),l("code",null,"memory"),e(", "),l("code",null,"redis"),e(", or "),l("code",null,"memcache"),e(".")]),l("td",null,[l("code",null,"memory")])])])],-1),ue=l("p",null,[l("sup",null,"[1]"),e(),l("code",null,"CACHE_TTL"),e(" Based on your project\u2019s needs, you might be able to aggressively cache your data, only requiring new data to be fetched every hour or so. This allows you to squeeze the most performance out of your Directus instance. This can be incredibly useful for applications where you have a lot of (public) read-access and where updates aren\u2019t real-time (for example a website). "),l("code",null,"CACHE_TTL"),e(" uses "),l("a",{href:"https://www.npmjs.com/package/ms",target:"_blank",rel:"noopener noreferrer"},[l("code",null,"ms")]),e(" to parse the value, so you configure it using human readable values (like "),l("code",null,"2 days"),e(", "),l("code",null,"7 hrs"),e(", "),l("code",null,"5m"),e(").")],-1),se=l("p",null,[l("sup",null,"[2]"),e(),l("code",null,"CACHE_AUTO_PURGE"),e(" allows you to keep the Directus API real-time, while still getting the performance benefits on quick subsequent reads.")],-1),ae=l("p",null,[l("sup",null,"[3]"),e(" Not affected by the "),l("code",null,"CACHE_ENABLED"),e(" value.")],-1),de=l("p",null,[l("sup",null,"[4]"),e(),l("code",null,"CACHE_STORE"),e(" For larger projects, you most likely don\u2019t want to rely on local memory for caching. Instead, you can use the above "),l("code",null,"CACHE_STORE"),e(" environment variable to use either "),l("code",null,"memcache"),e(" or "),l("code",null,"redis"),e(" as the cache store. Based on the chosen "),l("code",null,"CACHE_STORE"),e(", you must also provide the following configurations:")],-1),re=l("h3",{id:"memory-2"},[e("Memory "),l("a",{class:"header-anchor",href:"#memory-2"},"#")],-1),ie=l("p",null,"No additional configuration required.",-1),ce=l("h3",{id:"redis-2"},[e("Redis "),l("a",{class:"header-anchor",href:"#redis-2"},"#")],-1),he=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"CACHE_REDIS")]),l("td",null,[e("Redis connection string, eg: "),l("code",null,"redis://:authpassword@127.0.0.1:6380/4")]),l("td",null,"\u2014")])])],-1),_e=l("p",null,"Alternatively, you can provide the individual connection parameters:",-1),pe=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"CACHE_REDIS_HOST")]),l("td",null,"Hostname of the Redis instance"),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"CACHE_REDIS_PORT")]),l("td",null,"Port of the Redis instance"),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"CACHE_REDIS_PASSWORD")]),l("td",null,"Password for your Redis instance"),l("td",null,"\u2013")])])],-1),fe=l("h3",{id:"memcache-2"},[e("Memcache "),l("a",{class:"header-anchor",href:"#memcache-2"},"#")],-1),me=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"CACHE_MEMCACHE")]),l("td",null,[e("Location of your memcache instance. You can use "),l("a",{href:"#environment-syntax-prefix"},[l("code",null,"array:"),e(" syntax")]),e(", eg: "),l("code",null,"array:<instance-1>,<instance-2>"),e(" for multiple memcache instances.")]),l("td",null,"\u2014")])])],-1),Ee=l("h2",{id:"file-storage"},[e("File Storage "),l("a",{class:"header-anchor",href:"#file-storage"},"#")],-1),ge=l("p",null,[e("By default, Directus stores all uploaded files locally on disk. However, you can also configure Directus to use S3, Google Cloud Storage, or Azure. You can also configure "),l("em",null,"multiple"),e(" storage adapters at the same time. This allows you to choose where files are being uploaded on a file-by-file basis. In the Admin App, files will automatically be uploaded to the first configured storage location (in this case "),l("code",null,"local"),e("). The used storage location is saved under "),l("code",null,"storage"),e(" in "),l("code",null,"directus_files"),e(".")],-1),Ae=l("div",{class:"tip hint"},[l("div",{class:"hint-title"},"File Storage Default"),l("p",null,"If you don\u2019t provide any configuration for storage adapters, this default will be used:"),l("pre",null,[l("code",null,`STORAGE_LOCATIONS="local"
87
- STORAGE_LOCAL_ROOT="./uploads"
88
- `)])],-1),Te=l("div",{class:"warning hint"},[l("div",{class:"hint-title"},"Case sensitivity"),l("p",null,"The location value(s) you specify should be capitalized when specifying the additional configuration values. For example, this will not work:"),l("pre",null,[l("code",null,`STORAGE_LOCATIONS="s3"
89
- STORAGE_s3_DRIVER="s3" # Will not work, lowercase "s3" \u274C
90
- `)]),l("p",null,"but this will work:"),l("pre",null,[l("code",null,`STORAGE_LOCATIONS="s3"
91
- STORAGE_S3_DRIVER="s3" # Will work, "s3" is uppercased \u2705
92
- `)])],-1),Re=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"STORAGE_LOCATIONS")]),l("td",null,[e("A CSV of storage locations (eg: "),l("code",null,"local,digitalocean,amazon"),e(") to use. You can use any names you\u2019d like for these keys.")]),l("td",null,[l("code",null,"local")])])])],-1),be=l("p",null,"For each of the storage locations listed, you must provide the following configuration:",-1),Oe=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"STORAGE_<LOCATION>_DRIVER")]),l("td",null,[e("Which driver to use, either "),l("code",null,"local"),e(", "),l("code",null,"s3"),e(", "),l("code",null,"gcs"),e(", "),l("code",null,"azure")]),l("td")]),l("tr",null,[l("td",null,[l("code",null,"STORAGE_<LOCATION>_ROOT")]),l("td",null,"Where to store the files on disk"),l("td",null,[l("code",null,"''")])])])],-1),Se=l("p",null,"Based on your configured driver, you must also provide the following configurations:",-1),Ie=l("h3",{id:"local-(local)"},[e("Local ("),l("code",null,"local"),e(") "),l("a",{class:"header-anchor",href:"#local-(local)"},"#")],-1),ye=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"STORAGE_<LOCATION>_ROOT")]),l("td",null,"Where to store the files on disk"),l("td",null,"\u2013")])])],-1),De=l("h3",{id:"s3-(s3)"},[e("S3 ("),l("code",null,"s3"),e(") "),l("a",{class:"header-anchor",href:"#s3-(s3)"},"#")],-1),Ce=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"STORAGE_<LOCATION>_KEY")]),l("td",null,"User key"),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"STORAGE_<LOCATION>_SECRET")]),l("td",null,"User secret"),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"STORAGE_<LOCATION>_BUCKET")]),l("td",null,"S3 Bucket"),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"STORAGE_<LOCATION>_REGION")]),l("td",null,"S3 Region"),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"STORAGE_<LOCATION>_ENDPOINT")]),l("td",null,"S3 Endpoint"),l("td",null,[l("code",null,"s3.amazonaws.com")])]),l("tr",null,[l("td",null,[l("code",null,"STORAGE_<LOCATION>_ACL")]),l("td",null,"S3 ACL"),l("td",null,"\u2013")])])],-1),Le=l("h3",{id:"azure-(azure)"},[e("Azure ("),l("code",null,"azure"),e(") "),l("a",{class:"header-anchor",href:"#azure-(azure)"},"#")],-1),ve=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"STORAGE_<LOCATION>_CONTAINER_NAME")]),l("td",null,"Azure Storage container"),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"STORAGE_<LOCATION>_ACCOUNT_NAME")]),l("td",null,"Azure Storage account name"),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"STORAGE_<LOCATION>_ACCOUNT_KEY")]),l("td",null,"Azure Storage key"),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"STORAGE_<LOCATION>_ENDPOINT")]),l("td",null,"Azure URL"),l("td",null,[l("code",null,"https://{ACCOUNT_KEY}.blob.core.windows.net")])])])],-1),we=l("h3",{id:"google-cloud-storage-(gcs)"},[e("Google Cloud Storage ("),l("code",null,"gcs"),e(") "),l("a",{class:"header-anchor",href:"#google-cloud-storage-(gcs)"},"#")],-1),Ue=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"STORAGE_<LOCATION>_KEY_FILENAME")]),l("td",null,"Path to key file on disk"),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"STORAGE_<LOCATION>_BUCKET")]),l("td",null,"Google Cloud Storage bucket"),l("td",null,"\u2013")])])],-1),Ne=l("h3",{id:"example%3A-multiple-storage-adapters"},[e("Example: Multiple Storage Adapters "),l("a",{class:"header-anchor",href:"#example%3A-multiple-storage-adapters"},"#")],-1),Pe=l("p",null,"Below showcases a CSV of storage location names, with a config block for each:",-1),He=l("pre",null,[l("code",null,`STORAGE_LOCATIONS="local,aws"
93
-
94
- STORAGE_LOCAL_DRIVER="local"
95
- STORAGE_LOCAL_ROOT="local"
96
-
97
- STORAGE_AWS_KEY="tp15c...510vk"
98
- STORAGE_AWS_SECRET="yk29b...b932n"
99
- STORAGE_AWS_REGION="us-east-2"
100
- STORAGE_AWS_BUCKET="my-files"
101
- `)],-1),Ve=l("h2",{id:"assets"},[e("Assets "),l("a",{class:"header-anchor",href:"#assets"},"#")],-1),xe=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"ASSETS_CACHE_TTL")]),l("td",null,[e("How long assets will be cached for in the browser. Sets the "),l("code",null,"max-age"),e(" value of the "),l("code",null,"Cache-Control"),e(" header.")]),l("td",null,[l("code",null,"30m")])]),l("tr",null,[l("td",null,[l("code",null,"ASSETS_TRANSFORM_MAX_CONCURRENT")]),l("td",null,"How many file transformations can be done simultaneously"),l("td",null,[l("code",null,"4")])]),l("tr",null,[l("td",null,[l("code",null,"ASSETS_TRANSFORM_IMAGE_MAX_DIMENSION")]),l("td",null,"The max pixel dimensions size (width/height) that is allowed to be transformed"),l("td",null,[l("code",null,"6000")])]),l("tr",null,[l("td",null,[l("code",null,"ASSETS_TRANSFORM_MAX_OPERATIONS")]),l("td",null,"The max number of transform operations that is allowed to be processed (excludes saved presets)"),l("td",null,[l("code",null,"5")])])])],-1),Me=l("p",null,"Image transformations can be fairly heavy on memory usage. If you\u2019re using a system with 1GB or less available memory, we recommend lowering the allowed concurrent transformations to prevent you from overflowing your server.",-1),Ge=l("h2",{id:"authentication"},[e("Authentication "),l("a",{class:"header-anchor",href:"#authentication"},"#")],-1),Be=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"AUTH_PROVIDERS")]),l("td",null,"CSV of auth providers you want to use."),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"AUTH_DISABLE_DEFAULT")]),l("td",null,"Disable the default auth provider"),l("td",null,[l("code",null,"false")])])])],-1),je=l("p",null,"For each of the auth providers you list, you must provide the following configuration:",-1),ke=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"AUTH_<PROVIDER>_DRIVER")]),l("td",null,[e("Which driver to use, either "),l("code",null,"local"),e(", "),l("code",null,"oauth2"),e(", "),l("code",null,"openid"),e(", "),l("code",null,"ldap")]),l("td",null,"\u2013")])])],-1),We=l("p",null,"You must also provide a number of extra variables. These differ per auth driver service. The following is a list of common required configuration options:",-1),qe=l("h3",{id:"local-(local)-2"},[e("Local ("),l("code",null,"local"),e(") "),l("a",{class:"header-anchor",href:"#local-(local)-2"},"#")],-1),Fe=l("p",null,"No additional configuration required.",-1),Ye=l("h3",{id:"sso-(oauth2-and-openid)"},[e("SSO ("),l("code",null,"oauth2"),e(" and "),l("code",null,"openid"),e(") "),l("a",{class:"header-anchor",href:"#sso-(oauth2-and-openid)"},"#")],-1),Ke=l("p",null,"Directus\u2019 SSO integrations provide powerful alternative ways to authenticate into your project. Directus will ask you to login on the external service, and return authenticated with a Directus account linked to that service.",-1),ze=l("p",null,[e("For example, you can login to Directus using a github account by creating an "),l("a",{href:"https://github.com/settings/developers",target:"_blank",rel:"noopener noreferrer"},"OAuth 2.0 app in GitHub"),e(" and adding the following configuration to Directus:")],-1),Xe=l("pre",null,[l("code",null,`AUTH_PROVIDERS="github"
102
-
103
- AUTH_GITHUB_DRIVER="oauth2"
104
- AUTH_GITHUB_CLIENT_ID="99d3...c3c4"
105
- AUTH_GITHUB_CLIENT_SECRET="34ae...f963"
106
- AUTH_GITHUB_AUTHORIZE_URL="https://github.com/login/oauth/authorize"
107
- AUTH_GITHUB_ACCESS_URL="https://github.com/login/oauth/access_token"
108
- AUTH_GITHUB_PROFILE_URL="https://api.github.com/user"
109
- `)],-1),Je=l("div",{class:"warning hint"},[l("div",{class:"hint-title"},"PUBLIC_URL"),l("p",null,[e("These flows rely on the "),l("code",null,"PUBLIC_URL"),e(" variable for redirecting. Make sure that variable is configured correctly.")])],-1),Ze=l("h4",{id:"oauth-2.0"},[e("OAuth 2.0 "),l("a",{class:"header-anchor",href:"#oauth-2.0"},"#")],-1),Qe=l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])],-1),$e=l("tr",null,[l("td",null,[l("code",null,"AUTH_<PROVIDER>_CLIENT_ID")]),l("td",null,"OAuth identifier for the external service."),l("td",null,"\u2013")],-1),ln=l("tr",null,[l("td",null,[l("code",null,"AUTH_<PROVIDER>_CLIENT_SECRET")]),l("td",null,"OAuth secret for the external service."),l("td",null,"\u2013")],-1),en=l("tr",null,[l("td",null,[l("code",null,"AUTH_<PROVIDER>_SCOPE")]),l("td",null,"A white-space separated list of privileges Directus will request."),l("td",null,[l("code",null,"email")])],-1),nn=l("tr",null,[l("td",null,[l("code",null,"AUTH_<PROVIDER>_AUTHORIZE_URL")]),l("td",null,"The authorize page URL of the external service."),l("td",null,"\u2013")],-1),tn=l("tr",null,[l("td",null,[l("code",null,"AUTH_<PROVIDER>_ACCESS_URL")]),l("td",null,"The token access URL of the external service."),l("td",null,"\u2013")],-1),on=l("tr",null,[l("td",null,[l("code",null,"AUTH_<PROVIDER>_PROFILE_URL")]),l("td",null,"The user profile information URL of the external service."),l("td",null,"\u2013")],-1),un=l("tr",null,[l("td",null,[l("code",null,"AUTH_<PROVIDER>_EMAIL_KEY")]),l("td",null,"OAuth profile email key used to find the email address."),l("td",null,[l("code",null,"email")])],-1),sn=l("tr",null,[l("td",null,[l("code",null,"AUTH_<PROVIDER>_IDENTIFIER_KEY")]),l("td",null,[e("OAuth profile identifier key used to verify the user. Will default to "),l("code",null,"EMAIL_KEY"),e(".")]),l("td",null,"\u2013")],-1),an=l("tr",null,[l("td",null,[l("code",null,"AUTH_<PROVIDER>_ALLOW_PUBLIC_REGISTRATION")]),l("td",null,"Automatically create accounts for authenticating users."),l("td",null,[l("code",null,"false")])],-1),dn=l("tr",null,[l("td",null,[l("code",null,"AUTH_<PROVIDER>_DEFAULT_ROLE_ID")]),l("td",null,"The Directus role ID assigned to created users."),l("td",null,"\u2013")],-1),rn=l("td",null,[l("code",null,"AUTH_<PROVIDER>_ICON")],-1),cn=e("SVG icon to display with the login link. You can choose from "),hn=e("Social icon or Material icon set"),_n=e("."),pn=l("td",null,[l("code",null,"account_circle")],-1),fn=l("tr",null,[l("td",null,[l("code",null,"AUTH_<PROVIDER>_PARAMS")]),l("td",null,"Custom parameters to send to the auth provider"),l("td",null,"\u2013")],-1),mn=l("h4",{id:"openid"},[e("OpenID "),l("a",{class:"header-anchor",href:"#openid"},"#")],-1),En=l("p",null,"OpenID is an authentication protocol built on OAuth 2.0, and should be preferred over standard OAuth 2.0 where possible. OpenID offers better user verification and consistent profile information, allowing for more complete user registrations.",-1),gn=l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])],-1),An=l("tr",null,[l("td",null,[l("code",null,"AUTH_<PROVIDER>_CLIENT_ID")]),l("td",null,"OpenID identifier for the external service."),l("td",null,"\u2013")],-1),Tn=l("tr",null,[l("td",null,[l("code",null,"AUTH_<PROVIDER>_CLIENT_SECRET")]),l("td",null,"OpenID secret for the external service."),l("td",null,"\u2013")],-1),Rn=l("tr",null,[l("td",null,[l("code",null,"AUTH_<PROVIDER>_SCOPE")]),l("td",null,"A white-space separated list of privileges Directus will request."),l("td",null,[l("code",null,"openid profile email")])],-1),bn=l("tr",null,[l("td",null,[l("code",null,"AUTH_<PROVIDER>_ISSUER_URL")]),l("td",null,[e("The OpenID "),l("code",null,".well-known"),e(" Discovery Document URL.")]),l("td",null,"\u2013")],-1),On=l("tr",null,[l("td",null,[l("code",null,"AUTH_<PROVIDER>_IDENTIFIER_KEY")]),l("td",null,"OpenID profile identifier key used to verify the user."),l("td",null,[l("code",null,"sub")])],-1),Sn=l("tr",null,[l("td",null,[l("code",null,"AUTH_<PROVIDER>_ALLOW_PUBLIC_REGISTRATION")]),l("td",null,"Automatically create accounts for authenticating users."),l("td",null,[l("code",null,"false")])],-1),In=l("tr",null,[l("td",null,[l("code",null,"AUTH_<PROVIDER>_REQUIRE_VERIFIED_EMAIL")]),l("td",null,"Require users to have a verified email address."),l("td",null,[l("code",null,"false")])],-1),yn=l("tr",null,[l("td",null,[l("code",null,"AUTH_<PROVIDER>_DEFAULT_ROLE_ID")]),l("td",null,"The Directus role ID assigned to created users."),l("td",null,"\u2013")],-1),Dn=l("td",null,[l("code",null,"AUTH_<PROVIDER>_ICON")],-1),Cn=e("SVG icon to display with the login link. You can choose from "),Ln=e("Social icon or Material icon set"),vn=e("."),wn=l("td",null,[l("code",null,"account_circle")],-1),Un=l("tr",null,[l("td",null,[l("code",null,"AUTH_<PROVIDER>_PARAMS")]),l("td",null,"Custom parameters to send to the auth provider"),l("td",null,"\u2013")],-1),Nn=l("h3",{id:"ldap-(ldap)"},[e("LDAP ("),l("code",null,"ldap"),e(") "),l("a",{class:"header-anchor",href:"#ldap-(ldap)"},"#")],-1),Pn=l("p",null,"LDAP allows Active Directory users to authenticate and use Directus without having to be manually configured. User information and roles will be assigned from Active Directory.",-1),Hn=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"AUTH_<PROVIDER>_CLIENT_URL")]),l("td",null,"LDAP connection URL."),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"AUTH_<PROVIDER>_BIND_DN")]),l("td",null,[e("Bind user "),l("sup",null,"[1]"),e(" distinguished name.")]),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"AUTH_<PROVIDER>_BIND_PASSWORD")]),l("td",null,"Bind user password."),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"AUTH_<PROVIDER>_USER_DN")]),l("td",null,"Directory path containing users."),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"AUTH_<PROVIDER>_USER_ATTRIBUTE")]),l("td",null,"Attribute to identify users by."),l("td",null,[l("code",null,"cn")])]),l("tr",null,[l("td",null,[l("code",null,"AUTH_<PROVIDER>_USER_SCOPE")]),l("td",null,[e("Scope of the user search, either "),l("code",null,"base"),e(", "),l("code",null,"one"),e(", "),l("code",null,"sub"),e(),l("sup",null,"[2]"),e(".")]),l("td",null,[l("code",null,"one")])]),l("tr",null,[l("td",null,[l("code",null,"AUTH_<PROVIDER>_GROUP_DN")]),l("td",null,"Directory path containing groups."),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"AUTH_<PROVIDER>_GROUP_ATTRIBUTE")]),l("td",null,"Attribute to identify user as a member of a group."),l("td",null,[l("code",null,"member")])]),l("tr",null,[l("td",null,[l("code",null,"AUTH_<PROVIDER>_GROUP_SCOPE")]),l("td",null,[e("Scope of the group search, either "),l("code",null,"base"),e(", "),l("code",null,"one"),e(", "),l("code",null,"sub"),e(),l("sup",null,"[2]"),e(".")]),l("td",null,[l("code",null,"one")])]),l("tr",null,[l("td",null,[l("code",null,"AUTH_<PROVIDER>_MAIL_ATTRIBUTE")]),l("td",null,"Attribute containing the email of the user."),l("td",null,[l("code",null,"mail")])])])],-1),Vn=l("p",null,[l("sup",null,"[1]"),e(" The bind user must have permission to query users and groups to perform authentication.")],-1),xn=l("p",null,[l("sup",null,"[2]"),e(" The scope defines the following behaviors:")],-1),Mn=l("ul",null,[l("li",null,[l("code",null,"base"),e(": Limits the scope to a single object defined by the associated DN.")]),l("li",null,[l("code",null,"one"),e(": Searches all objects within the associated DN.")]),l("li",null,[l("code",null,"sub"),e(": Searches all objects and sub-objects within the associated DN.")])],-1),Gn=l("h3",{id:"example%3A-ldap"},[e("Example: LDAP "),l("a",{class:"header-anchor",href:"#example%3A-ldap"},"#")],-1),Bn=l("pre",null,[l("code",null,`AUTH_PROVIDERS="ldap"
110
-
111
- AUTH_LDAP_DRIVER="ldap"
112
- AUTH_LDAP_CLIENT_URL="ldap://ldap.directus.io"
113
- AUTH_LDAP_BIND_DN="CN=Bind User,OU=Users,DC=ldap,DC=directus,DC=io"
114
- AUTH_LDAP_BIND_PASSWORD="p455w0rd"
115
- AUTH_LDAP_USER_DN="OU=Users,DC=ldap,DC=directus,DC=io"
116
- AUTH_LDAP_GROUP_DN="OU=Groups,DC=ldap,DC=directus,DC=io"
117
- `)],-1),jn=l("h3",{id:"example%3A-multiple-auth-providers"},[e("Example: Multiple Auth Providers "),l("a",{class:"header-anchor",href:"#example%3A-multiple-auth-providers"},"#")],-1),kn=l("p",null,"You can configure multiple providers for handling authentication in Directus. This allows for different options when logging in. To do this, you can provide a CSV of provider names, and provide a config block for each of them:",-1),Wn=l("pre",null,[l("code",null,`AUTH_PROVIDERS="google,adobe"
118
-
119
- AUTH_GOOGLE_DRIVER="openid"
120
- AUTH_GOOGLE_CLIENT_ID="<google_application_id>"
121
- AUTH_GOOGLE_CLIENT_SECRET= "<google_application_secret_key>"
122
- AUTH_GOOGLE_ISSUER_URL="https://accounts.google.com"
123
- AUTH_GOOGLE_IDENTIFIER_KEY="email"
124
- AUTH_GOOGLE_ICON="google"
125
-
126
- AUTH_ADOBE_DRIVER="oauth2"
127
- AUTH_ADOBE_CLIENT_ID="<adobe_application_id>"
128
- AUTH_ADOBE_CLIENT_SECRET="<adobe_application_secret_key>"
129
- AUTH_ADOBE_AUTHORIZE_URL="https://ims-na1.adobelogin.com/ims/authorize/v2"
130
- AUTH_ADOBE_ACCESS_URL="https://ims-na1.adobelogin.com/ims/token/v3"
131
- AUTH_ADOBE_PROFILE_URL="https://ims-na1.adobelogin.com/ims/userinfo/v2"
132
- AUTH_ADOBE_ICON="adobe"
133
- `)],-1),qn=l("h2",{id:"extensions"},[e("Extensions "),l("a",{class:"header-anchor",href:"#extensions"},"#")],-1),Fn=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"EXTENSIONS_PATH")]),l("td",null,"Path to your local extensions folder."),l("td",null,[l("code",null,"./extensions")])]),l("tr",null,[l("td",null,[l("code",null,"EXTENSIONS_AUTO_RELOAD")]),l("td",null,"Automatically reload extensions when they have changed."),l("td",null,[l("code",null,"false")])])])],-1),Yn=l("h2",{id:"email"},[e("Email "),l("a",{class:"header-anchor",href:"#email"},"#")],-1),Kn=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"EMAIL_FROM")]),l("td",null,"Email address from which emails are sent."),l("td",null,[l("code",null,"no-reply@directus.io")])]),l("tr",null,[l("td",null,[l("code",null,"EMAIL_TRANSPORT")]),l("td",null,[e("What to use to send emails. One of "),l("code",null,"sendmail"),e(", "),l("code",null,"smtp"),e(", "),l("code",null,"mailgun"),e(", "),l("code",null,"ses"),e(".")]),l("td",null,[l("code",null,"sendmail")])])])],-1),zn=l("p",null,[e("Based on the "),l("code",null,"EMAIL_TRANSPORT"),e(" used, you must also provide the following configurations:")],-1),Xn=l("h3",{id:"sendmail-(sendmail)"},[e("Sendmail ("),l("code",null,"sendmail"),e(") "),l("a",{class:"header-anchor",href:"#sendmail-(sendmail)"},"#")],-1),Jn=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"EMAIL_SENDMAIL_NEW_LINE")]),l("td",null,"What new line style to use in sendmail."),l("td",null,[l("code",null,"unix")])]),l("tr",null,[l("td",null,[l("code",null,"EMAIL_SENDMAIL_PATH")]),l("td",null,"Path to your sendmail executable."),l("td",null,[l("code",null,"/usr/sbin/sendmail")])])])],-1),Zn=l("h3",{id:"smtp-(smtp)"},[e("SMTP ("),l("code",null,"smtp"),e(") "),l("a",{class:"header-anchor",href:"#smtp-(smtp)"},"#")],-1),Qn=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"EMAIL_SMTP_HOST")]),l("td",null,"SMTP Host"),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"EMAIL_SMTP_PORT")]),l("td",null,"SMTP Port"),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"EMAIL_SMTP_USER")]),l("td",null,"SMTP User"),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"EMAIL_SMTP_PASSWORD")]),l("td",null,"SMTP Password"),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"EMAIL_SMTP_POOL")]),l("td",null,"Use SMTP pooling"),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"EMAIL_SMTP_SECURE")]),l("td",null,"Enable TLS"),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"EMAIL_SMTP_IGNORE_TLS")]),l("td",null,"Ignore TLS"),l("td",null,"\u2013")])])],-1),$n=l("h3",{id:"mailgun-(mailgun)"},[e("Mailgun ("),l("code",null,"mailgun"),e(") "),l("a",{class:"header-anchor",href:"#mailgun-(mailgun)"},"#")],-1),lt=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"EMAIL_MAILGUN_API_KEY")]),l("td",null,"Your Mailgun API key."),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"EMAIL_MAILGUN_DOMAIN")]),l("td",null,[e("A domain from "),l("a",{href:"https://app.mailgun.com/app/sending/domains",target:"_blank",rel:"noopener noreferrer"},"your Mailgun account")]),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"EMAIL_MAILGUN_HOST")]),l("td",null,"Allows you to specify a custom host."),l("td",null,[l("code",null,"api.mailgun.net")])])])],-1),et=l("h3",{id:"aws-ses-(ses)"},[e("AWS SES ("),l("code",null,"ses"),e(") "),l("a",{class:"header-anchor",href:"#aws-ses-(ses)"},"#")],-1),nt=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"EMAIL_SES_CREDENTIALS__ACCESS_KEY_ID")]),l("td",null,"Your AWS SES access key. ID."),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"EMAIL_SES_CREDENTIALS__SECRET_ACCESS_KEY")]),l("td",null,"Your AWS SES secret key."),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"EMAIL_SES_REGION")]),l("td",null,"Your AWS SES region."),l("td",null,"\u2013")])])],-1),tt=l("h2",{id:"admin-account"},[e("Admin Account "),l("a",{class:"header-anchor",href:"#admin-account"},"#")],-1),ot=l("p",null,[e("If you\u2019re relying on Docker and/or the "),l("code",null,"directus bootstrap"),e(" CLI command, you can pass the following two environment variables to automatically configure the first user:")],-1),ut=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"ADMIN_EMAIL")]),l("td",null,[e("The email address of the first user that\u2019s automatically created when using "),l("code",null,"directus bootstrap"),e(".")]),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"ADMIN_PASSWORD")]),l("td",null,[e("The password of the first user that\u2019s automatically created when using "),l("code",null,"directus bootstrap"),e(".")]),l("td",null,"\u2013")])])],-1),st=l("h2",{id:"telemetry"},[e("Telemetry "),l("a",{class:"header-anchor",href:"#telemetry"},"#")],-1),at=l("p",null,"To more accurately gauge the frequency of installation, version fragmentation, and general size of the userbase, Directus collects little and anonymized data about your environment. You can easily opt-out with the following environment variable:",-1),dt=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"TELEMETRY")]),l("td",null,"Allow Directus to collect anonymized data about your environment."),l("td",null,[l("code",null,"true")])])])],-1),_t={setup(rt,{expose:a}){const u={title:"Configuration Options",modularExtension:!1};return a({frontmatter:u}),(it,ct)=>{const t=s("router-link"),d=s("DocsWrapper");return r(),i(d,{frontmatter:u},{default:n(()=>[l("div",c,[h,_,p,f,m,E,g,A,T,R,b,O,S,I,y,D,C,L,v,w,U,N,P,H,V,x,M,G,B,j,k,W,q,F,Y,K,z,X,J,Z,Q,$,ll,el,l("table",null,[nl,l("tbody",null,[tl,ol,ul,sl,al,dl,rl,il,l("tr",null,[cl,l("td",null,[hl,o(t,{to:"/docs/reference/authentication/#request-password-reset"},{default:n(()=>[_l,pl,fl]),_:1})]),ml]),l("tr",null,[El,l("td",null,[gl,o(t,{to:"/docs/reference/system/users/#invite-a-new-user"},{default:n(()=>[Al,Tl,Rl]),_:1})]),bl]),Ol,Sl,Il])]),yl,Dl,Cl,l("p",null,[Ll,vl,wl,o(t,{to:"/docs/reference/system/utilities/#generate-a-hash"},{default:n(()=>[Ul]),_:1}),Nl]),Pl,Hl,Vl,xl,Ml,Gl,Bl,jl,kl,Wl,ql,Fl,Yl,Kl,zl,Xl,Jl,Zl,Ql,$l,le,ee,ne,te,oe,ue,se,ae,de,re,ie,ce,he,_e,pe,fe,me,Ee,ge,Ae,Te,Re,be,Oe,Se,Ie,ye,De,Ce,Le,ve,we,Ue,Ne,Pe,He,Ve,xe,Me,Ge,Be,je,ke,We,qe,Fe,Ye,Ke,ze,Xe,Je,Ze,l("table",null,[Qe,l("tbody",null,[$e,ln,en,nn,tn,on,un,sn,an,dn,l("tr",null,[rn,l("td",null,[cn,o(t,{to:"/docs/getting-started/glossary/#icons"},{default:n(()=>[hn]),_:1}),_n]),pn]),fn])]),mn,En,l("table",null,[gn,l("tbody",null,[An,Tn,Rn,bn,On,Sn,In,yn,l("tr",null,[Dn,l("td",null,[Cn,o(t,{to:"/docs/getting-started/glossary/#icons"},{default:n(()=>[Ln]),_:1}),vn]),wn]),Un])]),Nn,Pn,Hn,Vn,xn,Mn,Gn,Bn,jn,kn,Wn,qn,Fn,Yn,Kn,zn,Xn,Jn,Zn,Qn,$n,lt,et,nt,tt,ot,ut,st,at,dt])]),_:1})}}};export{_t as default};