@directus/app 9.13.0 → 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.c2d0f9e8.entry.js → @directus_extensions-sdk.016f1070.entry.js} +1 -1
- package/dist/assets/accounts.40ab36c1.js +1 -0
- package/dist/assets/{active-line.85f931be.js → active-line.71775521.js} +1 -1
- package/dist/assets/{activity-log.2f462c6d.js → activity-log.9449feec.js} +1 -1
- package/dist/assets/activity.fbd319d5.js +80 -0
- package/dist/assets/{apl.cef44fca.js → apl.fabbb08e.js} +1 -1
- package/dist/assets/ar-SA.215069dc.js +1 -0
- package/dist/assets/{architecture.19f588c9.js → architecture.9e90b6f3.js} +1 -1
- package/dist/assets/{asciiarmor.0a6d46c1.js → asciiarmor.f87dc63a.js} +1 -1
- package/dist/assets/{asn.1.8af7db88.js → asn.1.5dd57608.js} +1 -1
- package/dist/assets/{asterisk.133eb9d4.js → asterisk.395cf0ad.js} +1 -1
- package/dist/assets/authentication.bc20bce5.js +73 -0
- package/dist/assets/{autorefresh.8c3a7c64.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.375ca1ae.js → bg-BG.9288ea83.js} +1 -1
- package/dist/assets/{br-FR.73a7f62b.js → br-FR.d3564938.js} +1 -1
- package/dist/assets/{brainfuck.bb0a1793.js → brainfuck.60536f63.js} +1 -1
- package/dist/assets/{ca-ES.3340d7d5.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.264a24b6.js → clike.74e0448b.js} +1 -1
- package/dist/assets/{clojure.5be5870c.js → clojure.8f96f0f7.js} +1 -1
- package/dist/assets/{cloudron.3b183977.js → cloudron.a348537b.js} +1 -1
- package/dist/assets/{cmake.361bb9df.js → cmake.723ea5dd.js} +1 -1
- package/dist/assets/{cobol.2e771d85.js → cobol.a990507c.js} +1 -1
- package/dist/assets/codebase-overview.b46635f9.js +1 -0
- package/dist/assets/{coffeescript.132c432c.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.87c850aa.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.8b2d4939.js → crystal.8517c407.js} +1 -1
- package/dist/assets/{cs-CZ.678bc13f.js → cs-CZ.a3c83b73.js} +1 -1
- package/dist/assets/{css.1e9857ce.js → css.f2b45d65.js} +1 -1
- package/dist/assets/{cypher.aefea96e.js → cypher.0f67a8c4.js} +1 -1
- package/dist/assets/{d.38a2fd63.js → d.d8c5a86d.js} +1 -1
- package/dist/assets/{da-DK.8db961d3.js → da-DK.3c379038.js} +1 -1
- package/dist/assets/{dart.4d90eff6.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.f2ea9976.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.fce1ee6c.js → django.b05a00dd.js} +1 -1
- package/dist/assets/{docker.7318105b.js → docker.6f265c46.js} +6 -6
- package/dist/assets/{dockerfile.10fea9a2.js → dockerfile.50e7896f.js} +1 -1
- package/dist/assets/{documentation.ec08e64e.js → documentation.ad1fdaf2.js} +1 -1
- package/dist/assets/{dtd.c67f9501.js → dtd.4f30128b.js} +1 -1
- package/dist/assets/{dylan.9c7c8fbb.js → dylan.295f582b.js} +1 -1
- package/dist/assets/{ebnf.5893ba11.js → ebnf.48a4d2a4.js} +1 -1
- package/dist/assets/{ecl.666cf005.js → ecl.686a8714.js} +1 -1
- package/dist/assets/{eiffel.1ff51078.js → eiffel.ee4a91b5.js} +1 -1
- package/dist/assets/{el-GR.98199dde.js → el-GR.103ebf8d.js} +1 -1
- package/dist/assets/{elm.3c43bbde.js → elm.3575efea.js} +1 -1
- package/dist/assets/{email-templates.bc7359ba.js → email-templates.2bdb87a6.js} +1 -1
- package/dist/assets/{en-CA.d2451b87.js → en-CA.9ad3a3ab.js} +1 -1
- package/dist/assets/{en-GB.e362e116.js → en-GB.c55341c7.js} +1 -1
- package/dist/assets/{endpoints.a283ab67.js → endpoints.2c9172db.js} +2 -2
- package/dist/assets/{erlang.cfe0d25f.js → erlang.2f06eab4.js} +1 -1
- package/dist/assets/{es-419.d7e63f16.js → es-419.10094709.js} +1 -1
- package/dist/assets/{es-CL.7fd46c95.js → es-CL.7f44ec7c.js} +1 -1
- package/dist/assets/es-ES.3ff9088e.js +1 -0
- package/dist/assets/{es-MX.778b926c.js → es-MX.17370b17.js} +1 -1
- package/dist/assets/{et-EE.5321add1.js → et-EE.fb46a361.js} +1 -1
- package/dist/assets/extensions.8d3df212.js +12 -0
- package/dist/assets/{fa-IR.a346165e.js → fa-IR.b864f77c.js} +1 -1
- package/dist/assets/{factor.eb880fb0.js → factor.59c6a149.js} +1 -1
- package/dist/assets/faq.63c79c18.js +2 -0
- package/dist/assets/{fcl.a70b3450.js → fcl.a6a387b9.js} +1 -1
- package/dist/assets/{fi-FI.14cee6db.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.127a7f69.js → forth.eec0a81d.js} +1 -1
- package/dist/assets/{fortran.64d2bcc8.js → fortran.b9df31da.js} +1 -1
- package/dist/assets/{fr-FR.49507672.js → fr-CA.0e824ae4.js} +1 -1
- package/dist/assets/fr-FR.77a5277c.js +1 -0
- package/dist/assets/{gas.b5ddd39d.js → gas.1bf79f8f.js} +1 -1
- package/dist/assets/{gcp.aab7b77c.js → gcp.6c61b39e.js} +5 -5
- package/dist/assets/{gfm.0e5a0d37.js → gfm.04d0828d.js} +1 -1
- package/dist/assets/{gherkin.ca9beebc.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.601cf92f.js → go.81bbba54.js} +1 -1
- package/dist/assets/{groovy.106b0e1b.js → groovy.3fb79de5.js} +1 -1
- package/dist/assets/{haml.8a27bb91.js → haml.9645befc.js} +1 -1
- package/dist/assets/{handlebars.7edaa076.js → handlebars.c78fa1ca.js} +1 -1
- package/dist/assets/{haskell-literate.c5a1599c.js → haskell-literate.ee77a8c9.js} +1 -1
- package/dist/assets/{haskell.499e9d63.js → haskell.0f131af0.js} +1 -1
- package/dist/assets/{haxe.6103069d.js → haxe.5ecd20ea.js} +1 -1
- package/dist/assets/{hi-IN.1abc0fe8.js → hi-IN.c0703db5.js} +1 -1
- package/dist/assets/hooks.f7efe9af.js +60 -0
- package/dist/assets/{hr-HR.5e9128d0.js → hr-HR.467388ee.js} +1 -1
- package/dist/assets/{htmlembedded.57ac5929.js → htmlembedded.b9d52c93.js} +1 -1
- package/dist/assets/{htmlmixed.be98881c.js → htmlmixed.b02b6e2e.js} +1 -1
- package/dist/assets/{http.4229d6d3.js → http.705b0cd9.js} +1 -1
- package/dist/assets/{hu-HU.edf3e061.js → hu-HU.47ab36e8.js} +1 -1
- package/dist/assets/{id-ID.5d8e082c.js → id-ID.8089647c.js} +1 -1
- package/dist/assets/{idl.1baa44ef.js → idl.ee86fe0e.js} +1 -1
- package/dist/assets/{iis.5653e9da.js → iis.e068f41a.js} +2 -2
- package/dist/assets/import-export.d334c127.js +2 -0
- package/dist/assets/{index.9c5a0589.js → index.0295bc4b.js} +1 -1
- package/dist/assets/{index.e65177c5.js → index.07257d01.js} +1 -1
- package/dist/assets/{index.b7cd48a8.js → index.0e101049.js} +1 -1
- package/dist/assets/{index.15a6b55f.js → index.10f90411.js} +1 -1
- package/dist/assets/{index.204d0697.js → index.14c720ba.js} +1 -1
- package/dist/assets/{index.7bfaf022.js → index.16acfb90.js} +1 -1
- package/dist/assets/{index.e7f7c63b.js → index.175a81f8.js} +1 -1
- package/dist/assets/index.192147d5.css +1 -0
- package/dist/assets/{index.8d2db40f.js → index.1a65b37a.js} +1 -1
- package/dist/assets/{index.4d0c9d2f.js → index.1b44d300.js} +1 -1
- package/dist/assets/{index.9dd4ba15.js → index.20b34242.js} +1 -1
- package/dist/assets/{index.5073c294.js → index.2598f40b.js} +1 -1
- package/dist/assets/{index.9fa88e82.js → index.28aa754b.js} +1 -1
- package/dist/assets/{index.b107abb9.js → index.2926879f.js} +1 -1
- package/dist/assets/{index.0b12fa24.js → index.2ec06d14.js} +1 -1
- package/dist/assets/{index.dd1b70ed.js → index.399c0d62.js} +1 -1
- package/dist/assets/{index.83254b8b.js → index.3d4cd218.js} +1 -1
- package/dist/assets/{index.5d2a1255.js → index.3eda79ec.js} +1 -1
- package/dist/assets/{index.6fe4b726.js → index.402d83c0.js} +1 -1
- package/dist/assets/{index.e29b1e2d.js → index.4100d6f0.js} +1 -1
- package/dist/assets/{index.d0c387c9.js → index.43fa9898.js} +1 -1
- package/dist/assets/{index.d2cb8f46.js → index.456ff0bd.js} +1 -1
- package/dist/assets/{index.e6925009.js → index.4e2109fe.js} +1 -1
- package/dist/assets/{index.58506149.js → index.4ef25ded.js} +1 -1
- package/dist/assets/{index.57201b30.js → index.4fbaebb7.js} +1 -1
- package/dist/assets/{index.4ae9df91.js → index.55a12dfb.js} +1 -1
- package/dist/assets/{index.cf04970d.js → index.56188e3b.js} +1 -1
- package/dist/assets/{index.7ccfac4f.js → index.5c54c17f.js} +1 -1
- package/dist/assets/{index.9f4f31bb.js → index.5f5bf5b9.js} +1 -1
- package/dist/assets/{index.7d3af32f.js → index.60d33aa1.js} +1 -1
- package/dist/assets/{index.1a744da7.js → index.627523d7.js} +1 -1
- package/dist/assets/{index.3fcf2822.js → index.63d1f569.js} +1 -1
- package/dist/assets/{index.16d5015d.js → index.663b73a9.js} +1 -1
- package/dist/assets/{index.59759bad.js → index.6bebaca7.js} +1 -1
- package/dist/assets/{index.28cc485f.js → index.6f0b7179.js} +1 -1
- package/dist/assets/{index.895a297f.css → index.6f497914.css} +1 -1
- package/dist/assets/{index.f73d801d.js → index.7249f524.js} +1 -1
- package/dist/assets/{index.7011d0c4.js → index.77260d1d.js} +1 -1
- package/dist/assets/{index.7b6f6a30.js → index.7f906cfe.js} +1 -1
- package/dist/assets/{index.b6f0287a.js → index.7fd5e2a0.js} +1 -1
- package/dist/assets/{index.731ea486.js → index.7fe984e4.js} +1 -1
- package/dist/assets/{index.9459ab09.js → index.8493b2e7.js} +1 -1
- package/dist/assets/{index.2c806494.js → index.85b9f847.js} +1 -1
- package/dist/assets/{index.f2b97e8c.js → index.8a9f2874.js} +1 -1
- package/dist/assets/{index.67e35129.js → index.93059741.js} +1 -1
- package/dist/assets/{index.9ff8ac88.js → index.94cf6fb4.js} +1 -1
- package/dist/assets/{index.3f26bd55.js → index.98713a56.js} +1 -1
- package/dist/assets/{index.530b8f76.js → index.98ee194a.js} +1 -1
- package/dist/assets/{index.3f629050.js → index.9b60cfa4.js} +1 -1
- package/dist/assets/{index.dbfcc1a7.js → index.a3e085ea.js} +1 -1
- package/dist/assets/{index.0ec094a3.js → index.a40592f5.js} +1 -1
- package/dist/assets/{index.da530994.js → index.a5d15d7f.js} +1 -1
- package/dist/assets/{index.91fa7a8d.js → index.a71fa74c.js} +1 -1
- package/dist/assets/{index.178f5aaf.js → index.a8aa4628.js} +1 -1
- package/dist/assets/{index.528b0171.js → index.a9b73f2c.js} +1 -1
- package/dist/assets/{index.656a3daa.js → index.a9faa4e8.js} +1 -1
- package/dist/assets/{index.3651f13c.js → index.af021d8a.js} +1 -1
- package/dist/assets/{index.c83f5be4.js → index.b43832c6.js} +1 -1
- package/dist/assets/{index.9fd2f4fc.js → index.b5ed5076.js} +1 -1
- package/dist/assets/{index.bfffbb2b.js → index.b67f8116.js} +1 -1
- package/dist/assets/{index.360682df.js → index.b702042e.js} +1 -1
- package/dist/assets/{index.5ef47d94.js → index.bce5f50d.js} +1 -1
- package/dist/assets/{index.d2a1f961.js → index.bfd23a9c.js} +1 -1
- package/dist/assets/{index.876852bd.entry.js → index.c2e31551.entry.js} +209 -209
- package/dist/assets/{index.e3eade04.js → index.c2e6211e.js} +1 -1
- package/dist/assets/{index.d7109bf7.js → index.c35b11e6.js} +1 -1
- package/dist/assets/{index.f03e3a04.js → index.c5266851.js} +1 -1
- package/dist/assets/{index.219a17f2.js → index.c6e501ec.js} +1 -1
- package/dist/assets/{index.7efa08a7.js → index.c9fb33ab.js} +1 -1
- package/dist/assets/{index.2d502598.js → index.cc6496a8.js} +1 -1
- package/dist/assets/{index.3142cfab.js → index.cda6c2d6.js} +1 -1
- package/dist/assets/{index.33ca7318.js → index.cef58c9b.js} +1 -1
- package/dist/assets/{index.c8cd968e.js → index.d060d5f6.js} +1 -1
- package/dist/assets/{index.29e951ca.js → index.d0fe3776.js} +1 -1
- package/dist/assets/{index.94d7ade8.js → index.d653bbf2.js} +1 -1
- package/dist/assets/{index.06b1bc9f.js → index.d8fe2ade.js} +1 -1
- package/dist/assets/{index.577a0434.js → index.d9285c22.js} +1 -1
- package/dist/assets/{index.3db870b4.js → index.e3dcc63c.js} +1 -1
- package/dist/assets/{index.a22ebf71.js → index.e6715953.js} +1 -1
- package/dist/assets/{index.cb9930fe.js → index.ebb444cf.js} +1 -1
- package/dist/assets/{index.b0a109be.js → index.ee22568a.js} +1 -1
- package/dist/assets/{index.708c2587.js → index.ef3faba8.js} +1 -1
- package/dist/assets/index.f0d32a46.js +26 -0
- package/dist/assets/{index.aadb91bf.js → index.fa57ca3f.js} +1 -1
- package/dist/assets/{input-rich-text-html.05181995.css → input-rich-text-html.172a38cb.css} +1 -1
- package/dist/assets/{input-rich-text-html.ec8448e4.js → input-rich-text-html.c72d474e.js} +47 -47
- 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.558525d2.js → it-IT.58422a56.js} +1 -1
- package/dist/assets/items.d1f658a9.js +1 -0
- package/dist/assets/items.d9c6a0b4.js +136 -0
- package/dist/assets/{javascript-hint.7c0e2348.js → javascript-hint.af96cc6a.js} +1 -1
- package/dist/assets/{javascript.549d0ba4.js → javascript.ed7a2c00.js} +1 -1
- package/dist/assets/{jinja2.5aada9b5.js → jinja2.541c30d3.js} +1 -1
- package/dist/assets/{jsx.560c7673.js → jsx.211ba53b.js} +1 -1
- package/dist/assets/{julia.4b70a3c2.js → julia.66e518ec.js} +1 -1
- package/dist/assets/{ko-KR.5a129780.js → ko-KR.9056bd31.js} +1 -1
- 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.c54303a1.js → livescript.06428372.js} +1 -1
- package/dist/assets/localization.c89061c7.js +1 -0
- package/dist/assets/{lt-LT.7c7364ab.js → lt-LT.f2d719ff.js} +1 -1
- package/dist/assets/{lua.eee6a1df.js → lua.4f86b0e3.js} +1 -1
- package/dist/assets/manual.20d730b3.js +12 -0
- package/dist/assets/{mark-selection.c75b2260.js → mark-selection.c376d4be.js} +1 -1
- package/dist/assets/{match-highlighter.06888b25.js → match-highlighter.75cb1404.js} +1 -1
- package/dist/assets/{mathematica.836a919a.js → mathematica.1e1f53c5.js} +1 -1
- package/dist/assets/{mbox.a18f3acd.js → mbox.4a5729c3.js} +1 -1
- package/dist/assets/{migrations.48bae78b.js → migrations.f13ec64d.js} +3 -3
- package/dist/assets/{mirc.8d633a4c.js → mirc.9b793041.js} +1 -1
- package/dist/assets/{mllike.ee0a0e4e.js → mllike.4e43f07d.js} +1 -1
- package/dist/assets/{mn-MN.ae109212.js → mn-MN.c504a096.js} +1 -1
- package/dist/assets/{modelica.806d9c14.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.81143483.js → mscgen.48ffdfc0.js} +1 -1
- package/dist/assets/{multiplex.b5f6827f.js → multiplex.a2d83d7f.js} +1 -1
- package/dist/assets/{mumps.af4fdb4c.js → mumps.210b8bdf.js} +1 -1
- package/dist/assets/{nginx.a80ef11d.js → nginx.dbe68b8c.js} +1 -1
- package/dist/assets/{nl-NL.e22dd4e0.js → nl-NL.2f00af44.js} +1 -1
- package/dist/assets/{no-NO.6edd4997.js → no-NO.59f9d425.js} +1 -1
- package/dist/assets/notifications.674ee6f9.js +153 -0
- package/dist/assets/{nsis.6c7c39d8.js → nsis.5576ebf1.js} +1 -1
- package/dist/assets/{ntriples.9c907279.js → ntriples.07c64718.js} +1 -1
- package/dist/assets/{octave.1e59cd30.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.c92748f5.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.fccca05b.js → oz.4bedbc84.js} +1 -1
- package/dist/assets/panels.570ee526.js +65 -0
- package/dist/assets/{pascal.ba64f8f0.js → pascal.9f3e47db.js} +1 -1
- package/dist/assets/{pegjs.6dfcd58b.js → pegjs.38dabda4.js} +1 -1
- package/dist/assets/{perl.0e74be0a.js → perl.d07c357e.js} +1 -1
- package/dist/assets/permissions.768d1878.js +178 -0
- package/dist/assets/{php.d233db82.js → php.a2fb29e5.js} +1 -1
- package/dist/assets/{pig.21e0eb3e.js → pig.cc357f9e.js} +1 -1
- package/dist/assets/{pinia.10afb35e.entry.js → pinia.256cc3da.entry.js} +1 -1
- package/dist/assets/{pl-PL.88defd20.js → pl-PL.80cfbed6.js} +1 -1
- package/dist/assets/plesk.b0ee9a9a.js +27 -0
- package/dist/assets/{powershell.da69d4e0.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.a4628831.js → properties.57480d0c.js} +1 -1
- package/dist/assets/{protobuf.f0f96141.js → protobuf.c1758733.js} +1 -1
- package/dist/assets/{pt-BR.70dc0b86.js → pt-BR.40750500.js} +1 -1
- package/dist/assets/pt-PT.fae0fcc3.js +1 -0
- package/dist/assets/{pug.3fee26d4.js → pug.bdcaf1c5.js} +1 -1
- package/dist/assets/{puppet.60ebf719.js → puppet.8b6ff9f4.js} +1 -1
- package/dist/assets/{python.a209d75c.js → python.987c2ae7.js} +1 -1
- package/dist/assets/{q.9bc79202.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.73746445.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.335d3129.js → ro-RO.a1adfb6a.js} +1 -1
- package/dist/assets/roles.22f7aa37.js +171 -0
- package/dist/assets/{rpm.b64d60a3.js → rpm.8909ead0.js} +1 -1
- package/dist/assets/{rst.d4af1cd8.js → rst.4d43ef54.js} +1 -1
- package/dist/assets/{ru-RU.2ccef41d.js → ru-RU.35703ea4.js} +1 -1
- package/dist/assets/{ruby.a80f4c3d.js → ruby.b7e26986.js} +1 -1
- package/dist/assets/running-locally.ce0a8200.js +26 -0
- package/dist/assets/{runtime-core.esm-bundler.e6808e6c.js → runtime-core.esm-bundler.b1f35d24.js} +0 -0
- package/dist/assets/{rust.899c7d8f.js → rust.6984b11a.js} +1 -1
- package/dist/assets/{sas.41f29cd7.js → sas.91990a72.js} +1 -1
- package/dist/assets/{sass.1d8f58d7.js → sass.898f89c7.js} +1 -1
- package/dist/assets/{scheme.2ab5ffc7.js → scheme.f661c5b8.js} +1 -1
- package/dist/assets/{sdk.482f914b.js → sdk.916109ed.js} +59 -59
- 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.3849af9a.js → settings.a02abd85.js} +1 -1
- package/dist/assets/{shell.a3cecf64.js → shell.af2902da.js} +1 -1
- package/dist/assets/{show-hint.3f4ba8eb.js → show-hint.2d43524d.js} +1 -1
- package/dist/assets/{sieve.f25d24f4.js → sieve.327a81f8.js} +1 -1
- package/dist/assets/{simple.c984322a.js → simple.4fb4f28d.js} +1 -1
- package/dist/assets/{sl-SI.e8321ed4.js → sl-SI.632899f8.js} +1 -1
- package/dist/assets/{slim.3db1f064.js → slim.e97ce531.js} +1 -1
- package/dist/assets/{smalltalk.f551ff39.js → smalltalk.b9556415.js} +1 -1
- package/dist/assets/{smarty.afd9c30f.js → smarty.d91926e3.js} +1 -1
- package/dist/assets/{solr.c9696404.js → solr.20381d3e.js} +1 -1
- package/dist/assets/{soy.1a041a45.js → soy.a0154260.js} +1 -1
- package/dist/assets/{sparql.8928a4e7.js → sparql.36de4d3f.js} +1 -1
- package/dist/assets/{spreadsheet.b508d495.js → spreadsheet.00a4877b.js} +1 -1
- package/dist/assets/{sql.ca615946.js → sql.1f7dd82a.js} +1 -1
- package/dist/assets/{sr-CS.4de79c8e.js → sr-CS.2e5b18be.js} +1 -1
- package/dist/assets/{sso-examples.b4ec54d6.js → sso-examples.048b39c5.js} +12 -12
- package/dist/assets/sso.70be105f.js +22 -0
- package/dist/assets/{stex.49bcb53e.js → stex.2b7cb363.js} +1 -1
- package/dist/assets/{stylus.861b3b1d.js → stylus.123ca166.js} +1 -1
- package/dist/assets/support.fce2dba5.js +1 -0
- package/dist/assets/{sv-SE.0f875403.js → sv-SE.d485ddd3.js} +1 -1
- package/dist/assets/{swift.3f2d8cb3.js → swift.9ca91d28.js} +1 -1
- package/dist/assets/{tcl.cd07bc30.js → tcl.1b7f83bd.js} +1 -1
- package/dist/assets/teams.44eb670e.js +1 -0
- package/dist/assets/{textile.a63fbf58.js → textile.ee402504.js} +1 -1
- package/dist/assets/{th-TH.2ebd6079.js → th-TH.1e9ab13f.js} +1 -1
- package/dist/assets/themes.e4a7762f.js +5 -0
- package/dist/assets/{tiddlywiki.f2f348c0.js → tiddlywiki.67540872.js} +1 -1
- package/dist/assets/{tiki.ba369f07.js → tiki.fb6dd4a0.js} +1 -1
- package/dist/assets/{toml.31bb978b.js → toml.9c5fe3d8.js} +1 -1
- package/dist/assets/{tornado.1777e143.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.1d83c4c6.js → troff.a6f4e798.js} +1 -1
- package/dist/assets/{ttcn-cfg.7fa2f9b9.js → ttcn-cfg.a0214838.js} +1 -1
- package/dist/assets/{ttcn.5f856a38.js → ttcn.4c22a431.js} +1 -1
- package/dist/assets/{turtle.3c6fdbbb.js → turtle.d40e9c31.js} +1 -1
- package/dist/assets/{twig.542faf41.js → twig.d78613df.js} +1 -1
- package/dist/assets/{ubuntu.d721892a.js → ubuntu.35dc97df.js} +1 -1
- 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.660ea551.js → vb.5adeb8ea.js} +1 -1
- package/dist/assets/{vbscript.8d60ba84.js → vbscript.27937162.js} +1 -1
- package/dist/assets/{velocity.2c820c8c.js → velocity.581c25aa.js} +1 -1
- package/dist/assets/{verilog.a6d857f3.js → verilog.9f72c282.js} +1 -1
- package/dist/assets/{vhdl.1739da74.js → vhdl.4d290e0b.js} +1 -1
- package/dist/assets/{vi-VN.7aaf0f64.js → vi-VN.3e9c985f.js} +1 -1
- package/dist/assets/{vue-i18n.540626ab.entry.js → vue-i18n.ecb0af35.entry.js} +1 -1
- package/dist/assets/{vue-router.3ef5d657.entry.js → vue-router.8987d576.entry.js} +1 -1
- package/dist/assets/{vue.2ddff80c.entry.js → vue.1f4d921a.entry.js} +1 -1
- package/dist/assets/{vue.6a736ef9.js → vue.cf5a232a.js} +1 -1
- package/dist/assets/{vue.runtime.esm-bundler.f4ce1cef.js → vue.runtime.esm-bundler.ac4ff7af.js} +1 -1
- package/dist/assets/{wast.4a6e6c0b.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.92e5974e.js → webidl.1185b166.js} +1 -1
- package/dist/assets/{xquery.2e4160b5.js → xquery.34864271.js} +1 -1
- package/dist/assets/{yacas.3afca2ee.js → yacas.880a270b.js} +1 -1
- package/dist/assets/{yaml-frontmatter.312d62d5.js → yaml-frontmatter.4cec6c13.js} +1 -1
- package/dist/assets/{yaml.71c2f2cd.js → yaml.15292258.js} +1 -1
- package/dist/assets/{z80.e076e688.js → z80.727a7271.js} +1 -1
- package/dist/assets/{zh-CN.d7b18680.js → zh-CN.432cf71e.js} +1 -1
- package/dist/assets/{zh-TW.4802ae81.js → zh-TW.cac20c88.js} +1 -1
- package/dist/index.html +8 -8
- package/package.json +7 -6
- package/dist/assets/accounts.6a41a439.js +0 -1
- package/dist/assets/activity.737e1d30.js +0 -80
- package/dist/assets/ar-SA.1270865d.js +0 -1
- package/dist/assets/authentication.77ec921a.js +0 -73
- package/dist/assets/aws.f94e1168.js +0 -1
- package/dist/assets/backing-directus.16949f6d.js +0 -1
- package/dist/assets/cli.18caf1f2.js +0 -19
- package/dist/assets/cli.774a4996.js +0 -4
- package/dist/assets/codebase-overview.d6365b1a.js +0 -1
- package/dist/assets/collections.5ec4ec4a.js +0 -2
- package/dist/assets/collections.e66dacd4.js +0 -106
- package/dist/assets/config-options.5b139611.js +0 -138
- package/dist/assets/content.0fca8e70.js +0 -1
- package/dist/assets/creating-extensions.09899f65.js +0 -11
- package/dist/assets/data-model.98153925.js +0 -1
- package/dist/assets/data-sharing.06e8a06f.js +0 -1
- package/dist/assets/de-DE.a45e2867.js +0 -1
- package/dist/assets/digitalocean-app-platform.7da3c7a1.js +0 -3
- package/dist/assets/display-templates.cd179d19.js +0 -1
- package/dist/assets/displays.1ee1f2b5.js +0 -49
- package/dist/assets/es-ES.90a08b21.js +0 -1
- package/dist/assets/extensions.a51d3924.js +0 -12
- package/dist/assets/faq.7bde76ae.js +0 -2
- package/dist/assets/fields.1f2e77de.js +0 -135
- package/dist/assets/file-library.3626307c.js +0 -1
- package/dist/assets/files.e045e557.js +0 -189
- package/dist/assets/filter-rules.247581e5.js +0 -76
- package/dist/assets/filters.43e74661.js +0 -1
- package/dist/assets/flows.323ce75f.js +0 -15
- package/dist/assets/flows.5f5e16d5.js +0 -172
- package/dist/assets/folders.56c9a624.js +0 -132
- package/dist/assets/fr-CA.7669aed8.js +0 -1
- package/dist/assets/github-ci.fbe7bc68.js +0 -2
- package/dist/assets/glossary.321fe2e7.js +0 -1
- package/dist/assets/glossary.8e8d2e42.js +0 -1
- package/dist/assets/hooks.c8418066.js +0 -60
- package/dist/assets/import-export.c48e51e7.js +0 -2
- package/dist/assets/index.9001e465.css +0 -1
- package/dist/assets/index.9ac418f5.js +0 -26
- package/dist/assets/insights.91323cd9.js +0 -2
- package/dist/assets/installation.52e4ff88.js +0 -1
- package/dist/assets/interfaces.3a13d91e.js +0 -46
- package/dist/assets/introduction.651560f1.js +0 -1
- package/dist/assets/introduction.8442768e.js +0 -4
- package/dist/assets/introduction.8fbc61cf.js +0 -1
- package/dist/assets/introduction.a7d534ac.js +0 -90
- package/dist/assets/items.21c2f5c1.js +0 -1
- package/dist/assets/items.89e120a5.js +0 -136
- package/dist/assets/layouts.1ab2977a.js +0 -1
- package/dist/assets/layouts.ec7b7659.js +0 -54
- package/dist/assets/localization.7df8d876.js +0 -1
- package/dist/assets/manual.1cafb3c9.js +0 -10
- package/dist/assets/modules.ba273153.js +0 -69
- package/dist/assets/notifications.1e1cfcf8.js +0 -153
- package/dist/assets/operations.054152be.js +0 -1
- package/dist/assets/operations.cd009c46.js +0 -169
- package/dist/assets/overview.70f19d6e.js +0 -1
- package/dist/assets/overview.a1ad38f6.js +0 -1
- package/dist/assets/overview.b5ff02e8.js +0 -1
- package/dist/assets/panels.a7ccfe62.js +0 -65
- package/dist/assets/permissions.7a7896f5.js +0 -178
- package/dist/assets/plesk.e70d310e.js +0 -27
- package/dist/assets/presets-bookmarks.03f2cacf.js +0 -1
- package/dist/assets/presets.78562380.js +0 -164
- package/dist/assets/project-settings.1ca9f129.js +0 -1
- package/dist/assets/projects.8310e11a.js +0 -1
- package/dist/assets/pt-PT.011f0864.js +0 -1
- package/dist/assets/query.23aa38a2.js +0 -152
- package/dist/assets/quickstart.2ad94821.js +0 -20
- package/dist/assets/quickstart.59a0c62f.js +0 -9
- package/dist/assets/relations.c6b50878.js +0 -115
- package/dist/assets/relationships.7a08adb6.js +0 -55
- package/dist/assets/resources.a731a4ac.js +0 -1
- package/dist/assets/revisions.69b22e98.js +0 -40
- package/dist/assets/roles.caf226aa.js +0 -171
- package/dist/assets/running-locally.0df06054.js +0 -26
- package/dist/assets/security.e53645ff.js +0 -1
- package/dist/assets/server.c899d180.js +0 -114
- package/dist/assets/settings.2dce0b3a.js +0 -51
- package/dist/assets/sso.83af860e.js +0 -22
- package/dist/assets/support.ec8c583f.js +0 -1
- package/dist/assets/teams.cd070396.js +0 -1
- package/dist/assets/themes.6b4fa5ad.js +0 -5
- package/dist/assets/tr-TR.bf97340d.js +0 -1
- package/dist/assets/translation-strings.20caaf44.js +0 -1
- package/dist/assets/translations.b0669f1b.js +0 -1
- package/dist/assets/triggers.ef2f026f.js +0 -1
- package/dist/assets/uk-UA.3d9cc5ac.js +0 -1
- package/dist/assets/upgrades-migrations.7ca77eae.js +0 -1
- package/dist/assets/use-sync.a493fd37.js +0 -28
- package/dist/assets/user-directory.1e43d57c.js +0 -1
- package/dist/assets/users-roles-permissions.298f1d29.js +0 -1
- package/dist/assets/users.c27bf116.js +0 -252
- package/dist/assets/utilities.5c027346.js +0 -74
- package/dist/assets/webhooks.c44db11b.js +0 -147
- package/dist/assets/webhooks.dcb64844.js +0 -1
|
@@ -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};
|