@directus/app 9.12.1 → 9.14.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.
- package/dist/assets/{@directus_extensions-sdk.9a1812c6.entry.js → @directus_extensions-sdk.016f1070.entry.js} +1 -1
- package/dist/assets/accounts.40ab36c1.js +1 -0
- package/dist/assets/{active-line.b42e95d2.js → active-line.71775521.js} +1 -1
- package/dist/assets/activity-log.9449feec.js +1 -0
- package/dist/assets/activity.fbd319d5.js +80 -0
- package/dist/assets/{apl.a10fee96.js → apl.fabbb08e.js} +1 -1
- package/dist/assets/ar-SA.215069dc.js +1 -0
- package/dist/assets/architecture.9e90b6f3.js +1 -0
- package/dist/assets/{asciiarmor.3440160d.js → asciiarmor.f87dc63a.js} +1 -1
- package/dist/assets/{asn.1.bdf78f70.js → asn.1.5dd57608.js} +1 -1
- package/dist/assets/{asterisk.88ae33f0.js → asterisk.395cf0ad.js} +1 -1
- package/dist/assets/authentication.bc20bce5.js +73 -0
- package/dist/assets/{autorefresh.fa8b7b34.js → autorefresh.2c9c0320.js} +1 -1
- package/dist/assets/aws.6652a1fd.js +1 -0
- package/dist/assets/backing-directus.02c28d29.js +1 -0
- package/dist/assets/bg-BG.9288ea83.js +1 -0
- package/dist/assets/bn-IN.4127b7a4.js +1 -0
- package/dist/assets/{br-FR.1ad76918.js → br-FR.d3564938.js} +1 -1
- package/dist/assets/{brainfuck.af40cbfc.js → brainfuck.60536f63.js} +1 -1
- package/dist/assets/{ca-ES.365a1fc4.js → ca-ES.f3dfdef6.js} +1 -1
- package/dist/assets/cli.6e61515e.js +19 -0
- package/dist/assets/cli.863ef0d2.js +4 -0
- package/dist/assets/{clike.75f55953.js → clike.74e0448b.js} +1 -1
- package/dist/assets/{clojure.f44f8182.js → clojure.8f96f0f7.js} +1 -1
- package/dist/assets/cloudron.a348537b.js +1 -0
- package/dist/assets/{cmake.dc51a5f4.js → cmake.723ea5dd.js} +1 -1
- package/dist/assets/{cobol.bd572fbc.js → cobol.a990507c.js} +1 -1
- package/dist/assets/codebase-overview.b46635f9.js +1 -0
- package/dist/assets/{coffeescript.903da3d2.js → coffeescript.c826a1f4.js} +1 -1
- package/dist/assets/collections.60e4b448.js +2 -0
- package/dist/assets/collections.80e4a52c.js +106 -0
- package/dist/assets/{commonlisp.0c024da5.js → commonlisp.0f5d3fae.js} +1 -1
- package/dist/assets/config-options.8e2d8e17.js +138 -0
- package/dist/assets/content.003d7d7c.js +1 -0
- package/dist/assets/creating-extensions.9a98925a.js +11 -0
- package/dist/assets/{crystal.80f7e1ba.js → crystal.8517c407.js} +1 -1
- package/dist/assets/cs-CZ.a3c83b73.js +1 -0
- package/dist/assets/{css.eb89b9da.js → css.f2b45d65.js} +1 -1
- package/dist/assets/{cypher.f649c40f.js → cypher.0f67a8c4.js} +1 -1
- package/dist/assets/{d.3e286089.js → d.d8c5a86d.js} +1 -1
- package/dist/assets/{da-DK.88f53a7d.js → da-DK.3c379038.js} +1 -1
- package/dist/assets/{dart.5b9bb9bb.js → dart.ff540412.js} +1 -1
- package/dist/assets/data-model.086edd1e.js +1 -0
- package/dist/assets/data-sharing.27afa5ee.js +1 -0
- package/dist/assets/de-DE.350023db.js +1 -0
- package/dist/assets/{diff.c63eafa7.js → diff.1b6cf85e.js} +1 -1
- package/dist/assets/digitalocean-app-platform.aff2a50b.js +3 -0
- package/dist/assets/display-templates.d8e93a19.js +1 -0
- package/dist/assets/displays.e528abde.js +49 -0
- package/dist/assets/{django.3a6905fc.js → django.b05a00dd.js} +1 -1
- package/dist/assets/{docker.e1bb4205.js → docker.6f265c46.js} +7 -7
- package/dist/assets/{dockerfile.a9f614c8.js → dockerfile.50e7896f.js} +1 -1
- package/dist/assets/documentation.ad1fdaf2.js +1 -0
- package/dist/assets/{dtd.5b2d40ab.js → dtd.4f30128b.js} +1 -1
- package/dist/assets/{dylan.744cd79f.js → dylan.295f582b.js} +1 -1
- package/dist/assets/{ebnf.6637a8f6.js → ebnf.48a4d2a4.js} +1 -1
- package/dist/assets/{ecl.cdabfae6.js → ecl.686a8714.js} +1 -1
- package/dist/assets/{eiffel.60b61e7f.js → eiffel.ee4a91b5.js} +1 -1
- package/dist/assets/{el-GR.98199dde.js → el-GR.103ebf8d.js} +1 -1
- package/dist/assets/{elm.74b68fc8.js → elm.3575efea.js} +1 -1
- package/dist/assets/email-templates.2bdb87a6.js +2 -0
- package/dist/assets/{en-CA.58d818b8.js → en-CA.9ad3a3ab.js} +1 -1
- package/dist/assets/{en-GB.74320d21.js → en-GB.c55341c7.js} +1 -1
- package/dist/assets/endpoints.2c9172db.js +27 -0
- package/dist/assets/{erlang.d6cd5265.js → erlang.2f06eab4.js} +1 -1
- package/dist/assets/es-419.10094709.js +1 -0
- package/dist/assets/es-CL.7f44ec7c.js +1 -0
- package/dist/assets/es-ES.3ff9088e.js +1 -0
- package/dist/assets/es-MX.17370b17.js +1 -0
- package/dist/assets/{et-EE.9e35920e.js → et-EE.fb46a361.js} +1 -1
- package/dist/assets/extensions.8d3df212.js +12 -0
- package/dist/assets/{fa-IR.f3dc75f9.js → fa-IR.b864f77c.js} +1 -1
- package/dist/assets/{factor.965cfdad.js → factor.59c6a149.js} +1 -1
- package/dist/assets/faq.63c79c18.js +2 -0
- package/dist/assets/{fcl.e515f605.js → fcl.a6a387b9.js} +1 -1
- package/dist/assets/{fi-FI.42afdce0.js → fi-FI.14f31cb4.js} +1 -1
- package/dist/assets/fields.715d4591.js +135 -0
- package/dist/assets/file-library.a4de4015.js +1 -0
- package/dist/assets/files.7c2ccfe2.js +189 -0
- package/dist/assets/filter-rules.056b97be.js +76 -0
- package/dist/assets/filters.2cb82fd9.js +1 -0
- package/dist/assets/flows.38f60cc8.js +172 -0
- package/dist/assets/flows.f378a262.js +15 -0
- package/dist/assets/{fo-FO.ffe478b0.js → fo-FO.cc444b75.js} +1 -1
- package/dist/assets/folders.fa66a5ce.js +132 -0
- package/dist/assets/{forth.c62ab807.js → forth.eec0a81d.js} +1 -1
- package/dist/assets/{fortran.c0e428c5.js → fortran.b9df31da.js} +1 -1
- package/dist/assets/fr-CA.0e824ae4.js +1 -0
- package/dist/assets/fr-FR.77a5277c.js +1 -0
- package/dist/assets/{gas.fd59e425.js → gas.1bf79f8f.js} +1 -1
- package/dist/assets/gcp.6c61b39e.js +60 -0
- package/dist/assets/{gfm.8125a8e6.js → gfm.04d0828d.js} +1 -1
- package/dist/assets/{gherkin.c9a9f9d2.js → gherkin.f334d646.js} +1 -1
- package/dist/assets/github-ci.04483301.js +2 -0
- package/dist/assets/glossary.485603d9.js +1 -0
- package/dist/assets/glossary.6efd77ad.js +1 -0
- package/dist/assets/{go.31390264.js → go.81bbba54.js} +1 -1
- package/dist/assets/{groovy.c940d48b.js → groovy.3fb79de5.js} +1 -1
- package/dist/assets/{haml.1a456af6.js → haml.9645befc.js} +1 -1
- package/dist/assets/{handlebars.d3c0e9e6.js → handlebars.c78fa1ca.js} +1 -1
- package/dist/assets/{haskell-literate.06d0d330.js → haskell-literate.ee77a8c9.js} +1 -1
- package/dist/assets/{haskell.f83a5b48.js → haskell.0f131af0.js} +1 -1
- package/dist/assets/{haxe.cf38bc86.js → haxe.5ecd20ea.js} +1 -1
- package/dist/assets/{hi-IN.36e79faa.js → hi-IN.c0703db5.js} +1 -1
- package/dist/assets/hooks.f7efe9af.js +60 -0
- package/dist/assets/{hr-HR.b1e41c07.js → hr-HR.467388ee.js} +1 -1
- package/dist/assets/{htmlembedded.4765ab1f.js → htmlembedded.b9d52c93.js} +1 -1
- package/dist/assets/{htmlmixed.a4506ee0.js → htmlmixed.b02b6e2e.js} +1 -1
- package/dist/assets/{http.cf2042b8.js → http.705b0cd9.js} +1 -1
- package/dist/assets/{hu-HU.9c7ec38f.js → hu-HU.47ab36e8.js} +1 -1
- package/dist/assets/id-ID.8089647c.js +1 -0
- package/dist/assets/{idl.2b562d7a.js → idl.ee86fe0e.js} +1 -1
- package/dist/assets/iis.e068f41a.js +24 -0
- package/dist/assets/import-export.d334c127.js +2 -0
- package/dist/assets/{index.44b36a96.js → index.0295bc4b.js} +1 -1
- package/dist/assets/{index.f6d90b7c.js → index.07257d01.js} +1 -1
- package/dist/assets/{index.515f0cb5.js → index.0e101049.js} +1 -1
- package/dist/assets/{index.bc3296ff.js → index.10f90411.js} +1 -1
- package/dist/assets/{index.17ad666d.js → index.14c720ba.js} +1 -1
- package/dist/assets/{index.6687eb7d.js → index.16acfb90.js} +1 -1
- package/dist/assets/{index.e9099679.js → index.175a81f8.js} +1 -1
- package/dist/assets/index.192147d5.css +1 -0
- package/dist/assets/{index.734cf408.js → index.1a65b37a.js} +1 -1
- package/dist/assets/{index.76212e14.js → index.1b44d300.js} +1 -1
- package/dist/assets/{index.35fb04b2.js → index.20b34242.js} +1 -1
- package/dist/assets/{index.b871b7a5.js → index.2598f40b.js} +1 -1
- package/dist/assets/{index.5490bf54.js → index.28aa754b.js} +1 -1
- package/dist/assets/{index.b955a1be.js → index.2926879f.js} +1 -1
- package/dist/assets/{index.ff5502c6.js → index.2ec06d14.js} +1 -1
- package/dist/assets/{index.05e20b6f.js → index.399c0d62.js} +1 -1
- package/dist/assets/{index.788544c8.js → index.3d4cd218.js} +1 -1
- package/dist/assets/{index.bbf0131f.js → index.3eda79ec.js} +1 -1
- package/dist/assets/{index.f334ad18.js → index.402d83c0.js} +1 -1
- package/dist/assets/{index.48fd0edb.js → index.4100d6f0.js} +1 -1
- package/dist/assets/{index.5312378b.js → index.43fa9898.js} +1 -1
- package/dist/assets/{index.90aad19e.js → index.456ff0bd.js} +1 -1
- package/dist/assets/{index.2ff40292.js → index.4e2109fe.js} +1 -1
- package/dist/assets/{index.4de2df6a.js → index.4ef25ded.js} +1 -1
- package/dist/assets/{index.c91867d3.js → index.4fbaebb7.js} +1 -1
- package/dist/assets/{index.5d10078c.js → index.55a12dfb.js} +1 -1
- package/dist/assets/{index.1d927fd3.js → index.56188e3b.js} +1 -1
- package/dist/assets/{index.ea326829.js → index.5c54c17f.js} +1 -1
- package/dist/assets/{index.f715fb2c.js → index.5f5bf5b9.js} +1 -1
- package/dist/assets/{index.064c96df.js → index.60d33aa1.js} +1 -1
- package/dist/assets/{index.491a4003.js → index.627523d7.js} +1 -1
- package/dist/assets/{index.921bf39b.js → index.63d1f569.js} +1 -1
- package/dist/assets/{index.27da0362.js → index.663b73a9.js} +1 -1
- package/dist/assets/{index.8c9bb9d2.js → index.6bebaca7.js} +1 -1
- package/dist/assets/{index.c219c9fd.js → index.6f0b7179.js} +1 -1
- package/dist/assets/{index.895a297f.css → index.6f497914.css} +1 -1
- package/dist/assets/{index.f5a62bca.js → index.7249f524.js} +1 -1
- package/dist/assets/{index.6752521e.js → index.77260d1d.js} +1 -1
- package/dist/assets/{index.5e2cb31c.js → index.7f906cfe.js} +1 -1
- package/dist/assets/{index.1a186179.js → index.7fd5e2a0.js} +1 -1
- package/dist/assets/{index.e9faa1b7.js → index.7fe984e4.js} +1 -1
- package/dist/assets/{index.0a4e8fad.js → index.8493b2e7.js} +1 -1
- package/dist/assets/{index.db01bb54.js → index.85b9f847.js} +1 -1
- package/dist/assets/{index.629b6c38.js → index.8a9f2874.js} +1 -1
- package/dist/assets/{index.859a78cb.js → index.93059741.js} +1 -1
- package/dist/assets/{index.f6a5906f.js → index.94cf6fb4.js} +1 -1
- package/dist/assets/{index.55f6227c.js → index.98713a56.js} +1 -1
- package/dist/assets/{index.009353d9.js → index.98ee194a.js} +1 -1
- package/dist/assets/{index.9fbcba2f.js → index.9b60cfa4.js} +1 -1
- package/dist/assets/{index.bc32829f.js → index.a3e085ea.js} +1 -1
- package/dist/assets/{index.1e0212f9.js → index.a40592f5.js} +1 -1
- package/dist/assets/{index.fc7b1181.js → index.a5d15d7f.js} +1 -1
- package/dist/assets/{index.71e28483.js → index.a71fa74c.js} +1 -1
- package/dist/assets/{index.e39c7e76.js → index.a8aa4628.js} +1 -1
- package/dist/assets/{index.9b23cd7f.js → index.a9b73f2c.js} +1 -1
- package/dist/assets/{index.fd2a5a74.js → index.a9faa4e8.js} +1 -1
- package/dist/assets/{index.ddbad0a0.js → index.af021d8a.js} +1 -1
- package/dist/assets/{index.8f901e72.js → index.b43832c6.js} +1 -1
- package/dist/assets/{index.44c7ed90.js → index.b5ed5076.js} +1 -1
- package/dist/assets/{index.540a1c0d.js → index.b67f8116.js} +1 -1
- package/dist/assets/{index.b635a926.js → index.b702042e.js} +1 -1
- package/dist/assets/{index.3c7e729b.js → index.bce5f50d.js} +1 -1
- package/dist/assets/{index.691d9c7a.js → index.bfd23a9c.js} +1 -1
- package/dist/assets/{index.70f6f88a.entry.js → index.c2e31551.entry.js} +226 -230
- package/dist/assets/{index.a40a776b.js → index.c2e6211e.js} +1 -1
- package/dist/assets/{index.f80921e7.js → index.c35b11e6.js} +1 -1
- package/dist/assets/{index.131b4ee8.js → index.c5266851.js} +1 -1
- package/dist/assets/{index.b09321f5.js → index.c6e501ec.js} +1 -1
- package/dist/assets/{index.ae9b035a.js → index.c9fb33ab.js} +1 -1
- package/dist/assets/{index.4ff10039.js → index.cc6496a8.js} +1 -1
- package/dist/assets/{index.d911a640.js → index.cda6c2d6.js} +1 -1
- package/dist/assets/{index.54a49224.js → index.cef58c9b.js} +1 -1
- package/dist/assets/{index.a9473e05.js → index.d060d5f6.js} +1 -1
- package/dist/assets/{index.b8baec6c.js → index.d0fe3776.js} +1 -1
- package/dist/assets/{index.e7e17448.js → index.d653bbf2.js} +1 -1
- package/dist/assets/{index.4533ce42.js → index.d8fe2ade.js} +1 -1
- package/dist/assets/{index.ff5a189a.js → index.d9285c22.js} +1 -1
- package/dist/assets/{index.bb82940a.js → index.e3dcc63c.js} +1 -1
- package/dist/assets/{index.c6ea1824.js → index.e6715953.js} +1 -1
- package/dist/assets/{index.08e6475d.js → index.ebb444cf.js} +1 -1
- package/dist/assets/{index.a0bc3d71.js → index.ee22568a.js} +1 -1
- package/dist/assets/{index.c54243ff.js → index.ef3faba8.js} +1 -1
- package/dist/assets/index.f0d32a46.js +26 -0
- package/dist/assets/{index.3acd783e.js → index.fa57ca3f.js} +1 -1
- package/dist/assets/{input-rich-text-html.2d85a8a3.css → input-rich-text-html.172a38cb.css} +1 -1
- package/dist/assets/input-rich-text-html.c72d474e.js +239 -0
- package/dist/assets/insights.b3ba896c.js +2 -0
- package/dist/assets/installation.2025f88b.js +1 -0
- package/dist/assets/interfaces.606c790c.js +46 -0
- package/dist/assets/introduction.41a72fb0.js +1 -0
- package/dist/assets/introduction.527c3465.js +4 -0
- package/dist/assets/introduction.5566b96e.js +90 -0
- package/dist/assets/introduction.ecd17b88.js +1 -0
- package/dist/assets/it-IT.58422a56.js +1 -0
- package/dist/assets/items.d1f658a9.js +1 -0
- package/dist/assets/items.d9c6a0b4.js +136 -0
- package/dist/assets/ja-JP.84597497.js +1 -0
- package/dist/assets/{javascript-hint.29e9b67f.js → javascript-hint.af96cc6a.js} +1 -1
- package/dist/assets/{javascript.d2db845f.js → javascript.ed7a2c00.js} +1 -1
- package/dist/assets/{jinja2.f97723a0.js → jinja2.541c30d3.js} +1 -1
- package/dist/assets/{jsx.3f2b01c1.js → jsx.211ba53b.js} +1 -1
- package/dist/assets/{julia.fa920089.js → julia.66e518ec.js} +1 -1
- package/dist/assets/ko-KR.9056bd31.js +1 -0
- package/dist/assets/{ku-TR.9eee23ff.js → ku-TR.3a07a57e.js} +1 -1
- package/dist/assets/layouts.0aa8d645.js +54 -0
- package/dist/assets/layouts.14b157dc.js +1 -0
- package/dist/assets/{livescript.2ec2e5ab.js → livescript.06428372.js} +1 -1
- package/dist/assets/localization.c89061c7.js +1 -0
- package/dist/assets/{lt-LT.772aac6e.js → lt-LT.f2d719ff.js} +1 -1
- package/dist/assets/{lua.5e0c8497.js → lua.4f86b0e3.js} +1 -1
- package/dist/assets/manual.20d730b3.js +12 -0
- package/dist/assets/{mark-selection.54726b3f.js → mark-selection.c376d4be.js} +1 -1
- package/dist/assets/{match-highlighter.218123e7.js → match-highlighter.75cb1404.js} +1 -1
- package/dist/assets/{mathematica.df44764c.js → mathematica.1e1f53c5.js} +1 -1
- package/dist/assets/{mbox.491dfb6c.js → mbox.4a5729c3.js} +1 -1
- package/dist/assets/migrations.f13ec64d.js +19 -0
- package/dist/assets/{mirc.a9dca563.js → mirc.9b793041.js} +1 -1
- package/dist/assets/{mllike.0a469a43.js → mllike.4e43f07d.js} +1 -1
- package/dist/assets/{mn-MN.ae109212.js → mn-MN.c504a096.js} +1 -1
- package/dist/assets/{modelica.306697a8.js → modelica.deb73769.js} +1 -1
- package/dist/assets/modules.9b5ee510.js +69 -0
- package/dist/assets/{ms-MY.e50ff23a.js → ms-MY.e6553dad.js} +1 -1
- package/dist/assets/{mscgen.a45d586b.js → mscgen.48ffdfc0.js} +1 -1
- package/dist/assets/{multiplex.26e09ed5.js → multiplex.a2d83d7f.js} +1 -1
- package/dist/assets/{mumps.ae29c70e.js → mumps.210b8bdf.js} +1 -1
- package/dist/assets/{nginx.52e6bfcd.js → nginx.dbe68b8c.js} +1 -1
- package/dist/assets/{nl-NL.b57de112.js → nl-NL.2f00af44.js} +1 -1
- package/dist/assets/{no-NO.79458b78.js → no-NO.59f9d425.js} +1 -1
- package/dist/assets/notifications.674ee6f9.js +153 -0
- package/dist/assets/{nsis.5869c4bd.js → nsis.5576ebf1.js} +1 -1
- package/dist/assets/{ntriples.c7dd54df.js → ntriples.07c64718.js} +1 -1
- package/dist/assets/{octave.ef49cef7.js → octave.9cb94caa.js} +1 -1
- package/dist/assets/operations.46679bea.js +1 -0
- package/dist/assets/operations.9995851b.js +169 -0
- package/dist/assets/{overlay.9a3d0cba.js → overlay.b1fd0f5a.js} +1 -1
- package/dist/assets/overview.3616b560.js +1 -0
- package/dist/assets/overview.3c9f8f3d.js +1 -0
- package/dist/assets/overview.6438dc44.js +1 -0
- package/dist/assets/{oz.6a13c27c.js → oz.4bedbc84.js} +1 -1
- package/dist/assets/panels.570ee526.js +65 -0
- package/dist/assets/{pascal.77947c82.js → pascal.9f3e47db.js} +1 -1
- package/dist/assets/{pegjs.fb3674fc.js → pegjs.38dabda4.js} +1 -1
- package/dist/assets/{perl.bd20c5e2.js → perl.d07c357e.js} +1 -1
- package/dist/assets/permissions.768d1878.js +178 -0
- package/dist/assets/{php.f7000a8d.js → php.a2fb29e5.js} +1 -1
- package/dist/assets/{pig.7044156f.js → pig.cc357f9e.js} +1 -1
- package/dist/assets/pl-PL.80cfbed6.js +1 -0
- package/dist/assets/plesk.b0ee9a9a.js +27 -0
- package/dist/assets/{powershell.d6251d29.js → powershell.283f357b.js} +1 -1
- package/dist/assets/presets-bookmarks.522baf53.js +1 -0
- package/dist/assets/presets.d902ebfa.js +164 -0
- package/dist/assets/project-settings.1f95b799.js +1 -0
- package/dist/assets/projects.1ea6a392.js +1 -0
- package/dist/assets/{properties.21d46a91.js → properties.57480d0c.js} +1 -1
- package/dist/assets/{protobuf.0595884b.js → protobuf.c1758733.js} +1 -1
- package/dist/assets/pt-BR.40750500.js +1 -0
- package/dist/assets/pt-PT.fae0fcc3.js +1 -0
- package/dist/assets/{pug.02047604.js → pug.bdcaf1c5.js} +1 -1
- package/dist/assets/{puppet.7c07ba75.js → puppet.8b6ff9f4.js} +1 -1
- package/dist/assets/{python.fe6c7a24.js → python.987c2ae7.js} +1 -1
- package/dist/assets/{q.bfdf1988.js → q.85f4c589.js} +1 -1
- package/dist/assets/query.8abea6de.js +152 -0
- package/dist/assets/quickstart.75164dd7.js +9 -0
- package/dist/assets/quickstart.9985cb15.js +20 -0
- package/dist/assets/{r.d6b5ac21.js → r.25d10fd4.js} +1 -1
- package/dist/assets/relations.9011b2b5.js +115 -0
- package/dist/assets/relationships.cbc9b1c5.js +55 -0
- package/dist/assets/resources.25cb1e34.js +1 -0
- package/dist/assets/revisions.c90ecb76.js +40 -0
- package/dist/assets/{ro-RO.5161835a.js → ro-RO.a1adfb6a.js} +1 -1
- package/dist/assets/roles.22f7aa37.js +171 -0
- package/dist/assets/{rpm.92483469.js → rpm.8909ead0.js} +1 -1
- package/dist/assets/{rst.b2603799.js → rst.4d43ef54.js} +1 -1
- package/dist/assets/ru-RU.35703ea4.js +1 -0
- package/dist/assets/{ruby.0246dbd5.js → ruby.b7e26986.js} +1 -1
- package/dist/assets/running-locally.ce0a8200.js +26 -0
- package/dist/assets/{rust.dd8abd8d.js → rust.6984b11a.js} +1 -1
- package/dist/assets/{sas.d26b2302.js → sas.91990a72.js} +1 -1
- package/dist/assets/{sass.a791aa27.js → sass.898f89c7.js} +1 -1
- package/dist/assets/{scheme.ef2b1440.js → scheme.f661c5b8.js} +1 -1
- package/dist/assets/sdk.916109ed.js +393 -0
- package/dist/assets/security.1963da73.js +1 -0
- package/dist/assets/server.afec52fc.js +114 -0
- package/dist/assets/settings.835be62f.js +51 -0
- package/dist/assets/settings.a02abd85.js +1 -0
- package/dist/assets/{shell.2f3bc735.js → shell.af2902da.js} +1 -1
- package/dist/assets/{show-hint.6fa4d537.js → show-hint.2d43524d.js} +1 -1
- package/dist/assets/{sieve.99fca314.js → sieve.327a81f8.js} +1 -1
- package/dist/assets/{simple.0e90a38e.js → simple.4fb4f28d.js} +1 -1
- package/dist/assets/{sl-SI.719d987e.js → sl-SI.632899f8.js} +1 -1
- package/dist/assets/{slim.92d997b6.js → slim.e97ce531.js} +1 -1
- package/dist/assets/{smalltalk.a9b3ffec.js → smalltalk.b9556415.js} +1 -1
- package/dist/assets/{smarty.c54a652c.js → smarty.d91926e3.js} +1 -1
- package/dist/assets/{solr.1356a877.js → solr.20381d3e.js} +1 -1
- package/dist/assets/{soy.e1b19eef.js → soy.a0154260.js} +1 -1
- package/dist/assets/{sparql.1335f7a5.js → sparql.36de4d3f.js} +1 -1
- package/dist/assets/{spreadsheet.e9096343.js → spreadsheet.00a4877b.js} +1 -1
- package/dist/assets/{sql.ac45a460.js → sql.1f7dd82a.js} +1 -1
- package/dist/assets/{sr-CS.c513578f.js → sr-CS.2e5b18be.js} +1 -1
- package/dist/assets/{sso-examples.b52061be.js → sso-examples.048b39c5.js} +12 -12
- package/dist/assets/sso.70be105f.js +22 -0
- package/dist/assets/{stex.fb7fd990.js → stex.2b7cb363.js} +1 -1
- package/dist/assets/{stylus.d0281b2a.js → stylus.123ca166.js} +1 -1
- package/dist/assets/support.fce2dba5.js +1 -0
- package/dist/assets/{sv-SE.a70fd097.js → sv-SE.d485ddd3.js} +1 -1
- package/dist/assets/{swift.a9fd2d64.js → swift.9ca91d28.js} +1 -1
- package/dist/assets/{tcl.8f7bdfb5.js → tcl.1b7f83bd.js} +1 -1
- package/dist/assets/teams.44eb670e.js +1 -0
- package/dist/assets/{textile.ae199003.js → textile.ee402504.js} +1 -1
- package/dist/assets/{th-TH.bdbc4a8c.js → th-TH.1e9ab13f.js} +1 -1
- package/dist/assets/themes.e4a7762f.js +5 -0
- package/dist/assets/{tiddlywiki.52caa0ed.js → tiddlywiki.67540872.js} +1 -1
- package/dist/assets/{tiki.831b9315.js → tiki.fb6dd4a0.js} +1 -1
- package/dist/assets/{toml.6f660b6b.js → toml.9c5fe3d8.js} +1 -1
- package/dist/assets/{tornado.01563722.js → tornado.c681a8fd.js} +1 -1
- package/dist/assets/tr-TR.feb24957.js +1 -0
- package/dist/assets/translation-strings.4ed25965.js +1 -0
- package/dist/assets/translations.cf2353ca.js +1 -0
- package/dist/assets/triggers.05092cdf.js +1 -0
- package/dist/assets/{troff.f5f797f2.js → troff.a6f4e798.js} +1 -1
- package/dist/assets/{ttcn-cfg.a6927435.js → ttcn-cfg.a0214838.js} +1 -1
- package/dist/assets/{ttcn.24c6b925.js → ttcn.4c22a431.js} +1 -1
- package/dist/assets/{turtle.d0e831a8.js → turtle.d40e9c31.js} +1 -1
- package/dist/assets/{twig.d5e90842.js → twig.d78613df.js} +1 -1
- package/dist/assets/ubuntu.35dc97df.js +11 -0
- package/dist/assets/uk-UA.0e92f9a4.js +1 -0
- package/dist/assets/upgrades-migrations.9218bbe9.js +1 -0
- package/dist/assets/use-sync.c0f4dfab.js +28 -0
- package/dist/assets/user-directory.3daaa818.js +1 -0
- package/dist/assets/users-roles-permissions.6e18f7ca.js +1 -0
- package/dist/assets/users.4f11a7c5.js +252 -0
- package/dist/assets/utilities.0e0d0ace.js +74 -0
- package/dist/assets/{vb.bb33c7a5.js → vb.5adeb8ea.js} +1 -1
- package/dist/assets/{vbscript.d8f8d95e.js → vbscript.27937162.js} +1 -1
- package/dist/assets/{velocity.26721ec5.js → velocity.581c25aa.js} +1 -1
- package/dist/assets/{verilog.24512a86.js → verilog.9f72c282.js} +1 -1
- package/dist/assets/{vhdl.6e64552d.js → vhdl.4d290e0b.js} +1 -1
- package/dist/assets/{vi-VN.7478a743.js → vi-VN.3e9c985f.js} +1 -1
- package/dist/assets/{vue.4450af40.js → vue.cf5a232a.js} +1 -1
- package/dist/assets/{wast.79f64b4c.js → wast.16f886c5.js} +1 -1
- package/dist/assets/webhooks.00ee297b.js +147 -0
- package/dist/assets/webhooks.01ddb390.js +1 -0
- package/dist/assets/{webidl.860cea4e.js → webidl.1185b166.js} +1 -1
- package/dist/assets/{xquery.23f4fa34.js → xquery.34864271.js} +1 -1
- package/dist/assets/{yacas.0d60e6b0.js → yacas.880a270b.js} +1 -1
- package/dist/assets/{yaml-frontmatter.70ea956b.js → yaml-frontmatter.4cec6c13.js} +1 -1
- package/dist/assets/{yaml.9d5c3ac9.js → yaml.15292258.js} +1 -1
- package/dist/assets/{z80.527b7cb8.js → z80.727a7271.js} +1 -1
- package/dist/assets/zh-CN.432cf71e.js +1 -0
- package/dist/assets/zh-TW.cac20c88.js +1 -0
- package/dist/index.html +3 -3
- package/package.json +10 -7
- package/dist/assets/accounts.08433099.js +0 -1
- package/dist/assets/activity-log.fd558c9b.js +0 -1
- package/dist/assets/activity.0def80ca.js +0 -80
- package/dist/assets/ar-SA.1a6c2c65.js +0 -1
- package/dist/assets/authentication.a6f04750.js +0 -73
- package/dist/assets/aws.3b1c64af.js +0 -1
- package/dist/assets/backing-directus.1ed89e33.js +0 -1
- package/dist/assets/bg-BG.0eca7613.js +0 -2
- package/dist/assets/bn-IN.1385676c.js +0 -1
- package/dist/assets/cli.5153aa86.js +0 -4
- package/dist/assets/cli.e8e2526b.js +0 -19
- package/dist/assets/cloudron.53c430b8.js +0 -1
- package/dist/assets/codebase-overview.e9df94fc.js +0 -1
- package/dist/assets/collections.1c745e99.css +0 -1
- package/dist/assets/collections.2453db3a.js +0 -106
- package/dist/assets/collections.aa896b3f.js +0 -2
- package/dist/assets/config-options.b1233b4b.js +0 -138
- package/dist/assets/content.1b1e95cf.js +0 -1
- package/dist/assets/creating-extensions.bfd7c57c.js +0 -11
- package/dist/assets/cs-CZ.6910228b.js +0 -1
- package/dist/assets/data-model.0e360572.js +0 -1
- package/dist/assets/data-sharing.da96e52e.js +0 -1
- package/dist/assets/de-DE.d1197f4c.js +0 -1
- package/dist/assets/digitalocean-app-platform.3412cb40.js +0 -3
- package/dist/assets/display-templates.915c0c5b.js +0 -1
- package/dist/assets/displays.99989c6d.js +0 -49
- package/dist/assets/documentation.788d4998.js +0 -1
- package/dist/assets/email-templates.1f5ac335.js +0 -2
- package/dist/assets/endpoints.aaac7c81.js +0 -27
- package/dist/assets/es-419.aa0bf259.js +0 -1
- package/dist/assets/es-CL.e42c6c3c.js +0 -1
- package/dist/assets/es-ES.5c7e9438.js +0 -1
- package/dist/assets/es-MX.956444f4.js +0 -1
- package/dist/assets/extensions.34c12005.js +0 -12
- package/dist/assets/faq.89e68608.js +0 -2
- package/dist/assets/fields.54985585.js +0 -135
- package/dist/assets/file-library.3e651030.js +0 -1
- package/dist/assets/files.064d5a35.js +0 -187
- package/dist/assets/filter-rules.e442e006.js +0 -76
- package/dist/assets/filters.3db1b044.js +0 -1
- package/dist/assets/folders.0024d3d3.js +0 -132
- package/dist/assets/fr-CA.6d6d8d1f.js +0 -1
- package/dist/assets/fr-FR.7fa01b32.js +0 -1
- package/dist/assets/gcp.627205b5.js +0 -60
- package/dist/assets/github-ci.abd39dcc.js +0 -2
- package/dist/assets/glossary.75ca2027.js +0 -1
- package/dist/assets/glossary.bf083fb1.js +0 -1
- package/dist/assets/hooks.eda18b02.js +0 -60
- package/dist/assets/id-ID.a0052c00.js +0 -1
- package/dist/assets/iis.109e5a8a.js +0 -24
- package/dist/assets/import-export.3da878a4.js +0 -2
- package/dist/assets/index.40c42250.css +0 -1
- package/dist/assets/index.9b42e31d.js +0 -26
- package/dist/assets/input-rich-text-html.1550fe06.js +0 -240
- package/dist/assets/insights.c8ed7c1c.js +0 -1
- package/dist/assets/installation.78c6d9f6.js +0 -1
- package/dist/assets/interfaces.9e145c45.js +0 -46
- package/dist/assets/introduction.2e6f5c1d.js +0 -90
- package/dist/assets/introduction.78a2a844.js +0 -4
- package/dist/assets/introduction.7c5efc8a.js +0 -1
- package/dist/assets/introduction.d5621d79.js +0 -1
- package/dist/assets/it-IT.34d52fbd.js +0 -1
- package/dist/assets/items.4205dfa0.js +0 -136
- package/dist/assets/items.64ed9295.js +0 -1
- package/dist/assets/ja-JP.819a38cf.js +0 -1
- package/dist/assets/ko-KR.30f60079.js +0 -1
- package/dist/assets/layouts.3c14b583.js +0 -54
- package/dist/assets/layouts.ca8afd39.js +0 -1
- package/dist/assets/localization.374b7427.js +0 -1
- package/dist/assets/manual.ab601c95.js +0 -10
- package/dist/assets/migrations.8989fedc.js +0 -19
- package/dist/assets/modules.17c944d1.js +0 -69
- package/dist/assets/notifications.33c688c9.js +0 -153
- package/dist/assets/overview.3436365c.js +0 -1
- package/dist/assets/overview.623fafba.js +0 -1
- package/dist/assets/overview.dbebe94a.js +0 -1
- package/dist/assets/panels.385b173a.js +0 -65
- package/dist/assets/permissions.f84f8d42.js +0 -178
- package/dist/assets/pl-PL.22d5965f.js +0 -1
- package/dist/assets/plesk.f7e3d5ef.js +0 -27
- package/dist/assets/presets-bookmarks.1b8ec70c.js +0 -1
- package/dist/assets/presets.b1e8b6c1.js +0 -164
- package/dist/assets/project-settings.d32669a9.js +0 -1
- package/dist/assets/projects.b0451bed.js +0 -1
- package/dist/assets/pt-BR.2d6fa7cc.js +0 -1
- package/dist/assets/pt-PT.c28534a0.js +0 -1
- package/dist/assets/query.dbe0b56d.js +0 -152
- package/dist/assets/quickstart.01824cc9.js +0 -9
- package/dist/assets/quickstart.4d7c7736.js +0 -20
- package/dist/assets/relations.d29aa86d.js +0 -115
- package/dist/assets/relationships.c9c5db8a.js +0 -55
- package/dist/assets/revisions.2898106e.js +0 -40
- package/dist/assets/roles.9fec37da.js +0 -171
- package/dist/assets/ru-RU.39540ee0.js +0 -1
- package/dist/assets/running-locally.811d0dcc.js +0 -26
- package/dist/assets/sdk.12cd7974.js +0 -393
- package/dist/assets/security.8e2a8a41.js +0 -1
- package/dist/assets/server.9f12ae3e.js +0 -114
- package/dist/assets/settings.149d1dff.js +0 -1
- package/dist/assets/settings.28abc1f0.js +0 -51
- package/dist/assets/sso.64b2717b.js +0 -22
- package/dist/assets/support.94e3734b.js +0 -1
- package/dist/assets/teams.9ff14f8f.js +0 -1
- package/dist/assets/themes.df7ec485.js +0 -5
- package/dist/assets/tr-TR.d7a7361f.js +0 -1
- package/dist/assets/translations.5191ab7c.js +0 -1
- package/dist/assets/ubuntu.f4c21886.js +0 -11
- package/dist/assets/uk-UA.473dd1c9.js +0 -1
- package/dist/assets/upgrades-migrations.15498a47.js +0 -1
- package/dist/assets/use-sync.ded22f96.js +0 -28
- package/dist/assets/user-directory.47c8beb2.js +0 -1
- package/dist/assets/users-roles-permissions.005388fa.js +0 -1
- package/dist/assets/users.84251ab9.js +0 -252
- package/dist/assets/utilities.26e6a9e8.js +0 -74
- package/dist/assets/webhooks.4eeecb7d.js +0 -147
- package/dist/assets/webhooks.61b11e7d.js +0 -1
- package/dist/assets/zh-CN.c51e7308.js +0 -1
- package/dist/assets/zh-TW.8ef6cec8.js +0 -1
- package/dist/robots.txt +0 -2
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import{a as o,o as a,b as c,w as u,g as e,B as l}from"./runtime-core.esm-bundler.b1f35d24.js";const r=e("div",{class:"markdown-body"},[e("blockquote",null,[e("p",null,"Custom API Hooks allow running custom logic when a specified event occurs within your project. There are different types of events to choose from.")]),e("h2",{id:"extension-entrypoint",tabindex:"-1"},[l("Extension Entrypoint "),e("a",{class:"header-anchor",href:"#extension-entrypoint"},"#")]),e("p",null,[l("The entrypoint of your hook is the "),e("code",null,"index"),l(" file inside the "),e("code",null,"src/"),l(" folder of your extension package. It exports a register function to register one or more event listeners.")]),e("p",null,"Example of an entrypoint:"),e("pre",null,[e("code",{class:"language-js"},[e("span",{class:"hljs-keyword"},"export"),l(),e("span",{class:"hljs-keyword"},"default"),l(` ({ filter, action }) => {
|
|
2
|
+
filter(`),e("span",{class:"hljs-string"},"'items.create'"),l(", "),e("span",{class:"hljs-function"},"() =>"),l(` {
|
|
3
|
+
`),e("span",{class:"hljs-built_in"},"console"),l(".log("),e("span",{class:"hljs-string"},"'Creating Item!'"),l(`);
|
|
4
|
+
});
|
|
5
|
+
|
|
6
|
+
action(`),e("span",{class:"hljs-string"},"'items.create'"),l(", "),e("span",{class:"hljs-function"},"() =>"),l(` {
|
|
7
|
+
`),e("span",{class:"hljs-built_in"},"console"),l(".log("),e("span",{class:"hljs-string"},"'Item created!'"),l(`);
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
`)])]),e("h2",{id:"events",tabindex:"-1"},[l("Events "),e("a",{class:"header-anchor",href:"#events"},"#")]),e("p",null,"Your hook can trigger on a variety of different events. An event is defined by its type and its name."),e("p",null,"There are four event types to choose from:"),e("ul",null,[e("li",null,[e("a",{href:"#filter"},"Filter")]),e("li",null,[e("a",{href:"#action"},"Action")]),e("li",null,[e("a",{href:"#init"},"Init")]),e("li",null,[e("a",{href:"#schedule"},"Schedule")])]),e("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."),e("h3",{id:"filter",tabindex:"-1"},[l("Filter "),e("a",{class:"header-anchor",href:"#filter"},"#")]),e("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."),e("p",null,[l("Below is an example of canceling a "),e("code",null,"create"),l(" event by throwing a standard Directus exception.")]),e("pre",null,[e("code",{class:"language-js"},[e("span",{class:"hljs-keyword"},"export"),l(),e("span",{class:"hljs-keyword"},"default"),l(` ({ filter }, { exceptions }) => {
|
|
11
|
+
`),e("span",{class:"hljs-keyword"},"const"),l(` { InvalidPayloadException } = exceptions;
|
|
12
|
+
|
|
13
|
+
filter(`),e("span",{class:"hljs-string"},"'items.create'"),l(", "),e("span",{class:"hljs-keyword"},"async"),l(` (input) => {
|
|
14
|
+
`),e("span",{class:"hljs-keyword"},"if"),l(` (LOGIC_TO_CANCEL_EVENT) {
|
|
15
|
+
`),e("span",{class:"hljs-keyword"},"throw"),l(),e("span",{class:"hljs-keyword"},"new"),l(` InvalidPayloadException(WHAT_IS_WRONG);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
`),e("span",{class:"hljs-keyword"},"return"),l(` input;
|
|
19
|
+
});
|
|
20
|
+
};
|
|
21
|
+
`)])]),e("p",null,"The filter register function receives two parameters:"),e("ul",null,[e("li",null,"The event name"),e("li",null,"A callback function that is executed whenever the event fires.")]),e("p",null,"The callback function itself receives three parameters:"),e("ul",null,[e("li",null,"The modifiable payload"),e("li",null,"An event-specific meta object"),e("li",null,"A context object")]),e("p",null,"The context object has the following properties:"),e("ul",null,[e("li",null,[e("code",null,"database"),l(" \u2014 The current database transaction")]),e("li",null,[e("code",null,"schema"),l(" \u2014 The current API schema in use")]),e("li",null,[e("code",null,"accountability"),l(" \u2014 Information about the current user")])]),e("div",{class:"warning hint"},[e("div",{class:"hint-title"},"Performance"),e("p",null,[l("Filters can impact performance when not carefully implemented, as they are executed in a blocking manner. This applies in particular to filters firing on "),e("code",null,"read"),l(" events, where a single request can result in a large amount of database reads.")])]),e("h3",{id:"action",tabindex:"-1"},[l("Action "),e("a",{class:"header-anchor",href:"#action"},"#")]),e("p",null,"Action hooks execute after a defined event and receive data related to the event. Use action hooks when you need to automate responses to CRUD events on items or server actions."),e("p",null,"The action register function receives two parameters:"),e("ul",null,[e("li",null,"The event name"),e("li",null,"A callback function that is executed whenever the event fires.")]),e("p",null,"The callback function itself receives two parameters:"),e("ul",null,[e("li",null,"An event-specific meta object"),e("li",null,"A context object")]),e("p",null,"The context object has the following properties:"),e("ul",null,[e("li",null,[e("code",null,"database"),l(" \u2014 The current database transaction")]),e("li",null,[e("code",null,"schema"),l(" \u2014 The current API schema in use")]),e("li",null,[e("code",null,"accountability"),l(" \u2014 Information about the current user")])]),e("h3",{id:"init",tabindex:"-1"},[l("Init "),e("a",{class:"header-anchor",href:"#init"},"#")]),e("p",null,"Init hooks execute at a defined point within the lifecycle of Directus. Use init hook objects to inject logic into internal services."),e("p",null,"The init register function receives two parameters:"),e("ul",null,[e("li",null,"The event name"),e("li",null,"A callback function that is executed whenever the event fires.")]),e("p",null,"The callback function itself receives one parameter:"),e("ul",null,[e("li",null,"An event-specific meta object")]),e("h3",{id:"schedule",tabindex:"-1"},[l("Schedule "),e("a",{class:"header-anchor",href:"#schedule"},"#")]),e("p",null,[l("Schedule hooks execute at certain points in time rather than when Directus performs a specific action. This is supported through "),e("a",{href:"https://www.npmjs.com/package/node-cron",target:"_blank",rel:"noopener noreferrer"},[e("code",null,"node-cron")]),l(".")]),e("p",null,[l("To set up a scheduled event, provide a cron statement as the first parameter to the "),e("code",null,"schedule()"),l(" function. For example "),e("code",null,"schedule('15 14 1 * *', <...>)"),l(" (at 14:15 on day-of-month 1) or "),e("code",null,"schedule('5 4 * * sun', <...>)"),l(" (at 04:05 on Sunday).")]),e("p",null,"Below is an example of registering a schedule hook."),e("pre",null,[e("code",{class:"language-js"},[e("span",{class:"hljs-keyword"},"import"),l(" axios "),e("span",{class:"hljs-keyword"},"from"),l(),e("span",{class:"hljs-string"},"'axios'"),l(`;
|
|
22
|
+
|
|
23
|
+
`),e("span",{class:"hljs-keyword"},"export"),l(),e("span",{class:"hljs-keyword"},"default"),l(` ({ schedule }) => {
|
|
24
|
+
schedule(`),e("span",{class:"hljs-string"},"'*/15 * * * *'"),l(", "),e("span",{class:"hljs-keyword"},"async"),l(` () => {
|
|
25
|
+
`),e("span",{class:"hljs-keyword"},"await"),l(" axios.post("),e("span",{class:"hljs-string"},"'http://example.com/webhook'"),l(", { "),e("span",{class:"hljs-attr"},"message"),l(": "),e("span",{class:"hljs-string"},"'Another 15 minutes passed...'"),l(` });
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
`)])]),e("h2",{id:"available-events",tabindex:"-1"},[l("Available Events "),e("a",{class:"header-anchor",href:"#available-events"},"#")]),e("h3",{id:"filter-events",tabindex:"-1"},[l("Filter Events "),e("a",{class:"header-anchor",href:"#filter-events"},"#")]),e("table",null,[e("thead",null,[e("tr",null,[e("th",null,"Name"),e("th",null,"Payload"),e("th",null,"Meta")])]),e("tbody",null,[e("tr",null,[e("td",null,[e("code",null,"request.not_found")]),e("td",null,[e("code",null,"false")]),e("td",null,[e("code",null,"request"),l(", "),e("code",null,"response")])]),e("tr",null,[e("td",null,[e("code",null,"request.error")]),e("td",null,"The request errors"),e("td",null,"\u2013")]),e("tr",null,[e("td",null,[e("code",null,"database.error")]),e("td",null,"The database error"),e("td",null,[e("code",null,"client")])]),e("tr",null,[e("td",null,[e("code",null,"auth.login")]),e("td",null,"The login payload"),e("td",null,[e("code",null,"status"),l(", "),e("code",null,"user"),l(", "),e("code",null,"provider")])]),e("tr",null,[e("td",null,[e("code",null,"auth.jwt")]),e("td",null,"The auth token"),e("td",null,[e("code",null,"status"),l(", "),e("code",null,"user"),l(", "),e("code",null,"provider"),l(", "),e("code",null,"type")])]),e("tr",null,[e("td",null,[e("code",null,"authenticate")]),e("td",null,"The empty accountability object"),e("td",null,[e("code",null,"req")])]),e("tr",null,[e("td",null,[e("code",null,"(<collection>.)items.read")]),e("td",null,"The read item"),e("td",null,[e("code",null,"query"),l(", "),e("code",null,"collection")])]),e("tr",null,[e("td",null,[e("code",null,"(<collection>.)items.create")]),e("td",null,"The new item"),e("td",null,[e("code",null,"collection")])]),e("tr",null,[e("td",null,[e("code",null,"(<collection>.)items.update")]),e("td",null,"The updated item"),e("td",null,[e("code",null,"keys"),l(", "),e("code",null,"collection")])]),e("tr",null,[e("td",null,[e("code",null,"(<collection>.)items.delete")]),e("td",null,"The keys of the item"),e("td",null,[e("code",null,"collection")])]),e("tr",null,[e("td",null,[e("code",null,"<system-collection>.create")]),e("td",null,"The new item"),e("td",null,[e("code",null,"collection")])]),e("tr",null,[e("td",null,[e("code",null,"<system-collection>.update")]),e("td",null,"The updated item"),e("td",null,[e("code",null,"keys"),l(", "),e("code",null,"collection")])]),e("tr",null,[e("td",null,[e("code",null,"<system-collection>.delete")]),e("td",null,"The keys of the item"),e("td",null,[e("code",null,"collection")])])])]),e("div",{class:"tip hint"},[e("div",{class:"hint-title"},"System Collections"),e("p",null,[e("code",null,"<system-collection>"),l(" should be replaced with one of the system collection names "),e("code",null,"activity"),l(", "),e("code",null,"collections"),l(", "),e("code",null,"fields"),l(", "),e("code",null,"files"),l(" (except create/update), "),e("code",null,"folders"),l(", "),e("code",null,"permissions"),l(", "),e("code",null,"presets"),l(", "),e("code",null,"relations"),l(", "),e("code",null,"revisions"),l(", "),e("code",null,"roles"),l(", "),e("code",null,"settings"),l(", "),e("code",null,"users"),l(" or "),e("code",null,"webhooks"),l(".")])]),e("h3",{id:"action-events",tabindex:"-1"},[l("Action Events "),e("a",{class:"header-anchor",href:"#action-events"},"#")]),e("table",null,[e("thead",null,[e("tr",null,[e("th",null,"Name"),e("th",null,"Meta")])]),e("tbody",null,[e("tr",null,[e("td",null,[e("code",null,"server.start")]),e("td",null,[e("code",null,"server")])]),e("tr",null,[e("td",null,[e("code",null,"server.stop")]),e("td",null,[e("code",null,"server")])]),e("tr",null,[e("td",null,[e("code",null,"response")]),e("td",null,[e("code",null,"request"),l(", "),e("code",null,"response"),l(", "),e("code",null,"ip"),l(", "),e("code",null,"duration"),l(", "),e("code",null,"finished")])]),e("tr",null,[e("td",null,[e("code",null,"auth.login")]),e("td",null,[e("code",null,"payload"),l(", "),e("code",null,"status"),l(", "),e("code",null,"user"),l(", "),e("code",null,"provider")])]),e("tr",null,[e("td",null,[e("code",null,"files.upload")]),e("td",null,[e("code",null,"payload"),l(", "),e("code",null,"key"),l(", "),e("code",null,"collection")])]),e("tr",null,[e("td",null,[e("code",null,"(<collection>.)items.read")]),e("td",null,[e("code",null,"payload"),l(", "),e("code",null,"query"),l(", "),e("code",null,"collection")])]),e("tr",null,[e("td",null,[e("code",null,"(<collection>.)items.create")]),e("td",null,[e("code",null,"payload"),l(", "),e("code",null,"key"),l(", "),e("code",null,"collection")])]),e("tr",null,[e("td",null,[e("code",null,"(<collection>.)items.update")]),e("td",null,[e("code",null,"payload"),l(", "),e("code",null,"keys"),l(", "),e("code",null,"collection")])]),e("tr",null,[e("td",null,[e("code",null,"(<collection>.)items.delete")]),e("td",null,[e("code",null,"keys"),l(", "),e("code",null,"collection")])]),e("tr",null,[e("td",null,[e("code",null,"(<collection>.)items.sort")]),e("td",null,[e("code",null,"collection"),l(", "),e("code",null,"item"),l(", "),e("code",null,"to")])]),e("tr",null,[e("td",null,[e("code",null,"<system-collection>.create")]),e("td",null,[e("code",null,"payload"),l(", "),e("code",null,"key"),l(", "),e("code",null,"collection")])]),e("tr",null,[e("td",null,[e("code",null,"<system-collection>.update")]),e("td",null,[e("code",null,"payload"),l(", "),e("code",null,"keys"),l(", "),e("code",null,"collection")])]),e("tr",null,[e("td",null,[e("code",null,"<system-collection>.delete")]),e("td",null,[e("code",null,"keys"),l(", "),e("code",null,"collection")])])])]),e("div",{class:"tip hint"},[e("div",{class:"hint-title"},"System Collections"),e("p",null,[e("code",null,"<system-collection>"),l(" should be replaced with one of the system collection names "),e("code",null,"activity"),l(", "),e("code",null,"collections"),l(", "),e("code",null,"fields"),l(", "),e("code",null,"files"),l(" (except create/update), "),e("code",null,"folders"),l(", "),e("code",null,"permissions"),l(", "),e("code",null,"presets"),l(", "),e("code",null,"relations"),l(", "),e("code",null,"revisions"),l(", "),e("code",null,"roles"),l(", "),e("code",null,"settings"),l(", "),e("code",null,"users"),l(" or "),e("code",null,"webhooks"),l(".")])]),e("h3",{id:"init-events",tabindex:"-1"},[l("Init Events "),e("a",{class:"header-anchor",href:"#init-events"},"#")]),e("table",null,[e("thead",null,[e("tr",null,[e("th",null,"Name"),e("th",null,"Meta")])]),e("tbody",null,[e("tr",null,[e("td",null,[e("code",null,"cli.before")]),e("td",null,[e("code",null,"program")])]),e("tr",null,[e("td",null,[e("code",null,"cli.after")]),e("td",null,[e("code",null,"program")])]),e("tr",null,[e("td",null,[e("code",null,"app.before")]),e("td",null,[e("code",null,"app")])]),e("tr",null,[e("td",null,[e("code",null,"app.after")]),e("td",null,[e("code",null,"app")])]),e("tr",null,[e("td",null,[e("code",null,"routes.before")]),e("td",null,[e("code",null,"app")])]),e("tr",null,[e("td",null,[e("code",null,"routes.after")]),e("td",null,[e("code",null,"app")])]),e("tr",null,[e("td",null,[e("code",null,"routes.custom.before")]),e("td",null,[e("code",null,"app")])]),e("tr",null,[e("td",null,[e("code",null,"routes.custom.after")]),e("td",null,[e("code",null,"app")])]),e("tr",null,[e("td",null,[e("code",null,"middlewares.before")]),e("td",null,[e("code",null,"app")])]),e("tr",null,[e("td",null,[e("code",null,"middlewares.after")]),e("td",null,[e("code",null,"app")])])])]),e("h2",{id:"register-function",tabindex:"-1"},[l("Register Function "),e("a",{class:"header-anchor",href:"#register-function"},"#")]),e("p",null,"The register function receives an object containing the type-specific register functions as the first parameter:"),e("ul",null,[e("li",null,[e("code",null,"filter"),l(" \u2014 Listen for a filter event")]),e("li",null,[e("code",null,"action"),l(" \u2014 Listen for an action event")]),e("li",null,[e("code",null,"init"),l(" \u2014 Listen for an init event")]),e("li",null,[e("code",null,"schedule"),l(" \u2014 Execute a function at certain points in time")])]),e("p",null,"The second parameter is a context object with the following properties:"),e("ul",null,[e("li",null,[e("code",null,"services"),l(" \u2014 All API internal services")]),e("li",null,[e("code",null,"exceptions"),l(" \u2014 API exception objects that can be used for throwing \u201Cproper\u201D errors")]),e("li",null,[e("code",null,"database"),l(" \u2014 Knex instance that is connected to the current database")]),e("li",null,[e("code",null,"getSchema"),l(" \u2014 Async function that reads the full available schema for use in services")]),e("li",null,[e("code",null,"env"),l(" \u2014 Parsed environment variables")]),e("li",null,[e("code",null,"logger"),l(" \u2014 "),e("a",{href:"https://github.com/pinojs/pino",target:"_blank",rel:"noopener noreferrer"},"Pino"),l(" instance.")]),e("li",null,[e("code",null,"emitter"),l(" \u2014 "),e("a",{href:"https://github.com/directus/directus/blob/main/api/src/emitter.ts",target:"_blank",rel:"noopener noreferrer"},"Event emitter"),l(" instance that can be used to trigger custom events for other extensions.")])]),e("div",{class:"warning hint"},[e("div",{class:"hint-title"},"Event loop"),e("p",null,"When implementing custom events using the emitter make sure you never directly or indirectly emit the same event your hook is currently handling as that would result in an infinite loop!")]),e("h2",{id:"example%3A-sync-with-external",tabindex:"-1"},[l("Example: Sync with External "),e("a",{class:"header-anchor",href:"#example%3A-sync-with-external"},"#")]),e("pre",null,[e("code",{class:"language-js"},[e("span",{class:"hljs-keyword"},"import"),l(" axios "),e("span",{class:"hljs-keyword"},"from"),l(),e("span",{class:"hljs-string"},"'axios'"),l(`;
|
|
29
|
+
|
|
30
|
+
`),e("span",{class:"hljs-keyword"},"export"),l(),e("span",{class:"hljs-keyword"},"default"),l(` ({ filter }, { services, exceptions }) => {
|
|
31
|
+
`),e("span",{class:"hljs-keyword"},"const"),l(` { MailService } = services;
|
|
32
|
+
`),e("span",{class:"hljs-keyword"},"const"),l(` { ServiceUnavailableException, ForbiddenException } = exceptions;
|
|
33
|
+
|
|
34
|
+
`),e("span",{class:"hljs-comment"},"// Sync with external recipes service, cancel creation on failure"),l(`
|
|
35
|
+
filter(`),e("span",{class:"hljs-string"},"'items.create'"),l(", "),e("span",{class:"hljs-keyword"},"async"),l(` (input, { collection }, { schema }) => {
|
|
36
|
+
`),e("span",{class:"hljs-keyword"},"if"),l(" (collection !== "),e("span",{class:"hljs-string"},"'recipes'"),l(") "),e("span",{class:"hljs-keyword"},"return"),l(` input;
|
|
37
|
+
|
|
38
|
+
`),e("span",{class:"hljs-keyword"},"const"),l(" mailService = "),e("span",{class:"hljs-keyword"},"new"),l(` MailService({ schema });
|
|
39
|
+
|
|
40
|
+
`),e("span",{class:"hljs-keyword"},"try"),l(` {
|
|
41
|
+
`),e("span",{class:"hljs-keyword"},"await"),l(" axios.post("),e("span",{class:"hljs-string"},"'https://example.com/recipes'"),l(`, input);
|
|
42
|
+
`),e("span",{class:"hljs-keyword"},"await"),l(` mailService.send({
|
|
43
|
+
`),e("span",{class:"hljs-attr"},"to"),l(": "),e("span",{class:"hljs-string"},"'person@example.com'"),l(`,
|
|
44
|
+
`),e("span",{class:"hljs-attr"},"template"),l(`: {
|
|
45
|
+
`),e("span",{class:"hljs-attr"},"name"),l(": "),e("span",{class:"hljs-string"},"'item-created'"),l(`,
|
|
46
|
+
`),e("span",{class:"hljs-attr"},"data"),l(`: {
|
|
47
|
+
`),e("span",{class:"hljs-attr"},"collection"),l(`: collection,
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
});
|
|
51
|
+
} `),e("span",{class:"hljs-keyword"},"catch"),l(` (error) {
|
|
52
|
+
`),e("span",{class:"hljs-keyword"},"throw"),l(),e("span",{class:"hljs-keyword"},"new"),l(` ServiceUnavailableException(error);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
input.syncedWithExample = `),e("span",{class:"hljs-literal"},"true"),l(`;
|
|
56
|
+
|
|
57
|
+
`),e("span",{class:"hljs-keyword"},"return"),l(` input;
|
|
58
|
+
});
|
|
59
|
+
};
|
|
60
|
+
`)])])],-1),f="Custom API Hooks",m=!0,y={name:"hooks",setup(i,{expose:t}){const n={title:"Custom API Hooks",modularExtension:!0};return t({frontmatter:n}),(d,h)=>{const s=o("docs-wrapper");return a(),c(s,{frontmatter:n},{default:u(()=>[r]),_:1})}}};export{y as default,m as modularExtension,f as title};
|