@directus/app 9.0.1 → 9.2.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 (386) hide show
  1. package/dist/@directus_extensions-sdk.bfcbcdb2.js +1 -0
  2. package/dist/assets/{active-line.1e85080e.js → active-line.26c5b22c.js} +1 -1
  3. package/dist/assets/{activity-log.f0b81785.js → activity-log.5e4655fe.js} +1 -1
  4. package/dist/assets/{activity.848efa17.js → activity.d1dc970c.js} +5 -5
  5. package/dist/assets/af-ZA.e55141de.js +1 -0
  6. package/dist/assets/{api-endpoints.6b2f9a0a.js → api-endpoints.8828b972.js} +2 -2
  7. package/dist/assets/{apl.81a36d94.js → apl.81ad0f83.js} +1 -1
  8. package/dist/assets/{app-overview.9d9e9cee.svg → app-overview.1d041c7b.svg} +2 -1
  9. package/dist/assets/{ar-SA.3368322c.js → ar-SA.c14aed74.js} +1 -1
  10. package/dist/assets/{asciiarmor.41807b38.js → asciiarmor.76e6426d.js} +1 -1
  11. package/dist/assets/{asn.1.2fb547c7.js → asn.1.71a91aed.js} +1 -1
  12. package/dist/assets/{asterisk.f25d8cae.js → asterisk.80f8502f.js} +1 -1
  13. package/dist/assets/{authentication.595f862f.js → authentication.2cacaeb9.js} +10 -9
  14. package/dist/assets/{autorefresh.47068160.js → autorefresh.b4c043fd.js} +1 -1
  15. package/dist/assets/{aws.684d8f17.js → aws.80878698.js} +1 -1
  16. package/dist/assets/{backing-directus.75b705d8.js → backing-directus.61d6e724.js} +1 -1
  17. package/dist/assets/bg-BG.2ccc4340.js +2 -0
  18. package/dist/assets/{br-FR.7a926846.js → br-FR.ac76f3c4.js} +1 -1
  19. package/dist/assets/{brainfuck.0eb32d6a.js → brainfuck.9cb7bbc7.js} +1 -1
  20. package/dist/assets/{ca-ES.2e706764.js → ca-ES.bb7c5b19.js} +1 -1
  21. package/dist/assets/{cli.6bc58792.js → cli.5550afc3.js} +2 -2
  22. package/dist/assets/cli.63d72df5.js +10 -0
  23. package/dist/assets/{clike.8a91e766.js → clike.e00b6fc0.js} +1 -1
  24. package/dist/assets/{clojure.680b2086.js → clojure.809a239a.js} +1 -1
  25. package/dist/assets/cloudron.faaaab54.js +1 -0
  26. package/dist/assets/cmake.9e2c3af3.js +1 -0
  27. package/dist/assets/{cobol.11746877.js → cobol.34952893.js} +1 -1
  28. package/dist/assets/{codebase-overview.bec34b38.js → codebase-overview.e1e8f010.js} +1 -1
  29. package/dist/assets/{coffeescript.cc7b12bb.js → coffeescript.961bb7e7.js} +1 -1
  30. package/dist/assets/{collections.fb0eff5f.js → collections.2a7f6562.js} +4 -4
  31. package/dist/assets/{commonlisp.81cf66cf.js → commonlisp.55bc3390.js} +1 -1
  32. package/dist/assets/{config-options.5ba591a6.js → config-options.7faffebc.js} +12 -12
  33. package/dist/assets/{content-collections.b24311e4.js → content-collections.a7de45b5.js} +1 -1
  34. package/dist/assets/{content-items.16fafd36.js → content-items.e9d9529c.js} +1 -1
  35. package/dist/assets/{content.31f08958.js → content.557c9218.js} +1 -1
  36. package/dist/assets/{crystal.88773be1.js → crystal.d7313cde.js} +1 -1
  37. package/dist/assets/css.17df7ad1.js +1 -0
  38. package/dist/assets/{cypher.62d62091.js → cypher.b89065cc.js} +1 -1
  39. package/dist/assets/{d.235b72e5.js → d.174a69ec.js} +1 -1
  40. package/dist/assets/{da-DK.0bec4b59.js → da-DK.3bcf884c.js} +1 -1
  41. package/dist/assets/{dart.d5e0dc33.js → dart.d0eb6182.js} +1 -1
  42. package/dist/assets/data-model.6fb88bd6.js +1 -0
  43. package/dist/assets/{de-DE.4b4b8e70.js → de-DE.cdcb9600.js} +1 -1
  44. package/dist/assets/{diff.236ec957.js → diff.b7a4963f.js} +1 -1
  45. package/dist/assets/digitalocean-app-platform.bf1a04c0.js +3 -0
  46. package/dist/assets/{displays.c55af3d6.js → displays.add8fe2c.js} +5 -5
  47. package/dist/assets/{django.b7dc3aae.js → django.da7ed745.js} +1 -1
  48. package/dist/assets/{docker.d76fac42.js → docker.1b49ec74.js} +1 -1
  49. package/dist/assets/{dockerfile.1019efd6.js → dockerfile.d6d3e269.js} +1 -1
  50. package/dist/assets/{documentation.1092ea83.js → documentation.7336014f.js} +1 -1
  51. package/dist/assets/{dtd.2a851c5f.js → dtd.45e86e6d.js} +1 -1
  52. package/dist/assets/{dylan.9bb2cd36.js → dylan.ec84c04e.js} +1 -1
  53. package/dist/assets/{ebnf.276406d3.js → ebnf.085fa852.js} +1 -1
  54. package/dist/assets/{ecl.11564c5b.js → ecl.270e9abf.js} +1 -1
  55. package/dist/assets/{eiffel.be49a681.js → eiffel.336802c1.js} +1 -1
  56. package/dist/assets/{elm.5c8852f7.js → elm.da8b96b6.js} +1 -1
  57. package/dist/assets/{email-templates.3c6a781e.js → email-templates.bf41e36a.js} +2 -2
  58. package/dist/assets/en-GB.361d696e.js +1 -0
  59. package/dist/assets/{erlang.ead9639d.js → erlang.b2f5e3ff.js} +1 -1
  60. package/dist/assets/es-419.994854a0.js +1 -0
  61. package/dist/assets/es-CL.3bf346ef.js +1 -0
  62. package/dist/assets/es-ES.5be51e8b.js +1 -0
  63. package/dist/assets/{et-EE.8aa32a45.js → et-EE.da648eba.js} +1 -1
  64. package/dist/assets/{extensions.b76bdde3.js → extensions.b3034cc8.js} +2 -2
  65. package/dist/assets/{factor.eed233f0.js → factor.5f1bd905.js} +1 -1
  66. package/dist/assets/faq.7223b3ed.js +1 -0
  67. package/dist/assets/{fcl.271814f0.js → fcl.fdd412a4.js} +1 -1
  68. package/dist/assets/fi-FI.64bf9412.js +1 -0
  69. package/dist/assets/{fields.238d924d.js → fields.a2b84f49.js} +2 -2
  70. package/dist/assets/{file-library.d7ca55fc.js → file-library.5f224a0d.js} +1 -1
  71. package/dist/assets/{files.92988e46.js → files.89714327.js} +1 -1
  72. package/dist/assets/{filter-rules.339629f8.js → filter-rules.b16f33ad.js} +2 -2
  73. package/dist/assets/{folders.54e223af.js → folders.964cb698.js} +4 -4
  74. package/dist/assets/{forth.5c226e69.js → forth.5e4a638c.js} +1 -1
  75. package/dist/assets/{fortran.a1e621fd.js → fortran.d037a8e9.js} +1 -1
  76. package/dist/assets/fr-FR.2b742996.js +1 -0
  77. package/dist/assets/{gas.249ccc95.js → gas.c1fb542a.js} +1 -1
  78. package/dist/assets/{gfm.392719b7.js → gfm.ef15b019.js} +1 -1
  79. package/dist/assets/{gherkin.f1c57004.js → gherkin.f2284a3d.js} +1 -1
  80. package/dist/assets/{github-ci.0ba5d515.js → github-ci.1993f260.js} +2 -2
  81. package/dist/assets/{glossary.4258b82f.js → glossary.53f5ccae.js} +1 -1
  82. package/dist/assets/{go.55fe2209.js → go.ee521b37.js} +1 -1
  83. package/dist/assets/{groovy.49803548.js → groovy.ff223850.js} +1 -1
  84. package/dist/assets/{haml.00447402.js → haml.dfd3a15e.js} +1 -1
  85. package/dist/assets/{handlebars.2c2675b3.js → handlebars.ee000b2a.js} +1 -1
  86. package/dist/assets/{haskell-literate.f95e4126.js → haskell-literate.7be3e5e8.js} +1 -1
  87. package/dist/assets/{haskell.613e1328.js → haskell.f0f6d0b5.js} +1 -1
  88. package/dist/assets/{haxe.e363e2e2.js → haxe.d7974a6e.js} +1 -1
  89. package/dist/assets/hi-IN.f686e98f.js +1 -0
  90. package/dist/assets/hooks.995bf7f1.js +72 -0
  91. package/dist/assets/{htmlembedded.5a5f0ffe.js → htmlembedded.fbe7b06d.js} +1 -1
  92. package/dist/assets/{htmlmixed.05e7a4e9.js → htmlmixed.8b21831b.js} +1 -1
  93. package/dist/assets/{http.36bf71f5.js → http.e1dcc6a6.js} +1 -1
  94. package/dist/assets/{hu-HU.1043806e.js → hu-HU.fc2083ad.js} +1 -1
  95. package/dist/assets/{id-ID.42c8e6ba.js → id-ID.06f8c7ad.js} +1 -1
  96. package/dist/assets/{idl.369d3687.js → idl.182ee0a1.js} +1 -1
  97. package/dist/assets/{iis.61b90801.js → iis.751d4784.js} +3 -2
  98. package/dist/assets/{index.53d7b4b1.js → index.00342ce9.js} +1 -1
  99. package/dist/assets/{index.7cb6c8da.js → index.06705dee.js} +1 -1
  100. package/dist/assets/{index.1fd33265.js → index.0aaf58e2.js} +1 -1
  101. package/dist/assets/{index.49fe7bbe.js → index.0b37920b.js} +1 -1
  102. package/dist/assets/{index.255ac1ac.js → index.0e9f9cdb.js} +1 -1
  103. package/dist/assets/{index.376099f6.js → index.10fa61dd.js} +1 -1
  104. package/dist/assets/{index.bd34bd8b.js → index.170c9aef.js} +1 -1
  105. package/dist/assets/{index.65c5205d.js → index.195486a9.js} +1 -1
  106. package/dist/assets/{index.bd506b24.js → index.1bd2ce1d.js} +1 -1
  107. package/dist/assets/{index.d03ceb16.js → index.1cb1c89c.js} +1 -1
  108. package/dist/assets/{index.aa99cd2b.js → index.1ef64264.js} +1 -1
  109. package/dist/assets/{index.f8360683.js → index.24dc2b50.js} +1 -1
  110. package/dist/assets/index.2603f9b4.css +1 -0
  111. package/dist/assets/{index.5ef6863e.js → index.2a532c34.js} +1 -1
  112. package/dist/assets/{index.e713a183.js → index.2c7690b7.js} +1 -1
  113. package/dist/assets/index.2ca0b263.css +1 -0
  114. package/dist/assets/{index.40abc1ae.js → index.2f09b0ab.js} +1 -1
  115. package/dist/assets/{index.6690c511.js → index.31d6290e.js} +1 -1
  116. package/dist/assets/{index.e65c230c.js → index.35b3227d.js} +1 -1
  117. package/dist/assets/{index.e68f5a19.js → index.3a55cb7a.js} +1 -1
  118. package/dist/assets/{index.f526c37a.js → index.3cdbbf75.js} +1 -1
  119. package/dist/assets/{index.7e86f332.js → index.3e7346f6.js} +1 -1
  120. package/dist/assets/{index.15d4ddd7.js → index.42b5c185.js} +1 -1
  121. package/dist/assets/{index.9597bb18.js → index.48b2303e.js} +1 -1
  122. package/dist/assets/{index.64b8816b.js → index.48e8585e.js} +1 -1
  123. package/dist/assets/{index.bba3d752.js → index.4b7ce3d9.js} +1 -1
  124. package/dist/assets/{index.31d1f296.js → index.50e58393.js} +1 -1
  125. package/dist/assets/{index.8fbbb686.js → index.570f038e.js} +1 -1
  126. package/dist/assets/{index.900f92f9.js → index.5ae5f490.js} +1 -1
  127. package/dist/assets/{index.19d9989e.js → index.5e1fa0bf.js} +1 -1
  128. package/dist/assets/{index.5caafb3d.js → index.609e713c.js} +1 -1
  129. package/dist/assets/{index.87946fe5.js → index.60c625fe.js} +1 -1
  130. package/dist/assets/{index.c36b50cf.js → index.63f139be.js} +1 -1
  131. package/dist/assets/{index.216b6328.js → index.640dd223.js} +1 -1
  132. package/dist/assets/{index.bee706b8.js → index.64591ec8.js} +1 -1
  133. package/dist/assets/{index.54a202be.js → index.65f3fbd9.js} +1 -1
  134. package/dist/assets/{index.5e175966.js → index.6df3a744.js} +1 -1
  135. package/dist/assets/{index.0caa5421.js → index.7250277a.js} +1 -1
  136. package/dist/assets/{index.0bd18bfd.js → index.72b20962.js} +1 -1
  137. package/dist/assets/{index.3c3c9275.js → index.777a345b.js} +1 -1
  138. package/dist/assets/{index.5d4c645c.js → index.7a4b3279.js} +1 -1
  139. package/dist/assets/{index.1d3c8b76.js → index.7b7bd2bb.js} +1 -1
  140. package/dist/assets/{index.1d2a8b64.js → index.7bd8fa33.js} +1 -1
  141. package/dist/assets/{index.f07bb8da.js → index.7f11024e.js} +1 -1
  142. package/dist/assets/{index.15f9b058.js → index.825757de.js} +1 -1
  143. package/dist/assets/{index.8e104536.js → index.85487066.js} +1 -1
  144. package/dist/assets/{index.83459924.js → index.91f9a8ea.js} +1 -1
  145. package/dist/assets/{index.550c7d98.js → index.9a34d0ad.js} +1 -1
  146. package/dist/assets/{index.d6eb48fd.js → index.9be0af27.js} +1 -1
  147. package/dist/assets/{index.266ef2c9.js → index.9df68447.js} +1 -1
  148. package/dist/assets/{index.0ed888d7.js → index.a142ec45.js} +1 -1
  149. package/dist/assets/{index.c2ece3ef.js → index.a3746c49.js} +1 -1
  150. package/dist/assets/{index.14bae658.js → index.aae790c3.js} +1 -1
  151. package/dist/assets/{index.b7e06d7c.js → index.ac5309a7.js} +1 -1
  152. package/dist/assets/{index.29fa87ff.js → index.adcd313e.js} +1 -1
  153. package/dist/assets/{index.b73273e0.js → index.af1f4431.js} +1 -1
  154. package/dist/assets/{index.61b86afb.js → index.b24bf29e.js} +1 -1
  155. package/dist/assets/{index.77f16025.js → index.b4db14a9.js} +1 -1
  156. package/dist/assets/{index.0b9941e1.js → index.b7968e56.js} +1 -1
  157. package/dist/assets/{index.0fb52a97.js → index.b803b5c0.js} +1 -1
  158. package/dist/assets/{index.94db319d.js → index.b94dcef9.js} +1 -1
  159. package/dist/assets/{index.5a304363.js → index.bb294572.js} +1 -1
  160. package/dist/assets/{index.59451527.js → index.bc07556a.js} +1 -1
  161. package/dist/assets/{index.aa7706f9.js → index.bdce1888.js} +1 -1
  162. package/dist/assets/{index.7a811ff8.js → index.be10baeb.js} +1 -1
  163. package/dist/assets/{index.b2adcd91.js → index.c046a8fd.js} +1 -1
  164. package/dist/assets/{index.1fb6fed8.js → index.c242e7b6.js} +1 -1
  165. package/dist/assets/{index.0ba5b42a.js → index.c5418cbb.js} +1 -1
  166. package/dist/assets/{index.6da8ed8b.js → index.c875d5a1.js} +1 -1
  167. package/dist/assets/{index.544fc3f4.js → index.cc291dcf.js} +1 -1
  168. package/dist/assets/{index.11bd8819.js → index.d15bff6b.js} +1 -1
  169. package/dist/assets/{index.1a242848.js → index.dd5da334.js} +1 -1
  170. package/dist/assets/{index.b75dc5c2.js → index.de5fa400.js} +1 -1
  171. package/dist/assets/{index.2ffae100.js → index.e59eb90f.js} +1 -1
  172. package/dist/assets/{index.8c729bf2.js → index.e8e78fe0.js} +1 -1
  173. package/dist/assets/{index.5286e9da.js → index.ee87082d.js} +1 -1
  174. package/dist/assets/index.eeba3fe9.js +26 -0
  175. package/dist/assets/{index.5c71b9bf.js → index.f2468536.js} +1 -1
  176. package/dist/assets/{index.9c37c372.js → index.f2f83988.js} +1 -1
  177. package/dist/assets/{index.750b633c.js → index.f650bdd2.js} +1 -1
  178. package/dist/assets/{index.dc1688d8.js → index.f992167b.js} +1 -1
  179. package/dist/assets/{index.19ae9f48.js → index.fc0d2b63.js} +1 -1
  180. package/dist/assets/{index.fefbb129.js → index.fd87d3cb.js} +1 -1
  181. package/dist/assets/{input-rich-text-html.67ebfae2.css → input-rich-text-html.01165183.css} +1 -1
  182. package/dist/assets/{input-rich-text-html.8fe88ffb.js → input-rich-text-html.c2f628ae.js} +43 -43
  183. package/dist/assets/{insights.fe74fe29.js → insights.35419fea.js} +1 -1
  184. package/dist/assets/installation.eae7bc78.js +1 -0
  185. package/dist/assets/{interfaces.23229e78.js → interfaces.106447a6.js} +7 -7
  186. package/dist/assets/{introduction.16f8f0b0.js → introduction.775bd94e.js} +1 -1
  187. package/dist/assets/introduction.8f825d90.js +1 -0
  188. package/dist/assets/{introduction.e29b10c2.js → introduction.9780c035.js} +7 -7
  189. package/dist/assets/{introduction.02e3c2a7.js → introduction.b9bb6e01.js} +2 -2
  190. package/dist/assets/it-IT.14bfc0b6.js +1 -0
  191. package/dist/assets/{items.4227ac2d.js → items.50d09d96.js} +6 -6
  192. package/dist/assets/ja-JP.ba312533.js +1 -0
  193. package/dist/assets/{javascript-hint.747ac6fc.js → javascript-hint.ef0fe16e.js} +1 -1
  194. package/dist/assets/{javascript.84e4549d.js → javascript.38e2ca1a.js} +1 -1
  195. package/dist/assets/{jinja2.a9a0ddb1.js → jinja2.8648ef63.js} +1 -1
  196. package/dist/assets/{jsx.5d18b001.js → jsx.9a8d51d6.js} +1 -1
  197. package/dist/assets/{julia.12cc2a8c.js → julia.c4e037f7.js} +1 -1
  198. package/dist/assets/ku-TR.3322375c.js +1 -0
  199. package/dist/assets/{layouts.1bd78154.js → layouts.ba122738.js} +5 -5
  200. package/dist/assets/{livescript.f585b533.js → livescript.d673b991.js} +1 -1
  201. package/dist/assets/{localization.a73190dd.js → localization.47f8e7e5.js} +1 -1
  202. package/dist/assets/logo-light.7a327cdd.svg +3 -0
  203. package/dist/assets/{lt-LT.69b9046b.js → lt-LT.497afd55.js} +1 -1
  204. package/dist/assets/{lua.a656cb84.js → lua.7cfb30be.js} +1 -1
  205. package/dist/assets/{manual.794bb884.js → manual.6d92664d.js} +4 -4
  206. package/dist/assets/{mark-selection.98a1b6fc.js → mark-selection.665c33af.js} +1 -1
  207. package/dist/assets/{match-highlighter.e1444e0b.js → match-highlighter.ffb4832f.js} +1 -1
  208. package/dist/assets/{mathematica.448ae8b5.js → mathematica.93a46a1f.js} +1 -1
  209. package/dist/assets/{mbox.977764b6.js → mbox.deb92f82.js} +1 -1
  210. package/dist/assets/migrations.ca569233.js +19 -0
  211. package/dist/assets/{mirc.ac98dd7b.js → mirc.96b69659.js} +1 -1
  212. package/dist/assets/{mllike.ee7c202f.js → mllike.2604471e.js} +1 -1
  213. package/dist/assets/{modelica.0e691287.js → modelica.07417903.js} +1 -1
  214. package/dist/assets/{modules.116e46b4.js → modules.3f25c2ca.js} +6 -6
  215. package/dist/assets/{mscgen.4c9c356e.js → mscgen.ce94fb84.js} +1 -1
  216. package/dist/assets/{multiplex.91d67c6e.js → multiplex.553fdcf6.js} +1 -1
  217. package/dist/assets/{mumps.c8a6b66b.js → mumps.6d4f6a77.js} +1 -1
  218. package/dist/assets/{nginx.048f88c1.js → nginx.1b1b7a85.js} +1 -1
  219. package/dist/assets/{nl-NL.bff34791.js → nl-NL.edb61cc3.js} +1 -1
  220. package/dist/assets/no-NO.ebaacb8a.js +1 -0
  221. package/dist/assets/notifications.7d5b4018.js +153 -0
  222. package/dist/assets/{nsis.1830f129.js → nsis.800b8ecf.js} +1 -1
  223. package/dist/assets/{ntriples.dff164ff.js → ntriples.5b70253c.js} +1 -1
  224. package/dist/assets/{octave.27aaa450.js → octave.d674345b.js} +1 -1
  225. package/dist/assets/{overlay.ff3e2ac4.js → overlay.aaae46c1.js} +1 -1
  226. package/dist/assets/{overview.c3721f80.js → overview.391169f1.js} +1 -1
  227. package/dist/assets/overview.b3257d1a.js +1 -0
  228. package/dist/assets/{oz.c625131c.js → oz.a57cd6c6.js} +1 -1
  229. package/dist/assets/{panels.c9913c4b.js → panels.3d54322a.js} +1 -1
  230. package/dist/assets/{pascal.2c02faa8.js → pascal.bd6858f9.js} +1 -1
  231. package/dist/assets/{pegjs.0854aa70.js → pegjs.094d5776.js} +1 -1
  232. package/dist/assets/{perl.6bf3c050.js → perl.3aa60c3c.js} +1 -1
  233. package/dist/assets/{permissions.83661a53.js → permissions.564eb072.js} +4 -4
  234. package/dist/assets/php.aad9a05c.js +1 -0
  235. package/dist/assets/{pig.f6acccd0.js → pig.60e1b8d9.js} +1 -1
  236. package/dist/assets/pl-PL.fcac44cc.js +1 -0
  237. package/dist/assets/{plesk.20b032fb.js → plesk.938ab777.js} +6 -6
  238. package/dist/assets/{powershell.3fe72e38.js → powershell.bff1f89c.js} +1 -1
  239. package/dist/assets/{presets-bookmarks.dfa9b52f.js → presets-bookmarks.b268b023.js} +1 -1
  240. package/dist/assets/{presets.7e0c88ae.js → presets.cff54053.js} +1 -1
  241. package/dist/assets/project-settings.c887fbea.js +1 -0
  242. package/dist/assets/{properties.8c3f631c.js → properties.0698e9c9.js} +1 -1
  243. package/dist/assets/{protobuf.ff5609be.js → protobuf.3cefb795.js} +1 -1
  244. package/dist/assets/pt-BR.eff6bc85.js +1 -0
  245. package/dist/assets/{pt-PT.b923e241.js → pt-PT.33683147.js} +1 -1
  246. package/dist/assets/{pug.e66669ae.js → pug.2823ac37.js} +1 -1
  247. package/dist/assets/{puppet.8585cc4d.js → puppet.6b5f8999.js} +1 -1
  248. package/dist/assets/{python.ce0163fc.js → python.f0335e64.js} +1 -1
  249. package/dist/assets/{q.4a99aff9.js → q.ab5b1dd7.js} +1 -1
  250. package/dist/assets/{query.998e770c.js → query.065bc71e.js} +3 -3
  251. package/dist/assets/{quickstart.1aa6ffca.js → quickstart.cdf47561.js} +3 -3
  252. package/dist/assets/{r.d0ae744a.js → r.cc002fd5.js} +1 -1
  253. package/dist/assets/{relations.7edadd3b.js → relations.028171dc.js} +4 -4
  254. package/dist/assets/{relationships.b6ef88eb.js → relationships.dc4de6fe.js} +14 -17
  255. package/dist/assets/{revisions.9a70b1ec.js → revisions.9c06a6cd.js} +3 -3
  256. package/dist/assets/{roles.f017240c.js → roles.05aa20d3.js} +7 -7
  257. package/dist/assets/{rpm.f0a7ad70.js → rpm.16e37784.js} +1 -1
  258. package/dist/assets/rst.bc8cd4f0.js +1 -0
  259. package/dist/assets/ru-RU.2e06b3ed.js +1 -0
  260. package/dist/assets/{ruby.4d15c7d1.js → ruby.207c3c8d.js} +1 -1
  261. package/dist/assets/{running-locally.bd69d8dc.js → running-locally.74954cf8.js} +5 -5
  262. package/dist/assets/{rust.e4dfe0d4.js → rust.e5e8db34.js} +1 -1
  263. package/dist/assets/{sas.709abdd1.js → sas.732c1fb5.js} +1 -1
  264. package/dist/assets/{sass.2505dd07.js → sass.a6d54759.js} +1 -1
  265. package/dist/assets/{scheme.897fc126.js → scheme.bf86a054.js} +1 -1
  266. package/dist/assets/sdk.027e1905.js +300 -0
  267. package/dist/assets/{security.548b2b76.js → security.3ecda9dd.js} +1 -1
  268. package/dist/assets/{server.d6f5abdc.js → server.2f493acf.js} +4 -4
  269. package/dist/assets/{settings.4b550f79.js → settings.5730c27d.js} +1 -1
  270. package/dist/assets/{settings.5c0f889e.js → settings.9e861c3c.js} +9 -5
  271. package/dist/assets/{shell.19de1cf8.js → shell.29cd4035.js} +1 -1
  272. package/dist/assets/{show-hint.0412391d.js → show-hint.23eb7a45.js} +1 -1
  273. package/dist/assets/{sieve.da5795e7.js → sieve.d831b5ce.js} +1 -1
  274. package/dist/assets/{simple.ab4d8d4b.js → simple.312a5b01.js} +1 -1
  275. package/dist/assets/{sl-SI.bfbe276b.js → sl-SI.41305ef8.js} +1 -1
  276. package/dist/assets/{slim.2805b872.js → slim.cab15ca2.js} +1 -1
  277. package/dist/assets/{smalltalk.ee9f0dd3.js → smalltalk.4f6a7ed7.js} +1 -1
  278. package/dist/assets/{smarty.08c649b4.js → smarty.a78117f3.js} +1 -1
  279. package/dist/assets/{solr.36ddf5d2.js → solr.f90334b7.js} +1 -1
  280. package/dist/assets/soy.d1e38e2c.js +1 -0
  281. package/dist/assets/{sparql.e90ce227.js → sparql.3d8087d4.js} +1 -1
  282. package/dist/assets/{spreadsheet.812bc4c1.js → spreadsheet.3b78c411.js} +1 -1
  283. package/dist/assets/sql.5f7a694e.js +1 -0
  284. package/dist/assets/{sr-CS.b4de8472.js → sr-CS.0b70ed56.js} +1 -1
  285. package/dist/assets/sso.2a03ed28.js +22 -0
  286. package/dist/assets/{stex.8fe110b6.js → stex.d0d6fa5e.js} +1 -1
  287. package/dist/assets/stylus.bb6171bb.js +1 -0
  288. package/dist/assets/{support.618bb824.js → support.f442955d.js} +1 -1
  289. package/dist/assets/sv-SE.07c9dbad.js +1 -0
  290. package/dist/assets/{swift.a963a96b.js → swift.599d450c.js} +1 -1
  291. package/dist/assets/{tcl.c00f0ec5.js → tcl.30b6bd0a.js} +1 -1
  292. package/dist/assets/{textile.431d240b.js → textile.2aaadb71.js} +1 -1
  293. package/dist/assets/{th-TH.81e128af.js → th-TH.51bd50db.js} +1 -1
  294. package/dist/assets/{themes.ec95c8cb.js → themes.7af7ef21.js} +2 -2
  295. package/dist/assets/{tiddlywiki.1b4d0a22.js → tiddlywiki.6c21f5fe.js} +1 -1
  296. package/dist/assets/{tiki.d37bbabb.js → tiki.f7b3b608.js} +1 -1
  297. package/dist/assets/{toml.1475fc5c.js → toml.70cd3de1.js} +1 -1
  298. package/dist/assets/{tornado.e812c41b.js → tornado.da87f7ab.js} +1 -1
  299. package/dist/assets/{tr-TR.0be85b79.js → tr-TR.fea3a7da.js} +1 -1
  300. package/dist/assets/{translations.8406cfe3.js → translations.c313e520.js} +1 -1
  301. package/dist/assets/{troff.52251200.js → troff.057eadf9.js} +1 -1
  302. package/dist/assets/{ttcn-cfg.4e31c9ce.js → ttcn-cfg.0acb6ffd.js} +1 -1
  303. package/dist/assets/{ttcn.3ea9f7e4.js → ttcn.5cb1c005.js} +1 -1
  304. package/dist/assets/{turtle.7f166fc9.js → turtle.f8cfe16f.js} +1 -1
  305. package/dist/assets/{twig.7c77b8f7.js → twig.bbb4c257.js} +1 -1
  306. package/dist/assets/ubuntu.195a12bc.js +11 -0
  307. package/dist/assets/uk-UA.b339fbea.js +1 -0
  308. package/dist/assets/{upgrades-migrations.df5c4042.js → upgrades-migrations.4262de4c.js} +1 -1
  309. package/dist/assets/use-sync.df5f0627.js +1 -0
  310. package/dist/assets/{user-directory.63d4d638.js → user-directory.315e2e53.js} +1 -1
  311. package/dist/assets/{users-roles-permissions.68584449.js → users-roles-permissions.1d02ef32.js} +1 -1
  312. package/dist/assets/{users.c3c87007.js → users.850440e1.js} +19 -19
  313. package/dist/assets/{utilities.e7ef40fc.js → utilities.a706557a.js} +3 -3
  314. package/dist/assets/{vb.1551d2a2.js → vb.227d7bae.js} +1 -1
  315. package/dist/assets/{vbscript.0c1ac8ad.js → vbscript.b4c906c8.js} +1 -1
  316. package/dist/assets/{velocity.63a0cbb3.js → velocity.1dc1dd7a.js} +1 -1
  317. package/dist/assets/vendor.327371af.js +2039 -0
  318. package/dist/assets/{verilog.37081dae.js → verilog.00006420.js} +1 -1
  319. package/dist/assets/{vhdl.8c76cefa.js → vhdl.7ea928c0.js} +1 -1
  320. package/dist/assets/{vi-VN.14101822.js → vi-VN.12000d52.js} +1 -1
  321. package/dist/assets/{vue.2098315b.js → vue.06dc381f.js} +1 -1
  322. package/dist/assets/{wast.b90e42f3.js → wast.9ebd9127.js} +1 -1
  323. package/dist/assets/{webhooks.2dd2256f.js → webhooks.27290345.js} +5 -5
  324. package/dist/assets/{webhooks.59b09c0d.js → webhooks.40c7a452.js} +1 -1
  325. package/dist/assets/{webidl.76dda28b.js → webidl.91787b9d.js} +1 -1
  326. package/dist/assets/{xquery.5d4fe342.js → xquery.8f2f2640.js} +1 -1
  327. package/dist/assets/{yacas.b1b2324d.js → yacas.e74d7b64.js} +1 -1
  328. package/dist/assets/{yaml-frontmatter.6a71ce09.js → yaml-frontmatter.09f551ca.js} +1 -1
  329. package/dist/assets/{yaml.ca3ba26d.js → yaml.6c188844.js} +1 -1
  330. package/dist/assets/{z80.a23bb6d3.js → z80.2ec7da50.js} +1 -1
  331. package/dist/assets/zh-CN.7e212f77.js +1 -0
  332. package/dist/assets/{zh-TW.3efec3f7.js → zh-TW.ef28a778.js} +1 -1
  333. package/dist/index.0b1b074c.js +351 -0
  334. package/dist/index.html +4 -4
  335. package/dist/vue-i18n.9dd4f933.js +1 -0
  336. package/dist/vue-router.1ce019c2.js +1 -0
  337. package/dist/vue.6e63c09e.js +1 -0
  338. package/package.json +18 -17
  339. package/dist/@directus_extensions-sdk.8dd2238a.js +0 -1
  340. package/dist/assets/af-ZA.5bc87dbc.js +0 -1
  341. package/dist/assets/bg-BG.9212fbf7.js +0 -2
  342. package/dist/assets/cli.9c35ba03.js +0 -10
  343. package/dist/assets/cmake.59d9f97d.js +0 -1
  344. package/dist/assets/css.f0a27894.js +0 -1
  345. package/dist/assets/data-model.66f7e0e4.js +0 -1
  346. package/dist/assets/digitalocean-app-platform.d8054fb4.js +0 -3
  347. package/dist/assets/es-419.f8a62d18.js +0 -1
  348. package/dist/assets/es-CL.76c7e2d1.js +0 -1
  349. package/dist/assets/es-ES.f23f1053.js +0 -1
  350. package/dist/assets/faq.e629faf1.js +0 -1
  351. package/dist/assets/fi-FI.26f5b2cc.js +0 -1
  352. package/dist/assets/fr-FR.e2625f19.js +0 -1
  353. package/dist/assets/hi-IN.d224762a.js +0 -1
  354. package/dist/assets/hooks.9441eb32.js +0 -75
  355. package/dist/assets/index.570f6759.js +0 -26
  356. package/dist/assets/index.9fb5b610.css +0 -1
  357. package/dist/assets/index.a49dcfb2.css +0 -1
  358. package/dist/assets/installation.24a44faf.js +0 -1
  359. package/dist/assets/introduction.25a5119e.js +0 -1
  360. package/dist/assets/it-IT.3c8c35dd.js +0 -1
  361. package/dist/assets/ja-JP.1e745c98.js +0 -1
  362. package/dist/assets/ku-TR.62749d99.js +0 -1
  363. package/dist/assets/logo-light.1a93a59d.svg +0 -3
  364. package/dist/assets/migrations.992a23b0.js +0 -15
  365. package/dist/assets/no-NO.66c87fac.js +0 -1
  366. package/dist/assets/overview.b56593b7.js +0 -1
  367. package/dist/assets/php.7f583bfa.js +0 -1
  368. package/dist/assets/pl-PL.8f26d744.js +0 -1
  369. package/dist/assets/project-settings.31256b54.js +0 -1
  370. package/dist/assets/pt-BR.e623fc8a.js +0 -1
  371. package/dist/assets/rst.f0464fbc.js +0 -1
  372. package/dist/assets/ru-RU.fec4e20e.js +0 -1
  373. package/dist/assets/sdk.b41be838.js +0 -282
  374. package/dist/assets/soy.2c180864.js +0 -1
  375. package/dist/assets/sql.f222e1b8.js +0 -1
  376. package/dist/assets/stylus.02531228.js +0 -1
  377. package/dist/assets/sv-SE.1739ab58.js +0 -1
  378. package/dist/assets/ubuntu.67ddbadb.js +0 -11
  379. package/dist/assets/uk-UA.46578a03.js +0 -1
  380. package/dist/assets/use-sync.da76e524.js +0 -1
  381. package/dist/assets/vendor.299bc11c.js +0 -2039
  382. package/dist/assets/zh-CN.355da8e5.js +0 -1
  383. package/dist/index.0f7650cb.js +0 -340
  384. package/dist/vue-i18n.b2a4a29c.js +0 -1
  385. package/dist/vue-router.cd2fde56.js +0 -1
  386. package/dist/vue.642980f3.js +0 -1
@@ -0,0 +1,72 @@
1
+ import{r as o,p as a,q as c,w as u,B as l,P as e}from"./vendor.327371af.js";const r=l("div",{class:"markdown-body"},[l("blockquote",null,[l("p",null,"Custom API Hooks allow running custom logic when a specified event occurs within your project. Types of API hooks are Actions, Filters, Init, and Schedule.")]),l("p",null,[l("div",{class:"table-of-contents"},[l("ul",null,[l("li",null,[l("a",{href:"#types-of-hooks"},"Types of Hooks")]),l("li",null,[l("a",{href:"#available-events"},"Available Events")]),l("li",null,[l("a",{href:"#creating-a-hook"},"Creating a Hook")])])])]),l("h2",{id:"types-of-hooks"},[e("Types of Hooks "),l("a",{class:"header-anchor",href:"#types-of-hooks"},"#")]),l("ul",null,[l("li",null,[l("a",{href:"#action"},"Action")]),l("li",null,[l("a",{href:"#filter"},"Filter")]),l("li",null,[l("a",{href:"#init"},"Init")]),l("li",null,[l("a",{href:"#schedule"},"Schedule")])]),l("p",null,"Use filter hooks when you want the hook to fire before the event. Use action hooks when you want the hook to fire after the event."),l("p",null,[e("Hooks can impact performance when not carefully implemented. Filter hooks happen before the event fires, making them much more susceptible to performance issues. Hooks on "),l("code",null,"read"),e(" actions can also impact performance since a single request can result in many database reads.")]),l("h3",{id:"action"},[e("Action "),l("a",{class:"header-anchor",href:"#action"},"#")]),l("p",null,"An action event executes after a defined event and receives data related to the event. Use actions hooks when you need to automate responses to CRUD events on items or server actions."),l("p",null,"The action register function receives two parameters:"),l("ul",null,[l("li",null,"The event name"),l("li",null,"A callback function that is executed whenever the event fires.")]),l("p",null,"The callback function itself receives two parameters:"),l("ul",null,[l("li",null,"An event-specific meta object"),l("li",null,"A context object")]),l("p",null,"The context object has the following properties:"),l("ul",null,[l("li",null,[l("code",null,"database"),e(" \u2014 The current database transaction")]),l("li",null,[l("code",null,"schema"),e(" \u2014 The current API schema in use")]),l("li",null,[l("code",null,"accountability"),e(" \u2014 Information about the current user")])]),l("h3",{id:"filter"},[e("Filter "),l("a",{class:"header-anchor",href:"#filter"},"#")]),l("p",null,"Filter hooks act on the event\u2019s payload before the event is fired. They allow you to check, modify, or cancel an event."),l("p",null,[e("Below is an example of canceling a "),l("code",null,"create"),e(" event by throwing a standard Directus exception.")]),l("pre",null,[l("code",{class:"language-js"},[l("span",{class:"hljs-built_in"},"module"),e(".exports = "),l("span",{class:"hljs-function"},[l("span",{class:"hljs-keyword"},"function"),e(),l("span",{class:"hljs-title"},"registerHook"),e("("),l("span",{class:"hljs-params"},"{ filter }, { exceptions }"),e(") ")]),e(`{
2
+ `),l("span",{class:"hljs-keyword"},"const"),e(` { InvalidPayloadException } = exceptions;
3
+
4
+ filter(`),l("span",{class:"hljs-string"},"'items.create'"),e(", "),l("span",{class:"hljs-keyword"},"async"),e(` (input) => {
5
+ `),l("span",{class:"hljs-keyword"},"if"),e(` (LOGIC_TO_CANCEL_EVENT) {
6
+ `),l("span",{class:"hljs-keyword"},"throw"),e(),l("span",{class:"hljs-keyword"},"new"),e(` InvalidPayloadException(WHAT_IS_WRONG);
7
+ }
8
+
9
+ `),l("span",{class:"hljs-keyword"},"return"),e(` input;
10
+ });
11
+ };
12
+ `)])]),l("p",null,"The filter register function receives two parameters:"),l("ul",null,[l("li",null,"The event name"),l("li",null,"A callback function that is executed whenever the event fires.")]),l("p",null,"The callback function itself receives three parameters:"),l("ul",null,[l("li",null,"The modifiable payload"),l("li",null,"An event-specific meta object"),l("li",null,"A context object")]),l("p",null,"The context object has the following properties:"),l("ul",null,[l("li",null,[l("code",null,"database"),e(" \u2014 The current database transaction")]),l("li",null,[l("code",null,"schema"),e(" \u2014 The current API schema in use")]),l("li",null,[l("code",null,"accountability"),e(" \u2014 Information about the current user")])]),l("h3",{id:"init"},[e("Init "),l("a",{class:"header-anchor",href:"#init"},"#")]),l("p",null,"An init event executes at a defined point within the lifecycle of Directus. Use init event objects to inject logic into internal services."),l("p",null,"The init register function receives two parameters:"),l("ul",null,[l("li",null,"The event name"),l("li",null,"A callback function that is executed whenever the event fires.")]),l("p",null,"The callback function itself receives one parameter:"),l("ul",null,[l("li",null,"An event-specific meta object")]),l("h3",{id:"schedule"},[e("Schedule "),l("a",{class:"header-anchor",href:"#schedule"},"#")]),l("p",null,[e("A schedule event executes at certain points in time rather than when Directus performs a specific action. This is supported through "),l("a",{href:"https://www.npmjs.com/package/node-cron",target:"_blank",rel:"noopener noreferrer"},[l("code",null,"node-cron")]),e(". To set up a scheduled event, provide a cron statement as the first parameter to the "),l("code",null,"schedule()"),e(" function. For example "),l("code",null,"schedule('15 14 1 * *', <...>)"),e(" (at 14:15 on day-of-month 1) or "),l("code",null,"schedule('5 4 * * sun', <...>)"),e(" (at 04:05 on Sunday). See example below:")]),l("pre",null,[l("code",{class:"language-js"},[l("span",{class:"hljs-keyword"},"const"),e(" axios = "),l("span",{class:"hljs-built_in"},"require"),e("("),l("span",{class:"hljs-string"},"'axios'"),e(`);
13
+
14
+ `),l("span",{class:"hljs-built_in"},"module"),e(".exports = "),l("span",{class:"hljs-function"},[l("span",{class:"hljs-keyword"},"function"),e(),l("span",{class:"hljs-title"},"registerHook"),e("("),l("span",{class:"hljs-params"},"{ schedule }"),e(") ")]),e(`{
15
+ schedule(`),l("span",{class:"hljs-string"},"'*/15 * * * *'"),e(", "),l("span",{class:"hljs-keyword"},"async"),e(` () => {
16
+ `),l("span",{class:"hljs-keyword"},"await"),e(" axios.post("),l("span",{class:"hljs-string"},"'http://example.com/webhook'"),e(", { "),l("span",{class:"hljs-attr"},"message"),e(": "),l("span",{class:"hljs-string"},"'Another 15 minutes passed...'"),e(` });
17
+ });
18
+ };
19
+ `)])]),l("h2",{id:"available-events"},[e("Available Events "),l("a",{class:"header-anchor",href:"#available-events"},"#")]),l("h3",{id:"action-events"},[e("Action Events "),l("a",{class:"header-anchor",href:"#action-events"},"#")]),l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Name"),l("th",null,"Meta")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"server.start")]),l("td",null,[l("code",null,"server")])]),l("tr",null,[l("td",null,[l("code",null,"server.stop")]),l("td",null,[l("code",null,"server")])]),l("tr",null,[l("td",null,[l("code",null,"response")]),l("td",null,[l("code",null,"request"),e(", "),l("code",null,"response"),e(", "),l("code",null,"ip"),e(", "),l("code",null,"duration"),e(", "),l("code",null,"finished")])]),l("tr",null,[l("td",null,[l("code",null,"auth.login")]),l("td",null,[l("code",null,"payload"),e(", "),l("code",null,"status"),e(", "),l("code",null,"user"),e(", "),l("code",null,"provider")])]),l("tr",null,[l("td",null,[l("code",null,"files.upload")]),l("td",null,[l("code",null,"payload"),e(", "),l("code",null,"key"),e(", "),l("code",null,"collection")])]),l("tr",null,[l("td",null,[l("code",null,"(<collection>.)items.read")]),l("td",null,[l("code",null,"payload"),e(", "),l("code",null,"query"),e(", "),l("code",null,"collection")])]),l("tr",null,[l("td",null,[l("code",null,"(<collection>.)items.create")]),l("td",null,[l("code",null,"payload"),e(", "),l("code",null,"key"),e(", "),l("code",null,"collection")])]),l("tr",null,[l("td",null,[l("code",null,"(<collection>.)items.update")]),l("td",null,[l("code",null,"payload"),e(", "),l("code",null,"keys"),e(", "),l("code",null,"collection")])]),l("tr",null,[l("td",null,[l("code",null,"(<collection>.)items.delete")]),l("td",null,[l("code",null,"payload"),e(", "),l("code",null,"collection")])]),l("tr",null,[l("td",null,[l("code",null,"<system-collection>.create")]),l("td",null,[l("code",null,"payload"),e(", "),l("code",null,"key"),e(", "),l("code",null,"collection")])]),l("tr",null,[l("td",null,[l("code",null,"<system-collection>.update")]),l("td",null,[l("code",null,"payload"),e(", "),l("code",null,"keys"),e(", "),l("code",null,"collection")])]),l("tr",null,[l("td",null,[l("code",null,"<system-collection>.delete")]),l("td",null,[l("code",null,"payload"),e(", "),l("code",null,"collection")])])])]),l("div",{class:"tip hint"},[l("div",{class:"hint-title"},"System Collections"),l("p",null,[l("code",null,"<system-collection>"),e(" should be replaced with one of the system collection names "),l("code",null,"activity"),e(", "),l("code",null,"collections"),e(", "),l("code",null,"fields"),e(", "),l("code",null,"folders"),e(", "),l("code",null,"permissions"),e(", "),l("code",null,"presets"),e(", "),l("code",null,"relations"),e(", "),l("code",null,"revisions"),e(", "),l("code",null,"roles"),e(", "),l("code",null,"settings"),e(", "),l("code",null,"users"),e(" or "),l("code",null,"webhooks"),e(".")])]),l("h3",{id:"filter-events"},[e("Filter Events "),l("a",{class:"header-anchor",href:"#filter-events"},"#")]),l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Name"),l("th",null,"Payload"),l("th",null,"Meta")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"request.not_found")]),l("td",null,[l("code",null,"false")]),l("td",null,[l("code",null,"request"),e(", "),l("code",null,"response")])]),l("tr",null,[l("td",null,[l("code",null,"request.error")]),l("td",null,"The request errors"),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"database.error")]),l("td",null,"The database error"),l("td",null,[l("code",null,"client")])]),l("tr",null,[l("td",null,[l("code",null,"auth.login")]),l("td",null,"The login payload"),l("td",null,[l("code",null,"status"),e(", "),l("code",null,"user"),e(", "),l("code",null,"provider")])]),l("tr",null,[l("td",null,[l("code",null,"auth.jwt")]),l("td",null,"The auth token"),l("td",null,[l("code",null,"status"),e(", "),l("code",null,"user"),e(", "),l("code",null,"provider"),e(", "),l("code",null,"type")])]),l("tr",null,[l("td",null,[l("code",null,"(<collection>.)items.read")]),l("td",null,"The read item"),l("td",null,[l("code",null,"collection")])]),l("tr",null,[l("td",null,[l("code",null,"(<collection>.)items.create")]),l("td",null,"The new item"),l("td",null,[l("code",null,"collection")])]),l("tr",null,[l("td",null,[l("code",null,"(<collection>.)items.update")]),l("td",null,"The updated item"),l("td",null,[l("code",null,"keys"),e(", "),l("code",null,"collection")])]),l("tr",null,[l("td",null,[l("code",null,"(<collection>.)items.delete")]),l("td",null,"The keys of the item"),l("td",null,[l("code",null,"collection")])]),l("tr",null,[l("td",null,[l("code",null,"<system-collection>.create")]),l("td",null,"The new item"),l("td",null,[l("code",null,"collection")])]),l("tr",null,[l("td",null,[l("code",null,"<system-collection>.update")]),l("td",null,"The updated item"),l("td",null,[l("code",null,"keys"),e(", "),l("code",null,"collection")])]),l("tr",null,[l("td",null,[l("code",null,"<system-collection>.delete")]),l("td",null,"The keys of the item"),l("td",null,[l("code",null,"collection")])])])]),l("div",{class:"tip hint"},[l("div",{class:"hint-title"},"System Collections"),l("p",null,[l("code",null,"<system-collection>"),e(" should be replaced with one of the system collection names "),l("code",null,"activity"),e(", "),l("code",null,"collections"),e(", "),l("code",null,"fields"),e(", "),l("code",null,"folders"),e(", "),l("code",null,"permissions"),e(", "),l("code",null,"presets"),e(", "),l("code",null,"relations"),e(", "),l("code",null,"revisions"),e(", "),l("code",null,"roles"),e(", "),l("code",null,"settings"),e(", "),l("code",null,"users"),e(" or "),l("code",null,"webhooks"),e(".")])]),l("h3",{id:"init-events"},[e("Init Events "),l("a",{class:"header-anchor",href:"#init-events"},"#")]),l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Name"),l("th",null,"Meta")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"cli.before")]),l("td",null,[l("code",null,"program")])]),l("tr",null,[l("td",null,[l("code",null,"cli.after")]),l("td",null,[l("code",null,"program")])]),l("tr",null,[l("td",null,[l("code",null,"app.before")]),l("td",null,[l("code",null,"app")])]),l("tr",null,[l("td",null,[l("code",null,"app.after")]),l("td",null,[l("code",null,"app")])]),l("tr",null,[l("td",null,[l("code",null,"routes.before")]),l("td",null,[l("code",null,"app")])]),l("tr",null,[l("td",null,[l("code",null,"routes.after")]),l("td",null,[l("code",null,"app")])]),l("tr",null,[l("td",null,[l("code",null,"routes.custom.before")]),l("td",null,[l("code",null,"app")])]),l("tr",null,[l("td",null,[l("code",null,"routes.custom.after")]),l("td",null,[l("code",null,"app")])]),l("tr",null,[l("td",null,[l("code",null,"middlewares.before")]),l("td",null,[l("code",null,"app")])]),l("tr",null,[l("td",null,[l("code",null,"middlewares.after")]),l("td",null,[l("code",null,"app")])])])]),l("h2",{id:"creating-a-hook"},[e("Creating a Hook "),l("a",{class:"header-anchor",href:"#creating-a-hook"},"#")]),l("h3",{id:"1.-create-a-hook-file"},[e("1. Create a Hook File "),l("a",{class:"header-anchor",href:"#1.-create-a-hook-file"},"#")]),l("p",null,[e("Custom hooks are dynamically loaded from within your extensions folder. By default, this directory is located at "),l("code",null,"/extensions"),e(", but it can be configured within your project\u2019s env file to be located anywhere. The hook-id is the name of your hook.")]),l("h4",{id:"default-standalone-hook-location"},[e("Default Standalone Hook Location "),l("a",{class:"header-anchor",href:"#default-standalone-hook-location"},"#")]),l("pre",null,[l("code",null,`/extensions/hooks/<hook-id>/index.js
20
+ `)]),l("h3",{id:"2.-register-your-hook"},[e("2. Register your Hook "),l("a",{class:"header-anchor",href:"#2.-register-your-hook"},"#")]),l("p",null,[e("The "),l("code",null,"registerHook"),e(" function receives an object containing the type-specific register functions as the first parameter:")]),l("ul",null,[l("li",null,[l("code",null,"filter"),e(" \u2014 Listen for a filter event")]),l("li",null,[l("code",null,"action"),e(" \u2014 Listen for an action event")]),l("li",null,[l("code",null,"init"),e(" \u2014 Listen for an init event")]),l("li",null,[l("code",null,"schedule"),e(" \u2014 Execute a function at certain points in time")])]),l("p",null,"A second parameter is a context object with the following properties:"),l("ul",null,[l("li",null,[l("code",null,"services"),e(" \u2014 All API internal services")]),l("li",null,[l("code",null,"exceptions"),e(" \u2014 API exception objects that can be used for throwing \u201Cproper\u201D errors")]),l("li",null,[l("code",null,"database"),e(" \u2014 Knex instance that is connected to the current database")]),l("li",null,[l("code",null,"getSchema"),e(" \u2014 Async function that reads the full available schema for use in services")]),l("li",null,[l("code",null,"env"),e(" \u2014 Parsed environment variables")]),l("li",null,[l("code",null,"logger"),e(" \u2014 "),l("a",{href:"https://github.com/pinojs/pino",target:"_blank",rel:"noopener noreferrer"},"Pino"),e(" instance.")])]),l("p",null,"Each custom hook is registered to its event scope using a function with the following format:"),l("pre",null,[l("code",{class:"language-js"},[l("span",{class:"hljs-keyword"},"const"),e(" axios = "),l("span",{class:"hljs-built_in"},"require"),e("("),l("span",{class:"hljs-string"},"'axios'"),e(`);
21
+
22
+ `),l("span",{class:"hljs-built_in"},"module"),e(".exports = "),l("span",{class:"hljs-function"},[l("span",{class:"hljs-keyword"},"function"),e(),l("span",{class:"hljs-title"},"registerHook"),e("("),l("span",{class:"hljs-params"},"{ action }"),e(") ")]),e(`{
23
+ action(`),l("span",{class:"hljs-string"},"'items.create'"),e(", "),l("span",{class:"hljs-function"},"() =>"),e(` {
24
+ axios.post(`),l("span",{class:"hljs-string"},"'http://example.com/webhook'"),e(`);
25
+ });
26
+ };
27
+ `)])]),l("h3",{id:"3.-develop-your-custom-hook"},[e("3. Develop your Custom Hook "),l("a",{class:"header-anchor",href:"#3.-develop-your-custom-hook"},"#")]),l("p",null,"Trigger your custom hook with any of the platform\u2019s many API events."),l("p",null,"Event names consist of multiple scopes delimited by a dot:"),l("pre",null,[l("code",null,`<scope>.<scope>...
28
+ // eg: items.create
29
+ // eg: users.update
30
+ // eg: auth.login
31
+ // eg: routes.custom.before
32
+ `)]),l("p",null,[e("Using the example from step 2, "),l("code",null,"action()"),e(" is the hook type and it receives two arguments. "),l("code",null,"items.create"),e(" is the API event that should trigger the hook. It also receives a callback function that says what the hook should do when the API event occurs.")]),l("pre",null,[l("code",{class:"language-js"},[l("span",{class:"hljs-keyword"},"const"),e(" axios = "),l("span",{class:"hljs-built_in"},"require"),e("("),l("span",{class:"hljs-string"},"'axios'"),e(`);
33
+
34
+ `),l("span",{class:"hljs-built_in"},"module"),e(".exports = "),l("span",{class:"hljs-function"},[l("span",{class:"hljs-keyword"},"function"),e(),l("span",{class:"hljs-title"},"registerHook"),e("("),l("span",{class:"hljs-params"},"{ action }"),e(") ")]),e(`{
35
+ action(`),l("span",{class:"hljs-string"},"'items.create'"),e(", "),l("span",{class:"hljs-function"},"() =>"),e(` {
36
+ axios.post(`),l("span",{class:"hljs-string"},"'http://example.com/webhook'"),e(`);
37
+ });
38
+ };
39
+ `)])]),l("h3",{id:"4.-restart-the-api"},[e("4. Restart the API "),l("a",{class:"header-anchor",href:"#4.-restart-the-api"},"#")]),l("p",null,"To deploy your hook, restart the API by running:"),l("pre",null,[l("code",{class:"language-bash"},`npx directus start
40
+ `)]),l("h3",{id:"full-example"},[e("Full Example "),l("a",{class:"header-anchor",href:"#full-example"},"#")]),l("p",null,[l("code",null,"extensions/hooks/sync-with-external/index.js"),e(":")]),l("pre",null,[l("code",{class:"language-js"},[l("span",{class:"hljs-keyword"},"const"),e(" axios = "),l("span",{class:"hljs-built_in"},"require"),e("("),l("span",{class:"hljs-string"},"'axios'"),e(`);
41
+
42
+ `),l("span",{class:"hljs-built_in"},"module"),e(".exports = "),l("span",{class:"hljs-function"},[l("span",{class:"hljs-keyword"},"function"),e(),l("span",{class:"hljs-title"},"registerHook"),e("("),l("span",{class:"hljs-params"},"{ filter }, { services, exceptions }"),e(") ")]),e(`{
43
+ `),l("span",{class:"hljs-keyword"},"const"),e(` { MailService } = services;
44
+ `),l("span",{class:"hljs-keyword"},"const"),e(` { ServiceUnavailableException, ForbiddenException } = exceptions;
45
+
46
+ `),l("span",{class:"hljs-comment"},"// Sync with external recipes service, cancel creation on failure"),e(`
47
+ filter(`),l("span",{class:"hljs-string"},"'items.create'"),e(", "),l("span",{class:"hljs-keyword"},"async"),e(` (input, { collection }, { schema }) => {
48
+ `),l("span",{class:"hljs-keyword"},"if"),e(" (collection !== "),l("span",{class:"hljs-string"},"'recipes'"),e(") "),l("span",{class:"hljs-keyword"},"return"),e(` input;
49
+
50
+ `),l("span",{class:"hljs-keyword"},"const"),e(" mailService = "),l("span",{class:"hljs-keyword"},"new"),e(` MailService({ schema });
51
+
52
+ `),l("span",{class:"hljs-keyword"},"try"),e(` {
53
+ `),l("span",{class:"hljs-keyword"},"await"),e(" axios.post("),l("span",{class:"hljs-string"},"'https://example.com/recipes'"),e(`, input);
54
+ `),l("span",{class:"hljs-keyword"},"await"),e(` mailService.send({
55
+ `),l("span",{class:"hljs-attr"},"to"),e(": "),l("span",{class:"hljs-string"},"'person@example.com'"),e(`,
56
+ `),l("span",{class:"hljs-attr"},"template"),e(`: {
57
+ `),l("span",{class:"hljs-attr"},"name"),e(": "),l("span",{class:"hljs-string"},"'item-created'"),e(`,
58
+ `),l("span",{class:"hljs-attr"},"data"),e(`: {
59
+ `),l("span",{class:"hljs-attr"},"collection"),e(`: collection,
60
+ },
61
+ },
62
+ });
63
+ } `),l("span",{class:"hljs-keyword"},"catch"),e(` (error) {
64
+ `),l("span",{class:"hljs-keyword"},"throw"),e(),l("span",{class:"hljs-keyword"},"new"),e(` ServiceUnavailableException(error);
65
+ }
66
+
67
+ input.syncedWithExample = `),l("span",{class:"hljs-literal"},"true"),e(`;
68
+
69
+ `),l("span",{class:"hljs-keyword"},"return"),e(` input;
70
+ });
71
+ };
72
+ `)])])],-1),f={setup(i,{expose:t}){const n={title:"Custom API Hooks",modularExtension:!0};return t({frontmatter:n}),(d,h)=>{const s=o("DocsWrapper");return a(),c(s,{frontmatter:n},{default:u(()=>[r]),_:1})}}};export{f as default};
@@ -1 +1 @@
1
- import{bF as i}from"./vendor.299bc11c.js";import{a as l}from"./htmlmixed.05e7a4e9.js";import{m as a}from"./multiplex.91d67c6e.js";function s(n,o){return o.forEach(function(e){e&&typeof e!="string"&&!Array.isArray(e)&&Object.keys(e).forEach(function(m){if(m!=="default"&&!(m in n)){var t=Object.getOwnPropertyDescriptor(e,m);Object.defineProperty(n,m,t.get?t:{enumerable:!0,get:function(){return e[m]}})}})}),Object.freeze(n)}var p={exports:{}};(function(n,o){(function(e){e(i.exports,l.exports,a.exports)})(function(e){e.defineMode("htmlembedded",function(m,t){var d=t.closeComment||"--%>";return e.multiplexingMode(e.getMode(m,"htmlmixed"),{open:t.openComment||"<%--",close:d,delimStyle:"comment",mode:{token:function(c){return c.skipTo(d)||c.skipToEnd(),"comment"}}},{open:t.open||t.scriptStartRegex||"<%",close:t.close||t.scriptEndRegex||"%>",mode:e.getMode(m,t.scriptingModeSpec)})},"htmlmixed"),e.defineMIME("application/x-ejs",{name:"htmlembedded",scriptingModeSpec:"javascript"}),e.defineMIME("application/x-aspx",{name:"htmlembedded",scriptingModeSpec:"text/x-csharp"}),e.defineMIME("application/x-jsp",{name:"htmlembedded",scriptingModeSpec:"text/x-java"}),e.defineMIME("application/x-erb",{name:"htmlembedded",scriptingModeSpec:"ruby"})})})();var r=p.exports,f=Object.freeze(s({__proto__:null,[Symbol.toStringTag]:"Module",default:r},[p.exports]));export{f as h};
1
+ import{bH as i}from"./vendor.327371af.js";import{a as l}from"./htmlmixed.8b21831b.js";import{m as a}from"./multiplex.553fdcf6.js";function s(n,o){return o.forEach(function(e){e&&typeof e!="string"&&!Array.isArray(e)&&Object.keys(e).forEach(function(m){if(m!=="default"&&!(m in n)){var t=Object.getOwnPropertyDescriptor(e,m);Object.defineProperty(n,m,t.get?t:{enumerable:!0,get:function(){return e[m]}})}})}),Object.freeze(n)}var p={exports:{}};(function(n,o){(function(e){e(i.exports,l.exports,a.exports)})(function(e){e.defineMode("htmlembedded",function(m,t){var d=t.closeComment||"--%>";return e.multiplexingMode(e.getMode(m,"htmlmixed"),{open:t.openComment||"<%--",close:d,delimStyle:"comment",mode:{token:function(c){return c.skipTo(d)||c.skipToEnd(),"comment"}}},{open:t.open||t.scriptStartRegex||"<%",close:t.close||t.scriptEndRegex||"%>",mode:e.getMode(m,t.scriptingModeSpec)})},"htmlmixed"),e.defineMIME("application/x-ejs",{name:"htmlembedded",scriptingModeSpec:"javascript"}),e.defineMIME("application/x-aspx",{name:"htmlembedded",scriptingModeSpec:"text/x-csharp"}),e.defineMIME("application/x-jsp",{name:"htmlembedded",scriptingModeSpec:"text/x-java"}),e.defineMIME("application/x-erb",{name:"htmlembedded",scriptingModeSpec:"ruby"})})})();var r=p.exports,b=Object.freeze(s({__proto__:null,[Symbol.toStringTag]:"Module",default:r},[p.exports]));export{b as h};
@@ -1 +1 @@
1
- import{bF as R,bH as _}from"./vendor.299bc11c.js";import{a as I}from"./javascript.84e4549d.js";import{a as F}from"./css.f0a27894.js";function z(m,x){return x.forEach(function(c){c&&typeof c!="string"&&!Array.isArray(c)&&Object.keys(c).forEach(function(u){if(u!=="default"&&!(u in m)){var g=Object.getOwnPropertyDescriptor(c,u);Object.defineProperty(m,u,g.get?g:{enumerable:!0,get:function(){return c[u]}})}})}),Object.freeze(m)}var $={exports:{}};(function(m,x){(function(c){c(R.exports,_.exports,I.exports,F.exports)})(function(c){var u={script:[["lang",/(javascript|babel)/i,"javascript"],["type",/^(?:text|application)\/(?:x-)?(?:java|ecma)script$|^module$|^$/i,"javascript"],["type",/./,"text/plain"],[null,null,"javascript"]],style:[["lang",/^css$/i,"css"],["type",/^(text\/)?(x-)?(stylesheet|css)$/i,"css"],["type",/./,"text/plain"],[null,null,"css"]]};function g(n,a,l){var o=n.current(),r=o.search(a);return r>-1?n.backUp(o.length-r):o.match(/<\/?$/)&&(n.backUp(o.length),n.match(a,!1)||n.match(o)),l}var S={};function k(n){var a=S[n];return a||(S[n]=new RegExp("\\s+"+n+`\\s*=\\s*('|")?([^'"]+)('|")?\\s*`))}function w(n,a){var l=n.match(k(a));return l?/^\s*(.*?)\s*$/.exec(l[2])[1]:""}function y(n,a){return new RegExp((a?"^":"")+"</s*"+n+"s*>","i")}function T(n,a){for(var l in n)for(var o=a[l]||(a[l]=[]),r=n[l],i=r.length-1;i>=0;i--)o.unshift(r[i])}function O(n,a){for(var l=0;l<n.length;l++){var o=n[l];if(!o[0]||o[1].test(w(a,o[0])))return o[2]}}c.defineMode("htmlmixed",function(n,a){var l=c.getMode(n,{name:"xml",htmlMode:!0,multilineTagIndentFactor:a.multilineTagIndentFactor,multilineTagIndentPastTag:a.multilineTagIndentPastTag,allowMissingTagName:a.allowMissingTagName}),o={},r=a&&a.tags,i=a&&a.scriptTypes;if(T(u,o),r&&T(r,o),i)for(var p=i.length-1;p>=0;p--)o.script.unshift(["type",i[p].matches,i[p].mode]);function b(t,e){var f=l.token(t,e.htmlState),j=/\btag\b/.test(f),d;if(j&&!/[<>\s\/]/.test(t.current())&&(d=e.htmlState.tagName&&e.htmlState.tagName.toLowerCase())&&o.hasOwnProperty(d))e.inTag=d+" ";else if(e.inTag&&j&&/>$/.test(t.current())){var h=/^([\S]+) (.*)/.exec(e.inTag);e.inTag=null;var N=t.current()==">"&&O(o[h[1]],h[2]),M=c.getMode(n,N),P=y(h[1],!0),E=y(h[1],!1);e.token=function(v,s){return v.match(P,!1)?(s.token=b,s.localState=s.localMode=null,null):g(v,E,s.localMode.token(v,s.localState))},e.localMode=M,e.localState=c.startState(M,l.indent(e.htmlState,"",""))}else e.inTag&&(e.inTag+=t.current(),t.eol()&&(e.inTag+=" "));return f}return{startState:function(){var t=c.startState(l);return{token:b,inTag:null,localMode:null,localState:null,htmlState:t}},copyState:function(t){var e;return t.localState&&(e=c.copyState(t.localMode,t.localState)),{token:t.token,inTag:t.inTag,localMode:t.localMode,localState:e,htmlState:c.copyState(l,t.htmlState)}},token:function(t,e){return e.token(t,e)},indent:function(t,e,f){return!t.localMode||/^\s*<\//.test(e)?l.indent(t.htmlState,e,f):t.localMode.indent?t.localMode.indent(t.localState,e,f):c.Pass},innerMode:function(t){return{state:t.localState||t.htmlState,mode:t.localMode||l}}}},"xml","javascript","css"),c.defineMIME("text/html","htmlmixed")})})();var A=$.exports,H=Object.freeze(z({__proto__:null,[Symbol.toStringTag]:"Module",default:A},[$.exports]));export{$ as a,H as h};
1
+ import{bH as R,bJ as _}from"./vendor.327371af.js";import{a as I}from"./javascript.38e2ca1a.js";import{a as z}from"./css.17df7ad1.js";function A(m,x){return x.forEach(function(c){c&&typeof c!="string"&&!Array.isArray(c)&&Object.keys(c).forEach(function(u){if(u!=="default"&&!(u in m)){var g=Object.getOwnPropertyDescriptor(c,u);Object.defineProperty(m,u,g.get?g:{enumerable:!0,get:function(){return c[u]}})}})}),Object.freeze(m)}var $={exports:{}};(function(m,x){(function(c){c(R.exports,_.exports,I.exports,z.exports)})(function(c){var u={script:[["lang",/(javascript|babel)/i,"javascript"],["type",/^(?:text|application)\/(?:x-)?(?:java|ecma)script$|^module$|^$/i,"javascript"],["type",/./,"text/plain"],[null,null,"javascript"]],style:[["lang",/^css$/i,"css"],["type",/^(text\/)?(x-)?(stylesheet|css)$/i,"css"],["type",/./,"text/plain"],[null,null,"css"]]};function g(n,a,l){var o=n.current(),r=o.search(a);return r>-1?n.backUp(o.length-r):o.match(/<\/?$/)&&(n.backUp(o.length),n.match(a,!1)||n.match(o)),l}var S={};function k(n){var a=S[n];return a||(S[n]=new RegExp("\\s+"+n+`\\s*=\\s*('|")?([^'"]+)('|")?\\s*`))}function w(n,a){var l=n.match(k(a));return l?/^\s*(.*?)\s*$/.exec(l[2])[1]:""}function y(n,a){return new RegExp((a?"^":"")+"</s*"+n+"s*>","i")}function T(n,a){for(var l in n)for(var o=a[l]||(a[l]=[]),r=n[l],i=r.length-1;i>=0;i--)o.unshift(r[i])}function O(n,a){for(var l=0;l<n.length;l++){var o=n[l];if(!o[0]||o[1].test(w(a,o[0])))return o[2]}}c.defineMode("htmlmixed",function(n,a){var l=c.getMode(n,{name:"xml",htmlMode:!0,multilineTagIndentFactor:a.multilineTagIndentFactor,multilineTagIndentPastTag:a.multilineTagIndentPastTag,allowMissingTagName:a.allowMissingTagName}),o={},r=a&&a.tags,i=a&&a.scriptTypes;if(T(u,o),r&&T(r,o),i)for(var p=i.length-1;p>=0;p--)o.script.unshift(["type",i[p].matches,i[p].mode]);function b(t,e){var f=l.token(t,e.htmlState),j=/\btag\b/.test(f),h;if(j&&!/[<>\s\/]/.test(t.current())&&(h=e.htmlState.tagName&&e.htmlState.tagName.toLowerCase())&&o.hasOwnProperty(h))e.inTag=h+" ";else if(e.inTag&&j&&/>$/.test(t.current())){var d=/^([\S]+) (.*)/.exec(e.inTag);e.inTag=null;var N=t.current()==">"&&O(o[d[1]],d[2]),M=c.getMode(n,N),P=y(d[1],!0),E=y(d[1],!1);e.token=function(v,s){return v.match(P,!1)?(s.token=b,s.localState=s.localMode=null,null):g(v,E,s.localMode.token(v,s.localState))},e.localMode=M,e.localState=c.startState(M,l.indent(e.htmlState,"",""))}else e.inTag&&(e.inTag+=t.current(),t.eol()&&(e.inTag+=" "));return f}return{startState:function(){var t=c.startState(l);return{token:b,inTag:null,localMode:null,localState:null,htmlState:t}},copyState:function(t){var e;return t.localState&&(e=c.copyState(t.localMode,t.localState)),{token:t.token,inTag:t.inTag,localMode:t.localMode,localState:e,htmlState:c.copyState(l,t.htmlState)}},token:function(t,e){return e.token(t,e)},indent:function(t,e,f){return!t.localMode||/^\s*<\//.test(e)?l.indent(t.htmlState,e,f):t.localMode.indent?t.localMode.indent(t.localState,e,f):c.Pass},innerMode:function(t){return{state:t.localState||t.htmlState,mode:t.localMode||l}}}},"xml","javascript","css"),c.defineMIME("text/html","htmlmixed")})})();var F=$.exports,H=Object.freeze(A({__proto__:null,[Symbol.toStringTag]:"Module",default:F},[$.exports]));export{$ as a,H as h};
@@ -1 +1 @@
1
- import{bF as b}from"./vendor.299bc11c.js";function g(i,s){return s.forEach(function(t){t&&typeof t!="string"&&!Array.isArray(t)&&Object.keys(t).forEach(function(u){if(u!=="default"&&!(u in i)){var c=Object.getOwnPropertyDescriptor(t,u);Object.defineProperty(i,u,c.get?c:{enumerable:!0,get:function(){return t[u]}})}})}),Object.freeze(i)}var p={exports:{}};(function(i,s){(function(t){t(b.exports)})(function(t){t.defineMode("http",function(){function u(r,e){return r.skipToEnd(),e.cur=f,"error"}function c(r,e){return r.match(/^HTTP\/\d\.\d/)?(e.cur=a,"keyword"):r.match(/^[A-Z]+/)&&/[ \t]/.test(r.peek())?(e.cur=h,"keyword"):u(r,e)}function a(r,e){var o=r.match(/^\d+/);if(!o)return u(r,e);e.cur=d;var n=Number(o[0]);return n>=100&&n<200?"positive informational":n>=200&&n<300?"positive success":n>=300&&n<400?"positive redirect":n>=400&&n<500?"negative client-error":n>=500&&n<600?"negative server-error":"error"}function d(r,e){return r.skipToEnd(),e.cur=f,null}function h(r,e){return r.eatWhile(/\S/),e.cur=v,"string-2"}function v(r,e){return r.match(/^HTTP\/\d\.\d$/)?(e.cur=f,"keyword"):u(r,e)}function f(r){return r.sol()&&!r.eat(/[ \t]/)?r.match(/^.*?:/)?"atom":(r.skipToEnd(),"error"):(r.skipToEnd(),"string")}function l(r){return r.skipToEnd(),null}return{token:function(r,e){var o=e.cur;return o!=f&&o!=l&&r.eatSpace()?null:o(r,e)},blankLine:function(r){r.cur=l},startState:function(){return{cur:c}}}}),t.defineMIME("message/http","http")})})();var y=p.exports,k=Object.freeze(g({__proto__:null,[Symbol.toStringTag]:"Module",default:y},[p.exports]));export{k as h};
1
+ import{bH as g}from"./vendor.327371af.js";function b(i,s){return s.forEach(function(t){t&&typeof t!="string"&&!Array.isArray(t)&&Object.keys(t).forEach(function(u){if(u!=="default"&&!(u in i)){var c=Object.getOwnPropertyDescriptor(t,u);Object.defineProperty(i,u,c.get?c:{enumerable:!0,get:function(){return t[u]}})}})}),Object.freeze(i)}var p={exports:{}};(function(i,s){(function(t){t(g.exports)})(function(t){t.defineMode("http",function(){function u(r,e){return r.skipToEnd(),e.cur=f,"error"}function c(r,e){return r.match(/^HTTP\/\d\.\d/)?(e.cur=a,"keyword"):r.match(/^[A-Z]+/)&&/[ \t]/.test(r.peek())?(e.cur=h,"keyword"):u(r,e)}function a(r,e){var o=r.match(/^\d+/);if(!o)return u(r,e);e.cur=d;var n=Number(o[0]);return n>=100&&n<200?"positive informational":n>=200&&n<300?"positive success":n>=300&&n<400?"positive redirect":n>=400&&n<500?"negative client-error":n>=500&&n<600?"negative server-error":"error"}function d(r,e){return r.skipToEnd(),e.cur=f,null}function h(r,e){return r.eatWhile(/\S/),e.cur=v,"string-2"}function v(r,e){return r.match(/^HTTP\/\d\.\d$/)?(e.cur=f,"keyword"):u(r,e)}function f(r){return r.sol()&&!r.eat(/[ \t]/)?r.match(/^.*?:/)?"atom":(r.skipToEnd(),"error"):(r.skipToEnd(),"string")}function l(r){return r.skipToEnd(),null}return{token:function(r,e){var o=e.cur;return o!=f&&o!=l&&r.eatSpace()?null:o(r,e)},blankLine:function(r){r.cur=l},startState:function(){return{cur:c}}}}),t.defineMIME("message/http","http")})})();var y=p.exports,k=Object.freeze(b({__proto__:null,[Symbol.toStringTag]:"Module",default:y},[p.exports]));export{k as h};