@directus/app 9.6.0 → 9.8.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 (412) hide show
  1. package/dist/assets/@directus_extensions-sdk.6a88b0f4.entry.js +1 -0
  2. package/dist/assets/{active-line.e9818888.js → active-line.abea5a9c.js} +1 -1
  3. package/dist/assets/{activity-log.85daf7a4.js → activity-log.4e41ba72.js} +1 -1
  4. package/dist/assets/{activity.d0569cd2.js → activity.be984fb6.js} +2 -2
  5. package/dist/assets/{apl.8277d513.js → apl.a00caba3.js} +1 -1
  6. package/dist/assets/ar-SA.48a35bb7.js +1 -0
  7. package/dist/assets/{asciiarmor.c653ded3.js → asciiarmor.0aa51f1f.js} +1 -1
  8. package/dist/assets/{asn.1.bd4bac01.js → asn.1.9704888b.js} +1 -1
  9. package/dist/assets/{asterisk.dd04622f.js → asterisk.600840fc.js} +1 -1
  10. package/dist/assets/{authentication.60521067.js → authentication.a92d9423.js} +5 -5
  11. package/dist/assets/{autorefresh.fcc43bee.js → autorefresh.1e21c42b.js} +1 -1
  12. package/dist/assets/{aws.76e96460.js → aws.e45226e2.js} +1 -1
  13. package/dist/assets/{backing-directus.64e6ef1f.js → backing-directus.49225ce6.js} +1 -1
  14. package/dist/assets/bg-BG.b5eb28ac.js +2 -0
  15. package/dist/assets/br-FR.986ec639.js +1 -0
  16. package/dist/assets/{brainfuck.88714c3d.js → brainfuck.1e4b4eb1.js} +1 -1
  17. package/dist/assets/ca-ES.56d2029e.js +1 -0
  18. package/dist/assets/{cli.9b6582a5.js → cli.05ed41b2.js} +11 -10
  19. package/dist/assets/{cli.c91d5269.js → cli.e26acb28.js} +3 -3
  20. package/dist/assets/{clike.a23032a9.js → clike.dc304041.js} +1 -1
  21. package/dist/assets/{clojure.77bd41dc.js → clojure.f8e8933d.js} +1 -1
  22. package/dist/assets/{cloudron.52aa95ca.js → cloudron.7a7c23f9.js} +1 -1
  23. package/dist/assets/{cmake.d6a02425.js → cmake.65af898d.js} +1 -1
  24. package/dist/assets/{cobol.12648bf5.js → cobol.ad22984c.js} +1 -1
  25. package/dist/assets/{codebase-overview.8d89aaef.js → codebase-overview.87d26c65.js} +1 -1
  26. package/dist/assets/{coffeescript.c039cbb4.js → coffeescript.afc1aad8.js} +1 -1
  27. package/dist/assets/{collections.dc3b49e6.js → collections.44c6300b.js} +4 -4
  28. package/dist/assets/{commonlisp.f2084a1d.js → commonlisp.76fd7a26.js} +1 -1
  29. package/dist/assets/{config-options.4f623f71.js → config-options.7f7ccdfb.js} +14 -14
  30. package/dist/assets/{content-collections.ac942019.js → content-collections.c9c672d0.js} +1 -1
  31. package/dist/assets/{content-items.5657df9d.js → content-items.4b31c7b8.js} +1 -1
  32. package/dist/assets/{content.3725ebd8.js → content.a121c4e2.js} +1 -1
  33. package/dist/assets/{creating-extensions.26964364.js → creating-extensions.84f93517.js} +4 -4
  34. package/dist/assets/{crystal.67f22611.js → crystal.aa9896b4.js} +1 -1
  35. package/dist/assets/cs-CZ.21eb314a.js +1 -0
  36. package/dist/assets/{css.7d0bb97e.js → css.7bfded2c.js} +1 -1
  37. package/dist/assets/{cypher.79c6a384.js → cypher.83f1f068.js} +1 -1
  38. package/dist/assets/{d.9f3975bc.js → d.ec3a4bfa.js} +1 -1
  39. package/dist/assets/da-DK.e857b021.js +1 -0
  40. package/dist/assets/{dart.2413f6a0.js → dart.3ebe28fd.js} +1 -1
  41. package/dist/assets/{data-model.d6b27512.js → data-model.eed0cfd7.js} +1 -1
  42. package/dist/assets/de-DE.ec2886ab.js +1 -0
  43. package/dist/assets/{diff.e65cc025.js → diff.6609b473.js} +1 -1
  44. package/dist/assets/digitalocean-app-platform.657cbe04.js +3 -0
  45. package/dist/assets/{displays.3a79683e.js → displays.363da4e2.js} +4 -4
  46. package/dist/assets/{django.9bb11ca6.js → django.87c18b51.js} +1 -1
  47. package/dist/assets/{docker.790722c7.js → docker.4f8ae677.js} +1 -1
  48. package/dist/assets/{dockerfile.6abd4f99.js → dockerfile.f24a5abb.js} +1 -1
  49. package/dist/assets/{documentation.d06bab23.js → documentation.8a170431.js} +1 -1
  50. package/dist/assets/{dtd.658f232c.js → dtd.fdaf06e1.js} +1 -1
  51. package/dist/assets/{dylan.bb250d49.js → dylan.efa621ed.js} +1 -1
  52. package/dist/assets/{ebnf.7167c45f.js → ebnf.758e105f.js} +1 -1
  53. package/dist/assets/{ecl.faa546da.js → ecl.ee402f8b.js} +1 -1
  54. package/dist/assets/{eiffel.bdc2ca84.js → eiffel.6fdb661b.js} +1 -1
  55. package/dist/assets/el-GR.b15e80c2.js +1 -0
  56. package/dist/assets/{elm.fc9c507a.js → elm.19d667b0.js} +1 -1
  57. package/dist/assets/{email-templates.79e5e2ca.js → email-templates.4e6edece.js} +2 -2
  58. package/dist/assets/en-CA.e43c4502.js +1 -0
  59. package/dist/assets/en-GB.0ad6cc93.js +1 -0
  60. package/dist/assets/{endpoints.04e33b95.js → endpoints.9f52f90e.js} +2 -2
  61. package/dist/assets/{erlang.63538b7a.js → erlang.9de2b6a5.js} +1 -1
  62. package/dist/assets/es-419.e287f065.js +1 -0
  63. package/dist/assets/es-CL.0d49105b.js +1 -0
  64. package/dist/assets/es-ES.e38e7128.js +1 -0
  65. package/dist/assets/et-EE.98069bd5.js +3 -0
  66. package/dist/assets/{extensions.771f89ad.js → extensions.ef388d4c.js} +2 -2
  67. package/dist/assets/fa-IR.1fe08a4a.js +1 -0
  68. package/dist/assets/{factor.9f9f4abb.js → factor.48b8a3ef.js} +1 -1
  69. package/dist/assets/{faq.0cd56497.js → faq.af3fc9a5.js} +1 -1
  70. package/dist/assets/{fcl.f9869b95.js → fcl.02ca64a1.js} +1 -1
  71. package/dist/assets/fi-FI.afa1b4dc.js +1 -0
  72. package/dist/assets/{fields.a96528be.js → fields.2664e4a3.js} +3 -3
  73. package/dist/assets/file-library.fb43136a.js +1 -0
  74. package/dist/assets/{files.f21bf259.js → files.743ea6fa.js} +9 -9
  75. package/dist/assets/{filter-rules.e04beb8f.js → filter-rules.3c7bc379.js} +3 -3
  76. package/dist/assets/filters.906d441f.js +1 -0
  77. package/dist/assets/fo-FO.ffe478b0.js +1 -0
  78. package/dist/assets/{folders.c3b0e112.js → folders.f4482879.js} +4 -4
  79. package/dist/assets/{forth.c127aeeb.js → forth.e689b3eb.js} +1 -1
  80. package/dist/assets/{fortran.971bd1fd.js → fortran.6a5fc001.js} +1 -1
  81. package/dist/assets/fr-CA.819e1769.js +1 -0
  82. package/dist/assets/fr-FR.e66806fc.js +1 -0
  83. package/dist/assets/{gas.bf045d26.js → gas.2daa1304.js} +1 -1
  84. package/dist/assets/{gcp.678c6445.js → gcp.7df0ea83.js} +3 -3
  85. package/dist/assets/{gfm.4b4dba16.js → gfm.f3e8b40f.js} +1 -1
  86. package/dist/assets/{gherkin.28e46387.js → gherkin.b43a3252.js} +1 -1
  87. package/dist/assets/{github-ci.23ecb36d.js → github-ci.5fbe15aa.js} +2 -2
  88. package/dist/assets/glossary.22a75054.js +1 -0
  89. package/dist/assets/{go.37f05be2.js → go.63f87011.js} +1 -1
  90. package/dist/assets/{groovy.caed6356.js → groovy.16ddd911.js} +1 -1
  91. package/dist/assets/{haml.6d0c1fb8.js → haml.9443aeec.js} +1 -1
  92. package/dist/assets/{handlebars.29c511b2.js → handlebars.23e8be7a.js} +1 -1
  93. package/dist/assets/{haskell-literate.212af0aa.js → haskell-literate.758ca559.js} +1 -1
  94. package/dist/assets/{haskell.701a5e5e.js → haskell.9e54d423.js} +1 -1
  95. package/dist/assets/{haxe.0989c172.js → haxe.24bb4baa.js} +1 -1
  96. package/dist/assets/{he-IL.80c0db1b.js → he-IL.bc84c4a0.js} +1 -1
  97. package/dist/assets/hi-IN.37411d7d.js +1 -0
  98. package/dist/assets/{hooks.0082d595.js → hooks.b1e615f8.js} +2 -2
  99. package/dist/assets/hr-HR.ab611e2d.js +1 -0
  100. package/dist/assets/{htmlembedded.4af5b785.js → htmlembedded.bfe7ab41.js} +1 -1
  101. package/dist/assets/{htmlmixed.a51c7358.js → htmlmixed.bb060c99.js} +1 -1
  102. package/dist/assets/{http.d4f19e67.js → http.0a0f008a.js} +1 -1
  103. package/dist/assets/hu-HU.72c70fe7.js +1 -0
  104. package/dist/assets/id-ID.ca6d20b9.js +1 -0
  105. package/dist/assets/{idl.eeda14ab.js → idl.e488de81.js} +1 -1
  106. package/dist/assets/{iis.330abbee.js → iis.eef9978f.js} +1 -1
  107. package/dist/assets/{index.f6a253b6.js → index.00230ef2.js} +1 -1
  108. package/dist/assets/{index.625e71a7.js → index.0f87b330.js} +1 -1
  109. package/dist/assets/{index.5e04a811.js → index.11b1d4d6.js} +1 -1
  110. package/dist/assets/{index.d4834d17.js → index.1509d4cc.js} +1 -1
  111. package/dist/assets/{index.37cffa7d.js → index.1556730f.js} +1 -1
  112. package/dist/assets/{index.071a9c3a.js → index.17322a75.js} +1 -1
  113. package/dist/assets/{index.ac67a5f3.js → index.19bafff6.js} +1 -1
  114. package/dist/assets/{index.c440596f.js → index.1f6df8f3.js} +1 -1
  115. package/dist/assets/{index.b3b7693f.js → index.209dfd3c.js} +1 -1
  116. package/dist/assets/{index.f3c9fe2a.js → index.225ca76b.js} +1 -1
  117. package/dist/assets/{index.e96faed1.js → index.27b9d143.js} +1 -1
  118. package/dist/assets/{index.a6e1eaac.js → index.2990b353.js} +1 -1
  119. package/dist/assets/{index.4f13b227.js → index.2aa210ef.js} +1 -1
  120. package/dist/assets/{index.fc02ea02.js → index.2b9b12e5.js} +1 -1
  121. package/dist/assets/{index.ff32b7e4.js → index.2d5f1100.js} +1 -1
  122. package/dist/assets/{index.e7be0f01.js → index.2fa715a7.js} +1 -1
  123. package/dist/assets/{index.3677702f.css → index.31e06860.css} +1 -1
  124. package/dist/assets/{index.a97e922c.js → index.3606730a.js} +1 -1
  125. package/dist/assets/{index.51574b0e.js → index.3891403e.js} +1 -1
  126. package/dist/assets/{index.a002e680.js → index.38dcd045.js} +1 -1
  127. package/dist/assets/{index.146fba14.js → index.3ccb6082.js} +1 -1
  128. package/dist/assets/{index.a2ff10ff.js → index.3ea7b619.js} +1 -1
  129. package/dist/assets/{index.51882a25.js → index.3ee8527a.js} +1 -1
  130. package/dist/assets/{index.62fd2872.js → index.43735b46.js} +1 -1
  131. package/dist/assets/{index.41b6a5ee.js → index.4a071c64.js} +1 -1
  132. package/dist/assets/{index.7e95afe7.js → index.4affbacb.js} +1 -1
  133. package/dist/assets/{index.9c5d89ae.js → index.4e0ab8dd.js} +1 -1
  134. package/dist/assets/{index.3ae28004.js → index.517b48c5.js} +1 -1
  135. package/dist/assets/{index.6260e453.js → index.56246fd1.js} +1 -1
  136. package/dist/assets/{index.4aa69d22.js → index.5aaa9002.js} +1 -1
  137. package/dist/assets/{index.10925874.js → index.5aaef0f5.js} +1 -1
  138. package/dist/assets/index.5bac3394.entry.js +542 -0
  139. package/dist/assets/{index.415d63b7.js → index.5efef841.js} +1 -1
  140. package/dist/assets/{index.d03f4b8b.js → index.5f45ee1c.js} +1 -1
  141. package/dist/assets/{index.cd1e1e40.js → index.6a46a652.js} +1 -1
  142. package/dist/assets/{index.14876b51.js → index.6b1d2be1.js} +1 -1
  143. package/dist/assets/{index.f52f3569.js → index.6f370662.js} +1 -1
  144. package/dist/assets/{index.cfae1a8b.js → index.70c2751c.js} +1 -1
  145. package/dist/assets/{index.f10b280f.js → index.7829f5d8.js} +1 -1
  146. package/dist/assets/{index.7a271708.js → index.7898e2da.js} +1 -1
  147. package/dist/assets/{index.b6a98b96.js → index.79882312.js} +1 -1
  148. package/dist/assets/{index.51e43e6a.js → index.7a1461df.js} +1 -1
  149. package/dist/assets/{index.326bb798.js → index.7f70333f.js} +1 -1
  150. package/dist/assets/{index.d0b4ff86.js → index.87c635a5.js} +1 -1
  151. package/dist/assets/{index.913c3bcb.js → index.8a723a92.js} +1 -1
  152. package/dist/assets/{index.7a98f173.js → index.8a7af2f4.js} +1 -1
  153. package/dist/assets/{index.93380fe6.js → index.8d80b40a.js} +1 -1
  154. package/dist/assets/{index.7badc515.js → index.97467629.js} +1 -1
  155. package/dist/assets/{index.c922886d.js → index.98b80c09.js} +1 -1
  156. package/dist/assets/{index.fc550611.js → index.a06f1268.js} +1 -1
  157. package/dist/assets/{index.10548c32.js → index.a65d3053.js} +1 -1
  158. package/dist/assets/{index.7cfb4e9f.js → index.a851960c.js} +1 -1
  159. package/dist/assets/{index.e7e6179d.js → index.aa4177f9.js} +1 -1
  160. package/dist/assets/{index.60c6d36d.js → index.af2cbd13.js} +1 -1
  161. package/dist/assets/{index.e041364c.js → index.b3de25f7.js} +1 -1
  162. package/dist/assets/{index.5ea5bfa5.js → index.bd60d2ff.js} +1 -1
  163. package/dist/assets/{index.7472dc76.js → index.be449ac3.js} +1 -1
  164. package/dist/assets/{index.6e92d608.js → index.bea32c39.js} +1 -1
  165. package/dist/assets/{index.eacd68de.js → index.bee94ac8.js} +1 -1
  166. package/dist/assets/{index.8fe44535.js → index.c46cec0b.js} +1 -1
  167. package/dist/assets/{index.cd89a422.js → index.c660c1b8.js} +1 -1
  168. package/dist/assets/{index.205e1dad.js → index.c988211f.js} +1 -1
  169. package/dist/assets/{index.3fc14165.js → index.cfaefc8a.js} +1 -1
  170. package/dist/assets/{index.a2862ce9.js → index.d4bf7d76.js} +1 -1
  171. package/dist/assets/{index.73b63f0e.js → index.d9f46f43.js} +1 -1
  172. package/dist/assets/{index.caf343d8.js → index.dc9a0145.js} +1 -1
  173. package/dist/assets/index.df92cd9e.js +26 -0
  174. package/dist/assets/{index.98841743.js → index.e03b0ae8.js} +1 -1
  175. package/dist/assets/index.e0506f3a.css +1 -0
  176. package/dist/assets/{index.0d6f77da.js → index.e2ee7cbb.js} +1 -1
  177. package/dist/assets/{index.4b8ae547.js → index.e3a77573.js} +1 -1
  178. package/dist/assets/{index.76e3ec1d.js → index.e3df6478.js} +1 -1
  179. package/dist/assets/{index.a09c6735.js → index.e641f513.js} +1 -1
  180. package/dist/assets/{index.e787f33f.js → index.e7037868.js} +1 -1
  181. package/dist/assets/{index.df4b8c75.js → index.ea05e41c.js} +1 -1
  182. package/dist/assets/{index.90abf85c.js → index.eab8de80.js} +1 -1
  183. package/dist/assets/{index.8dee4a35.js → index.eae13b09.js} +1 -1
  184. package/dist/assets/{index.cf683d8c.js → index.ecd86516.js} +1 -1
  185. package/dist/assets/{index.0dddca1a.js → index.ee8728a8.js} +1 -1
  186. package/dist/assets/{index.4e0946be.js → index.f5754cc1.js} +1 -1
  187. package/dist/assets/{index.c208f0fd.js → index.f5ea85c0.js} +1 -1
  188. package/dist/assets/{index.525f3896.js → index.f80c179a.js} +1 -1
  189. package/dist/assets/{index.68a087d1.js → index.faf1336c.js} +1 -1
  190. package/dist/assets/{index.1806be1f.js → index.fc6dba99.js} +1 -1
  191. package/dist/assets/{input-rich-text-html.1d6673ff.css → input-rich-text-html.13cfe672.css} +1 -1
  192. package/dist/assets/{input-rich-text-html.12cfd6d6.js → input-rich-text-html.edcdd41e.js} +43 -43
  193. package/dist/assets/{insights.7e720aaa.js → insights.dd2f1319.js} +1 -1
  194. package/dist/assets/{installation.ac1195fb.js → installation.03c76b82.js} +1 -1
  195. package/dist/assets/{interfaces.85a891f8.js → interfaces.8a75b0b1.js} +3 -3
  196. package/dist/assets/{introduction.d2c3a9b1.js → introduction.069a697e.js} +2 -2
  197. package/dist/assets/{introduction.f1b59346.js → introduction.1442bb90.js} +3 -3
  198. package/dist/assets/{introduction.16cf3345.js → introduction.296a12be.js} +1 -1
  199. package/dist/assets/{introduction.14ab0709.js → introduction.4f6984ac.js} +1 -1
  200. package/dist/assets/it-IT.66c00a2e.js +1 -0
  201. package/dist/assets/{items.ce1274b9.js → items.16c6da62.js} +9 -9
  202. package/dist/assets/ja-JP.fd245edd.js +1 -0
  203. package/dist/assets/{javascript-hint.2d9f90b8.js → javascript-hint.069603da.js} +1 -1
  204. package/dist/assets/{javascript.aa968f57.js → javascript.e77a31d7.js} +1 -1
  205. package/dist/assets/{jinja2.36c237ca.js → jinja2.62d35d26.js} +1 -1
  206. package/dist/assets/{jsx.197dce43.js → jsx.7c3e211a.js} +1 -1
  207. package/dist/assets/{julia.c102dfd3.js → julia.82615a40.js} +1 -1
  208. package/dist/assets/ko-KR.30f60079.js +1 -0
  209. package/dist/assets/ku-TR.9eee23ff.js +1 -0
  210. package/dist/assets/{layouts.ff5441c6.js → layouts.5d28cc0e.js} +4 -4
  211. package/dist/assets/{livescript.21105db8.js → livescript.bf7c6356.js} +1 -1
  212. package/dist/assets/{localization.27364f2b.js → localization.348f1994.js} +1 -1
  213. package/dist/assets/lt-LT.6a535ee7.js +1 -0
  214. package/dist/assets/{lua.1d09048d.js → lua.df9f8de8.js} +1 -1
  215. package/dist/assets/{manual.63f9c5d3.js → manual.85e4cab3.js} +4 -4
  216. package/dist/assets/{mark-selection.48a3dbe8.js → mark-selection.a5c78240.js} +1 -1
  217. package/dist/assets/{match-highlighter.0df5b4f1.js → match-highlighter.b8b7c0fa.js} +1 -1
  218. package/dist/assets/{mathematica.2fe90942.js → mathematica.35866057.js} +1 -1
  219. package/dist/assets/{mbox.5cb538b6.js → mbox.b588a798.js} +1 -1
  220. package/dist/assets/{migrations.1bc30d80.js → migrations.78085c15.js} +2 -2
  221. package/dist/assets/{mirc.96079655.js → mirc.11811abc.js} +1 -1
  222. package/dist/assets/{mllike.7a80c37b.js → mllike.f80953fc.js} +1 -1
  223. package/dist/assets/mn-MN.ae109212.js +1 -0
  224. package/dist/assets/{modelica.f87d9a24.js → modelica.31203d9d.js} +1 -1
  225. package/dist/assets/{modules.dfe4aa4e.js → modules.5950dac1.js} +3 -3
  226. package/dist/assets/ms-MY.c32899bd.js +1 -0
  227. package/dist/assets/{mscgen.1e50688f.js → mscgen.14d048a5.js} +1 -1
  228. package/dist/assets/{multiplex.90c2363b.js → multiplex.2a683323.js} +2 -2
  229. package/dist/assets/{mumps.aa5704c7.js → mumps.14b46927.js} +1 -1
  230. package/dist/assets/{nginx.f40bad27.js → nginx.147916f5.js} +1 -1
  231. package/dist/assets/nl-NL.5b0204f4.js +1 -0
  232. package/dist/assets/no-NO.60cb3308.js +1 -0
  233. package/dist/assets/{notifications.20bde137.js → notifications.6c634105.js} +4 -4
  234. package/dist/assets/{nsis.99bbd756.js → nsis.10cfff1e.js} +1 -1
  235. package/dist/assets/{ntriples.2e5020c8.js → ntriples.9eadeec1.js} +1 -1
  236. package/dist/assets/{octave.ee1a6e70.js → octave.bcd50d60.js} +1 -1
  237. package/dist/assets/{overlay.8ec15b1b.js → overlay.ae430c07.js} +1 -1
  238. package/dist/assets/{overview.3a8bd973.js → overview.2770b6cc.js} +1 -1
  239. package/dist/assets/{overview.01ff825c.js → overview.efc5d559.js} +1 -1
  240. package/dist/assets/{oz.9fbab86e.js → oz.2f895b39.js} +1 -1
  241. package/dist/assets/{panels.84ef6a84.js → panels.a1feb89d.js} +4 -4
  242. package/dist/assets/{pascal.c44d5320.js → pascal.fcf5fb90.js} +1 -1
  243. package/dist/assets/{pegjs.b32c7ead.js → pegjs.bfe8c0d8.js} +1 -1
  244. package/dist/assets/{perl.2729cf31.js → perl.34e1ebd8.js} +1 -1
  245. package/dist/assets/{permissions.47d65b17.js → permissions.ee57d2c5.js} +8 -8
  246. package/dist/assets/{php.d6a66d9d.js → php.123c0022.js} +1 -1
  247. package/dist/assets/{pig.47fa025c.js → pig.c87dc3c5.js} +1 -1
  248. package/dist/assets/pinia.d0ad97a9.entry.js +1 -0
  249. package/dist/assets/pl-PL.e4805847.js +1 -0
  250. package/dist/assets/{plesk.0483440c.js → plesk.0f675304.js} +5 -5
  251. package/dist/assets/{powershell.99a55b30.js → powershell.acd58c14.js} +1 -1
  252. package/dist/assets/{presets-bookmarks.82f3f9ef.js → presets-bookmarks.4c61f585.js} +1 -1
  253. package/dist/assets/{presets.6ace4e86.js → presets.c5652da2.js} +4 -4
  254. package/dist/assets/{project-settings.b6942d32.js → project-settings.223c2b56.js} +1 -1
  255. package/dist/assets/{properties.1055d639.js → properties.bb44ad2a.js} +1 -1
  256. package/dist/assets/{protobuf.4b3eb57a.js → protobuf.56cee688.js} +1 -1
  257. package/dist/assets/pt-BR.e60f90d6.js +1 -0
  258. package/dist/assets/pt-PT.f0cdce40.js +1 -0
  259. package/dist/assets/{pug.000c324e.js → pug.bd4388b6.js} +1 -1
  260. package/dist/assets/{puppet.25546d2c.js → puppet.595e3b11.js} +1 -1
  261. package/dist/assets/{python.8450efc6.js → python.96cc4158.js} +1 -1
  262. package/dist/assets/{q.0ad76756.js → q.c1c89979.js} +1 -1
  263. package/dist/assets/{query.d7cae937.js → query.a5bea9e6.js} +5 -5
  264. package/dist/assets/{quickstart.7dce1be9.js → quickstart.67ba41ce.js} +5 -5
  265. package/dist/assets/{r.2e3f1373.js → r.e8bd6183.js} +1 -1
  266. package/dist/assets/{relations.143e59a4.js → relations.a25697a0.js} +7 -7
  267. package/dist/assets/{relationships.8a6a55ea.js → relationships.33af294b.js} +4 -4
  268. package/dist/assets/{revisions.4a380f31.js → revisions.d1ad624a.js} +3 -3
  269. package/dist/assets/ro-RO.dbffee50.js +1 -0
  270. package/dist/assets/{roles.9a467f51.js → roles.2047801b.js} +8 -8
  271. package/dist/assets/{rpm.0f41e62d.js → rpm.9e17cfc6.js} +1 -1
  272. package/dist/assets/{rst.a4f3ba5f.js → rst.e6212933.js} +1 -1
  273. package/dist/assets/ru-RU.dce9c3b8.js +1 -0
  274. package/dist/assets/{ruby.5cb0ba51.js → ruby.7ff2b064.js} +1 -1
  275. package/dist/assets/{running-locally.b2de8da4.js → running-locally.9ae4cbf8.js} +9 -9
  276. package/dist/assets/{rust.b7493419.js → rust.cef3d7aa.js} +1 -1
  277. package/dist/assets/{sas.0cd3626d.js → sas.e7f0f539.js} +1 -1
  278. package/dist/assets/{sass.cd694623.js → sass.08441508.js} +1 -1
  279. package/dist/assets/{scheme.3aaec68e.js → scheme.a74ee417.js} +1 -1
  280. package/dist/assets/{sdk.accde57c.js → sdk.ae03b443.js} +7 -7
  281. package/dist/assets/{security.c7ae152d.js → security.868b43f5.js} +1 -1
  282. package/dist/assets/{server.4707997f.js → server.21e00a5b.js} +4 -4
  283. package/dist/assets/settings.15d0a9a7.js +1 -0
  284. package/dist/assets/{settings.16ae0506.js → settings.18800337.js} +4 -4
  285. package/dist/assets/{shell.330154a1.js → shell.47528095.js} +1 -1
  286. package/dist/assets/{show-hint.08ce5b35.js → show-hint.12dadc00.js} +1 -1
  287. package/dist/assets/{sieve.b4c7728e.js → sieve.424cbf77.js} +1 -1
  288. package/dist/assets/{simple.8763f2ec.js → simple.ef386c48.js} +1 -1
  289. package/dist/assets/sl-SI.5337e803.js +2 -0
  290. package/dist/assets/{slim.9ea94231.js → slim.014147b3.js} +1 -1
  291. package/dist/assets/{smalltalk.8b61c119.js → smalltalk.5d6d79d2.js} +1 -1
  292. package/dist/assets/{smarty.706bb089.js → smarty.955de5dc.js} +1 -1
  293. package/dist/assets/{solr.67c7ee7a.js → solr.adf53b34.js} +1 -1
  294. package/dist/assets/{soy.be473048.js → soy.14f8a682.js} +1 -1
  295. package/dist/assets/{sparql.51a25620.js → sparql.6a030390.js} +1 -1
  296. package/dist/assets/{spreadsheet.fcb893e8.js → spreadsheet.67ce0358.js} +1 -1
  297. package/dist/assets/{sql.4dc1acac.js → sql.7bb80f22.js} +1 -1
  298. package/dist/assets/sr-CS.c4a5b89f.js +1 -0
  299. package/dist/assets/{sso.e2f0df9a.js → sso.ccca8958.js} +2 -2
  300. package/dist/assets/{stex.84747908.js → stex.f35da327.js} +1 -1
  301. package/dist/assets/{stylus.7b96e081.js → stylus.930fb7b6.js} +1 -1
  302. package/dist/assets/{support.0b9bd95f.js → support.d9e0bf60.js} +1 -1
  303. package/dist/assets/sv-SE.d698f222.js +1 -0
  304. package/dist/assets/{swift.79848d55.js → swift.7f6fa792.js} +1 -1
  305. package/dist/assets/{tcl.1970681b.js → tcl.468e3c20.js} +1 -1
  306. package/dist/assets/{textile.e83320ea.js → textile.5b724807.js} +1 -1
  307. package/dist/assets/th-TH.9bb0dc35.js +2 -0
  308. package/dist/assets/{themes.323d2c59.js → themes.401eff12.js} +2 -2
  309. package/dist/assets/{tiddlywiki.2b2e4ff7.js → tiddlywiki.1a5a1bd6.js} +1 -1
  310. package/dist/assets/{tiki.9cc4254e.js → tiki.e5d1cc9c.js} +1 -1
  311. package/dist/assets/{toml.9be02e0b.js → toml.309d9a71.js} +1 -1
  312. package/dist/assets/{tornado.073889de.js → tornado.33d6785e.js} +1 -1
  313. package/dist/assets/tr-TR.a3b3e8ea.js +1 -0
  314. package/dist/assets/{translations.bd6e2f4c.js → translations.141198a3.js} +1 -1
  315. package/dist/assets/{troff.8fa79cbc.js → troff.39a13d53.js} +1 -1
  316. package/dist/assets/{ttcn-cfg.e7bac5a1.js → ttcn-cfg.2227c343.js} +1 -1
  317. package/dist/assets/{ttcn.1cc44c93.js → ttcn.ff83f5df.js} +1 -1
  318. package/dist/assets/{turtle.d5e9ffb3.js → turtle.ef55cec6.js} +1 -1
  319. package/dist/assets/{twig.b04e6f4c.js → twig.367a43fb.js} +1 -1
  320. package/dist/assets/ubuntu.013c7190.js +11 -0
  321. package/dist/assets/uk-UA.17503b1f.js +1 -0
  322. package/dist/assets/{upgrades-migrations.6b40146f.js → upgrades-migrations.21a07531.js} +1 -1
  323. package/dist/assets/use-sync.7a0e9d8b.js +1 -0
  324. package/dist/assets/user-directory.bdb10b6f.js +1 -0
  325. package/dist/assets/{users-roles-permissions.9d570863.js → users-roles-permissions.ae35914f.js} +1 -1
  326. package/dist/assets/{users.2bcfad1a.js → users.36943e09.js} +5 -5
  327. package/dist/assets/{utilities.e5c07634.js → utilities.8533f769.js} +20 -6
  328. package/dist/assets/{vb.c986b370.js → vb.af7fe20b.js} +1 -1
  329. package/dist/assets/{vbscript.92f83a08.js → vbscript.2bd7f088.js} +1 -1
  330. package/dist/assets/{velocity.f11f1d03.js → velocity.223e9248.js} +1 -1
  331. package/dist/assets/{vendor.546e1516.js → vendor.ef99adf3.js} +97 -97
  332. package/dist/assets/{verilog.a24f0500.js → verilog.4b62dd2f.js} +1 -1
  333. package/dist/assets/{vhdl.a49602e6.js → vhdl.58f6f384.js} +1 -1
  334. package/dist/assets/vi-VN.2e3953bd.js +1 -0
  335. package/dist/assets/vue-i18n.abcb633a.entry.js +1 -0
  336. package/dist/assets/vue-router.6a93788b.entry.js +1 -0
  337. package/dist/assets/{vue.c4de942a.js → vue.a51d1c54.js} +1 -1
  338. package/dist/assets/vue.c850cd15.entry.js +1 -0
  339. package/dist/assets/{wast.6c6c82f6.js → wast.29e0da5e.js} +1 -1
  340. package/dist/assets/{webhooks.6b93563c.js → webhooks.4518eef3.js} +1 -1
  341. package/dist/assets/{webhooks.6086e8a1.js → webhooks.60a87075.js} +4 -4
  342. package/dist/assets/{webidl.7ab89b46.js → webidl.34270659.js} +1 -1
  343. package/dist/assets/{xquery.0bb89cc8.js → xquery.9af0937b.js} +1 -1
  344. package/dist/assets/{yacas.ed921cd2.js → yacas.4b55f53d.js} +1 -1
  345. package/dist/assets/{yaml-frontmatter.1248294d.js → yaml-frontmatter.6b3a826f.js} +1 -1
  346. package/dist/assets/{yaml.b6cf6fc7.js → yaml.26316285.js} +1 -1
  347. package/dist/assets/{z80.84dfc6fb.js → z80.06c57bfb.js} +1 -1
  348. package/dist/assets/zh-CN.ea7e03db.js +1 -0
  349. package/dist/assets/zh-TW.84c79b23.js +1 -0
  350. package/dist/index.html +4 -4
  351. package/package.json +8 -8
  352. package/dist/assets/@directus_extensions-sdk.27762347.entry.js +0 -1
  353. package/dist/assets/ar-SA.ea40e3a9.js +0 -1
  354. package/dist/assets/bg-BG.0d877a81.js +0 -2
  355. package/dist/assets/br-FR.b5bf22f7.js +0 -1
  356. package/dist/assets/ca-ES.4ec66903.js +0 -1
  357. package/dist/assets/cs-CZ.8dfd2141.js +0 -1
  358. package/dist/assets/da-DK.e4e3715f.js +0 -1
  359. package/dist/assets/de-DE.7cd8edca.js +0 -1
  360. package/dist/assets/digitalocean-app-platform.1a64c7ed.js +0 -3
  361. package/dist/assets/el-GR.e46c7385.js +0 -1
  362. package/dist/assets/en-CA.54b75dac.js +0 -1
  363. package/dist/assets/en-GB.5d984991.js +0 -1
  364. package/dist/assets/es-419.768b23e7.js +0 -1
  365. package/dist/assets/es-CL.e4d38d3f.js +0 -1
  366. package/dist/assets/es-ES.5ed14f46.js +0 -1
  367. package/dist/assets/et-EE.3c82a2a7.js +0 -3
  368. package/dist/assets/fa-IR.bc4949d0.js +0 -1
  369. package/dist/assets/fi-FI.ea8c811c.js +0 -1
  370. package/dist/assets/file-library.680d5840.js +0 -1
  371. package/dist/assets/fo-FO.9d2669e3.js +0 -1
  372. package/dist/assets/fr-CA.98b1ca99.js +0 -1
  373. package/dist/assets/fr-FR.76a38bd1.js +0 -1
  374. package/dist/assets/glossary.3288b825.js +0 -1
  375. package/dist/assets/hi-IN.89190874.js +0 -1
  376. package/dist/assets/hr-HR.17ae4a7f.js +0 -1
  377. package/dist/assets/hu-HU.94582835.js +0 -1
  378. package/dist/assets/id-ID.730079b9.js +0 -1
  379. package/dist/assets/index.d74fe2b2.js +0 -26
  380. package/dist/assets/index.d91c6632.css +0 -1
  381. package/dist/assets/index.f7322f54.entry.js +0 -531
  382. package/dist/assets/it-IT.c887dd87.js +0 -1
  383. package/dist/assets/ja-JP.8078d1fc.js +0 -1
  384. package/dist/assets/ko-KR.b5ed9ca7.js +0 -1
  385. package/dist/assets/ku-TR.d790a5bf.js +0 -1
  386. package/dist/assets/lt-LT.2ee93d0f.js +0 -1
  387. package/dist/assets/mn-MN.3b64cd12.js +0 -1
  388. package/dist/assets/ms-MY.3db62076.js +0 -1
  389. package/dist/assets/nl-NL.a0c67bbb.js +0 -1
  390. package/dist/assets/no-NO.13f7014c.js +0 -1
  391. package/dist/assets/pinia.f515d45e.entry.js +0 -1
  392. package/dist/assets/pl-PL.c389638f.js +0 -1
  393. package/dist/assets/pt-BR.fcdcd0d6.js +0 -1
  394. package/dist/assets/pt-PT.76e3ba8f.js +0 -1
  395. package/dist/assets/ro-RO.97f46d61.js +0 -1
  396. package/dist/assets/ru-RU.08ba5d6b.js +0 -1
  397. package/dist/assets/settings.d10a56a2.js +0 -1
  398. package/dist/assets/sl-SI.59c76b0a.js +0 -2
  399. package/dist/assets/sr-CS.9a714a93.js +0 -1
  400. package/dist/assets/sv-SE.7051901e.js +0 -1
  401. package/dist/assets/th-TH.ed8c9ce8.js +0 -2
  402. package/dist/assets/tr-TR.51f6d3f2.js +0 -1
  403. package/dist/assets/ubuntu.2e2a920e.js +0 -11
  404. package/dist/assets/uk-UA.1bd8aa98.js +0 -1
  405. package/dist/assets/use-sync.6d20172a.js +0 -1
  406. package/dist/assets/user-directory.c5340005.js +0 -1
  407. package/dist/assets/vi-VN.b39fb470.js +0 -1
  408. package/dist/assets/vue-i18n.feba4fda.entry.js +0 -1
  409. package/dist/assets/vue-router.9dd9c3aa.entry.js +0 -1
  410. package/dist/assets/vue.b07aacca.entry.js +0 -1
  411. package/dist/assets/zh-CN.39bd6632.js +0 -1
  412. package/dist/assets/zh-TW.ed00cc7a.js +0 -1
@@ -1 +1 @@
1
- import{r as s,p as c,q as u,w as o,z as e,t as r,S as t}from"./vendor.546e1516.js";const d={class:"markdown-body"},h=t("A Project is a complete instance of Directus, including its "),p=e("strong",null,"Database",-1),g=t(", config file, asset storage, and any custom extensions. "),m=t("Learn more about Projects"),_=t("."),f=e("h2",{id:"upgrading-%2F-updating-a-project"},[t("Upgrading / Updating a Project "),e("a",{class:"header-anchor",href:"#upgrading-%2F-updating-a-project"},"#")],-1),y=e("ol",null,[e("li",null,"Backup your project"),e("li",null,[t("Run "),e("code",null,"npm update")]),e("li",null,[t("Run "),e("code",null,"npx directus database migrate:latest"),t(" to update the DB")])],-1),b=e("h2",{id:"backing-up-a-project"},[t("Backing-up a Project "),e("a",{class:"header-anchor",href:"#backing-up-a-project"},"#")],-1),v=e("ol",null,[e("li",null,[t("Make a copy of the "),e("strong",null,"files within each storage adapter"),t(", and store them in a safe place")]),e("li",null,[t("Make a copy of the "),e("strong",null,"Env file"),t(" ("),e("code",null,"/api/.env"),t("), and store it in a safe place")]),e("li",null,"Create a database dump")],-1),w=e("h2",{id:"migrating-a-project"},[t("Migrating a Project "),e("a",{class:"header-anchor",href:"#migrating-a-project"},"#")],-1),k=e("p",null,"Directus doesn\u2019t rely on anything besides the database for it\u2019s operation. Therefore, migrating your Directus project can be done by moving the whole database to a new location using a database dump.",-1),j=e("div",{class:"tip hint"},[e("div",{class:"hint-title"},"File Storage"),e("p",null,"If you have files uploaded, make sure to copy those over as well, or use the same storage location in the new location of Directus.")],-1),D=e("h2",{id:"downgrading-a-project"},[t("Downgrading a Project "),e("a",{class:"header-anchor",href:"#downgrading-a-project"},"#")],-1),x=e("p",null,[t("Directus can be reverted to an earlier version by going to your terminal, navigating into your project folder and running "),e("code",null,"npm install directus@<version>"),t(".")],-1),B=e("p",null,[t("If you ran any database migrations for a newer version, you can revert those by running "),e("code",null,"npx directus database migrate:down")],-1),P=e("h2",{id:"deleting-a-project"},[t("Deleting a Project "),e("a",{class:"header-anchor",href:"#deleting-a-project"},"#")],-1),I=e("ol",null,[e("li",null,[t("Optional: "),e("strong",null,"Backup any local files"),t(" stored within the project\u2019s root directory")]),e("li",null,[t("Optional: "),e("strong",null,"Backup any custom code and extensions"),t(" within the project\u2019s root directory")]),e("li",null,[t("Optional: "),e("strong",null,"Backup your entire database"),t(", only system tables, or only project tables")]),e("li",null,[e("strong",null,"Delete the project\u2019s root directory"),t(" from the server")]),e("li",null,[e("strong",null,"Delete all Directus system tables"),t(" ("),e("code",null,"directus_*"),t(") from the database")])],-1),S=e("div",{class:"tip hint"},[e("div",{class:"hint-title"},"Pure SQL"),e("p",null,"After completing this process, you will be left with a pure SQL database, with no trace that Directus was ever installed. Any external services connecting to your database\u2019s project tables directly (eg: SQL queries) should continue working normally.")],-1),T=e("h2",{id:"migrating-from-v8"},[t("Migrating from v8 "),e("a",{class:"header-anchor",href:"#migrating-from-v8"},"#")],-1),A=e("p",null,"There are two ways to migrate from an existing Directus 8.X instance:",-1),F=e("ul",null,[e("li",null,[e("a",{href:"#automated-script"},"Automated Script"),t(" (recommended)")]),e("li",null,[e("a",{href:"#manual-database-export-import"},"Manual Database Export/Import")])],-1),M=e("p",null,[t("Be sure to check the "),e("a",{href:"#breaking-changes"},"Breaking changes"),t(" if you are consuming the API from an application.")],-1),U=e("h2",{id:"automated-script"},[t("Automated Script "),e("a",{class:"header-anchor",href:"#automated-script"},"#")],-1),q=e("p",null,"We created a (community maintained) script, that will automatically copy over the schema, content, files, users, and roles from an existing v8 instance to a new v9 instance. This is the most hands-off approach to moving from a v8 to a v9 instance, and is the recommended way of migrating your v8 instance.",-1),N=e("div",{class:"tip hint"},[e("p",null,[t("The script, and instructions on how to run it, can be found on the"),e("br"),e("a",{href:"https://github.com/directus-community/migration-tool",target:"_blank",rel:"noopener noreferrer"},[e("code",null,"directus-community/migration-tool")]),t(" repo.")])],-1),O=e("p",null,"This tool will copy over:",-1),C=e("ul",null,[e("li",null,"Schema (collections / fields)"),e("li",null,"Files (including file contents)"),e("li",null,"User data (eg all items in all collections)"),e("li",null,"Roles"),e("li",null,"Users")],-1),E=e("p",null,[t("Due to significant differences in data structure between versions, this tool will "),e("strong",null,"NOT"),t(" copy over:")],-1),L=e("ul",null,[e("li",null,"Interface/display configurations"),e("li",null,"Permissions"),e("li",null,"Activity / revisions")],-1),W=e("h2",{id:"manual-database-export%2Fimport"},[t("Manual Database Export/Import "),e("a",{class:"header-anchor",href:"#manual-database-export%2Fimport"},"#")],-1),Q=e("div",{class:"warning hint"},[e("div",{class:"hint-title"},"Automated"),e("p",null,"We highly recommend using the automated migration tool mentioned above. If that\u2019s not possible, you can perform the following steps to migrate your v8 instance.")],-1),R=e("p",null,"Directus v9 is a breaking change coming from v8 (hence the major version bump), so you won\u2019t be able to just use your existing v8 database and run v9 on top of it. However, due to the database-mirroring approach of Directus, it\u2019s fairly straightforward to migrate your content from v8 to v9.",-1),V=e("h4",{id:"1)-setup-a-fresh-v9-instance"},[t("1) Setup a Fresh v9 Instance "),e("a",{class:"header-anchor",href:"#1)-setup-a-fresh-v9-instance"},"#")],-1),z=e("p",null,"By installing Directus \u201Cfresh\u201D, you\u2019re ensured your system tables are up-to-date and ready to go.",-1),H=e("h4",{id:"2)-migrate-your-data"},[t("2) Migrate your Data "),e("a",{class:"header-anchor",href:"#2)-migrate-your-data"},"#")],-1),X=e("p",null,[t("Using a tool like "),e("a",{href:"http://sequelpro.com",target:"_blank",rel:"noopener noreferrer"},"Sequel Pro"),t(" or "),e("a",{href:"https://tableplus.com",target:"_blank",rel:"noopener noreferrer"},"TablePlus"),t(", export your v8 user-tables and import them into your v9 database.")],-1),G=e("p",null,"Directus v9 will automatically recognize your tables, and you\u2019ll be ready to get started in v9.",-1),J=e("p",null,[e("strong",null,"Note:"),t(" If you have references to users and files, make sure to update them to the new UUID format.")],-1),K=e("h4",{id:"3)-configure-directus"},[t("3) Configure Directus "),e("a",{class:"header-anchor",href:"#3)-configure-directus"},"#")],-1),Y=e("p",null,"Once the tables are in, you can start configuring the details of the schema. This includes choosing the correct interfaces, displays, and their options for your fields.",-1),Z=e("p",null,"This would also be a good time to reconfigure your permissions, to ensure they are accurate.",-1),$=e("h2",{id:"breaking-changes"},[t("Breaking changes "),e("a",{class:"header-anchor",href:"#breaking-changes"},"#")],-1),ee=t("Filter operators"),te=t(" have changed, now they are preceded with an underscore eg: "),oe=e("code",null,"/items/users?filter[comments.thread.title][like]=Directus",-1),ne=t(" is now "),ae=e("code",null,"/items/users?filter[comments][thread][title][_like]=Directus",-1),ce={setup(se,{expose:i}){const n={title:"Upgrades & Migrations",modularExtension:!1};return i({frontmatter:n}),(re,ie)=>{const a=s("router-link"),l=s("DocsWrapper");return c(),u(l,{frontmatter:n},{default:o(()=>[e("div",d,[e("blockquote",null,[e("p",null,[h,p,g,r(a,{to:"/docs/getting-started/glossary/#projects"},{default:o(()=>[m]),_:1}),_])]),f,y,b,v,w,k,j,D,x,B,P,I,S,T,A,F,M,U,q,N,O,C,E,L,W,Q,R,V,z,H,X,G,J,K,Y,Z,$,e("ul",null,[e("li",null,[r(a,{to:"/docs/configuration/filter-rules/"},{default:o(()=>[ee]),_:1}),te,oe,ne,ae])])])]),_:1})}}};export{ce as default};
1
+ import{w as s,y as c,z as u,A as o,E as e,C as r,W as t}from"./vendor.ef99adf3.js";const d={class:"markdown-body"},h=t("A Project is a complete instance of Directus, including its "),p=e("strong",null,"Database",-1),g=t(", config file, asset storage, and any custom extensions. "),m=t("Learn more about Projects"),_=t("."),f=e("h2",{id:"upgrading-%2F-updating-a-project"},[t("Upgrading / Updating a Project "),e("a",{class:"header-anchor",href:"#upgrading-%2F-updating-a-project"},"#")],-1),y=e("ol",null,[e("li",null,"Backup your project"),e("li",null,[t("Run "),e("code",null,"npm update")]),e("li",null,[t("Run "),e("code",null,"npx directus database migrate:latest"),t(" to update the DB")])],-1),b=e("h2",{id:"backing-up-a-project"},[t("Backing-up a Project "),e("a",{class:"header-anchor",href:"#backing-up-a-project"},"#")],-1),v=e("ol",null,[e("li",null,[t("Make a copy of the "),e("strong",null,"files within each storage adapter"),t(", and store them in a safe place")]),e("li",null,[t("Make a copy of the "),e("strong",null,"Env file"),t(" ("),e("code",null,"/api/.env"),t("), and store it in a safe place")]),e("li",null,"Create a database dump")],-1),w=e("h2",{id:"migrating-a-project"},[t("Migrating a Project "),e("a",{class:"header-anchor",href:"#migrating-a-project"},"#")],-1),k=e("p",null,"Directus doesn\u2019t rely on anything besides the database for it\u2019s operation. Therefore, migrating your Directus project can be done by moving the whole database to a new location using a database dump.",-1),j=e("div",{class:"tip hint"},[e("div",{class:"hint-title"},"File Storage"),e("p",null,"If you have files uploaded, make sure to copy those over as well, or use the same storage location in the new location of Directus.")],-1),D=e("h2",{id:"downgrading-a-project"},[t("Downgrading a Project "),e("a",{class:"header-anchor",href:"#downgrading-a-project"},"#")],-1),x=e("p",null,[t("Directus can be reverted to an earlier version by going to your terminal, navigating into your project folder and running "),e("code",null,"npm install directus@<version>"),t(".")],-1),B=e("p",null,[t("If you ran any database migrations for a newer version, you can revert those by running "),e("code",null,"npx directus database migrate:down")],-1),P=e("h2",{id:"deleting-a-project"},[t("Deleting a Project "),e("a",{class:"header-anchor",href:"#deleting-a-project"},"#")],-1),I=e("ol",null,[e("li",null,[t("Optional: "),e("strong",null,"Backup any local files"),t(" stored within the project\u2019s root directory")]),e("li",null,[t("Optional: "),e("strong",null,"Backup any custom code and extensions"),t(" within the project\u2019s root directory")]),e("li",null,[t("Optional: "),e("strong",null,"Backup your entire database"),t(", only system tables, or only project tables")]),e("li",null,[e("strong",null,"Delete the project\u2019s root directory"),t(" from the server")]),e("li",null,[e("strong",null,"Delete all Directus system tables"),t(" ("),e("code",null,"directus_*"),t(") from the database")])],-1),T=e("div",{class:"tip hint"},[e("div",{class:"hint-title"},"Pure SQL"),e("p",null,"After completing this process, you will be left with a pure SQL database, with no trace that Directus was ever installed. Any external services connecting to your database\u2019s project tables directly (eg: SQL queries) should continue working normally.")],-1),A=e("h2",{id:"migrating-from-v8"},[t("Migrating from v8 "),e("a",{class:"header-anchor",href:"#migrating-from-v8"},"#")],-1),S=e("p",null,"There are two ways to migrate from an existing Directus 8.X instance:",-1),F=e("ul",null,[e("li",null,[e("a",{href:"#automated-script"},"Automated Script"),t(" (recommended)")]),e("li",null,[e("a",{href:"#manual-database-export-import"},"Manual Database Export/Import")])],-1),M=e("p",null,[t("Be sure to check the "),e("a",{href:"#breaking-changes"},"Breaking changes"),t(" if you are consuming the API from an application.")],-1),U=e("h2",{id:"automated-script"},[t("Automated Script "),e("a",{class:"header-anchor",href:"#automated-script"},"#")],-1),C=e("p",null,"We created a (community maintained) script, that will automatically copy over the schema, content, files, users, and roles from an existing v8 instance to a new v9 instance. This is the most hands-off approach to moving from a v8 to a v9 instance, and is the recommended way of migrating your v8 instance.",-1),E=e("div",{class:"tip hint"},[e("p",null,[t("The script, and instructions on how to run it, can be found on the"),e("br"),e("a",{href:"https://github.com/directus-community/migration-tool",target:"_blank",rel:"noopener noreferrer"},[e("code",null,"directus-community/migration-tool")]),t(" repo.")])],-1),N=e("p",null,"This tool will copy over:",-1),O=e("ul",null,[e("li",null,"Schema (collections / fields)"),e("li",null,"Files (including file contents)"),e("li",null,"User data (eg all items in all collections)"),e("li",null,"Roles"),e("li",null,"Users")],-1),W=e("p",null,[t("Due to significant differences in data structure between versions, this tool will "),e("strong",null,"NOT"),t(" copy over:")],-1),q=e("ul",null,[e("li",null,"Interface/display configurations"),e("li",null,"Permissions"),e("li",null,"Activity / revisions")],-1),L=e("h2",{id:"manual-database-export%2Fimport"},[t("Manual Database Export/Import "),e("a",{class:"header-anchor",href:"#manual-database-export%2Fimport"},"#")],-1),Q=e("div",{class:"warning hint"},[e("div",{class:"hint-title"},"Automated"),e("p",null,"We highly recommend using the automated migration tool mentioned above. If that\u2019s not possible, you can perform the following steps to migrate your v8 instance.")],-1),R=e("p",null,"Directus v9 is a breaking change coming from v8 (hence the major version bump), so you won\u2019t be able to just use your existing v8 database and run v9 on top of it. However, due to the database-mirroring approach of Directus, it\u2019s fairly straightforward to migrate your content from v8 to v9.",-1),V=e("h4",{id:"1)-setup-a-fresh-v9-instance"},[t("1) Setup a Fresh v9 Instance "),e("a",{class:"header-anchor",href:"#1)-setup-a-fresh-v9-instance"},"#")],-1),z=e("p",null,"By installing Directus \u201Cfresh\u201D, you\u2019re ensured your system tables are up-to-date and ready to go.",-1),H=e("h4",{id:"2)-migrate-your-data"},[t("2) Migrate your Data "),e("a",{class:"header-anchor",href:"#2)-migrate-your-data"},"#")],-1),X=e("p",null,[t("Using a tool like "),e("a",{href:"http://sequelpro.com",target:"_blank",rel:"noopener noreferrer"},"Sequel Pro"),t(" or "),e("a",{href:"https://tableplus.com",target:"_blank",rel:"noopener noreferrer"},"TablePlus"),t(", export your v8 user-tables and import them into your v9 database.")],-1),G=e("p",null,"Directus v9 will automatically recognize your tables, and you\u2019ll be ready to get started in v9.",-1),J=e("p",null,[e("strong",null,"Note:"),t(" If you have references to users and files, make sure to update them to the new UUID format.")],-1),K=e("h4",{id:"3)-configure-directus"},[t("3) Configure Directus "),e("a",{class:"header-anchor",href:"#3)-configure-directus"},"#")],-1),Y=e("p",null,"Once the tables are in, you can start configuring the details of the schema. This includes choosing the correct interfaces, displays, and their options for your fields.",-1),Z=e("p",null,"This would also be a good time to reconfigure your permissions, to ensure they are accurate.",-1),$=e("h2",{id:"breaking-changes"},[t("Breaking changes "),e("a",{class:"header-anchor",href:"#breaking-changes"},"#")],-1),ee=t("Filter operators"),te=t(" have changed, now they are preceded with an underscore eg: "),oe=e("code",null,"/items/users?filter[comments.thread.title][like]=Directus",-1),ne=t(" is now "),ae=e("code",null,"/items/users?filter[comments][thread][title][_like]=Directus",-1),ce={setup(se,{expose:i}){const n={title:"Upgrades & Migrations",modularExtension:!1};return i({frontmatter:n}),(re,ie)=>{const a=s("router-link"),l=s("DocsWrapper");return c(),u(l,{frontmatter:n},{default:o(()=>[e("div",d,[e("blockquote",null,[e("p",null,[h,p,g,r(a,{to:"/docs/getting-started/glossary/#projects"},{default:o(()=>[m]),_:1}),_])]),f,y,b,v,w,k,j,D,x,B,P,I,T,A,S,F,M,U,C,E,N,O,W,q,L,Q,R,V,z,H,X,G,J,K,Y,Z,$,e("ul",null,[e("li",null,[r(a,{to:"/docs/configuration/filter-rules/"},{default:o(()=>[ee]),_:1}),te,oe,ne,ae])])])]),_:1})}}};export{ce as default};
@@ -0,0 +1 @@
1
+ var G=Object.defineProperty,K=Object.defineProperties;var V=Object.getOwnPropertyDescriptors;var N=Object.getOwnPropertySymbols;var Y=Object.prototype.hasOwnProperty,Z=Object.prototype.propertyIsEnumerable;var R=(e,t,n)=>t in e?G(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,j=(e,t)=>{for(var n in t||(t={}))Y.call(t,n)&&R(e,n,t[n]);if(N)for(var n of N(t))Z.call(t,n)&&R(e,n,t[n]);return e},M=(e,t)=>K(e,V(t));import{L as P,r as F,v as c,l as A,D as ee,a7 as y,aj as q,t as te,a3 as ne,a6 as le}from"./vendor.ef99adf3.js";function ge(e){return e}function Se(e){return e}function be(e){return e}function we(e){return e}function Fe(e){return e}function Ee(e){return e}function Te(e){return e}function $e(e){if(e===null)return[];const t=/{{(.*?)}}/g;let n=e.match(t);return Array.isArray(n)?(n=n.map(i=>i.replace(/{{/g,"").replace(/}}/g,"").trim()),n):[]}function Ce(e){var t,n,i;const{relation:l,collection:a,field:r}=e;return l?l.collection===a&&l.field===r&&((t=l.meta)===null||t===void 0?void 0:t.one_collection_field)&&((n=l.meta)===null||n===void 0?void 0:n.one_allowed_collections)?"m2a":l.collection===a&&l.field===r?"m2o":l.related_collection===a&&((i=l.meta)===null||i===void 0?void 0:i.one_field)===r?"o2m":null:null}const ue="stores",oe="api",ie="extensions";function ae(e,t,n){const i=e[t],l=e.length,a=t-n;if(i===void 0)return e;if(a>0)return[...e.slice(0,n),i,...e.slice(n,t),...e.slice(t+1,l)];if(a<0){const r=n+1;return[...e.slice(0,t),...e.slice(t+1,r),i,...e.slice(r,l)]}return e}function re(){const e=P(ue);if(!e)throw new Error("[useStores]: The stores could not be found.");return e}function se(){const e=P(oe);if(!e)throw new Error("[useApi]: The api could not be found.");return e}function ce(){const e=P(ie);if(!e)throw new Error("[useExtensions]: The extensions could not be found.");return e}function de(e){const{useCollectionsStore:t,useFieldsStore:n}=re(),i=t(),l=n(),a=typeof e=="string"?F(e):e,r=c(()=>i.collections.find(({collection:u})=>u===a.value)||null),h=c(()=>a.value?l.getFieldsForCollectionSorted(a.value):[]),T=c(()=>{var u;if(!h.value)return{};const o={};for(const p of h.value)((u=p.schema)===null||u===void 0?void 0:u.default_value)&&(o[p.field]=p.schema.default_value);return o}),$=c(()=>h.value.find(u=>{var o;return u.collection===a.value&&((o=u.schema)===null||o===void 0?void 0:o.is_primary_key)===!0})||null),m=c(()=>{var u;return((u=h.value)===null||u===void 0?void 0:u.find(o=>{var p;return(((p=o.meta)===null||p===void 0?void 0:p.special)||[]).includes("user_created")}))||null}),C=c(()=>{var u,o;return((o=(u=r.value)===null||u===void 0?void 0:u.meta)===null||o===void 0?void 0:o.sort_field)||null}),_=c(()=>{var u,o;return((o=(u=r.value)===null||u===void 0?void 0:u.meta)===null||o===void 0?void 0:o.singleton)===!0}),E=c(()=>!r.value||!r.value.meta?null:r.value.meta.accountability);return{info:r,fields:h,defaults:T,primaryKeyField:$,userCreatedField:m,sortField:C,isSingleton:_,accountabilityScope:E}}function Oe(e,t,n=!0){const i=se(),{primaryKeyField:l}=de(e),{fields:a,limit:r,sort:h,search:T,filter:$,page:m}=t,C=c(()=>e.value?e.value.startsWith("directus_")?`/${e.value.substring(9)}`:`/items/${e.value}`:null),_=F([]),E=F(!1),u=F(null),o=F(null),p=F(null),J=c(()=>{var d,f;return o.value===null||o.value<((d=y(r))!==null&&d!==void 0?d:100)?1:Math.ceil(o.value/((f=y(r))!==null&&f!==void 0?f:100))});let S=null,b=null;const W=A.exports.throttle(x,500);return n&&W(),ee([e,r,h,T,$,a,m],async(d,f)=>{if(A.exports.isEqual(d,f))return;const[v,s,g,w,I,O,pe]=d,[L,Q,X,H,z,me,_e]=f;!v||!t||((!A.exports.isEqual(I,z)||!A.exports.isEqual(g,X)||s!==Q||w!==H)&&L&&(m.value=1),v!==L&&U(),W())},{deep:!0,immediate:!0}),{itemCount:o,totalCount:p,items:_,totalPages:J,loading:E,error:u,changeManualSort:D,getItems:x};async function x(){var d,f;if(!C.value)return;S==null||S.cancel(),S=null,u.value=null,b&&clearTimeout(b),b=setTimeout(()=>{E.value=!0},150);let v=[...(d=y(a))!==null&&d!==void 0?d:[]];!((f=y(a))===null||f===void 0?void 0:f.includes("*"))&&l.value&&v.includes(l.value.field)===!1&&v.push(l.value.field),v=v.filter(s=>s.startsWith("$")===!1);try{S=q.CancelToken.source();const s=await i.get(C.value,{params:{limit:y(r),fields:v,sort:y(h),page:y(m),search:y(T),filter:y($),meta:["filter_count","total_count"]},cancelToken:S.token});let g=s.data.data;e.value==="directus_files"&&(g=g.map(w=>M(j({},w),{$thumbnail:w}))),_.value=g,p.value=s.data.meta.total_count,o.value=s.data.meta.filter_count,m&&g.length===0&&(m==null?void 0:m.value)!==1&&(m.value=1)}catch(s){q.isCancel(s)||(u.value=s)}finally{b&&(clearTimeout(b),b=null),E.value=!1}}function U(){_.value=[],p.value=null,o.value=null}async function D({item:d,to:f}){var v;const s=(v=l.value)===null||v===void 0?void 0:v.field;if(!s)return;const g=_.value.findIndex(O=>O[s]===d),w=_.value.findIndex(O=>O[s]===f);_.value=ae(_.value,g,w);const I=c(()=>`/utils/sort/${e.value}`);await i.post(I.value,{item:d,to:f})}}const k="wrapper",B=["selection","layoutOptions","layoutQuery"];function fe(e){return B.includes(e)}function ve(e){return te({name:`${e.id}-${k}`,props:{collection:{type:String,required:!0},selection:{type:Array,default:()=>[]},layoutOptions:{type:Object,default:()=>({})},layoutQuery:{type:Object,default:()=>({})},filter:{type:Object,default:null},filterUser:{type:Object,default:null},filterSystem:{type:Object,default:null},search:{type:String,default:null},showSelect:{type:String,default:"multiple"},selectMode:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},resetPreset:{type:Function,default:null},clearFilters:{type:Function,default:null}},emits:B.map(t=>`update:${t}`),setup(t,{emit:n}){const i=ne(j(j({},e.setup(t,{emit:n})),le(t)));for(const l in i)i[`onUpdate:${l}`]=a=>{fe(l)?n(`update:${l}`,a):Object.keys(t).includes(l)||(i[l]=a)};return{state:i}},render(t){return t.$slots.default!==void 0?t.$slots.default({layoutState:t.state}):null}})}function je(e){const{layouts:t}=ce(),n=c(()=>t.value.map(l=>ve(l)));return{layoutWrapper:c(()=>{const l=n.value.find(a=>a.name===`${e.value}-${k}`);return l===void 0?n.value.find(a=>a.name===`tabular-${k}`):l})}}function Ae(e,t,n){return c({get(){return e[t]},set(i){n(`update:${t}`,i)}})}export{oe as A,ie as E,ue as S,je as a,de as b,Ce as c,we as d,Te as e,Se as f,$e as g,ge as h,be as i,Oe as j,Fe as k,Ee as l,re as m,se as n,ce as o,Ae as u};
@@ -0,0 +1 @@
1
+ import{w as n,y as c,z as d,A as o,E as e,C as i,W as s}from"./vendor.ef99adf3.js";const u={class:"markdown-body"},h=s("The User Directory is the management system for all Users within a Project. "),p=s("Users"),_=s(" are the individual accounts for logging in to the App. Each user belongs to a "),g=s("Role"),f=s(" which defines its "),m=s("Permissions"),y=s("."),b=e("p",null,[e("img",{src:"https://cdn.directus.io/docs/v9/app-guide/user-directory/user-directory-20220222A/user-directory-20220222A.webp",alt:"User Directory Page"})],-1),w=e("p",null,[e("div",{class:"table-of-contents"},[e("ul",null,[e("li",null,[e("a",{href:"#how-it-works"},"How it Works")]),e("li",null,[e("a",{href:"#access-permissions"},"Access Permissions")]),e("li",null,[e("a",{href:"#user-directory-page"},"User Directory Page")]),e("li",null,[e("a",{href:"#viewing-a-user"},"Viewing a User")]),e("li",null,[e("a",{href:"#user-profile-page"},"User Profile Page")]),e("li",null,[e("a",{href:"#more-help"},"More Help")])])])],-1),v=e("h2",{id:"how-it-works"},[s("How it Works "),e("a",{class:"header-anchor",href:"#how-it-works"},"#")],-1),A=s("This Module is a management system that enables one to view, invite, create, edit, and delete Users. In order to understand and use this Module effectively, you will need to understand "),U=s("Users, Roles, and Permissions"),D=s("."),S=e("h2",{id:"access-permissions"},[s("Access Permissions "),e("a",{class:"header-anchor",href:"#access-permissions"},"#")],-1),P=e("p",null,[s("The permissions configured for your Role will determine what you can see and do inside the User Directory. Roles with "),e("em",null,"Admin Access"),s(" enabled are created with full Permissions. Roles with "),e("em",null,"App Access"),s(" enabled are created with some limited Permissions configured by default. Roles that have neither "),e("em",null,"Admin"),s(" nor "),e("em",null,"App Access"),s(" enabled (such as the built-in "),e("em",null,"Public"),s(" Role) are created with no access permissions "),e("em",null,"(to anything)"),s(" by default. Default permissions can be fully configured in "),e("strong",null,"Settings > Roles & Permissions"),s(".")],-1),T=e("h2",{id:"user-directory-page"},[s("User Directory Page "),e("a",{class:"header-anchor",href:"#user-directory-page"},"#")],-1),k=s("Lists all Users in a Project, with a navigation that allows quick access to Users by Role. This page has the same functionality as other "),L=s("Content Pages"),R=s("."),I=e("video",{title:"User Directory Options",autoplay:"",muted:"",loop:"",controls:""},[e("source",{src:"https://cdn.directus.io/docs/v9/app-guide/user-directory/user-directory-20220222A/user-directory-options-20220222A.mp4"}),e("p",null,[s(" Your browser is not displaying the video for some reason. Here's a "),e("a",{href:"https://cdn.directus.io/docs/v9/app-guide/user-directory/user-directory-20220222A/user-directory-options-20220222A.mp4"},"link to the video"),s(" instead. ")])],-1),x=e("li",null,[e("strong",null,"Select All"),s(" \u2013 Selects all Users currently in queue.")],-1),C=e("li",null,[e("strong",null,"Card Size"),s(" \u2013 Toggles size of User Displays.")],-1),F=e("li",null,[e("strong",null,"Sort Field"),s(" \u2013 Selects Field used to Users by.")],-1),O=e("li",null,[e("strong",null,"Sort Direction"),s(" \u2013 Toggles ascending & descending sort order.")],-1),E=e("li",null,[e("strong",null,"Search"),s(" \u2013 Enables classic type-based searching.")],-1),M=e("li",null,[e("strong",null,"Filter"),s(" \u2013 Enables advanced query-based search.")],-1),H=e("span",{mi:"",btn:"",sec:""},"person_add",-1),z=s(" \u2013 "),N=s("Invite people"),j=s(" to become Users via email."),q=e("span",{mi:"",btn:""},"add",-1),V=s(" \u2013 "),W=s("Create User"),B=s(" manually."),K=e("p",null,[e("em",null,"The following are only visible once Users are selected.")],-1),Y=e("ul",null,[e("li",null,[e("span",{mi:"",btn:"",warn:""},"edit"),s(" \u2013 Opens a User Details page to apply a single edit across multiple Users.")]),e("li",null,[e("strong",null,[e("span",{mi:"",btn:"",dngr:""},"delete")]),s(" \u2013 Deletes one or more Users.")])],-1),G=e("h3",{id:"layout-options"},[s("Layout Options "),e("a",{class:"header-anchor",href:"#layout-options"},"#")],-1),J=e("p",null,[s("The "),e("strong",null,"Sidebar > Layout Options"),s(),e("em",null,[s("(denoted by "),e("span",{mi:"",icon:""},"layers"),s(" when Sidebar is minimized)")]),s(" allows you to adjust how Users are displayed on the User Directory.")],-1),Q=e("p",null,[e("img",{src:"https://cdn.directus.io/docs/v9/app-guide/user-directory/user-directory-20220222A/user-directory-layout-options-20220222A.webp",alt:"User Directory Layout Options"})],-1),X=e("h4",{id:"layout"},[s("Layout "),e("a",{class:"header-anchor",href:"#layout"},"#")],-1),Z=e("ul",null,[e("li",null,[e("strong",null,"Layout"),s(" \u2013 Toggles User Display from a dropdown menu.")]),e("li",null,[e("strong",null,"Image Source"),s(" \u2013 Selects the image Field for the User Display.")]),e("li",null,[e("strong",null,"Title"),s(" \u2013 Sets a title for the User via Display Templates.")]),e("li",null,[e("strong",null,"Subtitle"),s(" \u2013 Sets a subtitle for the User via Display Templates.")])],-1),$=e("h4",{id:"layout-setup"},[s("Layout Setup "),e("a",{class:"header-anchor",href:"#layout-setup"},"#")],-1),ee=e("ul",null,[e("li",null,[e("strong",null,"Image Fit"),s(" \u2013 Displays the image as cropped or contained.")]),e("li",null,[e("strong",null,"Fallback Icon"),s(" \u2013 Sets a default icon for Users that have no image set.")])],-1),se=e("h2",{id:"viewing-a-user"},[s("Viewing a User "),e("a",{class:"header-anchor",href:"#viewing-a-user"},"#")],-1),oe=e("video",{autoplay:"",muted:"",loop:"",controls:""},[e("source",{src:"https://cdn.directus.io/docs/v9/app-guide/user-directory/user-directory-20220222A/viewing-a-user-20220222A.mp4"}),e("p",null,[s(" Your browser is not displaying the video for some reason. Here's a "),e("a",{href:"https://cdn.directus.io/docs/v9/app-guide/user-directory/user-directory-20220222A/viewing-a-user-20220222A.mp4"},"link to the video"),s(" instead. ")])],-1),te=e("p",null,"Users are referenced throughout the app, often for accountability purposes. Hovering over a User in this context will provide a popover with basic information. Clicking that popover will navigate you to a view of that User\u2019s profile page.",-1),ie=e("h2",{id:"user-profile-page"},[s("User Profile Page "),e("a",{class:"header-anchor",href:"#user-profile-page"},"#")],-1),re=e("p",null,[e("img",{src:"https://cdn.directus.io/docs/v9/app-guide/user-directory/user-directory-20220222A/user-profile-20220222A.webp",alt:"The User Page"})],-1),ne=s("A User\u2019s profile page can be accessed from the User Directory or by clicking the User Menu at the bottom of the "),le=s("Module Bar"),ae=s(". The profile page has the same features and functionality as the "),ce=s("Item Page"),de=s(". Administrators can customize the Fields on this page, but the following are available by default."),ue=e("h3",{id:"user-details"},[s("User Details "),e("a",{class:"header-anchor",href:"#user-details"},"#")],-1),he=e("p",null,[e("img",{src:"https://cdn.directus.io/docs/v9/app-guide/user-directory/user-directory-20220222A/user-details-20220222A.webp",alt:"User Details"})],-1),pe=e("ul",null,[e("li",null,[e("strong",null,"First Name"),s(" \u2013 The given name.")]),e("li",null,[e("strong",null,"Last Name"),s(" \u2013 The family/surname.")]),e("li",null,[e("strong",null,"Email"),s(" \u2013 A unique email address.")]),e("li",null,[e("strong",null,"Password"),s(" \u2013 A hashed system password.")]),e("li",null,[e("strong",null,"Avatar"),s(" \u2013 An image to represent the User.")]),e("li",null,[e("strong",null,"Location"),s(" \u2013 The city, country, office, or branch name.")]),e("li",null,[e("strong",null,"Title"),s(" \u2013 The professional staff title.")]),e("li",null,[e("strong",null,"Description"),s(" \u2013 A freeform text description.")]),e("li",null,[e("strong",null,"Tags"),s(" \u2013 Keywords for search-ability.")])],-1),_e=e("h3",{id:"user-preferences"},[s("User Preferences "),e("a",{class:"header-anchor",href:"#user-preferences"},"#")],-1),ge=e("p",null,[e("img",{src:"https://cdn.directus.io/docs/v9/app-guide/user-directory/user-directory-20220222A/user-preferences-20220222A.webp",alt:"User Preferences"})],-1),fe=e("ul",null,[e("li",null,[e("strong",null,"Language"),s(" \u2013 The preferred App language/locale.")]),e("li",null,[e("strong",null,"Theme"),s(" \u2013 Light or Dark mode (or based on system preferences).")]),e("li",null,[e("strong",null,"Multi-Factor Authentication"),s(" \u2013 Configuration for MFA.")]),e("li",null,[e("strong",null,"Email Notifications"),s(" \u2013 Receive emails for notifications.")])],-1),me=e("h3",{id:"admin-options"},[s("Admin Options "),e("a",{class:"header-anchor",href:"#admin-options"},"#")],-1),ye=e("p",null,[e("img",{src:"https://cdn.directus.io/docs/v9/app-guide/user-directory/user-directory-20220222A/admin-options-20220222A.webp",alt:"Admin Options"})],-1),be=e("li",null,[e("strong",null,"Status"),s(" \u2013 Sets User status as Draft, Invited, Active, Suspended, Archived.")],-1),we=e("li",null,[e("strong",null,"Role"),s(" \u2013 Defines the User\u2019s Role.")],-1),ve=e("li",null,[e("strong",null,"Token"),s(" \u2013 Accepts any string as User access token. At least 19-20 characters recommended, but we give you the tools and flexibility to set this according to you own internal security policies.")],-1),Ae=e("strong",null,"Provider",-1),Ue=s(" \u2013 "),De=e("em",null,"read-only:",-1),Se=s(" SSO provider associated with User. See our built-in "),Pe=s("SSO options"),Te=s("."),ke=e("li",null,[e("strong",null,"External Identifier"),s(" \u2013 Displays external identifier generated by SSO provider.")],-1),Le=e("h3",{id:"read-only-info"},[s("Read-only Info "),e("a",{class:"header-anchor",href:"#read-only-info"},"#")],-1),Re=e("p",null,[e("img",{src:"https://cdn.directus.io/docs/v9/app-guide/user-directory/user-directory-20220222A/user-profile-sidebar-information-20220309A.webp",alt:"User Profile Sidebar Information"})],-1),Ie=e("p",null,[s("Information in the Sidebar "),e("em",null,[s("(denoted by "),e("span",{mi:"",icon:"",dark:""},"info"),s(" when Sidebar is minimized)")]),s(" also includes the following read-only details:")],-1),xe=e("ul",null,[e("li",null,[e("strong",null,"User Key"),s(" \u2013 The Primary Key of the Usser.")]),e("li",null,[e("strong",null,"Last Page"),s(" \u2013 The last App page accessed by the user.")]),e("li",null,[e("strong",null,"Last Access"),s(" \u2013 The timestamp of the User\u2019s last App or API action.")])],-1),Ce=e("h2",{id:"more-help"},[s("More Help "),e("a",{class:"header-anchor",href:"#more-help"},"#")],-1),Fe=e("p",null,[s("Looking for technical support for your non-enterprise project? Chat with thousands of engineers within our growing "),e("a",{href:"https://discord.com/invite/directus",target:"_blank",rel:"noopener noreferrer"},"Community on Discord")],-1),ze={setup(Oe,{expose:l}){const r={title:"User Directory",modularExtension:!1};return l({frontmatter:r}),(Ee,Me)=>{const t=n("router-link"),a=n("DocsWrapper");return c(),d(a,{frontmatter:r},{default:o(()=>[e("div",u,[e("blockquote",null,[e("p",null,[h,i(t,{to:"/docs/getting-started/glossary#users"},{default:o(()=>[p]),_:1}),_,i(t,{to:"/docs/getting-started/glossary#roles"},{default:o(()=>[g]),_:1}),f,i(t,{to:"/docs/getting-started/glossary#permissions"},{default:o(()=>[m]),_:1}),y])]),b,w,v,e("p",null,[A,i(t,{to:"/docs/configuration/users-roles-permissions.md"},{default:o(()=>[U]),_:1}),D]),S,P,T,e("p",null,[k,i(t,{to:"/docs/app/content-collections/"},{default:o(()=>[L]),_:1}),R]),I,e("ul",null,[x,C,F,O,E,M,e("li",null,[H,z,i(t,{to:"/docs/configuration/users-roles-permissions/#inviting-a-user"},{default:o(()=>[N]),_:1}),j]),e("li",null,[q,V,i(t,{to:"/docs/configuration/users-roles-permissions/#creating-a-user"},{default:o(()=>[W]),_:1}),B])]),K,Y,G,J,Q,X,Z,$,ee,se,oe,te,ie,re,e("p",null,[ne,i(t,{to:"/docs/app/overview/#_1-module-bar"},{default:o(()=>[le]),_:1}),ae,i(t,{to:"/docs/app/content-items/"},{default:o(()=>[ce]),_:1}),de]),ue,he,pe,_e,ge,fe,me,ye,e("ul",null,[be,we,ve,e("li",null,[Ae,Ue,De,Se,i(t,{to:"/docs/configuration/sso"},{default:o(()=>[Pe]),_:1}),Te]),ke]),Le,Re,Ie,xe,Ce,Fe])]),_:1})}}};export{ze as default};
@@ -1 +1 @@
1
- import{r as o,p as c,q as u,w as t,z as e,t as l,S as s}from"./vendor.546e1516.js";const d={class:"markdown-body"},h=s("Users"),g=s(" are the individual accounts for authenticating into the API and App. Each user belongs to a "),_=s("Role"),p=s(" which defines its access "),f=s("Permissions"),m=s("."),v=e("p",null,[e("div",{class:"table-of-contents"},[e("ul",null,[e("li",null,[e("a",{href:"#creating-a-user"},"Creating a User")]),e("li",null,[e("a",{href:"#inviting-a-user"},"Inviting a User")]),e("li",null,[e("a",{href:"#configuring-a-user"},"Configuring a User")]),e("li",null,[e("a",{href:"#archiving-a-user"},"Archiving a User")]),e("li",null,[e("a",{href:"#deleting-a-user"},"Deleting a User")]),e("li",null,[e("a",{href:"#creating-a-role"},"Creating a Role")]),e("li",null,[e("a",{href:"#configuring-a-role"},"Configuring a Role")]),e("li",null,[e("a",{href:"#deleting-a-role"},"Deleting a Role")]),e("li",null,[e("a",{href:"#configuring-permissions"},"Configuring Permissions")]),e("li",null,[e("a",{href:"#configuring-workflows"},"Configuring Workflows")])])])],-1),b=e("h2",{id:"creating-a-user"},[s("Creating a User "),e("a",{class:"header-anchor",href:"#creating-a-user"},"#")],-1),y=e("ol",null,[e("li",null,[s("Navigate to the "),e("strong",null,"User Library")]),e("li",null,[s("Click "),e("span",{mi:"",btn:""},"add"),s(" in the header")]),e("li",null,[s("Enter an "),e("strong",null,"Email Address")]),e("li",null,[s("Optional: Complete the "),e("strong",null,"other user form fields")]),e("li",null,[s("Click "),e("span",{mi:"",btn:""},"check"),s(" to save the user.")])],-1),w=e("h2",{id:"inviting-a-user"},[s("Inviting a User "),e("a",{class:"header-anchor",href:"#inviting-a-user"},"#")],-1),A=e("ol",null,[e("li",null,[s("Navigate to the "),e("strong",null,"User Library")]),e("li",null,[s("Click "),e("span",{mi:"",btn:"",sec:""},"person_add"),s(" in the header")]),e("li",null,[s("Enter "),e("strong",null,"one or more email addresses"),s(", separated by new lines, in the modal")]),e("li",null,[s("Select the "),e("strong",null,"Role"),s(" you want to assign to the user(s)")]),e("li",null,[s("Click "),e("strong",null,"Invite")])],-1),k=e("p",null,"At this point the invited user(s) will receive an email with a link to the App where they set a password and enable their account.",-1),C=e("h2",{id:"configuring-a-user"},[s("Configuring a User "),e("a",{class:"header-anchor",href:"#configuring-a-user"},"#")],-1),P=e("li",null,[s("Navigate to the "),e("strong",null,"User Library")],-1),R=e("li",null,[e("strong",null,"Click on the user"),s(" you wish to manage")],-1),U=e("strong",null,"Complete the form",-1),I=s(" of "),D=s("User Fields"),T=e("p",null,"The User Detail is only editable by the current user and admins, and the following fields are only available to admins:",-1),F=e("li",null,[e("strong",null,"Status"),s(" \u2014 Determines if an account is able to access the platform or not. Only the "),e("code",null,"active"),s(" state is able to authenticate, all others are simply descriptive inactive states. "),e("ul",null,[e("li",null,[e("strong",null,"Draft"),s(" \u2014 An incomplete user; no App/API access")]),e("li",null,[e("strong",null,"Invited"),s(" \u2014 Has a pending invite to the project; no App/API access until accepted")]),e("li",null,[e("strong",null,"Active"),s(" \u2014 The only status that has proper access to the App and API")]),e("li",null,[e("strong",null,"Suspended"),s(" \u2014 A user that has been temporarily disabled; no App/API access")]),e("li",null,[e("strong",null,"Archived"),s(" \u2014 A soft-deleted user; no App/API access")])])],-1),N=e("li",null,[e("strong",null,"Role"),s(" \u2014 The user\u2019s role determines their permissions and access")],-1),S=e("strong",null,"Token",-1),x=s(" \u2014 A user\u2019s token is an alternate way to "),L=s("authenticate into the API"),E=s(" using a static string. When NULL, the token is disabled. When enabled, ensure that a secure string is used."),q=e("h2",{id:"archiving-a-user"},[s("Archiving a User "),e("a",{class:"header-anchor",href:"#archiving-a-user"},"#")],-1),W=e("ol",null,[e("li",null,[s("Navigate to the "),e("strong",null,"User Library")]),e("li",null,"Click the user you with to archive to go to their User Detail page"),e("li",null,[s("Click on "),e("span",{mi:"",btn:"",warn:""},"archive"),s(" in the header")]),e("li",null,[s("Confirm this decision by clicking "),e("strong",null,"Archive"),s(" in the dialog")])],-1),j=e("div",{class:"warning hint"},[e("div",{class:"hint-title"},"Disables Access"),e("p",null,[s("Archiving uses "),e("em",null,"soft-delete"),s(", therefore archived users are unable to access the App or API.")])],-1),V=e("h2",{id:"deleting-a-user"},[s("Deleting a User "),e("a",{class:"header-anchor",href:"#deleting-a-user"},"#")],-1),z=e("ol",null,[e("li",null,[s("Navigate to the "),e("strong",null,"User Library")]),e("li",null,"Select one or more users you wish to delete"),e("li",null,[s("Click on "),e("span",{mi:"",btn:"",dngr:""},"delete"),s(" in the header")]),e("li",null,[s("Confirm this decision by clicking "),e("strong",null,"Delete"),s(" in the dialog")])],-1),B=e("div",{class:"danger hint"},[e("div",{class:"hint-title"},"Irreversible Change"),e("p",null,"Unlike the soft-delete of archiving, this process is a hard-delete. Therefore, this action is permanent and can not be undone. Please proceed with caution.")],-1),M=e("h2",{id:"creating-a-role"},[s("Creating a Role "),e("a",{class:"header-anchor",href:"#creating-a-role"},"#")],-1),O=e("ol",null,[e("li",null,[s("Navigate to "),e("strong",null,[s("Settings "),e("span",{mi:"",icon:"",dark:""},"chevron_right"),s(" Roles & Permissions")])]),e("li",null,[s("Click "),e("span",{mi:"",btn:""},"add"),s(" in the header")]),e("li",null,[s("Enter a unique "),e("strong",null,"Role Name")]),e("li",null,[s("Enabling "),e("strong",null,"App Access"),s(" allows logging in to the App")]),e("li",null,[s("Enabling "),e("strong",null,"Admin Access"),s(" gives full permission to project data and Settings")]),e("li",null,[s("Click on "),e("strong",null,"Save"),s(" to save the role")])],-1),Y=e("h2",{id:"configuring-a-role"},[s("Configuring a Role "),e("a",{class:"header-anchor",href:"#configuring-a-role"},"#")],-1),G=e("ul",null,[e("li",null,[e("strong",null,"Permissions"),s(" \u2014 Defines the role\u2019s access permissions")]),e("li",null,[e("strong",null,"Role Name"),s(" \u2014 This is the name of the role")]),e("li",null,[e("strong",null,"Role Icon"),s(" \u2014 The icon used throughout the App when referencing this role")]),e("li",null,[e("strong",null,"Description"),s(" \u2014 A helpful note that explains the role\u2019s purpose")]),e("li",null,[e("strong",null,"App Access"),s(" \u2014 Allows logging in to the App")]),e("li",null,[e("strong",null,"Admin Access"),s(" \u2014 Gives full permission to project data and Settings")]),e("li",null,[e("strong",null,"IP Access"),s(" \u2014 An allow-list of IP addresses from which the platform can be accessed, empty allows all")]),e("li",null,[e("strong",null,"Require 2FA"),s(" \u2014 Forces all users within this role to use two-factor authentication")]),e("li",null,[e("strong",null,"Users in Role"),s(" \u2014 A list of all users within this role")])],-1),H=e("h2",{id:"deleting-a-role"},[s("Deleting a Role "),e("a",{class:"header-anchor",href:"#deleting-a-role"},"#")],-1),K=e("ol",null,[e("li",null,[s("Navigate to "),e("strong",null,[s("Settings "),e("span",{mi:"",icon:"",dark:""},"chevron_right"),s(" Roles & Permissions "),e("span",{mi:"",icon:"",dark:""},"chevron_right"),s(" [Role Name]")])]),e("li",null,[s("Click "),e("span",{mi:"",btn:"",dngr:""},"delete"),s(" in the header")]),e("li",null,[s("Confirm this decision by clicking "),e("strong",null,"Delete"),s(" in the dialog")])],-1),J={class:"warning hint"},Q=e("div",{class:"hint-title"},"Users in a Deleted Role",-1),X=s("If you delete a role that still has users in it, those users will be given a "),Z=e("code",null,"NULL",-1),$=s(" role, which denies their App access and limits them to the "),ee=s("Public Role"),se=s(" permissions. They can then be reassigned to a new role by an admin."),te=e("div",{class:"warning hint"},[e("div",{class:"hint-title"},"Last Admin"),e("p",null,"You must maintain at least one role/user with Admin Access so that you can still properly manage the project.")],-1),ne=e("div",{class:"warning hint"},[e("div",{class:"hint-title"},"Public Role"),e("p",null,"You can not delete the Public role, as it is part of the core platform. To disable it completely, simply turn off all Public access permissions.")],-1),le=e("h2",{id:"configuring-permissions"},[s("Configuring Permissions "),e("a",{class:"header-anchor",href:"#configuring-permissions"},"#")],-1),ie=e("p",null,"Directus possesses an extremely granular, yet easy to configure, permissions system. When creating a new role, permissions are disabled for all project collections by default \u2014 allowing you to give explicit access to only what is required. Individual permissions are applied to the role, and each is scoped to a specific collection and CRUD action (create, read, update, delete).",-1),oe=e("div",{class:"warning hint"},[e("div",{class:"hint-title"},"Saves Automatically"),e("p",null,"Every change made to the permissions of a role is saved automatically and instantly.")],-1),ae=e("div",{class:"warning hint"},[e("div",{class:"hint-title"},"Admin Roles"),e("p",null,[s("If a role is set to "),e("strong",null,"Admin Access"),s(" then it is granted complete access to the platform, and therefore the permission configuration field is disabled.")])],-1),re=e("ol",null,[e("li",null,[s("Navigate to "),e("strong",null,[s("Settings "),e("span",{mi:"",icon:"",dark:""},"chevron_right"),s(" Roles & Permissions "),e("span",{mi:"",icon:"",dark:""},"chevron_right"),s(" [Role Name]")])]),e("li",null,[s("Scroll to the "),e("strong",null,"Permissions"),s(" section")]),e("li",null,[e("strong",null,"Click the icon"),s(" for the collection (row) and action (column) you want to set")]),e("li",null,[s("Choose the desired permission level: "),e("span",{mi:"",icon:""},"check"),s(),e("strong",null,"All Access"),s(", "),e("span",{mi:"",icon:""},"block"),s(),e("strong",null,"No Access"),s(", or "),e("span",{mi:"",icon:""},"rule"),s(),e("strong",null,"Use Custom")])],-1),ce=e("p",null,[e("strong",null,[s("If you selected \u201C"),e("span",{mi:"",icon:""},"check"),s(" All Access\u201D or \u201C"),e("span",{mi:"",icon:""},"block"),s(" No Access\u201D then setup is complete.")]),s(" If you chose to customize permissions then continue with the appropriate guide below based on the relevant "),e("em",null,"action"),s(".")],-1),ue=e("h3",{id:"create-(custom-access)"},[s("Create (Custom Access) "),e("a",{class:"header-anchor",href:"#create-(custom-access)"},"#")],-1),de=e("ol",{start:"5"},[e("li",null,[e("strong",null,"Field Permissions"),s(" control which fields accept a value on create. Fields are individually toggled.")]),e("li",null,[e("strong",null,"Field Validation"),s(" define the rules for field values on create")]),e("li",null,[e("strong",null,"Field Presets"),s(" control the field defaults when creating an item")])],-1),he=e("h3",{id:"read-(custom-access)"},[s("Read (Custom Access) "),e("a",{class:"header-anchor",href:"#read-(custom-access)"},"#")],-1),ge={start:"5"},_e=e("strong",null,"Item Permissions",-1),pe=s(" control which items can be read, as defined by the "),fe=s("Filter Rules"),me=s(" entered."),ve=e("li",null,[e("strong",null,"Field Permissions"),s(" control which fields can be read. Fields are individually toggled.")],-1),be=e("div",{class:"warning hint"},[e("div",{class:"hint-title"},"Read Field Permissions"),e("p",null,[s("The Directus App always requires read access to the Primary Key field (eg: "),e("code",null,"id"),s(") so it can uniquely identify items. Also, if a Collection has \u201CArchive\u201D or \u201CSort\u201D fields configured, those fields will also need read access to use the App\u2019s soft-delete and manual sorting features.")])],-1),ye=e("h3",{id:"update-(custom-access)"},[s("Update (Custom Access) "),e("a",{class:"header-anchor",href:"#update-(custom-access)"},"#")],-1),we={start:"5"},Ae=e("strong",null,"Item Permissions",-1),ke=s(" control which items can be updated, as defined by "),Ce=s("Filter Rules"),Pe=s("."),Re=e("li",null,[e("strong",null,"Field Permissions"),s(" control which fields can be updated. Fields are individually toggled.")],-1),Ue=e("strong",null,"Field Validation",-1),Ie=s(" define the rules for field values on update, as defined by "),De=s("Filter Rules"),Te=s("."),Fe=e("li",null,[e("strong",null,"Field Presets"),s(" control the field defaults when updating an item")],-1),Ne=e("h3",{id:"delete-(custom-access)"},[s("Delete (Custom Access) "),e("a",{class:"header-anchor",href:"#delete-(custom-access)"},"#")],-1),Se={start:"5"},xe=e("strong",null,"Item Permissions",-1),Le=s(" control which items can be deleted, as defined by the "),Ee=s("Filter Rules"),qe=s(" entered."),We=e("hr",null,null,-1),je=e("h3",{id:"configuring-public-permissions"},[s("Configuring Public Permissions "),e("a",{class:"header-anchor",href:"#configuring-public-permissions"},"#")],-1),Ve=e("p",null,"The Public permissions control what project data is accessible without authentication. This is managed via the Public \u201Crole\u201D, which is included in the system by default and can not be deleted.",-1),ze=e("div",{class:"warning hint"},[e("div",{class:"hint-title"},"Private by Default"),e("p",null,"All of the data within the platform is private by default. Permissions for the public role can be granted on a case-by-case basis by administrators.")],-1),Be=e("h3",{id:"configuring-system-permissions"},[s("Configuring System Permissions "),e("a",{class:"header-anchor",href:"#configuring-system-permissions"},"#")],-1),Me=e("p",null,[s("In addition to permissions for "),e("em",null,"your"),s(" custom collections, you can also customize the permissions for "),e("em",null,"system"),s(" collections. It is important to note that when App Access is enabled for a role, Directus will automatically add permission for the necessary system collections. To edit system permissions, simply click \u201CSystem Collections\u201D at the bottom of the permissions configuration.")],-1),Oe=e("p",null,"There are two pre-configured options you can use for resetting the role\u2019s system permissions and ensure proper App access. To access these, click \u201CSystem Collections\u201D to expand, and then click one of the buttons at the bottom of the listing.",-1),Ye=e("ul",null,[e("li",null,[e("strong",null,"App Access Minimum"),s(" \u2014 The minimum permissions required to properly access the App")]),e("li",null,[e("strong",null,"Recommended Defaults"),s(" \u2014 More permissive but balanced for a better App user experience")])],-1),Ge=e("h2",{id:"configuring-workflows"},[s("Configuring Workflows "),e("a",{class:"header-anchor",href:"#configuring-workflows"},"#")],-1),He=e("p",null,"Workflows are a way to add structured stages to the flow of content authoring. They are primarily defined through the permissions for a Collection, but can be further enhanced via email notifications, custom interfaces, and automation. Directus supports endlessly configurable workflows, so we will only cover one simple example below.",-1),Ke=s("To create a structured workflow for "),Je=e("strong",null,"Articles",-1),Qe=s(", the first step is "),Xe=s("Creating a Field"),Ze=s(" to track the article \u201Cstatus\u201D \u2014 we\u2019ll call it "),$e=e("strong",null,"Status",-1),es=s(", but it can be named anything."),ss=e("li",null,[s("Next, create different Roles for each stage of the workflow, such as "),e("code",null,"author"),s(" and "),e("code",null,"manager"),s(".")],-1),ts=e("li",null,[s("Finally, configure the Role permissions based on the possible values of that Status field, such as "),e("code",null,"draft"),s(", "),e("code",null,"review"),s(", "),e("code",null,"approved"),s(", and "),e("code",null,"published"),s(", so that they are properly restricted to create content and update the status. "),e("ul",null,[e("li",null,[s("The Author can create content, but only save a status of "),e("code",null,"draft"),s(" or "),e("code",null,"review"),s(".")]),e("li",null,[s("The Manager has additional permissions that allow them to save statuses of "),e("code",null,"approved"),s(" or "),e("code",null,"published"),s(".")])])],-1),as={setup(ns,{expose:a}){const i={title:"Users, Roles & Permissions",modularExtension:!1};return a({frontmatter:i}),(ls,is)=>{const n=o("router-link"),r=o("DocsWrapper");return c(),u(r,{frontmatter:i},{default:t(()=>[e("div",d,[e("blockquote",null,[e("p",null,[l(n,{to:"/docs/getting-started/glossary/#users"},{default:t(()=>[h]),_:1}),g,l(n,{to:"/docs/getting-started/glossary/#roles"},{default:t(()=>[_]),_:1}),p,l(n,{to:"/docs/getting-started/glossary/#permissions"},{default:t(()=>[f]),_:1}),m])]),v,b,y,w,A,k,C,e("ol",null,[P,R,e("li",null,[U,I,l(n,{to:"/docs/app/user-directory/#editing-a-user"},{default:t(()=>[D]),_:1})])]),T,e("ul",null,[F,N,e("li",null,[S,x,l(n,{to:"/docs/reference/authentication/"},{default:t(()=>[L]),_:1}),E])]),q,W,j,V,z,B,M,O,Y,G,H,K,e("div",J,[Q,e("p",null,[X,Z,$,l(n,{to:"/docs/configuration/users-roles-permissions/#configuring-public-permissions"},{default:t(()=>[ee]),_:1}),se])]),te,ne,le,ie,oe,ae,re,ce,ue,de,he,e("ol",ge,[e("li",null,[_e,pe,l(n,{to:"/docs/configuration/filter-rules"},{default:t(()=>[fe]),_:1}),me]),ve]),be,ye,e("ol",we,[e("li",null,[Ae,ke,l(n,{to:"/docs/configuration/filter-rules/"},{default:t(()=>[Ce]),_:1}),Pe]),Re,e("li",null,[Ue,Ie,l(n,{to:"/docs/configuration/filter-rules/"},{default:t(()=>[De]),_:1}),Te]),Fe]),Ne,e("ol",Se,[e("li",null,[xe,Le,l(n,{to:"/docs/configuration/filter-rules/"},{default:t(()=>[Ee]),_:1}),qe])]),We,je,Ve,ze,Be,Me,Oe,Ye,Ge,He,e("ol",null,[e("li",null,[Ke,Je,Qe,l(n,{to:"/docs/configuration/data-model/#creating-a-field"},{default:t(()=>[Xe]),_:1}),Ze,$e,es]),ss,ts])])]),_:1})}}};export{as as default};
1
+ import{w as o,y as c,z as u,A as t,E as e,C as l,W as s}from"./vendor.ef99adf3.js";const d={class:"markdown-body"},h=s("Users"),g=s(" are the individual accounts for authenticating into the API and App. Each user belongs to a "),_=s("Role"),p=s(" which defines its access "),f=s("Permissions"),m=s("."),v=e("p",null,[e("div",{class:"table-of-contents"},[e("ul",null,[e("li",null,[e("a",{href:"#creating-a-user"},"Creating a User")]),e("li",null,[e("a",{href:"#inviting-a-user"},"Inviting a User")]),e("li",null,[e("a",{href:"#configuring-a-user"},"Configuring a User")]),e("li",null,[e("a",{href:"#archiving-a-user"},"Archiving a User")]),e("li",null,[e("a",{href:"#deleting-a-user"},"Deleting a User")]),e("li",null,[e("a",{href:"#creating-a-role"},"Creating a Role")]),e("li",null,[e("a",{href:"#configuring-a-role"},"Configuring a Role")]),e("li",null,[e("a",{href:"#deleting-a-role"},"Deleting a Role")]),e("li",null,[e("a",{href:"#configuring-permissions"},"Configuring Permissions")]),e("li",null,[e("a",{href:"#configuring-workflows"},"Configuring Workflows")])])])],-1),b=e("h2",{id:"creating-a-user"},[s("Creating a User "),e("a",{class:"header-anchor",href:"#creating-a-user"},"#")],-1),y=e("ol",null,[e("li",null,[s("Navigate to the "),e("strong",null,"User Library")]),e("li",null,[s("Click "),e("span",{mi:"",btn:""},"add"),s(" in the header")]),e("li",null,[s("Enter an "),e("strong",null,"Email Address")]),e("li",null,[s("Optional: Complete the "),e("strong",null,"other user form fields")]),e("li",null,[s("Click "),e("span",{mi:"",btn:""},"check"),s(" to save the user.")])],-1),w=e("h2",{id:"inviting-a-user"},[s("Inviting a User "),e("a",{class:"header-anchor",href:"#inviting-a-user"},"#")],-1),A=e("ol",null,[e("li",null,[s("Navigate to the "),e("strong",null,"User Library")]),e("li",null,[s("Click "),e("span",{mi:"",btn:"",sec:""},"person_add"),s(" in the header")]),e("li",null,[s("Enter "),e("strong",null,"one or more email addresses"),s(", separated by new lines, in the modal")]),e("li",null,[s("Select the "),e("strong",null,"Role"),s(" you want to assign to the user(s)")]),e("li",null,[s("Click "),e("strong",null,"Invite")])],-1),k=e("p",null,"At this point the invited user(s) will receive an email with a link to the App where they set a password and enable their account.",-1),C=e("h2",{id:"configuring-a-user"},[s("Configuring a User "),e("a",{class:"header-anchor",href:"#configuring-a-user"},"#")],-1),P=e("li",null,[s("Navigate to the "),e("strong",null,"User Library")],-1),R=e("li",null,[e("strong",null,"Click on the user"),s(" you wish to manage")],-1),U=e("strong",null,"Complete the form",-1),I=s(" of "),D=s("User Fields"),T=e("p",null,"The User Detail is only editable by the current user and admins, and the following fields are only available to admins:",-1),F=e("li",null,[e("strong",null,"Status"),s(" \u2014 Determines if an account is able to access the platform or not. Only the "),e("code",null,"active"),s(" state is able to authenticate, all others are simply descriptive inactive states. "),e("ul",null,[e("li",null,[e("strong",null,"Draft"),s(" \u2014 An incomplete user; no App/API access")]),e("li",null,[e("strong",null,"Invited"),s(" \u2014 Has a pending invite to the project; no App/API access until accepted")]),e("li",null,[e("strong",null,"Active"),s(" \u2014 The only status that has proper access to the App and API")]),e("li",null,[e("strong",null,"Suspended"),s(" \u2014 A user that has been temporarily disabled; no App/API access")]),e("li",null,[e("strong",null,"Archived"),s(" \u2014 A soft-deleted user; no App/API access")])])],-1),N=e("li",null,[e("strong",null,"Role"),s(" \u2014 The user\u2019s role determines their permissions and access")],-1),S=e("strong",null,"Token",-1),x=s(" \u2014 A user\u2019s token is an alternate way to "),E=s("authenticate into the API"),L=s(" using a static string. When NULL, the token is disabled. When enabled, ensure that a secure string is used."),W=e("h2",{id:"archiving-a-user"},[s("Archiving a User "),e("a",{class:"header-anchor",href:"#archiving-a-user"},"#")],-1),j=e("ol",null,[e("li",null,[s("Navigate to the "),e("strong",null,"User Library")]),e("li",null,"Click the user you with to archive to go to their User Detail page"),e("li",null,[s("Click on "),e("span",{mi:"",btn:"",warn:""},"archive"),s(" in the header")]),e("li",null,[s("Confirm this decision by clicking "),e("strong",null,"Archive"),s(" in the dialog")])],-1),q=e("div",{class:"warning hint"},[e("div",{class:"hint-title"},"Disables Access"),e("p",null,[s("Archiving uses "),e("em",null,"soft-delete"),s(", therefore archived users are unable to access the App or API.")])],-1),V=e("h2",{id:"deleting-a-user"},[s("Deleting a User "),e("a",{class:"header-anchor",href:"#deleting-a-user"},"#")],-1),z=e("ol",null,[e("li",null,[s("Navigate to the "),e("strong",null,"User Library")]),e("li",null,"Select one or more users you wish to delete"),e("li",null,[s("Click on "),e("span",{mi:"",btn:"",dngr:""},"delete"),s(" in the header")]),e("li",null,[s("Confirm this decision by clicking "),e("strong",null,"Delete"),s(" in the dialog")])],-1),B=e("div",{class:"danger hint"},[e("div",{class:"hint-title"},"Irreversible Change"),e("p",null,"Unlike the soft-delete of archiving, this process is a hard-delete. Therefore, this action is permanent and can not be undone. Please proceed with caution.")],-1),M=e("h2",{id:"creating-a-role"},[s("Creating a Role "),e("a",{class:"header-anchor",href:"#creating-a-role"},"#")],-1),O=e("ol",null,[e("li",null,[s("Navigate to "),e("strong",null,[s("Settings "),e("span",{mi:"",icon:"",dark:""},"chevron_right"),s(" Roles & Permissions")])]),e("li",null,[s("Click "),e("span",{mi:"",btn:""},"add"),s(" in the header")]),e("li",null,[s("Enter a unique "),e("strong",null,"Role Name")]),e("li",null,[s("Enabling "),e("strong",null,"App Access"),s(" allows logging in to the App")]),e("li",null,[s("Enabling "),e("strong",null,"Admin Access"),s(" gives full permission to project data and Settings")]),e("li",null,[s("Click on "),e("strong",null,"Save"),s(" to save the role")])],-1),Y=e("h2",{id:"configuring-a-role"},[s("Configuring a Role "),e("a",{class:"header-anchor",href:"#configuring-a-role"},"#")],-1),G=e("ul",null,[e("li",null,[e("strong",null,"Permissions"),s(" \u2014 Defines the role\u2019s access permissions")]),e("li",null,[e("strong",null,"Role Name"),s(" \u2014 This is the name of the role")]),e("li",null,[e("strong",null,"Role Icon"),s(" \u2014 The icon used throughout the App when referencing this role")]),e("li",null,[e("strong",null,"Description"),s(" \u2014 A helpful note that explains the role\u2019s purpose")]),e("li",null,[e("strong",null,"App Access"),s(" \u2014 Allows logging in to the App")]),e("li",null,[e("strong",null,"Admin Access"),s(" \u2014 Gives full permission to project data and Settings")]),e("li",null,[e("strong",null,"IP Access"),s(" \u2014 An allow-list of IP addresses from which the platform can be accessed, empty allows all")]),e("li",null,[e("strong",null,"Require 2FA"),s(" \u2014 Forces all users within this role to use two-factor authentication")]),e("li",null,[e("strong",null,"Users in Role"),s(" \u2014 A list of all users within this role")])],-1),H=e("h2",{id:"deleting-a-role"},[s("Deleting a Role "),e("a",{class:"header-anchor",href:"#deleting-a-role"},"#")],-1),K=e("ol",null,[e("li",null,[s("Navigate to "),e("strong",null,[s("Settings "),e("span",{mi:"",icon:"",dark:""},"chevron_right"),s(" Roles & Permissions "),e("span",{mi:"",icon:"",dark:""},"chevron_right"),s(" [Role Name]")])]),e("li",null,[s("Click "),e("span",{mi:"",btn:"",dngr:""},"delete"),s(" in the header")]),e("li",null,[s("Confirm this decision by clicking "),e("strong",null,"Delete"),s(" in the dialog")])],-1),J={class:"warning hint"},Q=e("div",{class:"hint-title"},"Users in a Deleted Role",-1),X=s("If you delete a role that still has users in it, those users will be given a "),Z=e("code",null,"NULL",-1),$=s(" role, which denies their App access and limits them to the "),ee=s("Public Role"),se=s(" permissions. They can then be reassigned to a new role by an admin."),te=e("div",{class:"warning hint"},[e("div",{class:"hint-title"},"Last Admin"),e("p",null,"You must maintain at least one role/user with Admin Access so that you can still properly manage the project.")],-1),ne=e("div",{class:"warning hint"},[e("div",{class:"hint-title"},"Public Role"),e("p",null,"You can not delete the Public role, as it is part of the core platform. To disable it completely, simply turn off all Public access permissions.")],-1),le=e("h2",{id:"configuring-permissions"},[s("Configuring Permissions "),e("a",{class:"header-anchor",href:"#configuring-permissions"},"#")],-1),ie=e("p",null,"Directus possesses an extremely granular, yet easy to configure, permissions system. When creating a new role, permissions are disabled for all project collections by default \u2014 allowing you to give explicit access to only what is required. Individual permissions are applied to the role, and each is scoped to a specific collection and CRUD action (create, read, update, delete).",-1),oe=e("div",{class:"warning hint"},[e("div",{class:"hint-title"},"Saves Automatically"),e("p",null,"Every change made to the permissions of a role is saved automatically and instantly.")],-1),ae=e("div",{class:"warning hint"},[e("div",{class:"hint-title"},"Admin Roles"),e("p",null,[s("If a role is set to "),e("strong",null,"Admin Access"),s(" then it is granted complete access to the platform, and therefore the permission configuration field is disabled.")])],-1),re=e("ol",null,[e("li",null,[s("Navigate to "),e("strong",null,[s("Settings "),e("span",{mi:"",icon:"",dark:""},"chevron_right"),s(" Roles & Permissions "),e("span",{mi:"",icon:"",dark:""},"chevron_right"),s(" [Role Name]")])]),e("li",null,[s("Scroll to the "),e("strong",null,"Permissions"),s(" section")]),e("li",null,[e("strong",null,"Click the icon"),s(" for the collection (row) and action (column) you want to set")]),e("li",null,[s("Choose the desired permission level: "),e("span",{mi:"",icon:""},"check"),s(),e("strong",null,"All Access"),s(", "),e("span",{mi:"",icon:""},"block"),s(),e("strong",null,"No Access"),s(", or "),e("span",{mi:"",icon:""},"rule"),s(),e("strong",null,"Use Custom")])],-1),ce=e("p",null,[e("strong",null,[s("If you selected \u201C"),e("span",{mi:"",icon:""},"check"),s(" All Access\u201D or \u201C"),e("span",{mi:"",icon:""},"block"),s(" No Access\u201D then setup is complete.")]),s(" If you chose to customize permissions then continue with the appropriate guide below based on the relevant "),e("em",null,"action"),s(".")],-1),ue=e("h3",{id:"create-(custom-access)"},[s("Create (Custom Access) "),e("a",{class:"header-anchor",href:"#create-(custom-access)"},"#")],-1),de=e("ol",{start:"5"},[e("li",null,[e("strong",null,"Field Permissions"),s(" control which fields accept a value on create. Fields are individually toggled.")]),e("li",null,[e("strong",null,"Field Validation"),s(" define the rules for field values on create")]),e("li",null,[e("strong",null,"Field Presets"),s(" control the field defaults when creating an item")])],-1),he=e("h3",{id:"read-(custom-access)"},[s("Read (Custom Access) "),e("a",{class:"header-anchor",href:"#read-(custom-access)"},"#")],-1),ge={start:"5"},_e=e("strong",null,"Item Permissions",-1),pe=s(" control which items can be read, as defined by the "),fe=s("Filter Rules"),me=s(" entered."),ve=e("li",null,[e("strong",null,"Field Permissions"),s(" control which fields can be read. Fields are individually toggled.")],-1),be=e("div",{class:"warning hint"},[e("div",{class:"hint-title"},"Read Field Permissions"),e("p",null,[s("The Directus App always requires read access to the Primary Key field (eg: "),e("code",null,"id"),s(") so it can uniquely identify items. Also, if a Collection has \u201CArchive\u201D or \u201CSort\u201D fields configured, those fields will also need read access to use the App\u2019s soft-delete and manual sorting features.")])],-1),ye=e("h3",{id:"update-(custom-access)"},[s("Update (Custom Access) "),e("a",{class:"header-anchor",href:"#update-(custom-access)"},"#")],-1),we={start:"5"},Ae=e("strong",null,"Item Permissions",-1),ke=s(" control which items can be updated, as defined by "),Ce=s("Filter Rules"),Pe=s("."),Re=e("li",null,[e("strong",null,"Field Permissions"),s(" control which fields can be updated. Fields are individually toggled.")],-1),Ue=e("strong",null,"Field Validation",-1),Ie=s(" define the rules for field values on update, as defined by "),De=s("Filter Rules"),Te=s("."),Fe=e("li",null,[e("strong",null,"Field Presets"),s(" control the field defaults when updating an item")],-1),Ne=e("h3",{id:"delete-(custom-access)"},[s("Delete (Custom Access) "),e("a",{class:"header-anchor",href:"#delete-(custom-access)"},"#")],-1),Se={start:"5"},xe=e("strong",null,"Item Permissions",-1),Ee=s(" control which items can be deleted, as defined by the "),Le=s("Filter Rules"),We=s(" entered."),je=e("hr",null,null,-1),qe=e("h3",{id:"configuring-public-permissions"},[s("Configuring Public Permissions "),e("a",{class:"header-anchor",href:"#configuring-public-permissions"},"#")],-1),Ve=e("p",null,"The Public permissions control what project data is accessible without authentication. This is managed via the Public \u201Crole\u201D, which is included in the system by default and can not be deleted.",-1),ze=e("div",{class:"warning hint"},[e("div",{class:"hint-title"},"Private by Default"),e("p",null,"All of the data within the platform is private by default. Permissions for the public role can be granted on a case-by-case basis by administrators.")],-1),Be=e("h3",{id:"configuring-system-permissions"},[s("Configuring System Permissions "),e("a",{class:"header-anchor",href:"#configuring-system-permissions"},"#")],-1),Me=e("p",null,[s("In addition to permissions for "),e("em",null,"your"),s(" custom collections, you can also customize the permissions for "),e("em",null,"system"),s(" collections. It is important to note that when App Access is enabled for a role, Directus will automatically add permission for the necessary system collections. To edit system permissions, simply click \u201CSystem Collections\u201D at the bottom of the permissions configuration.")],-1),Oe=e("p",null,"There are two pre-configured options you can use for resetting the role\u2019s system permissions and ensure proper App access. To access these, click \u201CSystem Collections\u201D to expand, and then click one of the buttons at the bottom of the listing.",-1),Ye=e("ul",null,[e("li",null,[e("strong",null,"App Access Minimum"),s(" \u2014 The minimum permissions required to properly access the App")]),e("li",null,[e("strong",null,"Recommended Defaults"),s(" \u2014 More permissive but balanced for a better App user experience")])],-1),Ge=e("h2",{id:"configuring-workflows"},[s("Configuring Workflows "),e("a",{class:"header-anchor",href:"#configuring-workflows"},"#")],-1),He=e("p",null,"Workflows are a way to add structured stages to the flow of content authoring. They are primarily defined through the permissions for a Collection, but can be further enhanced via email notifications, custom interfaces, and automation. Directus supports endlessly configurable workflows, so we will only cover one simple example below.",-1),Ke=s("To create a structured workflow for "),Je=e("strong",null,"Articles",-1),Qe=s(", the first step is "),Xe=s("Creating a Field"),Ze=s(" to track the article \u201Cstatus\u201D \u2014 we\u2019ll call it "),$e=e("strong",null,"Status",-1),es=s(", but it can be named anything."),ss=e("li",null,[s("Next, create different Roles for each stage of the workflow, such as "),e("code",null,"author"),s(" and "),e("code",null,"manager"),s(".")],-1),ts=e("li",null,[s("Finally, configure the Role permissions based on the possible values of that Status field, such as "),e("code",null,"draft"),s(", "),e("code",null,"review"),s(", "),e("code",null,"approved"),s(", and "),e("code",null,"published"),s(", so that they are properly restricted to create content and update the status. "),e("ul",null,[e("li",null,[s("The Author can create content, but only save a status of "),e("code",null,"draft"),s(" or "),e("code",null,"review"),s(".")]),e("li",null,[s("The Manager has additional permissions that allow them to save statuses of "),e("code",null,"approved"),s(" or "),e("code",null,"published"),s(".")])])],-1),as={setup(ns,{expose:a}){const i={title:"Users, Roles & Permissions",modularExtension:!1};return a({frontmatter:i}),(ls,is)=>{const n=o("router-link"),r=o("DocsWrapper");return c(),u(r,{frontmatter:i},{default:t(()=>[e("div",d,[e("blockquote",null,[e("p",null,[l(n,{to:"/docs/getting-started/glossary/#users"},{default:t(()=>[h]),_:1}),g,l(n,{to:"/docs/getting-started/glossary/#roles"},{default:t(()=>[_]),_:1}),p,l(n,{to:"/docs/getting-started/glossary/#permissions"},{default:t(()=>[f]),_:1}),m])]),v,b,y,w,A,k,C,e("ol",null,[P,R,e("li",null,[U,I,l(n,{to:"/docs/app/user-directory/#editing-a-user"},{default:t(()=>[D]),_:1})])]),T,e("ul",null,[F,N,e("li",null,[S,x,l(n,{to:"/docs/reference/authentication/"},{default:t(()=>[E]),_:1}),L])]),W,j,q,V,z,B,M,O,Y,G,H,K,e("div",J,[Q,e("p",null,[X,Z,$,l(n,{to:"/docs/configuration/users-roles-permissions/#configuring-public-permissions"},{default:t(()=>[ee]),_:1}),se])]),te,ne,le,ie,oe,ae,re,ce,ue,de,he,e("ol",ge,[e("li",null,[_e,pe,l(n,{to:"/docs/configuration/filter-rules"},{default:t(()=>[fe]),_:1}),me]),ve]),be,ye,e("ol",we,[e("li",null,[Ae,ke,l(n,{to:"/docs/configuration/filter-rules/"},{default:t(()=>[Ce]),_:1}),Pe]),Re,e("li",null,[Ue,Ie,l(n,{to:"/docs/configuration/filter-rules/"},{default:t(()=>[De]),_:1}),Te]),Fe]),Ne,e("ol",Se,[e("li",null,[xe,Ee,l(n,{to:"/docs/configuration/filter-rules/"},{default:t(()=>[Le]),_:1}),We])]),je,qe,Ve,ze,Be,Me,Oe,Ye,Ge,He,e("ol",null,[e("li",null,[Ke,Je,Qe,l(n,{to:"/docs/configuration/data-model/#creating-a-field"},{default:t(()=>[Xe]),_:1}),Ze,$e,es]),ss,ts])])]),_:1})}}};export{as as default};
@@ -1,4 +1,4 @@
1
- import{r,p as h,q as i,w as a,z as e,t as l,S as s}from"./vendor.546e1516.js";const d={class:"markdown-body"},u={class:"two-up"},p={class:"left"},_=s("Directus Users are the individual accounts that let you authenticate into the API and App. Each user belongs to a Role which defines its granular Permissions. "),g=s("Learn more about Users"),m=s("."),f=e("div",{class:"right"},[e("p",null,[e("div",{class:"table-of-contents"},[e("ul",null,[e("li",null,[e("a",{href:"#the-user-object"},"The User Object")]),e("li",null,[e("a",{href:"#list-users"},"List Users")]),e("li",null,[e("a",{href:"#retrieve-a-user"},"Retrieve a User")]),e("li",null,[e("a",{href:"#retrieve-the-current-user"},"Retrieve the Current User")]),e("li",null,[e("a",{href:"#update-the-current-user"},"Update the Current User")]),e("li",null,[e("a",{href:"#create-a-user"},"Create a User")]),e("li",null,[e("a",{href:"#create-multiple-users"},"Create Multiple Users")]),e("li",null,[e("a",{href:"#update-a-user"},"Update a User")]),e("li",null,[e("a",{href:"#update-multiple-users"},"Update Multiple Users")]),e("li",null,[e("a",{href:"#delete-a-user"},"Delete a User")]),e("li",null,[e("a",{href:"#delete-multiple-users"},"Delete Multiple Users")]),e("li",null,[e("a",{href:"#invite-a-new-user"},"Invite a new User")]),e("li",null,[e("a",{href:"#accept-user-invite"},"Accept User Invite")]),e("li",null,[e("a",{href:"#generate-two-factor-authentication-secret"},"Generate Two-Factor Authentication Secret")]),e("li",null,[e("a",{href:"#enable-two-factor-authentication"},"Enable Two-Factor Authentication")]),e("li",null,[e("a",{href:"#disable-two-factor-authentication"},"Disable Two-Factor Authentication")])])])])],-1),j=e("hr",null,null,-1),y=e("h2",{id:"the-user-object"},[s("The User Object "),e("a",{class:"header-anchor",href:"#the-user-object"},"#")],-1),q={class:"two-up"},b={class:"left"},v={class:"definitions"},w=e("p",null,[e("code",null,"id"),s(),e("strong",null,"uuid"),e("br"),s(" Primary key of the user.")],-1),x=e("p",null,[e("code",null,"first_name"),s(),e("strong",null,"string"),e("br"),s(" First name of the user.")],-1),T=e("p",null,[e("code",null,"last_name"),s(),e("strong",null,"string"),e("br"),s(" Last name of the user.")],-1),E=e("p",null,[e("code",null,"email"),s(),e("strong",null,"string"),e("br"),s(" Email address of the user.")],-1),R=e("p",null,[e("code",null,"password"),s(),e("strong",null,"hash"),e("br"),s(" Password of the user.")],-1),S=e("p",null,[e("code",null,"location"),s(),e("strong",null,"string"),e("br"),s(" Location of the user.")],-1),P=e("p",null,[e("code",null,"title"),s(),e("strong",null,"string"),e("br"),s(" Title of the user.")],-1),k=e("p",null,[e("code",null,"description"),s(),e("strong",null,"string"),e("br"),s(" Description of the user.")],-1),A=e("p",null,[e("code",null,"tags"),s(),e("strong",null,"csv"),e("br"),s(" Tags for the user.")],-1),U=e("code",null,"avatar",-1),O=s(),L=e("strong",null,"many-to-one",-1),C=e("br",null,null,-1),I=s(" Avatar file. Many-to-one to "),Q=s("files"),D=s("."),G=e("p",null,[e("code",null,"language"),s(),e("strong",null,"string"),e("br"),s(" Language the Admin App is rendered in. See "),e("a",{href:"https://locales.directus.io",target:"_blank",rel:"noopener noreferrer"},"our Crowdin page"),s(" for all available languages and translations.")],-1),B=e("p",null,[e("code",null,"theme"),s(),e("strong",null,"string"),e("br"),s(" One of "),e("code",null,"auto"),s(", "),e("code",null,"light"),s(", "),e("code",null,"dark"),s(".")],-1),M=e("p",null,[e("code",null,"tfa_secret"),s(),e("strong",null,"string"),e("br"),s(" When TFA is enabled, this holds the secret key for it.")],-1),F=e("p",null,[e("code",null,"email_notifications"),s(),e("strong",null,"boolean"),e("br"),s(" When this is enabled, the user will receive emails for notifications.")],-1),H=e("div",{class:"right"},[e("pre",null,[e("code",{class:"language-json"},[s(`{
1
+ import{w as r,y as h,z as i,A as a,E as e,C as l,W as s}from"./vendor.ef99adf3.js";const d={class:"markdown-body"},u={class:"two-up"},p={class:"left"},_=s("Directus Users are the individual accounts that let you authenticate into the API and App. Each user belongs to a Role which defines its granular Permissions. "),g=s("Learn more about Users"),f=s("."),m=e("div",{class:"right"},[e("p",null,[e("div",{class:"table-of-contents"},[e("ul",null,[e("li",null,[e("a",{href:"#the-user-object"},"The User Object")]),e("li",null,[e("a",{href:"#list-users"},"List Users")]),e("li",null,[e("a",{href:"#retrieve-a-user"},"Retrieve a User")]),e("li",null,[e("a",{href:"#retrieve-the-current-user"},"Retrieve the Current User")]),e("li",null,[e("a",{href:"#update-the-current-user"},"Update the Current User")]),e("li",null,[e("a",{href:"#create-a-user"},"Create a User")]),e("li",null,[e("a",{href:"#create-multiple-users"},"Create Multiple Users")]),e("li",null,[e("a",{href:"#update-a-user"},"Update a User")]),e("li",null,[e("a",{href:"#update-multiple-users"},"Update Multiple Users")]),e("li",null,[e("a",{href:"#delete-a-user"},"Delete a User")]),e("li",null,[e("a",{href:"#delete-multiple-users"},"Delete Multiple Users")]),e("li",null,[e("a",{href:"#invite-a-new-user"},"Invite a new User")]),e("li",null,[e("a",{href:"#accept-user-invite"},"Accept User Invite")]),e("li",null,[e("a",{href:"#generate-two-factor-authentication-secret"},"Generate Two-Factor Authentication Secret")]),e("li",null,[e("a",{href:"#enable-two-factor-authentication"},"Enable Two-Factor Authentication")]),e("li",null,[e("a",{href:"#disable-two-factor-authentication"},"Disable Two-Factor Authentication")])])])])],-1),j=e("hr",null,null,-1),y=e("h2",{id:"the-user-object"},[s("The User Object "),e("a",{class:"header-anchor",href:"#the-user-object"},"#")],-1),q={class:"two-up"},b={class:"left"},v={class:"definitions"},w=e("p",null,[e("code",null,"id"),s(),e("strong",null,"uuid"),e("br"),s(" Primary key of the user.")],-1),x=e("p",null,[e("code",null,"first_name"),s(),e("strong",null,"string"),e("br"),s(" First name of the user.")],-1),T=e("p",null,[e("code",null,"last_name"),s(),e("strong",null,"string"),e("br"),s(" Last name of the user.")],-1),E=e("p",null,[e("code",null,"email"),s(),e("strong",null,"string"),e("br"),s(" Email address of the user.")],-1),R=e("p",null,[e("code",null,"password"),s(),e("strong",null,"hash"),e("br"),s(" Password of the user.")],-1),S=e("p",null,[e("code",null,"location"),s(),e("strong",null,"string"),e("br"),s(" Location of the user.")],-1),P=e("p",null,[e("code",null,"title"),s(),e("strong",null,"string"),e("br"),s(" Title of the user.")],-1),k=e("p",null,[e("code",null,"description"),s(),e("strong",null,"string"),e("br"),s(" Description of the user.")],-1),A=e("p",null,[e("code",null,"tags"),s(),e("strong",null,"csv"),e("br"),s(" Tags for the user.")],-1),U=e("code",null,"avatar",-1),O=s(),L=e("strong",null,"many-to-one",-1),C=e("br",null,null,-1),I=s(" Avatar file. Many-to-one to "),Q=s("files"),D=s("."),G=e("p",null,[e("code",null,"language"),s(),e("strong",null,"string"),e("br"),s(" Language the Admin App is rendered in. See "),e("a",{href:"https://locales.directus.io",target:"_blank",rel:"noopener noreferrer"},"our Crowdin page"),s(" for all available languages and translations.")],-1),B=e("p",null,[e("code",null,"theme"),s(),e("strong",null,"string"),e("br"),s(" One of "),e("code",null,"auto"),s(", "),e("code",null,"light"),s(", "),e("code",null,"dark"),s(".")],-1),M=e("p",null,[e("code",null,"tfa_secret"),s(),e("strong",null,"string"),e("br"),s(" When TFA is enabled, this holds the secret key for it.")],-1),F=e("p",null,[e("code",null,"email_notifications"),s(),e("strong",null,"boolean"),e("br"),s(" When this is enabled, the user will receive emails for notifications.")],-1),H=e("div",{class:"right"},[e("pre",null,[e("code",{class:"language-json"},[s(`{
2
2
  `),e("span",{class:"hljs-attr"},'"id"'),s(": "),e("span",{class:"hljs-string"},'"0bc7b36a-9ba9-4ce0-83f0-0a526f354e07"'),s(`,
3
3
  `),e("span",{class:"hljs-attr"},'"first_name"'),s(": "),e("span",{class:"hljs-string"},'"Admin"'),s(`,
4
4
  `),e("span",{class:"hljs-attr"},'"last_name"'),s(": "),e("span",{class:"hljs-string"},'"User"'),s(`,
@@ -31,7 +31,7 @@ SEARCH /users
31
31
  email
32
32
  }
33
33
  }
34
- `)])],-1),_e=e("hr",null,null,-1),ge=e("h2",{id:"retrieve-a-user"},[s("Retrieve a User "),e("a",{class:"header-anchor",href:"#retrieve-a-user"},"#")],-1),me=e("p",null,"List an existing user by primary key.",-1),fe={class:"two-up"},je={class:"left"},ye=e("h3",{id:"query-parameters-2"},[s("Query Parameters "),e("a",{class:"header-anchor",href:"#query-parameters-2"},"#")],-1),qe=s("Supports all "),be=s("global query parameters"),ve=s("."),we=e("h3",{id:"returns-2"},[s("Returns "),e("a",{class:"header-anchor",href:"#returns-2"},"#")],-1),xe=e("p",null,[s("Returns the requested "),e("a",{href:"#the-user-object"},"user object"),s(".")],-1),Te=e("div",{class:"right"},[e("h3",{id:"rest-api-2"},[s("REST API "),e("a",{class:"header-anchor",href:"#rest-api-2"},"#")]),e("pre",null,[e("code",null,`GET /users/:id
34
+ `)])],-1),_e=e("hr",null,null,-1),ge=e("h2",{id:"retrieve-a-user"},[s("Retrieve a User "),e("a",{class:"header-anchor",href:"#retrieve-a-user"},"#")],-1),fe=e("p",null,"List an existing user by primary key.",-1),me={class:"two-up"},je={class:"left"},ye=e("h3",{id:"query-parameters-2"},[s("Query Parameters "),e("a",{class:"header-anchor",href:"#query-parameters-2"},"#")],-1),qe=s("Supports all "),be=s("global query parameters"),ve=s("."),we=e("h3",{id:"returns-2"},[s("Returns "),e("a",{class:"header-anchor",href:"#returns-2"},"#")],-1),xe=e("p",null,[s("Returns the requested "),e("a",{href:"#the-user-object"},"user object"),s(".")],-1),Te=e("div",{class:"right"},[e("h3",{id:"rest-api-2"},[s("REST API "),e("a",{class:"header-anchor",href:"#rest-api-2"},"#")]),e("pre",null,[e("code",null,`GET /users/:id
35
35
  `)]),e("h5",{id:"example-2"},[s("Example "),e("a",{class:"header-anchor",href:"#example-2"},"#")]),e("pre",null,[e("code",null,`GET /users/72a1ce24-4748-47de-a05f-ce9af3033727
36
36
  `)]),e("h3",{id:"graphql-2"},[s("GraphQL "),e("a",{class:"header-anchor",href:"#graphql-2"},"#")]),e("pre",null,[e("code",null,`POST /graphql/system
37
37
  `)]),e("pre",null,[e("code",{class:"language-graphql"},[e("span",{class:"hljs-keyword"},"type"),e("span",{class:"hljs-type"}," Query"),s(` {
@@ -89,7 +89,7 @@ SEARCH /users
89
89
  role
90
90
  }
91
91
  }
92
- `)])])],-1),ds=e("hr",null,null,-1),us=e("h2",{id:"create-multiple-users"},[s("Create Multiple Users "),e("a",{class:"header-anchor",href:"#create-multiple-users"},"#")],-1),ps=e("p",null,"Create multiple new users",-1),_s={class:"two-up"},gs={class:"left"},ms=e("h3",{id:"query-parameters-6"},[s("Query Parameters "),e("a",{class:"header-anchor",href:"#query-parameters-6"},"#")],-1),fs=s("Supports all "),js=s("global query parameters"),ys=s("."),qs=e("h3",{id:"request-body-2"},[s("Request Body "),e("a",{class:"header-anchor",href:"#request-body-2"},"#")],-1),bs=e("p",null,[s("An array of partial "),e("a",{href:"#the-user-object"},"user objects"),s(".")],-1),vs=e("p",null,[e("code",null,"email"),s(" and "),e("code",null,"password"),s(" are required.")],-1),ws=e("h3",{id:"returns-6"},[s("Returns "),e("a",{class:"header-anchor",href:"#returns-6"},"#")],-1),xs=e("p",null,[s("Returns the "),e("a",{href:"#the-user-object"},"user objects"),s(" for the created users.")],-1),Ts=e("div",{class:"right"},[e("h3",{id:"rest-api-6"},[s("REST API "),e("a",{class:"header-anchor",href:"#rest-api-6"},"#")]),e("pre",null,[e("code",null,`POST /users
92
+ `)])])],-1),ds=e("hr",null,null,-1),us=e("h2",{id:"create-multiple-users"},[s("Create Multiple Users "),e("a",{class:"header-anchor",href:"#create-multiple-users"},"#")],-1),ps=e("p",null,"Create multiple new users",-1),_s={class:"two-up"},gs={class:"left"},fs=e("h3",{id:"query-parameters-6"},[s("Query Parameters "),e("a",{class:"header-anchor",href:"#query-parameters-6"},"#")],-1),ms=s("Supports all "),js=s("global query parameters"),ys=s("."),qs=e("h3",{id:"request-body-2"},[s("Request Body "),e("a",{class:"header-anchor",href:"#request-body-2"},"#")],-1),bs=e("p",null,[s("An array of partial "),e("a",{href:"#the-user-object"},"user objects"),s(".")],-1),vs=e("p",null,[e("code",null,"email"),s(" and "),e("code",null,"password"),s(" are required.")],-1),ws=e("h3",{id:"returns-6"},[s("Returns "),e("a",{class:"header-anchor",href:"#returns-6"},"#")],-1),xs=e("p",null,[s("Returns the "),e("a",{href:"#the-user-object"},"user objects"),s(" for the created users.")],-1),Ts=e("div",{class:"right"},[e("h3",{id:"rest-api-6"},[s("REST API "),e("a",{class:"header-anchor",href:"#rest-api-6"},"#")]),e("pre",null,[e("code",null,`POST /users
93
93
  `)]),e("h5",{id:"example-8"},[s("Example "),e("a",{class:"header-anchor",href:"#example-8"},"#")]),e("pre",null,[e("code",{class:"language-json"},[e("span",{class:"hljs-comment"},"// POST /users"),s(`
94
94
 
95
95
  [
@@ -180,7 +180,7 @@ SEARCH /users
180
180
  ids
181
181
  }
182
182
  }
183
- `)])])])],-1),oa=e("hr",null,null,-1),ha=e("h2",{id:"invite-a-new-user"},[s("Invite a new User "),e("a",{class:"header-anchor",href:"#invite-a-new-user"},"#")],-1),ia=e("p",null,"Invite a new user by email.",-1),da={class:"two-up"},ua={class:"left"},pa=e("h3",{id:"request-body-6"},[s("Request Body "),e("a",{class:"header-anchor",href:"#request-body-6"},"#")],-1),_a={class:"definitions"},ga=e("p",null,[e("code",null,"email"),s(),e("strong",null,"Required"),e("br"),s(" User email to invite.")],-1),ma=e("p",null,[e("code",null,"role"),s(),e("strong",null,"Required"),e("br"),s(" Role of the new user.")],-1),fa=e("code",null,"invite_url",-1),ja=e("br",null,null,-1),ya=s(" Provide a custom invite url which the link in the email will lead to. The invite token will be passed as a parameter."),qa=e("br",null,null,-1),ba=e("strong",null,"Note",-1),va=s(": You need to configure the "),wa=e("code",null,"USER_INVITE_URL_ALLOW_LIST",-1),xa=s(" environment variable"),Ta=s(" to enable this feature."),Ea=e("h3",{id:"returns-11"},[s("Returns "),e("a",{class:"header-anchor",href:"#returns-11"},"#")],-1),Ra=e("p",null,"Empty body.",-1),Sa=e("div",{class:"right"},[e("h3",{id:"rest-api-11"},[s("REST API "),e("a",{class:"header-anchor",href:"#rest-api-11"},"#")]),e("pre",null,[e("code",null,`POST /users/invite
183
+ `)])])])],-1),oa=e("hr",null,null,-1),ha=e("h2",{id:"invite-a-new-user"},[s("Invite a new User "),e("a",{class:"header-anchor",href:"#invite-a-new-user"},"#")],-1),ia=e("p",null,"Invite a new user by email.",-1),da={class:"two-up"},ua={class:"left"},pa=e("h3",{id:"request-body-6"},[s("Request Body "),e("a",{class:"header-anchor",href:"#request-body-6"},"#")],-1),_a={class:"definitions"},ga=e("p",null,[e("code",null,"email"),s(),e("strong",null,"Required"),e("br"),s(" User email to invite.")],-1),fa=e("p",null,[e("code",null,"role"),s(),e("strong",null,"Required"),e("br"),s(" Role of the new user.")],-1),ma=e("code",null,"invite_url",-1),ja=e("br",null,null,-1),ya=s(" Provide a custom invite url which the link in the email will lead to. The invite token will be passed as a parameter."),qa=e("br",null,null,-1),ba=e("strong",null,"Note",-1),va=s(": You need to configure the "),wa=e("code",null,"USER_INVITE_URL_ALLOW_LIST",-1),xa=s(" environment variable"),Ta=s(" to enable this feature."),Ea=e("h3",{id:"returns-11"},[s("Returns "),e("a",{class:"header-anchor",href:"#returns-11"},"#")],-1),Ra=e("p",null,"Empty body.",-1),Sa=e("div",{class:"right"},[e("h3",{id:"rest-api-11"},[s("REST API "),e("a",{class:"header-anchor",href:"#rest-api-11"},"#")]),e("pre",null,[e("code",null,`POST /users/invite
184
184
  `)]),e("h5",{id:"example-18"},[s("Example "),e("a",{class:"header-anchor",href:"#example-18"},"#")]),e("pre",null,[e("code",{class:"language-json"},[e("span",{class:"hljs-comment"},"// POST /users/invite"),s(`
185
185
 
186
186
  {
@@ -249,4 +249,4 @@ SEARCH /users
249
249
  `)])]),e("h5",{id:"example-27"},[s("Example "),e("a",{class:"header-anchor",href:"#example-27"},"#")]),e("pre",null,[e("code",{class:"language-graphql"},[e("span",{class:"hljs-keyword"},"mutation"),s(` {
250
250
  users_me_tfa_disable(otp: `),e("span",{class:"hljs-string"},'"591763"'),s(`)
251
251
  }
252
- `)])])])],-1),Ka={setup(Va,{expose:c}){const n={title:"Users",modularExtension:!1,pageClass:"page-reference"};return c({frontmatter:n}),(Ya,za)=>{const t=r("router-link"),o=r("DocsWrapper");return h(),i(o,{frontmatter:n},{default:a(()=>[e("div",d,[e("div",u,[e("div",p,[e("blockquote",null,[e("p",null,[_,l(t,{to:"/docs/getting-started/glossary/#users/"},{default:a(()=>[g]),_:1}),m])])]),f]),j,y,e("div",q,[e("div",b,[e("div",v,[w,x,T,E,R,S,P,k,A,e("p",null,[U,O,L,C,I,l(t,{to:"/docs/reference/files/"},{default:a(()=>[Q]),_:1}),D]),G,B,M,F])]),H]),N,W,V,e("div",Y,[e("div",z,[J,e("p",null,[K,l(t,{to:"/docs/reference/query"},{default:a(()=>[X]),_:1}),Z]),$,e("p",null,[ee,l(t,{to:"/docs/reference/query/#limit"},{default:a(()=>[se]),_:1}),ae,te,le])]),e("div",ne,[re,ce,e("p",null,[l(t,{to:"/docs/reference/introduction/#search-http-method"},{default:a(()=>[oe]),_:1})]),he,ie,de,ue,pe])]),_e,ge,me,e("div",fe,[e("div",je,[ye,e("p",null,[qe,l(t,{to:"/docs/reference/query"},{default:a(()=>[be]),_:1}),ve]),we,xe]),Te]),Ee,Re,Se,e("div",Pe,[e("div",ke,[Ae,e("p",null,[Ue,l(t,{to:"/docs/reference/query"},{default:a(()=>[Oe]),_:1}),Le]),Ce,Ie]),Qe]),De,Ge,Be,e("div",Me,[e("div",Fe,[He,e("p",null,[Ne,l(t,{to:"/docs/reference/query"},{default:a(()=>[We]),_:1}),Ve]),Ye,ze]),Je]),Ke,Xe,Ze,e("div",$e,[e("div",es,[ss,e("p",null,[as,l(t,{to:"/docs/reference/query"},{default:a(()=>[ts]),_:1}),ls]),ns,rs,cs,os,hs]),is]),ds,us,ps,e("div",_s,[e("div",gs,[ms,e("p",null,[fs,l(t,{to:"/docs/reference/query"},{default:a(()=>[js]),_:1}),ys]),qs,bs,vs,ws,xs]),Ts]),Es,Rs,Ss,e("div",Ps,[e("div",ks,[As,e("p",null,[Us,l(t,{to:"/docs/reference/query"},{default:a(()=>[Os]),_:1}),Ls]),Cs,Is,Qs,Ds]),Gs]),Bs,Ms,Fs,e("div",Hs,[e("div",Ns,[Ws,e("p",null,[Vs,l(t,{to:"/docs/reference/query"},{default:a(()=>[Ys]),_:1}),zs]),Js,Ks,Xs,Zs]),$s]),ea,sa,aa,ta,la,na,ra,ca,oa,ha,ia,e("div",da,[e("div",ua,[pa,e("div",_a,[ga,ma,e("p",null,[fa,ja,ya,qa,ba,va,l(t,{to:"/docs/configuration/config-options/#security"},{default:a(()=>[wa,xa]),_:1}),Ta])]),Ea,Ra]),Sa]),Pa,ka,Aa,Ua,Oa,La,Ca,Ia,Qa,Da,Ga,Ba,Ma,Fa,Ha,Na,Wa])]),_:1})}}};export{Ka as default};
252
+ `)])])])],-1),Ka={setup(Va,{expose:c}){const n={title:"Users",modularExtension:!1,pageClass:"page-reference"};return c({frontmatter:n}),(Ya,za)=>{const t=r("router-link"),o=r("DocsWrapper");return h(),i(o,{frontmatter:n},{default:a(()=>[e("div",d,[e("div",u,[e("div",p,[e("blockquote",null,[e("p",null,[_,l(t,{to:"/docs/getting-started/glossary/#users/"},{default:a(()=>[g]),_:1}),f])])]),m]),j,y,e("div",q,[e("div",b,[e("div",v,[w,x,T,E,R,S,P,k,A,e("p",null,[U,O,L,C,I,l(t,{to:"/docs/reference/files/"},{default:a(()=>[Q]),_:1}),D]),G,B,M,F])]),H]),N,W,V,e("div",Y,[e("div",z,[J,e("p",null,[K,l(t,{to:"/docs/reference/query"},{default:a(()=>[X]),_:1}),Z]),$,e("p",null,[ee,l(t,{to:"/docs/reference/query/#limit"},{default:a(()=>[se]),_:1}),ae,te,le])]),e("div",ne,[re,ce,e("p",null,[l(t,{to:"/docs/reference/introduction/#search-http-method"},{default:a(()=>[oe]),_:1})]),he,ie,de,ue,pe])]),_e,ge,fe,e("div",me,[e("div",je,[ye,e("p",null,[qe,l(t,{to:"/docs/reference/query"},{default:a(()=>[be]),_:1}),ve]),we,xe]),Te]),Ee,Re,Se,e("div",Pe,[e("div",ke,[Ae,e("p",null,[Ue,l(t,{to:"/docs/reference/query"},{default:a(()=>[Oe]),_:1}),Le]),Ce,Ie]),Qe]),De,Ge,Be,e("div",Me,[e("div",Fe,[He,e("p",null,[Ne,l(t,{to:"/docs/reference/query"},{default:a(()=>[We]),_:1}),Ve]),Ye,ze]),Je]),Ke,Xe,Ze,e("div",$e,[e("div",es,[ss,e("p",null,[as,l(t,{to:"/docs/reference/query"},{default:a(()=>[ts]),_:1}),ls]),ns,rs,cs,os,hs]),is]),ds,us,ps,e("div",_s,[e("div",gs,[fs,e("p",null,[ms,l(t,{to:"/docs/reference/query"},{default:a(()=>[js]),_:1}),ys]),qs,bs,vs,ws,xs]),Ts]),Es,Rs,Ss,e("div",Ps,[e("div",ks,[As,e("p",null,[Us,l(t,{to:"/docs/reference/query"},{default:a(()=>[Os]),_:1}),Ls]),Cs,Is,Qs,Ds]),Gs]),Bs,Ms,Fs,e("div",Hs,[e("div",Ns,[Ws,e("p",null,[Vs,l(t,{to:"/docs/reference/query"},{default:a(()=>[Ys]),_:1}),zs]),Js,Ks,Xs,Zs]),$s]),ea,sa,aa,ta,la,na,ra,ca,oa,ha,ia,e("div",da,[e("div",ua,[pa,e("div",_a,[ga,fa,e("p",null,[ma,ja,ya,qa,ba,va,l(t,{to:"/docs/configuration/config-options/#security"},{default:a(()=>[wa,xa]),_:1}),Ta])]),Ea,Ra]),Sa]),Pa,ka,Aa,Ua,Oa,La,Ca,Ia,Qa,Da,Ga,Ba,Ma,Fa,Ha,Na,Wa])]),_:1})}}};export{Ka as default};
@@ -1,4 +1,4 @@
1
- import{r,p as i,q as c,w as a,z as e,t,S as s}from"./vendor.546e1516.js";const d={class:"markdown-body"},u=e("div",{class:"two-up"},[e("div",{class:"left"},[e("blockquote",null,[e("p",null,"Utilities are the various helper endpoints located within the API.")])]),e("div",{class:"right"},[e("p",null,[e("div",{class:"table-of-contents"},[e("ul",null,[e("li",null,[e("a",{href:"#generate-a-hash"},"Generate a Hash")]),e("li",null,[e("a",{href:"#verify-a-hash"},"Verify a Hash")]),e("li",null,[e("a",{href:"#manually-sort-items-in-collection"},"Manually Sort Items in Collection")]),e("li",null,[e("a",{href:"#import-data-from-file"},"Import Data from File")]),e("li",null,[e("a",{href:"#clear-the-internal-cache"},"Clear the Internal Cache")])])])])])],-1),p=e("hr",null,null,-1),_=e("h2",{id:"generate-a-hash"},[s("Generate a Hash "),e("a",{class:"header-anchor",href:"#generate-a-hash"},"#")],-1),f=e("p",null,"Generate a hash for a given string.",-1),m=e("div",{class:"two-up"},[e("div",{class:"left"},[e("h3",{id:"request-body"},[s("Request Body "),e("a",{class:"header-anchor",href:"#request-body"},"#")]),e("div",{class:"definitions"},[e("p",null,[e("code",null,"string"),s(),e("strong",null,"Required"),e("br"),s(" String to hash.")])]),e("h3",{id:"returns"},[s("Returns "),e("a",{class:"header-anchor",href:"#returns"},"#")]),e("p",null,"Hashed string.")]),e("div",{class:"right"},[e("h3",{id:"rest-api"},[s("REST API "),e("a",{class:"header-anchor",href:"#rest-api"},"#")]),e("pre",null,[e("code",null,`POST /utils/hash/generate
1
+ import{w as r,y as i,z as c,A as a,E as e,C as t,W as s}from"./vendor.ef99adf3.js";const d={class:"markdown-body"},u=e("div",{class:"two-up"},[e("div",{class:"left"},[e("blockquote",null,[e("p",null,"Utilities are the various helper endpoints located within the API.")])]),e("div",{class:"right"},[e("p",null,[e("div",{class:"table-of-contents"},[e("ul",null,[e("li",null,[e("a",{href:"#generate-a-hash"},"Generate a Hash")]),e("li",null,[e("a",{href:"#verify-a-hash"},"Verify a Hash")]),e("li",null,[e("a",{href:"#manually-sort-items-in-collection"},"Manually Sort Items in Collection")]),e("li",null,[e("a",{href:"#import-data-from-file"},"Import Data from File")]),e("li",null,[e("a",{href:"#export-data-to-a-file"},"Export Data to a File")]),e("li",null,[e("a",{href:"#clear-the-internal-cache"},"Clear the Internal Cache")])])])])])],-1),p=e("hr",null,null,-1),_=e("h2",{id:"generate-a-hash"},[s("Generate a Hash "),e("a",{class:"header-anchor",href:"#generate-a-hash"},"#")],-1),f=e("p",null,"Generate a hash for a given string.",-1),m=e("div",{class:"two-up"},[e("div",{class:"left"},[e("h3",{id:"request-body"},[s("Request Body "),e("a",{class:"header-anchor",href:"#request-body"},"#")]),e("div",{class:"definitions"},[e("p",null,[e("code",null,"string"),s(),e("strong",null,"Required"),e("br"),s(" String to hash.")])]),e("h3",{id:"returns"},[s("Returns "),e("a",{class:"header-anchor",href:"#returns"},"#")]),e("p",null,"Hashed string.")]),e("div",{class:"right"},[e("h3",{id:"rest-api"},[s("REST API "),e("a",{class:"header-anchor",href:"#rest-api"},"#")]),e("pre",null,[e("code",null,`POST /utils/hash/generate
2
2
  `)]),e("h5",{id:"example"},[s("Example "),e("a",{class:"header-anchor",href:"#example"},"#")]),e("pre",null,[e("code",{class:"language-json"},[e("span",{class:"hljs-comment"},"// POST /utils/hash/generate"),s(`
3
3
 
4
4
  {
@@ -22,7 +22,7 @@ import{r,p as i,q as c,w as a,z as e,t,S as s}from"./vendor.546e1516.js";const d
22
22
  `)]),e("pre",null,[e("code",{class:"language-graphql"},[e("span",{class:"hljs-keyword"},"type"),e("span",{class:"hljs-type"}," Mutation"),s(` {
23
23
  utils_hash_verify(hash:`),e("span",{class:"hljs-type"}," String"),s("!, string:"),e("span",{class:"hljs-type"}," String"),s("!):"),e("span",{class:"hljs-type"}," Boolean"),s(`
24
24
  }
25
- `)])])])],-1),v=e("hr",null,null,-1),b=e("h2",{id:"manually-sort-items-in-collection"},[s("Manually Sort Items in Collection "),e("a",{class:"header-anchor",href:"#manually-sort-items-in-collection"},"#")],-1),A=e("p",null,"If a collection has a sort field, this util can be used to move items in that manual order.",-1),S=e("div",{class:"two-up"},[e("div",{class:"left"},[e("h3",{id:"request-body-3"},[s("Request Body "),e("a",{class:"header-anchor",href:"#request-body-3"},"#")]),e("div",{class:"definitions"},[e("p",null,[e("code",null,"item"),s(),e("strong",null,"Required"),e("br"),s(" Primary key of the item you\u2019re moving in the collection.")]),e("p",null,[e("code",null,"to"),s(),e("strong",null,"Required"),e("br"),s(" Primary key of the item you\u2019re moving the source item too.")])]),e("h3",{id:"returns-3"},[s("Returns "),e("a",{class:"header-anchor",href:"#returns-3"},"#")]),e("p",null,"Empty body.")]),e("div",{class:"right"},[e("h3",{id:"rest-api-3"},[s("REST API "),e("a",{class:"header-anchor",href:"#rest-api-3"},"#")]),e("pre",null,[e("code",null,`POST /utils/sort/:collection
25
+ `)])])])],-1),b=e("hr",null,null,-1),v=e("h2",{id:"manually-sort-items-in-collection"},[s("Manually Sort Items in Collection "),e("a",{class:"header-anchor",href:"#manually-sort-items-in-collection"},"#")],-1),x=e("p",null,"If a collection has a sort field, this util can be used to move items in that manual order.",-1),A=e("div",{class:"two-up"},[e("div",{class:"left"},[e("h3",{id:"request-body-3"},[s("Request Body "),e("a",{class:"header-anchor",href:"#request-body-3"},"#")]),e("div",{class:"definitions"},[e("p",null,[e("code",null,"item"),s(),e("strong",null,"Required"),e("br"),s(" Primary key of the item you\u2019re moving in the collection.")]),e("p",null,[e("code",null,"to"),s(),e("strong",null,"Required"),e("br"),s(" Primary key of the item you\u2019re moving the source item too.")])]),e("h3",{id:"returns-3"},[s("Returns "),e("a",{class:"header-anchor",href:"#returns-3"},"#")]),e("p",null,"Empty body.")]),e("div",{class:"right"},[e("h3",{id:"rest-api-3"},[s("REST API "),e("a",{class:"header-anchor",href:"#rest-api-3"},"#")]),e("pre",null,[e("code",null,`POST /utils/sort/:collection
26
26
  `)]),e("h5",{id:"example-4"},[s("Example "),e("a",{class:"header-anchor",href:"#example-4"},"#")]),e("pre",null,[e("code",{class:"language-json"},[e("span",{class:"hljs-comment"},"// POST /utils/sort/articles"),s(`
27
27
 
28
28
  {
@@ -36,7 +36,7 @@ import{r,p as i,q as c,w as a,z as e,t,S as s}from"./vendor.546e1516.js";const d
36
36
  `)])]),e("h5",{id:"example-5"},[s("Example "),e("a",{class:"header-anchor",href:"#example-5"},"#")]),e("pre",null,[e("code",{class:"language-graphql"},[e("span",{class:"hljs-keyword"},"mutation"),s(` {
37
37
  utils_sort(collection: `),e("span",{class:"hljs-string"},'"articles"'),s(", item: "),e("span",{class:"hljs-number"},"16"),s(", to: "),e("span",{class:"hljs-number"},"51"),s(`)
38
38
  }
39
- `)])])])],-1),x=e("hr",null,null,-1),E=e("h2",{id:"import-data-from-file"},[s("Import Data from File "),e("a",{class:"header-anchor",href:"#import-data-from-file"},"#")],-1),R=s("Import multiple records from a JSON or CSV file into a collection. Relies on a "),T=e("code",null,"multipart/form-data",-1),C=s(" encoded request, just like regular file uploads. Check "),P=s("Upload a File"),w=s(" for more information."),k=s("The import endpoint expects the file structure to match "),I=s("the export query parameter"),O=s(". For JSON, this is an array of objects, where every object is an item. For CSV, the first line has to be the columns header."),F={class:"two-up"},B={class:"left"},M=e("h3",{id:"request-body-4"},[s("Request Body "),e("a",{class:"header-anchor",href:"#request-body-4"},"#")],-1),D=s("Send the file in a "),H=e("code",null,"multipart/form-data",-1),G=s(" request. See "),V=s("Upload a File"),N=s(" for more information."),U=e("h3",{id:"returns-4"},[s("Returns "),e("a",{class:"header-anchor",href:"#returns-4"},"#")],-1),L=e("p",null,"Empty body.",-1),Q=e("div",{class:"right"},[e("h3",{id:"rest-api-4"},[s("REST API "),e("a",{class:"header-anchor",href:"#rest-api-4"},"#")]),e("pre",null,[e("code",null,`POST /utils/import/:collection
39
+ `)])])])],-1),S=e("hr",null,null,-1),E=e("h2",{id:"import-data-from-file"},[s("Import Data from File "),e("a",{class:"header-anchor",href:"#import-data-from-file"},"#")],-1),R=s("Import multiple records from a JSON or CSV file into a collection. Relies on a "),T=e("code",null,"multipart/form-data",-1),P=s(" encoded request, just like regular file uploads. Check "),w=s("Upload a File"),C=s(" for more information."),O=s("The import endpoint expects the file structure to match "),F=s("the export query parameter"),k=s(". For JSON, this is an array of objects, where every object is an item. For CSV, the first line has to be the columns header."),I={class:"two-up"},B={class:"left"},D=e("h3",{id:"request-body-4"},[s("Request Body "),e("a",{class:"header-anchor",href:"#request-body-4"},"#")],-1),M=s("Send the file in a "),G=e("code",null,"multipart/form-data",-1),H=s(" request. See "),L=s("Upload a File"),V=s(" for more information."),N=e("h3",{id:"returns-4"},[s("Returns "),e("a",{class:"header-anchor",href:"#returns-4"},"#")],-1),Q=e("p",null,"Empty body.",-1),U=e("div",{class:"right"},[e("h3",{id:"rest-api-4"},[s("REST API "),e("a",{class:"header-anchor",href:"#rest-api-4"},"#")]),e("pre",null,[e("code",null,`POST /utils/import/:collection
40
40
  `)]),e("h5",{id:"example-6"},[s("Example "),e("a",{class:"header-anchor",href:"#example-6"},"#")]),e("pre",null,[e("code",null,`POST /utils/import/articles
41
41
 
42
42
  Content-Type: multipart/form-data; charset=utf-8; boundary=__X_BOUNDARY__
@@ -53,8 +53,22 @@ Content-Type: text/csv
53
53
  4,"My Fourth Article","abc","506385A2-E444-4AE2-A860-F00957A62C8A"
54
54
  5,"My Fifth Article","abc","506385A2-E444-4AE2-A860-F00957A62C8A"
55
55
  ...
56
- `)]),e("h3",{id:"graphql-4"},[s("GraphQL "),e("a",{class:"header-anchor",href:"#graphql-4"},"#")]),e("p",null,"n/a")],-1),W=e("hr",null,null,-1),J=e("h2",{id:"clear-the-internal-cache"},[s("Clear the Internal Cache "),e("a",{class:"header-anchor",href:"#clear-the-internal-cache"},"#")],-1),X=e("p",null,"Resets both the data and schema cache of Directus. This endpoint is only available to admin users.",-1),Y=e("div",{class:"two-up"},[e("div",{class:"left"},[e("h3",{id:"request-body-5"},[s("Request Body "),e("a",{class:"header-anchor",href:"#request-body-5"},"#")]),e("p",null,"n/a"),e("h3",{id:"returns-5"},[s("Returns "),e("a",{class:"header-anchor",href:"#returns-5"},"#")]),e("p",null,"Empty body")]),e("div",{class:"right"},[e("h3",{id:"rest-api-5"},[s("REST API "),e("a",{class:"header-anchor",href:"#rest-api-5"},"#")]),e("pre",null,[e("code",null,`POST /utils/cache/clear
57
- `)]),e("h3",{id:"graphql-5"},[s("GraphQL "),e("a",{class:"header-anchor",href:"#graphql-5"},"#")]),e("pre",null,[e("code",{class:"language-graphql"},[e("span",{class:"hljs-keyword"},"mutation"),s(` {
56
+ `)]),e("h3",{id:"graphql-4"},[s("GraphQL "),e("a",{class:"header-anchor",href:"#graphql-4"},"#")]),e("p",null,"n/a")],-1),W=e("hr",null,null,-1),J=e("h2",{id:"export-data-to-a-file"},[s("Export Data to a File "),e("a",{class:"header-anchor",href:"#export-data-to-a-file"},"#")],-1),X=e("p",null,"Export a larger data set to a file in the File Library",-1),Y={class:"two-up"},z={class:"left"},$=e("h3",{id:"query-parameters"},[s("Query Parameters "),e("a",{class:"header-anchor",href:"#query-parameters"},"#")],-1),K=e("p",null,"Doesn\u2019t use any query parameters.",-1),Z=e("h3",{id:"request-body-5"},[s("Request Body "),e("a",{class:"header-anchor",href:"#request-body-5"},"#")],-1),ee={class:"definitions"},se=e("p",null,[e("code",null,"format"),s(),e("strong",null,"Required"),e("br"),s(" What file format to save the export to. One of "),e("code",null,"csv"),s(", "),e("code",null,"xml"),s(", "),e("code",null,"json"),s(".")],-1),ae=e("code",null,"query",-1),le=s(),te=e("strong",null,"Required",-1),ne=e("br",null,null,-1),re=s(" The query object to use for the export. Supports the "),oe=s("global query parameters"),he=s("."),ie=e("p",null,[e("code",null,"file"),s(),e("strong",null,"File Object"),e("br"),s(" Partial file object to tweak where / how the export file is saved.")],-1),ce=e("h3",{id:"returns-5"},[s("Returns "),e("a",{class:"header-anchor",href:"#returns-5"},"#")],-1),de=e("p",null,"Empty body",-1),ue=e("div",{class:"right"},[e("h3",{id:"rest-api-5"},[s("REST API "),e("a",{class:"header-anchor",href:"#rest-api-5"},"#")]),e("pre",null,[e("code",null,`POST /utils/export/:collection
57
+ `)]),e("h5",{id:"example-7"},[s("Example "),e("a",{class:"header-anchor",href:"#example-7"},"#")]),e("pre",null,[e("code",null,`POST /utils/export/articles
58
+ `)]),e("pre",null,[e("code",{class:"language-json"},[s(`{
59
+ `),e("span",{class:"hljs-attr"},'"query"'),s(`: {
60
+ `),e("span",{class:"hljs-attr"},'"filter"'),s(`: {
61
+ `),e("span",{class:"hljs-attr"},'"status"'),s(`: {
62
+ `),e("span",{class:"hljs-attr"},'"_eq"'),s(": "),e("span",{class:"hljs-string"},'"published"'),s(`
63
+ }
64
+ }
65
+ },
66
+ `),e("span",{class:"hljs-attr"},'"file"'),s(`: {
67
+ `),e("span",{class:"hljs-attr"},'"folder"'),s(": "),e("span",{class:"hljs-string"},'"34e95c19-cc50-42f2-83c8-b97616ac2390"'),s(`
68
+ }
69
+ }
70
+ `)])]),e("h3",{id:"graphql-5"},[s("GraphQL "),e("a",{class:"header-anchor",href:"#graphql-5"},"#")]),e("p",null,"n/a")],-1),pe=e("hr",null,null,-1),_e=e("h2",{id:"clear-the-internal-cache"},[s("Clear the Internal Cache "),e("a",{class:"header-anchor",href:"#clear-the-internal-cache"},"#")],-1),fe=e("p",null,"Resets both the data and schema cache of Directus. This endpoint is only available to admin users.",-1),me=e("div",{class:"two-up"},[e("div",{class:"left"},[e("h3",{id:"request-body-6"},[s("Request Body "),e("a",{class:"header-anchor",href:"#request-body-6"},"#")]),e("p",null,"n/a"),e("h3",{id:"returns-6"},[s("Returns "),e("a",{class:"header-anchor",href:"#returns-6"},"#")]),e("p",null,"Empty body")]),e("div",{class:"right"},[e("h3",{id:"rest-api-6"},[s("REST API "),e("a",{class:"header-anchor",href:"#rest-api-6"},"#")]),e("pre",null,[e("code",null,`POST /utils/cache/clear
71
+ `)]),e("h3",{id:"graphql-6"},[s("GraphQL "),e("a",{class:"header-anchor",href:"#graphql-6"},"#")]),e("pre",null,[e("code",{class:"language-graphql"},[e("span",{class:"hljs-keyword"},"mutation"),s(` {
58
72
  utils_cache_clear
59
73
  }
60
- `)])])])],-1),ee={setup(z,{expose:o}){const n={title:"Utilities",modularExtension:!1,pageClass:"page-reference"};return o({frontmatter:n}),($,K)=>{const l=r("router-link"),h=r("DocsWrapper");return i(),c(h,{frontmatter:n},{default:a(()=>[e("div",d,[u,p,_,f,m,g,y,q,j,v,b,A,S,x,E,e("p",null,[R,T,C,t(l,{to:"/docs/reference/files/#upload-a-file"},{default:a(()=>[P]),_:1}),w]),e("p",null,[k,t(l,{to:"/docs/reference/query/#export"},{default:a(()=>[I]),_:1}),O]),e("div",F,[e("div",B,[M,e("p",null,[D,H,G,t(l,{to:"/docs/reference/files/#upload-a-file"},{default:a(()=>[V]),_:1}),N]),U,L]),Q]),W,J,X,Y])]),_:1})}}};export{ee as default};
74
+ `)])])])],-1),be={setup(ge,{expose:o}){const n={title:"Utilities",modularExtension:!1,pageClass:"page-reference"};return o({frontmatter:n}),(ye,qe)=>{const l=r("router-link"),h=r("DocsWrapper");return i(),c(h,{frontmatter:n},{default:a(()=>[e("div",d,[u,p,_,f,m,g,y,q,j,b,v,x,A,S,E,e("p",null,[R,T,P,t(l,{to:"/docs/reference/files/#upload-a-file"},{default:a(()=>[w]),_:1}),C]),e("p",null,[O,t(l,{to:"/docs/reference/query/#export"},{default:a(()=>[F]),_:1}),k]),e("div",I,[e("div",B,[D,e("p",null,[M,G,H,t(l,{to:"/docs/reference/files/#upload-a-file"},{default:a(()=>[L]),_:1}),V]),N,Q]),U]),W,J,X,e("div",Y,[e("div",z,[$,K,Z,e("div",ee,[se,e("p",null,[ae,le,te,ne,re,t(l,{to:"/docs/reference/query"},{default:a(()=>[oe]),_:1}),he]),ie]),ce,de]),ue]),pe,_e,fe,me])]),_:1})}}};export{be as default};
@@ -1 +1 @@
1
- import{bK as U}from"./vendor.546e1516.js";function $(l,v){return v.forEach(function(i){i&&typeof i!="string"&&!Array.isArray(i)&&Object.keys(i).forEach(function(c){if(c!=="default"&&!(c in l)){var d=Object.getOwnPropertyDescriptor(i,c);Object.defineProperty(l,c,d.get?d:{enumerable:!0,get:function(){return i[c]}})}})}),Object.freeze(Object.defineProperty(l,Symbol.toStringTag,{value:"Module"}))}var O={exports:{}};(function(l,v){(function(i){i(U.exports)})(function(i){i.defineMode("vb",function(c,d){var a="error";function u(e){return new RegExp("^(("+e.join(")|(")+"))\\b","i")}var E=new RegExp("^[\\+\\-\\*/%&\\\\|\\^~<>!]"),R=new RegExp("^[\\(\\)\\[\\]\\{\\}@,:`=;\\.]"),z=new RegExp("^((==)|(<>)|(<=)|(>=)|(<>)|(<<)|(>>)|(//)|(\\*\\*))"),S=new RegExp("^((\\+=)|(\\-=)|(\\*=)|(%=)|(/=)|(&=)|(\\|=)|(\\^=))"),_=new RegExp("^((//=)|(>>=)|(<<=)|(\\*\\*=))"),j=new RegExp("^[_A-Za-z][_A-Za-z0-9]*"),h=["class","module","sub","enum","select","while","if","function","get","set","property","try","structure","synclock","using","with"],g=["else","elseif","case","catch","finally"],y=["next","loop"],b=["and","andalso","or","orelse","xor","in","not","is","isnot","like"],C=u(b),w=["#const","#else","#elseif","#end","#if","#region","addhandler","addressof","alias","as","byref","byval","cbool","cbyte","cchar","cdate","cdbl","cdec","cint","clng","cobj","compare","const","continue","csbyte","cshort","csng","cstr","cuint","culng","cushort","declare","default","delegate","dim","directcast","each","erase","error","event","exit","explicit","false","for","friend","gettype","goto","handles","implements","imports","infer","inherits","interface","isfalse","istrue","lib","me","mod","mustinherit","mustoverride","my","mybase","myclass","namespace","narrowing","new","nothing","notinheritable","notoverridable","of","off","on","operator","option","optional","out","overloads","overridable","overrides","paramarray","partial","private","protected","public","raiseevent","readonly","redim","removehandler","resume","return","shadows","shared","static","step","stop","strict","then","throw","to","true","trycast","typeof","until","until","when","widening","withevents","writeonly"],x=["object","boolean","char","string","byte","sbyte","short","ushort","int16","uint16","integer","uinteger","int32","uint32","long","ulong","int64","uint64","decimal","single","double","float","date","datetime","intptr","uintptr"],T=u(w),A=u(x),F='"',K=u(h),m=u(g),k=u(y),I=u(["end"]),L=u(["do"]);i.registerHelper("hintWords","vb",h.concat(g).concat(y).concat(b).concat(w).concat(x));function s(e,n){n.currentIndent++}function f(e,n){n.currentIndent--}function p(e,n){if(e.eatSpace())return null;var r=e.peek();if(r==="'")return e.skipToEnd(),"comment";if(e.match(/^((&H)|(&O))?[0-9\.a-f]/i,!1)){var t=!1;if((e.match(/^\d*\.\d+F?/i)||e.match(/^\d+\.\d*F?/)||e.match(/^\.\d+F?/))&&(t=!0),t)return e.eat(/J/i),"number";var o=!1;if(e.match(/^&H[0-9a-f]+/i)||e.match(/^&O[0-7]+/i)?o=!0:e.match(/^[1-9]\d*F?/)?(e.eat(/J/i),o=!0):e.match(/^0(?![\dx])/i)&&(o=!0),o)return e.eat(/L/i),"number"}return e.match(F)?(n.tokenize=D(e.current()),n.tokenize(e,n)):e.match(_)||e.match(S)?null:e.match(z)||e.match(E)||e.match(C)?"operator":e.match(R)?null:e.match(L)?(s(e,n),n.doInCurrentLine=!0,"keyword"):e.match(K)?(n.doInCurrentLine?n.doInCurrentLine=!1:s(e,n),"keyword"):e.match(m)?"keyword":e.match(I)?(f(e,n),f(e,n),"keyword"):e.match(k)?(f(e,n),"keyword"):e.match(A)||e.match(T)?"keyword":e.match(j)?"variable":(e.next(),a)}function D(e){var n=e.length==1,r="string";return function(t,o){for(;!t.eol();){if(t.eatWhile(/[^'"]/),t.match(e))return o.tokenize=p,r;t.eat(/['"]/)}if(n){if(d.singleLineStringErrors)return a;o.tokenize=p}return r}}function P(e,n){var r=n.tokenize(e,n),t=e.current();if(t===".")return r=n.tokenize(e,n),r==="variable"?"variable":a;var o="[({".indexOf(t);return o!==-1&&s(e,n),o="])}".indexOf(t),o!==-1&&f(e,n)?a:r}var H={electricChars:"dDpPtTfFeE ",startState:function(){return{tokenize:p,lastToken:null,currentIndent:0,nextLineIndent:0,doInCurrentLine:!1}},token:function(e,n){e.sol()&&(n.currentIndent+=n.nextLineIndent,n.nextLineIndent=0,n.doInCurrentLine=0);var r=P(e,n);return n.lastToken={style:r,content:e.current()},r},indent:function(e,n){var r=n.replace(/^\s+|\s+$/g,"");return r.match(k)||r.match(I)||r.match(m)?c.indentUnit*(e.currentIndent-1):e.currentIndent<0?0:e.currentIndent*c.indentUnit},lineComment:"'"};return H}),i.defineMIME("text/x-vb","vb")})})();var J=O.exports,W=$({__proto__:null,default:J},[O.exports]);export{W as v};
1
+ import{bR as U}from"./vendor.ef99adf3.js";function $(d,v){return v.forEach(function(i){i&&typeof i!="string"&&!Array.isArray(i)&&Object.keys(i).forEach(function(c){if(c!=="default"&&!(c in d)){var l=Object.getOwnPropertyDescriptor(i,c);Object.defineProperty(d,c,l.get?l:{enumerable:!0,get:function(){return i[c]}})}})}),Object.freeze(Object.defineProperty(d,Symbol.toStringTag,{value:"Module"}))}var O={exports:{}};(function(d,v){(function(i){i(U.exports)})(function(i){i.defineMode("vb",function(c,l){var a="error";function u(e){return new RegExp("^(("+e.join(")|(")+"))\\b","i")}var E=new RegExp("^[\\+\\-\\*/%&\\\\|\\^~<>!]"),R=new RegExp("^[\\(\\)\\[\\]\\{\\}@,:`=;\\.]"),z=new RegExp("^((==)|(<>)|(<=)|(>=)|(<>)|(<<)|(>>)|(//)|(\\*\\*))"),S=new RegExp("^((\\+=)|(\\-=)|(\\*=)|(%=)|(/=)|(&=)|(\\|=)|(\\^=))"),_=new RegExp("^((//=)|(>>=)|(<<=)|(\\*\\*=))"),j=new RegExp("^[_A-Za-z][_A-Za-z0-9]*"),h=["class","module","sub","enum","select","while","if","function","get","set","property","try","structure","synclock","using","with"],g=["else","elseif","case","catch","finally"],y=["next","loop"],b=["and","andalso","or","orelse","xor","in","not","is","isnot","like"],C=u(b),w=["#const","#else","#elseif","#end","#if","#region","addhandler","addressof","alias","as","byref","byval","cbool","cbyte","cchar","cdate","cdbl","cdec","cint","clng","cobj","compare","const","continue","csbyte","cshort","csng","cstr","cuint","culng","cushort","declare","default","delegate","dim","directcast","each","erase","error","event","exit","explicit","false","for","friend","gettype","goto","handles","implements","imports","infer","inherits","interface","isfalse","istrue","lib","me","mod","mustinherit","mustoverride","my","mybase","myclass","namespace","narrowing","new","nothing","notinheritable","notoverridable","of","off","on","operator","option","optional","out","overloads","overridable","overrides","paramarray","partial","private","protected","public","raiseevent","readonly","redim","removehandler","resume","return","shadows","shared","static","step","stop","strict","then","throw","to","true","trycast","typeof","until","until","when","widening","withevents","writeonly"],x=["object","boolean","char","string","byte","sbyte","short","ushort","int16","uint16","integer","uinteger","int32","uint32","long","ulong","int64","uint64","decimal","single","double","float","date","datetime","intptr","uintptr"],T=u(w),A=u(x),F='"',L=u(h),m=u(g),k=u(y),I=u(["end"]),D=u(["do"]);i.registerHelper("hintWords","vb",h.concat(g).concat(y).concat(b).concat(w).concat(x));function s(e,n){n.currentIndent++}function f(e,n){n.currentIndent--}function p(e,n){if(e.eatSpace())return null;var r=e.peek();if(r==="'")return e.skipToEnd(),"comment";if(e.match(/^((&H)|(&O))?[0-9\.a-f]/i,!1)){var t=!1;if((e.match(/^\d*\.\d+F?/i)||e.match(/^\d+\.\d*F?/)||e.match(/^\.\d+F?/))&&(t=!0),t)return e.eat(/J/i),"number";var o=!1;if(e.match(/^&H[0-9a-f]+/i)||e.match(/^&O[0-7]+/i)?o=!0:e.match(/^[1-9]\d*F?/)?(e.eat(/J/i),o=!0):e.match(/^0(?![\dx])/i)&&(o=!0),o)return e.eat(/L/i),"number"}return e.match(F)?(n.tokenize=K(e.current()),n.tokenize(e,n)):e.match(_)||e.match(S)?null:e.match(z)||e.match(E)||e.match(C)?"operator":e.match(R)?null:e.match(D)?(s(e,n),n.doInCurrentLine=!0,"keyword"):e.match(L)?(n.doInCurrentLine?n.doInCurrentLine=!1:s(e,n),"keyword"):e.match(m)?"keyword":e.match(I)?(f(e,n),f(e,n),"keyword"):e.match(k)?(f(e,n),"keyword"):e.match(A)||e.match(T)?"keyword":e.match(j)?"variable":(e.next(),a)}function K(e){var n=e.length==1,r="string";return function(t,o){for(;!t.eol();){if(t.eatWhile(/[^'"]/),t.match(e))return o.tokenize=p,r;t.eat(/['"]/)}if(n){if(l.singleLineStringErrors)return a;o.tokenize=p}return r}}function P(e,n){var r=n.tokenize(e,n),t=e.current();if(t===".")return r=n.tokenize(e,n),r==="variable"?"variable":a;var o="[({".indexOf(t);return o!==-1&&s(e,n),o="])}".indexOf(t),o!==-1&&f(e,n)?a:r}var H={electricChars:"dDpPtTfFeE ",startState:function(){return{tokenize:p,lastToken:null,currentIndent:0,nextLineIndent:0,doInCurrentLine:!1}},token:function(e,n){e.sol()&&(n.currentIndent+=n.nextLineIndent,n.nextLineIndent=0,n.doInCurrentLine=0);var r=P(e,n);return n.lastToken={style:r,content:e.current()},r},indent:function(e,n){var r=n.replace(/^\s+|\s+$/g,"");return r.match(k)||r.match(I)||r.match(m)?c.indentUnit*(e.currentIndent-1):e.currentIndent<0?0:e.currentIndent*c.indentUnit},lineComment:"'"};return H}),i.defineMIME("text/x-vb","vb")})})();var J=O.exports,W=$({__proto__:null,default:J},[O.exports]);export{W as v};
@@ -1 +1 @@
1
- import{bK as Q}from"./vendor.546e1516.js";function X(l,p){return p.forEach(function(o){o&&typeof o!="string"&&!Array.isArray(o)&&Object.keys(o).forEach(function(a){if(a!=="default"&&!(a in l)){var v=Object.getOwnPropertyDescriptor(o,a);Object.defineProperty(l,a,v.get?v:{enumerable:!0,get:function(){return o[a]}})}})}),Object.freeze(Object.defineProperty(l,Symbol.toStringTag,{value:"Module"}))}var x={exports:{}};(function(l,p){(function(o){o(Q.exports)})(function(o){o.defineMode("vbscript",function(a,v){var d="error";function t(e){return new RegExp("^(("+e.join(")|(")+"))\\b","i")}var w=new RegExp("^[\\+\\-\\*/&\\\\\\^<>=]"),k=new RegExp("^((<>)|(<=)|(>=))"),O=new RegExp("^[\\.,]"),C=new RegExp("^[\\(\\)]"),I=new RegExp("^[A-Za-z][_A-Za-z0-9]*"),S=["class","sub","select","while","if","function","property","with","for"],j=["else","elseif","case"],E=["next","loop","wend"],D=t(["and","or","not","xor","is","mod","eqv","imp"]),T=["dim","redim","then","until","randomize","byval","byref","new","property","exit","in","const","private","public","get","set","let","stop","on error resume next","on error goto 0","option explicit","call","me"],L=["true","false","nothing","empty","null"],R=["abs","array","asc","atn","cbool","cbyte","ccur","cdate","cdbl","chr","cint","clng","cos","csng","cstr","date","dateadd","datediff","datepart","dateserial","datevalue","day","escape","eval","execute","exp","filter","formatcurrency","formatdatetime","formatnumber","formatpercent","getlocale","getobject","getref","hex","hour","inputbox","instr","instrrev","int","fix","isarray","isdate","isempty","isnull","isnumeric","isobject","join","lbound","lcase","left","len","loadpicture","log","ltrim","rtrim","trim","maths","mid","minute","month","monthname","msgbox","now","oct","replace","rgb","right","rnd","round","scriptengine","scriptenginebuildversion","scriptenginemajorversion","scriptengineminorversion","second","setlocale","sgn","sin","space","split","sqr","strcomp","string","strreverse","tan","time","timer","timeserial","timevalue","typename","ubound","ucase","unescape","vartype","weekday","weekdayname","year"],F=["vbBlack","vbRed","vbGreen","vbYellow","vbBlue","vbMagenta","vbCyan","vbWhite","vbBinaryCompare","vbTextCompare","vbSunday","vbMonday","vbTuesday","vbWednesday","vbThursday","vbFriday","vbSaturday","vbUseSystemDayOfWeek","vbFirstJan1","vbFirstFourDays","vbFirstFullWeek","vbGeneralDate","vbLongDate","vbShortDate","vbLongTime","vbShortTime","vbObjectError","vbOKOnly","vbOKCancel","vbAbortRetryIgnore","vbYesNoCancel","vbYesNo","vbRetryCancel","vbCritical","vbQuestion","vbExclamation","vbInformation","vbDefaultButton1","vbDefaultButton2","vbDefaultButton3","vbDefaultButton4","vbApplicationModal","vbSystemModal","vbOK","vbCancel","vbAbort","vbRetry","vbIgnore","vbYes","vbNo","vbCr","VbCrLf","vbFormFeed","vbLf","vbNewLine","vbNullChar","vbNullString","vbTab","vbVerticalTab","vbUseDefault","vbTrue","vbFalse","vbEmpty","vbNull","vbInteger","vbLong","vbSingle","vbDouble","vbCurrency","vbDate","vbString","vbObject","vbError","vbBoolean","vbVariant","vbDataObject","vbDecimal","vbByte","vbArray"],u=["WScript","err","debug","RegExp"],z=["description","firstindex","global","helpcontext","helpfile","ignorecase","length","number","pattern","source","value","count"],W=["clear","execute","raise","replace","test","write","writeline","close","open","state","eof","update","addnew","end","createobject","quit"],A=["server","response","request","session","application"],B=["buffer","cachecontrol","charset","contenttype","expires","expiresabsolute","isclientconnected","pics","status","clientcertificate","cookies","form","querystring","servervariables","totalbytes","contents","staticobjects","codepage","lcid","sessionid","timeout","scripttimeout"],K=["addheader","appendtolog","binarywrite","end","flush","redirect","binaryread","remove","removeall","lock","unlock","abandon","getlasterror","htmlencode","mappath","transfer","urlencode"],b=W.concat(z);u=u.concat(F),a.isASP&&(u=u.concat(A),b=b.concat(K,B));var M=t(T),_=t(L),N=t(R),P=t(u),q=t(b),U='"',Y=t(S),y=t(j),g=t(E),h=t(["end"]),H=t(["do"]),J=t(["on error resume next","exit"]),V=t(["rem"]);function m(e,r){r.currentIndent++}function s(e,r){r.currentIndent--}function f(e,r){if(e.eatSpace())return"space";var n=e.peek();if(n==="'"||e.match(V))return e.skipToEnd(),"comment";if(e.match(/^((&H)|(&O))?[0-9\.]/i,!1)&&!e.match(/^((&H)|(&O))?[0-9\.]+[a-z_]/i,!1)){var i=!1;if((e.match(/^\d*\.\d+/i)||e.match(/^\d+\.\d*/)||e.match(/^\.\d+/))&&(i=!0),i)return e.eat(/J/i),"number";var c=!1;if(e.match(/^&H[0-9a-f]+/i)||e.match(/^&O[0-7]+/i)?c=!0:e.match(/^[1-9]\d*F?/)?(e.eat(/J/i),c=!0):e.match(/^0(?![\dx])/i)&&(c=!0),c)return e.eat(/L/i),"number"}return e.match(U)?(r.tokenize=$(e.current()),r.tokenize(e,r)):e.match(k)||e.match(w)||e.match(D)?"operator":e.match(O)?null:e.match(C)?"bracket":e.match(J)?(r.doInCurrentLine=!0,"keyword"):e.match(H)?(m(e,r),r.doInCurrentLine=!0,"keyword"):e.match(Y)?(r.doInCurrentLine?r.doInCurrentLine=!1:m(e,r),"keyword"):e.match(y)?"keyword":e.match(h)?(s(e,r),s(e,r),"keyword"):e.match(g)?(r.doInCurrentLine?r.doInCurrentLine=!1:s(e,r),"keyword"):e.match(M)?"keyword":e.match(_)?"atom":e.match(q)?"variable-2":e.match(N)?"builtin":e.match(P)?"variable-2":e.match(I)?"variable":(e.next(),d)}function $(e){var r=e.length==1,n="string";return function(i,c){for(;!i.eol();){if(i.eatWhile(/[^'"]/),i.match(e))return c.tokenize=f,n;i.eat(/['"]/)}if(r){if(v.singleLineStringErrors)return d;c.tokenize=f}return n}}function G(e,r){var n=r.tokenize(e,r),i=e.current();return i==="."?(n=r.tokenize(e,r),i=e.current(),n&&(n.substr(0,8)==="variable"||n==="builtin"||n==="keyword")?((n==="builtin"||n==="keyword")&&(n="variable"),b.indexOf(i.substr(1))>-1&&(n="variable-2"),n):d):n}var Z={electricChars:"dDpPtTfFeE ",startState:function(){return{tokenize:f,lastToken:null,currentIndent:0,nextLineIndent:0,doInCurrentLine:!1,ignoreKeyword:!1}},token:function(e,r){e.sol()&&(r.currentIndent+=r.nextLineIndent,r.nextLineIndent=0,r.doInCurrentLine=0);var n=G(e,r);return r.lastToken={style:n,content:e.current()},n==="space"&&(n=null),n},indent:function(e,r){var n=r.replace(/^\s+|\s+$/g,"");return n.match(g)||n.match(h)||n.match(y)?a.indentUnit*(e.currentIndent-1):e.currentIndent<0?0:e.currentIndent*a.indentUnit}};return Z}),o.defineMIME("text/vbscript","vbscript")})})();var ee=x.exports,ne=X({__proto__:null,default:ee},[x.exports]);export{ne as v};
1
+ import{bR as Q}from"./vendor.ef99adf3.js";function X(l,p){return p.forEach(function(o){o&&typeof o!="string"&&!Array.isArray(o)&&Object.keys(o).forEach(function(a){if(a!=="default"&&!(a in l)){var v=Object.getOwnPropertyDescriptor(o,a);Object.defineProperty(l,a,v.get?v:{enumerable:!0,get:function(){return o[a]}})}})}),Object.freeze(Object.defineProperty(l,Symbol.toStringTag,{value:"Module"}))}var x={exports:{}};(function(l,p){(function(o){o(Q.exports)})(function(o){o.defineMode("vbscript",function(a,v){var d="error";function t(e){return new RegExp("^(("+e.join(")|(")+"))\\b","i")}var w=new RegExp("^[\\+\\-\\*/&\\\\\\^<>=]"),k=new RegExp("^((<>)|(<=)|(>=))"),O=new RegExp("^[\\.,]"),C=new RegExp("^[\\(\\)]"),I=new RegExp("^[A-Za-z][_A-Za-z0-9]*"),S=["class","sub","select","while","if","function","property","with","for"],j=["else","elseif","case"],E=["next","loop","wend"],D=t(["and","or","not","xor","is","mod","eqv","imp"]),R=["dim","redim","then","until","randomize","byval","byref","new","property","exit","in","const","private","public","get","set","let","stop","on error resume next","on error goto 0","option explicit","call","me"],T=["true","false","nothing","empty","null"],L=["abs","array","asc","atn","cbool","cbyte","ccur","cdate","cdbl","chr","cint","clng","cos","csng","cstr","date","dateadd","datediff","datepart","dateserial","datevalue","day","escape","eval","execute","exp","filter","formatcurrency","formatdatetime","formatnumber","formatpercent","getlocale","getobject","getref","hex","hour","inputbox","instr","instrrev","int","fix","isarray","isdate","isempty","isnull","isnumeric","isobject","join","lbound","lcase","left","len","loadpicture","log","ltrim","rtrim","trim","maths","mid","minute","month","monthname","msgbox","now","oct","replace","rgb","right","rnd","round","scriptengine","scriptenginebuildversion","scriptenginemajorversion","scriptengineminorversion","second","setlocale","sgn","sin","space","split","sqr","strcomp","string","strreverse","tan","time","timer","timeserial","timevalue","typename","ubound","ucase","unescape","vartype","weekday","weekdayname","year"],F=["vbBlack","vbRed","vbGreen","vbYellow","vbBlue","vbMagenta","vbCyan","vbWhite","vbBinaryCompare","vbTextCompare","vbSunday","vbMonday","vbTuesday","vbWednesday","vbThursday","vbFriday","vbSaturday","vbUseSystemDayOfWeek","vbFirstJan1","vbFirstFourDays","vbFirstFullWeek","vbGeneralDate","vbLongDate","vbShortDate","vbLongTime","vbShortTime","vbObjectError","vbOKOnly","vbOKCancel","vbAbortRetryIgnore","vbYesNoCancel","vbYesNo","vbRetryCancel","vbCritical","vbQuestion","vbExclamation","vbInformation","vbDefaultButton1","vbDefaultButton2","vbDefaultButton3","vbDefaultButton4","vbApplicationModal","vbSystemModal","vbOK","vbCancel","vbAbort","vbRetry","vbIgnore","vbYes","vbNo","vbCr","VbCrLf","vbFormFeed","vbLf","vbNewLine","vbNullChar","vbNullString","vbTab","vbVerticalTab","vbUseDefault","vbTrue","vbFalse","vbEmpty","vbNull","vbInteger","vbLong","vbSingle","vbDouble","vbCurrency","vbDate","vbString","vbObject","vbError","vbBoolean","vbVariant","vbDataObject","vbDecimal","vbByte","vbArray"],u=["WScript","err","debug","RegExp"],z=["description","firstindex","global","helpcontext","helpfile","ignorecase","length","number","pattern","source","value","count"],W=["clear","execute","raise","replace","test","write","writeline","close","open","state","eof","update","addnew","end","createobject","quit"],A=["server","response","request","session","application"],B=["buffer","cachecontrol","charset","contenttype","expires","expiresabsolute","isclientconnected","pics","status","clientcertificate","cookies","form","querystring","servervariables","totalbytes","contents","staticobjects","codepage","lcid","sessionid","timeout","scripttimeout"],K=["addheader","appendtolog","binarywrite","end","flush","redirect","binaryread","remove","removeall","lock","unlock","abandon","getlasterror","htmlencode","mappath","transfer","urlencode"],b=W.concat(z);u=u.concat(F),a.isASP&&(u=u.concat(A),b=b.concat(K,B));var M=t(R),_=t(T),N=t(L),P=t(u),q=t(b),U='"',Y=t(S),y=t(j),g=t(E),h=t(["end"]),H=t(["do"]),J=t(["on error resume next","exit"]),V=t(["rem"]);function m(e,r){r.currentIndent++}function s(e,r){r.currentIndent--}function f(e,r){if(e.eatSpace())return"space";var n=e.peek();if(n==="'"||e.match(V))return e.skipToEnd(),"comment";if(e.match(/^((&H)|(&O))?[0-9\.]/i,!1)&&!e.match(/^((&H)|(&O))?[0-9\.]+[a-z_]/i,!1)){var i=!1;if((e.match(/^\d*\.\d+/i)||e.match(/^\d+\.\d*/)||e.match(/^\.\d+/))&&(i=!0),i)return e.eat(/J/i),"number";var c=!1;if(e.match(/^&H[0-9a-f]+/i)||e.match(/^&O[0-7]+/i)?c=!0:e.match(/^[1-9]\d*F?/)?(e.eat(/J/i),c=!0):e.match(/^0(?![\dx])/i)&&(c=!0),c)return e.eat(/L/i),"number"}return e.match(U)?(r.tokenize=$(e.current()),r.tokenize(e,r)):e.match(k)||e.match(w)||e.match(D)?"operator":e.match(O)?null:e.match(C)?"bracket":e.match(J)?(r.doInCurrentLine=!0,"keyword"):e.match(H)?(m(e,r),r.doInCurrentLine=!0,"keyword"):e.match(Y)?(r.doInCurrentLine?r.doInCurrentLine=!1:m(e,r),"keyword"):e.match(y)?"keyword":e.match(h)?(s(e,r),s(e,r),"keyword"):e.match(g)?(r.doInCurrentLine?r.doInCurrentLine=!1:s(e,r),"keyword"):e.match(M)?"keyword":e.match(_)?"atom":e.match(q)?"variable-2":e.match(N)?"builtin":e.match(P)?"variable-2":e.match(I)?"variable":(e.next(),d)}function $(e){var r=e.length==1,n="string";return function(i,c){for(;!i.eol();){if(i.eatWhile(/[^'"]/),i.match(e))return c.tokenize=f,n;i.eat(/['"]/)}if(r){if(v.singleLineStringErrors)return d;c.tokenize=f}return n}}function G(e,r){var n=r.tokenize(e,r),i=e.current();return i==="."?(n=r.tokenize(e,r),i=e.current(),n&&(n.substr(0,8)==="variable"||n==="builtin"||n==="keyword")?((n==="builtin"||n==="keyword")&&(n="variable"),b.indexOf(i.substr(1))>-1&&(n="variable-2"),n):d):n}var Z={electricChars:"dDpPtTfFeE ",startState:function(){return{tokenize:f,lastToken:null,currentIndent:0,nextLineIndent:0,doInCurrentLine:!1,ignoreKeyword:!1}},token:function(e,r){e.sol()&&(r.currentIndent+=r.nextLineIndent,r.nextLineIndent=0,r.doInCurrentLine=0);var n=G(e,r);return r.lastToken={style:n,content:e.current()},n==="space"&&(n=null),n},indent:function(e,r){var n=r.replace(/^\s+|\s+$/g,"");return n.match(g)||n.match(h)||n.match(y)?a.indentUnit*(e.currentIndent-1):e.currentIndent<0?0:e.currentIndent*a.indentUnit}};return Z}),o.defineMIME("text/vbscript","vbscript")})})();var ee=x.exports,ne=X({__proto__:null,default:ee},[x.exports]);export{ne as v};
@@ -1 +1 @@
1
- import{bK as g}from"./vendor.546e1516.js";function $(f,k){return k.forEach(function(t){t&&typeof t!="string"&&!Array.isArray(t)&&Object.keys(t).forEach(function(o){if(o!=="default"&&!(o in f)){var a=Object.getOwnPropertyDescriptor(t,o);Object.defineProperty(f,o,a.get?a:{enumerable:!0,get:function(){return t[o]}})}})}),Object.freeze(Object.defineProperty(f,Symbol.toStringTag,{value:"Module"}))}var v={exports:{}};(function(f,k){(function(t){t(g.exports)})(function(t){t.defineMode("velocity",function(){function o(n){for(var e={},i=n.split(" "),r=0;r<i.length;++r)e[i[r]]=!0;return e}var a=o("#end #else #break #stop #[[ #]] #{end} #{else} #{break} #{stop}"),u=o("#if #elseif #foreach #set #include #parse #macro #define #evaluate #{if} #{elseif} #{foreach} #{set} #{include} #{parse} #{macro} #{define} #{evaluate}"),b=o("$foreach.count $foreach.hasNext $foreach.first $foreach.last $foreach.topmost $foreach.parent.count $foreach.parent.hasNext $foreach.parent.first $foreach.parent.last $foreach.parent $velocityCount $!bodyContent $bodyContent"),h=/[+\-*&%=<>!?:\/|]/;function s(n,e,i){return e.tokenize=i,i(n,e)}function c(n,e){var i=e.beforeParams;e.beforeParams=!1;var r=n.next();if(r=="'"&&!e.inString&&e.inParams)return e.lastTokenWasBuiltin=!1,s(n,e,d(r));if(r=='"'){if(e.lastTokenWasBuiltin=!1,e.inString)return e.inString=!1,"string";if(e.inParams)return s(n,e,d(r))}else{if(/[\[\]{}\(\),;\.]/.test(r))return r=="("&&i?e.inParams=!0:r==")"&&(e.inParams=!1,e.lastTokenWasBuiltin=!0),null;if(/\d/.test(r))return e.lastTokenWasBuiltin=!1,n.eatWhile(/[\w\.]/),"number";if(r=="#"&&n.eat("*"))return e.lastTokenWasBuiltin=!1,s(n,e,y);if(r=="#"&&n.match(/ *\[ *\[/))return e.lastTokenWasBuiltin=!1,s(n,e,m);if(r=="#"&&n.eat("#"))return e.lastTokenWasBuiltin=!1,n.skipToEnd(),"comment";if(r=="$")return n.eat("!"),n.eatWhile(/[\w\d\$_\.{}-]/),b&&b.propertyIsEnumerable(n.current())?"keyword":(e.lastTokenWasBuiltin=!0,e.beforeParams=!0,"builtin");if(h.test(r))return e.lastTokenWasBuiltin=!1,n.eatWhile(h),"operator";n.eatWhile(/[\w\$_{}@]/);var l=n.current();return a&&a.propertyIsEnumerable(l)?"keyword":u&&u.propertyIsEnumerable(l)||n.current().match(/^#@?[a-z0-9_]+ *$/i)&&n.peek()=="("&&!(u&&u.propertyIsEnumerable(l.toLowerCase()))?(e.beforeParams=!0,e.lastTokenWasBuiltin=!1,"keyword"):e.inString?(e.lastTokenWasBuiltin=!1,"string"):n.pos>l.length&&n.string.charAt(n.pos-l.length-1)=="."&&e.lastTokenWasBuiltin?"builtin":(e.lastTokenWasBuiltin=!1,null)}}function d(n){return function(e,i){for(var r=!1,l,p=!1;(l=e.next())!=null;){if(l==n&&!r){p=!0;break}if(n=='"'&&e.peek()=="$"&&!r){i.inString=!0,p=!0;break}r=!r&&l=="\\"}return p&&(i.tokenize=c),"string"}}function y(n,e){for(var i=!1,r;r=n.next();){if(r=="#"&&i){e.tokenize=c;break}i=r=="*"}return"comment"}function m(n,e){for(var i=0,r;r=n.next();){if(r=="#"&&i==2){e.tokenize=c;break}r=="]"?i++:r!=" "&&(i=0)}return"meta"}return{startState:function(){return{tokenize:c,beforeParams:!1,inParams:!1,inString:!1,lastTokenWasBuiltin:!1}},token:function(n,e){return n.eatSpace()?null:e.tokenize(n,e)},blockCommentStart:"#*",blockCommentEnd:"*#",lineComment:"##",fold:"velocity"}}),t.defineMIME("text/velocity","velocity")})})();var W=v.exports,B=$({__proto__:null,default:W},[v.exports]);export{B as v};
1
+ import{bR as g}from"./vendor.ef99adf3.js";function $(f,k){return k.forEach(function(t){t&&typeof t!="string"&&!Array.isArray(t)&&Object.keys(t).forEach(function(o){if(o!=="default"&&!(o in f)){var a=Object.getOwnPropertyDescriptor(t,o);Object.defineProperty(f,o,a.get?a:{enumerable:!0,get:function(){return t[o]}})}})}),Object.freeze(Object.defineProperty(f,Symbol.toStringTag,{value:"Module"}))}var v={exports:{}};(function(f,k){(function(t){t(g.exports)})(function(t){t.defineMode("velocity",function(){function o(n){for(var e={},i=n.split(" "),r=0;r<i.length;++r)e[i[r]]=!0;return e}var a=o("#end #else #break #stop #[[ #]] #{end} #{else} #{break} #{stop}"),u=o("#if #elseif #foreach #set #include #parse #macro #define #evaluate #{if} #{elseif} #{foreach} #{set} #{include} #{parse} #{macro} #{define} #{evaluate}"),b=o("$foreach.count $foreach.hasNext $foreach.first $foreach.last $foreach.topmost $foreach.parent.count $foreach.parent.hasNext $foreach.parent.first $foreach.parent.last $foreach.parent $velocityCount $!bodyContent $bodyContent"),h=/[+\-*&%=<>!?:\/|]/;function s(n,e,i){return e.tokenize=i,i(n,e)}function c(n,e){var i=e.beforeParams;e.beforeParams=!1;var r=n.next();if(r=="'"&&!e.inString&&e.inParams)return e.lastTokenWasBuiltin=!1,s(n,e,d(r));if(r=='"'){if(e.lastTokenWasBuiltin=!1,e.inString)return e.inString=!1,"string";if(e.inParams)return s(n,e,d(r))}else{if(/[\[\]{}\(\),;\.]/.test(r))return r=="("&&i?e.inParams=!0:r==")"&&(e.inParams=!1,e.lastTokenWasBuiltin=!0),null;if(/\d/.test(r))return e.lastTokenWasBuiltin=!1,n.eatWhile(/[\w\.]/),"number";if(r=="#"&&n.eat("*"))return e.lastTokenWasBuiltin=!1,s(n,e,y);if(r=="#"&&n.match(/ *\[ *\[/))return e.lastTokenWasBuiltin=!1,s(n,e,m);if(r=="#"&&n.eat("#"))return e.lastTokenWasBuiltin=!1,n.skipToEnd(),"comment";if(r=="$")return n.eat("!"),n.eatWhile(/[\w\d\$_\.{}-]/),b&&b.propertyIsEnumerable(n.current())?"keyword":(e.lastTokenWasBuiltin=!0,e.beforeParams=!0,"builtin");if(h.test(r))return e.lastTokenWasBuiltin=!1,n.eatWhile(h),"operator";n.eatWhile(/[\w\$_{}@]/);var l=n.current();return a&&a.propertyIsEnumerable(l)?"keyword":u&&u.propertyIsEnumerable(l)||n.current().match(/^#@?[a-z0-9_]+ *$/i)&&n.peek()=="("&&!(u&&u.propertyIsEnumerable(l.toLowerCase()))?(e.beforeParams=!0,e.lastTokenWasBuiltin=!1,"keyword"):e.inString?(e.lastTokenWasBuiltin=!1,"string"):n.pos>l.length&&n.string.charAt(n.pos-l.length-1)=="."&&e.lastTokenWasBuiltin?"builtin":(e.lastTokenWasBuiltin=!1,null)}}function d(n){return function(e,i){for(var r=!1,l,p=!1;(l=e.next())!=null;){if(l==n&&!r){p=!0;break}if(n=='"'&&e.peek()=="$"&&!r){i.inString=!0,p=!0;break}r=!r&&l=="\\"}return p&&(i.tokenize=c),"string"}}function y(n,e){for(var i=!1,r;r=n.next();){if(r=="#"&&i){e.tokenize=c;break}i=r=="*"}return"comment"}function m(n,e){for(var i=0,r;r=n.next();){if(r=="#"&&i==2){e.tokenize=c;break}r=="]"?i++:r!=" "&&(i=0)}return"meta"}return{startState:function(){return{tokenize:c,beforeParams:!1,inParams:!1,inString:!1,lastTokenWasBuiltin:!1}},token:function(n,e){return n.eatSpace()?null:e.tokenize(n,e)},blockCommentStart:"#*",blockCommentEnd:"*#",lineComment:"##",fold:"velocity"}}),t.defineMIME("text/velocity","velocity")})})();var W=v.exports,B=$({__proto__:null,default:W},[v.exports]);export{B as v};