@directus/app 9.0.0-rc.98 → 9.0.0-rc.99
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/@directus_extensions-sdk.0c1dd463.js +1 -0
- package/dist/assets/{active-line.21c7c188.js → active-line.48de29b0.js} +1 -1
- package/dist/assets/{activity.7e6818a1.js → activity.6ae38b0f.js} +1 -1
- package/dist/assets/{activity.afea7c8e.js → activity.9e4ec41d.js} +1 -1
- package/dist/assets/api-config.c76a6613.js +62 -0
- package/dist/assets/{api-endpoints.25b9a2cc.js → api-endpoints.2f8fd276.js} +1 -1
- package/dist/assets/{api-hooks.28fce97f.js → api-hooks.49e7891b.js} +4 -4
- package/dist/assets/{apl.e1cac8e8.js → apl.958d4757.js} +1 -1
- package/dist/assets/{app.a092834a.js → app.ab10f7f0.js} +1 -1
- package/dist/assets/{application.e4ceecf4.js → application.2534d8a1.js} +1 -1
- package/dist/assets/{asciiarmor.56914f72.js → asciiarmor.1f4e8811.js} +1 -1
- package/dist/assets/{asn.1.0d72d374.js → asn.1.320671bb.js} +1 -1
- package/dist/assets/{assets.7c1c7e13.js → assets.0e687e4a.js} +1 -1
- package/dist/assets/{asterisk.217d929c.js → asterisk.67a02b7a.js} +1 -1
- package/dist/assets/authentication.ad641e07.js +70 -0
- package/dist/assets/{authentication.0de34170.js → authentication.e8cf4d61.js} +1 -1
- package/dist/assets/{autorefresh.db241e38.js → autorefresh.824ac9d2.js} +1 -1
- package/dist/assets/{aws.216201f6.js → aws.fd25516a.js} +1 -1
- package/dist/assets/{backing-directus.712e9b42.js → backing-directus.58d18b0c.js} +1 -1
- package/dist/assets/{brainfuck.6d97691a.js → brainfuck.0d6aa963.js} +1 -1
- package/dist/assets/{cli.5fd3486c.js → cli.1516127d.js} +1 -1
- package/dist/assets/{clike.8b1d1dac.js → clike.55471781.js} +1 -1
- package/dist/assets/{clojure.7b24d2df.js → clojure.e88e881b.js} +1 -1
- package/dist/assets/{cmake.2dd9d19b.js → cmake.4a9bd2f3.js} +1 -1
- package/dist/assets/{cobol.aa3e3b17.js → cobol.ddfaa48e.js} +1 -1
- package/dist/assets/{codebase-overview.769ab809.js → codebase-overview.e20f2975.js} +1 -1
- package/dist/assets/{coffeescript.e1f17dcd.js → coffeescript.004ec15d.js} +1 -1
- package/dist/assets/{collections.52393349.js → collections.14257f29.js} +1 -1
- package/dist/assets/{collections.ede965e3.js → collections.bd91de7e.js} +1 -1
- package/dist/assets/{collections.3ab1c08a.js → collections.fdbdfe7d.js} +1 -1
- package/dist/assets/{command-line-interface.e1beee60.js → command-line-interface.9a2a26c1.js} +1 -1
- package/dist/assets/{common-issues.9900baa5.js → common-issues.b34d0ba5.js} +1 -1
- package/dist/assets/{commonlisp.126ea5bc.js → commonlisp.f2d9b9b1.js} +1 -1
- package/dist/assets/{config-files.04baaabb.js → config-files.ac74fea8.js} +1 -1
- package/dist/assets/{crystal.2f74eaf5.js → crystal.97856865.js} +1 -1
- package/dist/assets/{css.6f8a654e.js → css.7f807b17.js} +1 -1
- package/dist/assets/{cypher.f7b4194f.js → cypher.7cd36030.js} +3 -3
- package/dist/assets/{d.b2c44973.js → d.fa2b4528.js} +1 -1
- package/dist/assets/{dart.807118ef.js → dart.af44f108.js} +1 -1
- package/dist/assets/{databases.39a13c5d.js → databases.2a42b1ba.js} +1 -1
- package/dist/assets/{diff.df7c2507.js → diff.33d776fc.js} +1 -1
- package/dist/assets/{digitalocean-app-platform.6d350032.js → digitalocean-app-platform.70c21592.js} +1 -1
- package/dist/assets/{displays.101c9edb.js → displays.d848b491.js} +1 -1
- package/dist/assets/{displays.2c15a911.js → displays.ecc2c613.js} +1 -1
- package/dist/assets/{django.31349418.js → django.1965042d.js} +1 -1
- package/dist/assets/{docker.0e180ff7.js → docker.6748365e.js} +1 -1
- package/dist/assets/{dockerfile.9cf1b5e9.js → dockerfile.f7e82fe7.js} +1 -1
- package/dist/assets/{dtd.2eb8046c.js → dtd.7de198c9.js} +1 -1
- package/dist/assets/{dylan.4342284d.js → dylan.4e0afffa.js} +1 -1
- package/dist/assets/{ebnf.ac110410.js → ebnf.423e92bf.js} +1 -1
- package/dist/assets/{ecl.ef1a0830.js → ecl.5ceaf630.js} +1 -1
- package/dist/assets/{eiffel.2cdba3dc.js → eiffel.4d7ae0c0.js} +1 -1
- package/dist/assets/{elm.1a8ac848.js → elm.0cc8719f.js} +1 -1
- package/dist/assets/{email-templates.cb788cb0.js → email-templates.9cecf0b9.js} +1 -1
- package/dist/assets/en-au.169355d7.js +1 -0
- package/dist/assets/en-gb.0b977da8.js +1 -0
- package/dist/assets/en-nz.6296f2b6.js +1 -0
- package/dist/assets/environment-variables.a5b5c0aa.js +25 -0
- package/dist/assets/{erlang.957b37e4.js → erlang.176bea7d.js} +1 -1
- package/dist/assets/{error-codes.606bec58.js → error-codes.db5ba230.js} +1 -1
- package/dist/assets/es.c516dd05.js +1 -0
- package/dist/assets/{extensions.e55fc936.js → extensions.10d6f6c3.js} +1 -1
- package/dist/assets/{extensions.803fb88b.js → extensions.735e74b3.js} +1 -1
- package/dist/assets/{factor.c01980f8.js → factor.be42c791.js} +1 -1
- package/dist/assets/{fcl.87824263.js → fcl.879030fb.js} +1 -1
- package/dist/assets/{field-transforms.aac4af27.js → field-transforms.60165e8c.js} +1 -1
- package/dist/assets/{fields.3458f9a0.js → fields.17d2cea0.js} +1 -1
- package/dist/assets/{fields.f80c6966.js → fields.3f49dba2.js} +1 -1
- package/dist/assets/{fields.c933a3eb.js → fields.4933da97.js} +1 -1
- package/dist/assets/{files.cef9529d.js → files.04ffc317.js} +1 -1
- package/dist/assets/{files.2458c938.js → files.b8b17303.js} +1 -1
- package/dist/assets/{files.d6673170.js → files.f9b3fda9.js} +1 -1
- package/dist/assets/{filter-rules.8dda275b.js → filter-rules.780bde9f.js} +2 -2
- package/dist/assets/{folders.6224f87b.js → folders.a05410b5.js} +1 -1
- package/dist/assets/{forth.51e0131d.js → forth.fb5f114f.js} +1 -1
- package/dist/assets/{fortran.ccea4744.js → fortran.ba9b6719.js} +1 -1
- package/dist/assets/fr-FR.37e1725b.js +1 -0
- package/dist/assets/{gas.5613bf5b.js → gas.1bbed2b2.js} +1 -1
- package/dist/assets/{gfm.bc3f0591.js → gfm.149e301f.js} +1 -1
- package/dist/assets/{gherkin.963fa577.js → gherkin.7de0d8e2.js} +1 -1
- package/dist/assets/{github-ci.00b8f37e.js → github-ci.1aafd624.js} +2 -2
- package/dist/assets/{go.b597488d.js → go.7caf0f36.js} +1 -1
- package/dist/assets/{groovy.748ae778.js → groovy.607002d9.js} +1 -1
- package/dist/assets/haml.504050d1.js +1 -0
- package/dist/assets/{handlebars.d230fbb5.js → handlebars.7f84f825.js} +1 -1
- package/dist/assets/haskell-literate.e78773ef.js +1 -0
- package/dist/assets/{haskell.69e61064.js → haskell.63e1f2d3.js} +1 -1
- package/dist/assets/{haxe.a1958409.js → haxe.fca1efc8.js} +1 -1
- package/dist/assets/{htmlembedded.77d86e89.js → htmlembedded.1eb21358.js} +1 -1
- package/dist/assets/{htmlmixed.d2d262fe.js → htmlmixed.cb1d7158.js} +1 -1
- package/dist/assets/{http.0389a281.js → http.28fca87c.js} +1 -1
- package/dist/assets/{idl.4073e14b.js → idl.32a8e30b.js} +1 -1
- package/dist/assets/iis.fba7e919.js +23 -0
- package/dist/assets/{index.34c4ff98.js → index.07865455.js} +1 -1
- package/dist/assets/{index.5943c6a2.js → index.0b19be3f.js} +1 -1
- package/dist/assets/{index.9021855c.js → index.1010e9a5.js} +1 -1
- package/dist/assets/{index.12a41b75.js → index.123a36ac.js} +1 -1
- package/dist/assets/{index.d5b3136c.js → index.12744d3d.js} +1 -1
- package/dist/assets/{index.adcbf017.js → index.129fb164.js} +1 -1
- package/dist/assets/{index.76bf6775.js → index.13149be9.js} +1 -1
- package/dist/assets/{index.5d7e4388.js → index.132ba1c4.js} +1 -1
- package/dist/assets/{index.a65c23d0.js → index.1380be04.js} +1 -1
- package/dist/assets/{index.8f1b058c.js → index.156ad6a0.js} +1 -1
- package/dist/assets/{index.60c6f994.js → index.159d3509.js} +1 -1
- package/dist/assets/{index.93176038.js → index.1e395c13.js} +1 -1
- package/dist/assets/{index.0f421bfb.js → index.1fd08b8f.js} +1 -1
- package/dist/assets/{index.f6faa78c.js → index.271fc58d.js} +1 -1
- package/dist/assets/{index.03fcf041.js → index.2a965c68.js} +1 -1
- package/dist/assets/{index.adde2dbc.js → index.2ecf1365.js} +1 -1
- package/dist/assets/{index.13caabe3.js → index.307681c6.js} +1 -1
- package/dist/assets/{index.fbb4da88.js → index.32a66f8e.js} +1 -1
- package/dist/assets/{index.582262f3.js → index.336d2876.js} +1 -1
- package/dist/assets/{index.2ce5ad4e.js → index.36d21aeb.js} +1 -1
- package/dist/assets/{index.460c28b2.js → index.39d438a3.js} +1 -1
- package/dist/assets/{index.857a444d.js → index.3dfc9f28.js} +1 -1
- package/dist/assets/{index.3dbbdda4.js → index.3efbdb40.js} +1 -1
- package/dist/assets/{index.52488452.js → index.41239663.js} +1 -1
- package/dist/assets/{index.6dfafdb8.js → index.48d93056.js} +1 -1
- package/dist/assets/{index.fc96c02d.js → index.4a1a5f7b.js} +1 -1
- package/dist/assets/{index.3cc58479.js → index.4da7e0ab.js} +1 -1
- package/dist/assets/{index.cbf2ab7b.js → index.5292cb2f.js} +1 -1
- package/dist/assets/{index.7d7c94cc.js → index.53d2e106.js} +1 -1
- package/dist/assets/{index.b021cacb.js → index.54b89000.js} +1 -1
- package/dist/assets/{index.d19dacc2.js → index.5569aba4.js} +1 -1
- package/dist/assets/{index.370eb912.js → index.5e9f194d.js} +1 -1
- package/dist/assets/{index.86d76d87.js → index.6281d871.js} +1 -1
- package/dist/assets/{index.a3619cd6.js → index.634af914.js} +1 -1
- package/dist/assets/{index.020eeba9.js → index.63d11508.js} +1 -1
- package/dist/assets/{index.f3dac8ae.js → index.671541d9.js} +1 -1
- package/dist/assets/{index.afe1580d.js → index.6819c895.js} +1 -1
- package/dist/assets/{index.5ddf1c09.js → index.68748c2d.js} +1 -1
- package/dist/assets/{index.3886bcc9.js → index.6a792b33.js} +1 -1
- package/dist/assets/{index.07e02ffc.js → index.6dd016c8.js} +1 -1
- package/dist/assets/{index.26626da8.js → index.71f5e63c.js} +1 -1
- package/dist/assets/{index.12160ad1.js → index.734a95e8.js} +1 -1
- package/dist/assets/{index.12bc1139.js → index.759611b6.js} +1 -1
- package/dist/assets/{index.278f6673.js → index.76d07b62.js} +1 -1
- package/dist/assets/{index.dc16b5fc.js → index.7bee8c77.js} +1 -1
- package/dist/assets/{index.967091bd.js → index.7c0f84b2.js} +1 -1
- package/dist/assets/{index.8d25e37e.js → index.7d228c67.js} +1 -1
- package/dist/assets/{index.2bddfec0.js → index.7fbf2f6a.js} +1 -1
- package/dist/assets/{index.a8032304.js → index.865af0fe.js} +1 -1
- package/dist/assets/{index.d21606d9.js → index.872629ec.js} +1 -1
- package/dist/assets/{index.7c109413.js → index.87a15825.js} +1 -1
- package/dist/assets/{index.8d30d8ec.js → index.8d3e2c04.js} +1 -1
- package/dist/assets/{index.ffdce238.js → index.8e3e39ae.js} +1 -1
- package/dist/assets/{index.ca14dcca.js → index.8fac67f3.js} +1 -1
- package/dist/assets/{index.9427fe3a.js → index.944ed685.js} +1 -1
- package/dist/assets/{index.cdc078f5.js → index.975605c7.js} +1 -1
- package/dist/assets/{index.a1fba609.js → index.9bf6dfc7.js} +1 -1
- package/dist/assets/{index.a89c6f27.css → index.9f6c6cb3.css} +1 -1
- package/dist/assets/{index.cc8365dc.js → index.a1b32348.js} +1 -1
- package/dist/assets/{index.e6c63fd8.js → index.a2724a18.js} +1 -1
- package/dist/assets/{index.9e6cb9fb.js → index.ab7a9d20.js} +1 -1
- package/dist/assets/{index.69d51e36.js → index.ae39c45d.js} +1 -1
- package/dist/assets/{index.a5c459a5.js → index.b0239526.js} +2 -2
- package/dist/assets/{index.2e10fa0a.js → index.b22d3b87.js} +1 -1
- package/dist/assets/{index.b49259cd.js → index.b2ce5853.js} +1 -1
- package/dist/assets/{index.8642f0ef.js → index.b3861ec3.js} +1 -1
- package/dist/assets/{index.453b8dd4.js → index.ba6582ce.js} +1 -1
- package/dist/assets/{index.0cdd93eb.js → index.c16fb6fc.js} +1 -1
- package/dist/assets/{index.0c668002.js → index.c2c4a871.js} +1 -1
- package/dist/assets/{index.b8f2f91f.js → index.c38b7f79.js} +1 -1
- package/dist/assets/{index.dad442a6.js → index.c6b3c631.js} +1 -1
- package/dist/assets/{index.1441a301.js → index.c8dd9a32.js} +1 -1
- package/dist/assets/{index.9df43656.js → index.d01ff2fc.js} +1 -1
- package/dist/assets/index.d07f63e3.css +1 -0
- package/dist/assets/{index.10f638cf.js → index.da1f65af.js} +1 -1
- package/dist/assets/{index.cc6ac81f.js → index.e0a5d0dd.js} +1 -1
- package/dist/assets/{index.c07a0137.js → index.e7b321ba.js} +1 -1
- package/dist/assets/{index.a5833a30.js → index.ec71a491.js} +1 -1
- package/dist/assets/{index.9fa02ab0.js → index.eee4f224.js} +1 -1
- package/dist/assets/{index.75da7150.js → index.f3f4fbd9.js} +1 -1
- package/dist/assets/{index.6cf6e65c.js → index.f757af12.js} +1 -1
- package/dist/assets/{index.513f493e.js → index.f99b041c.js} +1 -1
- package/dist/assets/{index.9b9992c2.js → index.fbfd2bd6.js} +1 -1
- package/dist/assets/{index.3beb87d3.js → index.ffd3af80.js} +1 -1
- package/dist/assets/{input-rich-text-html.ae77acab.js → input-rich-text-html.e15177a6.js} +9 -9
- package/dist/assets/{installation.ca7cfca2.js → installation.c4bff2d4.js} +1 -1
- package/dist/assets/{interfaces.f0ecff97.js → interfaces.1e1a05f4.js} +1 -1
- package/dist/assets/{interfaces.b4c6f273.js → interfaces.4d9d8da8.js} +1 -1
- package/dist/assets/{introduction.56c0c1cd.js → introduction.36187581.js} +1 -1
- package/dist/assets/{introduction.dd1bcb44.js → introduction.5bfc6d93.js} +1 -1
- package/dist/assets/{introduction.5c4ec6b9.js → introduction.c36fa9ca.js} +1 -1
- package/dist/assets/{items.e1d7ba61.js → items.2ec3ef4a.js} +1 -1
- package/dist/assets/{items.2ad153eb.js → items.5eb4a489.js} +1 -1
- package/dist/assets/{items.9e96b56b.js → items.7db06a6b.js} +1 -1
- package/dist/assets/{javascript-hint.9186051b.js → javascript-hint.968a99a5.js} +1 -1
- package/dist/assets/{javascript.2f3ede5a.js → javascript.76216d0d.js} +1 -1
- package/dist/assets/{jinja2.8d7f6a8b.js → jinja2.9eba4d82.js} +1 -1
- package/dist/assets/{jsx.c540510b.js → jsx.2200a77c.js} +1 -1
- package/dist/assets/{julia.a47aef56.js → julia.15f73490.js} +1 -1
- package/dist/assets/{layouts.37d32d4c.js → layouts.5a85a5bc.js} +1 -1
- package/dist/assets/{layouts.bc85bb07.js → layouts.c52bbf71.js} +1 -1
- package/dist/assets/{livescript.3fc737e8.js → livescript.e919a245.js} +1 -1
- package/dist/assets/{lua.948ce6b7.js → lua.75eda1a9.js} +1 -1
- package/dist/assets/{manual.18f4f30d.js → manual.bc0f8432.js} +1 -1
- package/dist/assets/{mark-selection.75c4ea7c.js → mark-selection.a99b3033.js} +1 -1
- package/dist/assets/{match-highlighter.bdbe0955.js → match-highlighter.668a64ca.js} +1 -1
- package/dist/assets/{mathematica.4f5f6aa2.js → mathematica.598d20b5.js} +1 -1
- package/dist/assets/{mbox.122aff2c.js → mbox.5b96e107.js} +1 -1
- package/dist/assets/{migrating-from-v8.311cd0e1.js → migrating-from-v8.667c19d3.js} +1 -1
- package/dist/assets/{migrations.fb0c9784.js → migrations.33fd8fc8.js} +1 -1
- package/dist/assets/{mirc.a72bdc8a.js → mirc.90d37912.js} +1 -1
- package/dist/assets/{mllike.eb583c07.js → mllike.137d1b89.js} +1 -1
- package/dist/assets/{modelica.f3e06d95.js → modelica.bd73920d.js} +1 -1
- package/dist/assets/{modules.7140afbb.js → modules.17def569.js} +1 -1
- package/dist/assets/{modules.8f34db3e.js → modules.43892717.js} +1 -1
- package/dist/assets/{mscgen.a5bf61ad.js → mscgen.5b4ab425.js} +1 -1
- package/dist/assets/{multiplex.796857c0.js → multiplex.87dad2d7.js} +1 -1
- package/dist/assets/{mumps.0e26badd.js → mumps.61c3783e.js} +1 -1
- package/dist/assets/{nginx.d228fa16.js → nginx.655bc186.js} +1 -1
- package/dist/assets/{nsis.7f6a0f90.js → nsis.fdad0c07.js} +1 -1
- package/dist/assets/{ntriples.994511c8.js → ntriples.97729057.js} +1 -1
- package/dist/assets/{octave.32e47905.js → octave.f73b18ac.js} +1 -1
- package/dist/assets/{overlay.8c05baaa.js → overlay.7f1c5fa5.js} +1 -1
- package/dist/assets/{oz.742a2172.js → oz.809f2a14.js} +1 -1
- package/dist/assets/{pascal.1609d5f5.js → pascal.f8cd95cf.js} +1 -1
- package/dist/assets/{pegjs.5173241b.js → pegjs.5dfc390d.js} +1 -1
- package/dist/assets/{perl.229a0cce.js → perl.6b530f7e.js} +1 -1
- package/dist/assets/{permissions.144d3fdf.js → permissions.1cc1e9ac.js} +1 -1
- package/dist/assets/{permissions.87246e2c.js → permissions.5186b062.js} +1 -1
- package/dist/assets/{permissions.1d7c8608.js → permissions.f9121dc8.js} +1 -1
- package/dist/assets/{php.5aaf45dc.js → php.328211b9.js} +1 -1
- package/dist/assets/{pig.59bb21b5.js → pig.8c9bf1f9.js} +1 -1
- package/dist/assets/{plesk.73a68904.js → plesk.68b64f87.js} +2 -2
- package/dist/assets/{powershell.60297f1d.js → powershell.015ab379.js} +1 -1
- package/dist/assets/{presets.af59754e.js → presets.83ef1429.js} +1 -1
- package/dist/assets/{presets.c061427e.js → presets.ac89e285.js} +1 -1
- package/dist/assets/{projects.767db627.js → projects.086e4104.js} +1 -1
- package/dist/assets/{projects.ec4144c5.js → projects.54a55899.js} +1 -1
- package/dist/assets/{properties.22ba7b4b.js → properties.882f6a5f.js} +1 -1
- package/dist/assets/{protobuf.85730256.js → protobuf.8dfcce9b.js} +1 -1
- package/dist/assets/{pug.70f01632.js → pug.5b875e17.js} +1 -1
- package/dist/assets/{puppet.a64ec0ec.js → puppet.5aa1fc3a.js} +1 -1
- package/dist/assets/{python.fe50fda4.js → python.67462152.js} +1 -1
- package/dist/assets/{q.88cb2b8c.js → q.28cbbad3.js} +1 -1
- package/dist/assets/{query.699b00aa.js → query.eaa960f0.js} +1 -1
- package/dist/assets/{quickstart.504e6d54.js → quickstart.39d64eea.js} +1 -1
- package/dist/assets/{r.59023feb.js → r.fdf280db.js} +1 -1
- package/dist/assets/{relations.5d7fec12.js → relations.30bf1e5e.js} +1 -1
- package/dist/assets/{relationships.850eb59c.js → relationships.8c5c9d45.js} +1 -1
- package/dist/assets/{revisions.edb861a6.js → revisions.78c66006.js} +1 -1
- package/dist/assets/{revisions.c65244b7.js → revisions.8430c29c.js} +1 -1
- package/dist/assets/ro-RO.5d125b41.js +1 -0
- package/dist/assets/{roles.d176bda2.js → roles.a5d56e09.js} +1 -1
- package/dist/assets/{roles.31bb987f.js → roles.ae48ac62.js} +1 -1
- package/dist/assets/{roles.be39bb88.js → roles.b691aabb.js} +1 -1
- package/dist/assets/{rpm.5b354114.js → rpm.3b8f7e29.js} +1 -1
- package/dist/assets/rst.528314cf.js +1 -0
- package/dist/assets/{ruby.fbe69f10.js → ruby.c4d5f740.js} +1 -1
- package/dist/assets/{running-locally.f7f27b40.js → running-locally.6bd2f854.js} +1 -1
- package/dist/assets/{rust.d5f860d4.js → rust.409632ee.js} +1 -1
- package/dist/assets/{sas.5078cd09.js → sas.47cbda6d.js} +1 -1
- package/dist/assets/{sass.ad94908f.js → sass.a244c156.js} +1 -1
- package/dist/assets/{scheme.62ef3aac.js → scheme.163a4a3b.js} +1 -1
- package/dist/assets/{sdk.1fa5df01.js → sdk.c46fe226.js} +1 -1
- package/dist/assets/{server.517326b4.js → server.b7e67b66.js} +1 -1
- package/dist/assets/{settings.80fdd488.js → settings.076e3b15.js} +1 -1
- package/dist/assets/{shell.21000e97.js → shell.6d60921a.js} +1 -1
- package/dist/assets/{show-hint.4e2adb57.js → show-hint.e595bcf5.js} +1 -1
- package/dist/assets/{sieve.8235bc52.js → sieve.c618d5d5.js} +1 -1
- package/dist/assets/{simple.c600ff81.js → simple.b69582f5.js} +1 -1
- package/dist/assets/{slim.b09565ba.js → slim.daebda4a.js} +1 -1
- package/dist/assets/{smalltalk.d1bdef54.js → smalltalk.70889ef5.js} +1 -1
- package/dist/assets/{smarty.68c55065.js → smarty.325ff529.js} +1 -1
- package/dist/assets/{solr.32afafb4.js → solr.bb397dc6.js} +1 -1
- package/dist/assets/{soy.71a94bd3.js → soy.1584d1b4.js} +1 -1
- package/dist/assets/{sparql.c13a6abd.js → sparql.9bd63ffb.js} +1 -1
- package/dist/assets/{spreadsheet.f06b861c.js → spreadsheet.bd23b833.js} +1 -1
- package/dist/assets/{sql.1622b7a0.js → sql.ed54c85d.js} +1 -1
- package/dist/assets/sr-CS.1840c0db.js +1 -0
- package/dist/assets/{stex.2997e8d4.js → stex.35f42f0e.js} +1 -1
- package/dist/assets/{styles.f321c37a.js → styles.8f31dcd9.js} +1 -1
- package/dist/assets/{stylus.09700176.js → stylus.5c8637e4.js} +1 -1
- package/dist/assets/{support.fb5b37c6.js → support.046994af.js} +1 -1
- package/dist/assets/{swift.ac31530b.js → swift.6e697047.js} +1 -1
- package/dist/assets/{tcl.3dcc845d.js → tcl.6462ea3a.js} +1 -1
- package/dist/assets/{textile.40aa3a77.js → textile.b5cd484d.js} +1 -1
- package/dist/assets/{tiddlywiki.bc050afc.js → tiddlywiki.b1e435a4.js} +1 -1
- package/dist/assets/{tiki.aa5136d5.js → tiki.4013883e.js} +1 -1
- package/dist/assets/{toml.7d0d7ed9.js → toml.d8214748.js} +1 -1
- package/dist/assets/{tornado.5818c716.js → tornado.20d8d573.js} +1 -1
- package/dist/assets/{transition-bounce.57b56dd5.js → transition-bounce.52382bc3.js} +1 -1
- package/dist/assets/{transition-dialog.239bd9f5.js → transition-dialog.5f5e2d17.js} +1 -1
- package/dist/assets/{transition-expand.15de075e.js → transition-expand.84ad1aa8.js} +1 -1
- package/dist/assets/{translations.067fabb9.js → translations.8b18280d.js} +1 -1
- package/dist/assets/{translations.a62970f2.js → translations.d6de3905.js} +1 -1
- package/dist/assets/{troff.444d4397.js → troff.72228b7a.js} +1 -1
- package/dist/assets/{ttcn-cfg.0a78bb0d.js → ttcn-cfg.f96a99f0.js} +1 -1
- package/dist/assets/{ttcn.112b0d67.js → ttcn.0e972000.js} +1 -1
- package/dist/assets/{turtle.4816436c.js → turtle.8ab64def.js} +1 -1
- package/dist/assets/{twig.d9de9f9a.js → twig.7589b410.js} +1 -1
- package/dist/assets/{types.78caa1da.js → types.48124f27.js} +1 -1
- package/dist/assets/{ubuntu.78911058.js → ubuntu.36ee13da.js} +1 -1
- package/dist/assets/{use-sync.25413196.js → use-sync.fa2fe3b0.js} +1 -1
- package/dist/assets/{users.aded52e8.js → users.adf2a2c8.js} +1 -1
- package/dist/assets/{users.b66610cf.js → users.d2e45508.js} +1 -1
- package/dist/assets/{users.fdd31e5b.js → users.d8f130a3.js} +1 -1
- package/dist/assets/{utilities.4cd9b9f2.js → utilities.4d891c04.js} +1 -1
- package/dist/assets/{v-avatar.7672b4c4.js → v-avatar.00e9b8eb.js} +1 -1
- package/dist/assets/{v-badge.c90c82e6.js → v-badge.7fc3bab4.js} +1 -1
- package/dist/assets/{v-breadcrumb.b77e4f18.js → v-breadcrumb.a2a2f370.js} +1 -1
- package/dist/assets/{v-button.6f71192d.js → v-button.36e765a2.js} +1 -1
- package/dist/assets/{v-card-actions.f7038c5a.js → v-card-actions.12455b5d.js} +1 -1
- package/dist/assets/{v-card-subtitle.64d51a7f.js → v-card-subtitle.b7280bd9.js} +2 -2
- package/dist/assets/{v-card-text.18cb0f11.js → v-card-text.095779dd.js} +2 -2
- package/dist/assets/v-card-title.78e39c82.js +4 -0
- package/dist/assets/{v-card.a3d24ca4.js → v-card.e9191679.js} +1 -1
- package/dist/assets/{v-checkbox.2a883e5d.js → v-checkbox.f755b3db.js} +1 -1
- package/dist/assets/{v-chip.9a1d06bd.js → v-chip.5f8fdbe9.js} +1 -1
- package/dist/assets/{v-detail.08081d02.js → v-detail.70d83e7f.js} +1 -1
- package/dist/assets/{v-dialog.429d7b8a.js → v-dialog.5e7fff0c.js} +2 -2
- package/dist/assets/{v-divider.d65da562.js → v-divider.9db45406.js} +2 -2
- package/dist/assets/{v-drawer.c3209884.js → v-drawer.9b03749d.js} +1 -1
- package/dist/assets/{v-error.e5cdff60.js → v-error.fb66a9e6.js} +2 -2
- package/dist/assets/{v-fancy-select.5f18b1f3.js → v-fancy-select.b54085b1.js} +1 -1
- package/dist/assets/{v-field-select.32fb1d44.js → v-field-select.dd25033c.js} +2 -2
- package/dist/assets/{v-field-template.929a86e7.js → v-field-template.9e342040.js} +1 -1
- package/dist/assets/{v-form.4f15ff0f.js → v-form.e08a28c3.js} +2 -2
- package/dist/assets/{v-hover.2765134e.js → v-hover.a44a3be2.js} +1 -1
- package/dist/assets/{v-icon.0f49dcdf.js → v-icon.4709fb88.js} +1 -1
- package/dist/assets/{v-info.b1cb42be.js → v-info.73d1c44b.js} +2 -2
- package/dist/assets/{v-input.8c2d8d91.js → v-input.fda37db3.js} +1 -1
- package/dist/assets/{v-item-group.06ee487a.js → v-item-group.76391fb0.js} +1 -1
- package/dist/assets/{v-item.db377719.js → v-item.38e2a78e.js} +1 -1
- package/dist/assets/{v-list-group.c058dd0e.js → v-list-group.e39085f1.js} +2 -2
- package/dist/assets/{v-list-item-content.fb662398.js → v-list-item-content.79e3ccea.js} +1 -1
- package/dist/assets/{v-list-item-hint.b3e2809b.js → v-list-item-hint.b72017df.js} +1 -1
- package/dist/assets/{v-list-item-icon.7c917677.js → v-list-item-icon.a4d86111.js} +1 -1
- package/dist/assets/{v-list-item.4062ea0e.js → v-list-item.aeb5be7e.js} +1 -1
- package/dist/assets/{v-list.52d7c7ae.js → v-list.f09d5055.js} +1 -1
- package/dist/assets/{v-menu.78d16370.js → v-menu.672ad2ec.js} +1 -1
- package/dist/assets/{v-notice.3c4dcb0c.js → v-notice.ca244793.js} +2 -2
- package/dist/assets/{v-overlay.9ee2a4ea.js → v-overlay.b2e5ff6e.js} +1 -1
- package/dist/assets/{v-pagination.1bcaff37.js → v-pagination.dc840ce8.js} +1 -1
- package/dist/assets/{v-progress-circular.b1271d61.js → v-progress-circular.822f61bb.js} +2 -2
- package/dist/assets/{v-progress-linear.40057ac3.js → v-progress-linear.33cf976d.js} +1 -1
- package/dist/assets/{v-radio.9ce87d06.js → v-radio.1aa97b7b.js} +1 -1
- package/dist/assets/{v-select.ad82a076.js → v-select.27ac4bef.js} +1 -1
- package/dist/assets/{v-sheet.5acc0a85.js → v-sheet.c6ba4912.js} +1 -1
- package/dist/assets/{v-skeleton-loader.c5b2acac.js → v-skeleton-loader.52915dd8.js} +1 -1
- package/dist/assets/{v-slider.6fe18dea.js → v-slider.b989ae59.js} +1 -1
- package/dist/assets/{v-switch.3839f607.js → v-switch.de111eb9.js} +1 -1
- package/dist/assets/{v-tab-item.2ab69292.js → v-tab-item.de7c0a28.js} +1 -1
- package/dist/assets/{v-tab.c4390cdb.js → v-tab.40afffbf.js} +1 -1
- package/dist/assets/{v-table.fc66e91c.js → v-table.9a5b33ab.js} +1 -1
- package/dist/assets/{v-tabs-items.23a4d028.js → v-tabs-items.15506baf.js} +1 -1
- package/dist/assets/{v-tabs.8cb6f20c.js → v-tabs.c9489007.js} +1 -1
- package/dist/assets/{v-text-overflow.674dc510.js → v-text-overflow.92c20f66.js} +1 -1
- package/dist/assets/{v-textarea.02bee531.js → v-textarea.4cced1c0.js} +2 -2
- package/dist/assets/{v-upload.685df91f.js → v-upload.ffe73a75.js} +1 -1
- package/dist/assets/{vb.4da8219a.js → vb.86e493cb.js} +1 -1
- package/dist/assets/{vbscript.b340075d.js → vbscript.74f96813.js} +1 -1
- package/dist/assets/{velocity.64e51bc5.js → velocity.a679c97c.js} +1 -1
- package/dist/assets/vendor.a626ab9c.js +2039 -0
- package/dist/assets/vendor.fe7856f0.css +1 -0
- package/dist/assets/{verilog.1bc5f3a3.js → verilog.e437b30d.js} +1 -1
- package/dist/assets/{vhdl.3c2ba104.js → vhdl.1c239e80.js} +1 -1
- package/dist/assets/{vue.fa209324.js → vue.b668d00e.js} +1 -1
- package/dist/assets/{wast.54b48569.js → wast.82d9b15b.js} +1 -1
- package/dist/assets/{webhooks.4f7eaa96.js → webhooks.439c510a.js} +1 -1
- package/dist/assets/{webhooks.e51fba7a.js → webhooks.4bdd0741.js} +1 -1
- package/dist/assets/{webidl.2374e180.js → webidl.5aceeff1.js} +1 -1
- package/dist/assets/{xquery.750a7cd1.js → xquery.900a45f6.js} +1 -1
- package/dist/assets/{yacas.6eba3f7b.js → yacas.56dd7cb2.js} +1 -1
- package/dist/assets/yaml-frontmatter.bdb5ae8b.js +1 -0
- package/dist/assets/{yaml.622de393.js → yaml.d877d25f.js} +1 -1
- package/dist/assets/{z80.f493b48f.js → z80.807d7c5a.js} +1 -1
- package/dist/index.514c2a9a.js +48 -0
- package/dist/index.html +5 -5
- package/dist/vue-i18n.c5bba31b.js +1 -0
- package/dist/vue-router.ba0fd454.js +1 -0
- package/dist/vue.010be4a3.js +1 -0
- package/package.json +17 -15
- package/dist/@directus_extensions-sdk.caa1292f.js +0 -1
- package/dist/assets/api-config.d4a334b4.js +0 -53
- package/dist/assets/authentication.2962910f.js +0 -54
- package/dist/assets/en-au.175fcb2b.js +0 -1
- package/dist/assets/en-gb.018f9a21.js +0 -1
- package/dist/assets/en-nz.2f0f7e5c.js +0 -1
- package/dist/assets/environment-variables.41ac3cc1.js +0 -25
- package/dist/assets/es.18d3cc7b.js +0 -1
- package/dist/assets/fr-FR.13498131.js +0 -1
- package/dist/assets/haml.071df27c.js +0 -1
- package/dist/assets/haskell-literate.d4663d82.js +0 -1
- package/dist/assets/iis.8d5a89ca.js +0 -23
- package/dist/assets/index.3339c532.css +0 -1
- package/dist/assets/ro-RO.381b685b.js +0 -1
- package/dist/assets/rst.dab09e05.js +0 -1
- package/dist/assets/sr-CS.f7a42011.js +0 -1
- package/dist/assets/v-card-title.37498457.js +0 -4
- package/dist/assets/vendor.62143b15.js +0 -1582
- package/dist/assets/vendor.de5758fd.css +0 -1
- package/dist/assets/yaml-frontmatter.f29f4a8c.js +0 -1
- package/dist/index.9cda602b.js +0 -48
- package/dist/vue-i18n.12eba70a.js +0 -1
- package/dist/vue-router.72dfb5ae.js +0 -1
- package/dist/vue.c17340c4.js +0 -1
package/dist/index.html
CHANGED
|
@@ -133,11 +133,11 @@
|
|
|
133
133
|
/>
|
|
134
134
|
<title>Loading…</title>
|
|
135
135
|
<style id="custom-css"></style>
|
|
136
|
-
<script type="module" crossorigin src="index.
|
|
137
|
-
<link rel="modulepreload" href="assets/vendor.
|
|
138
|
-
<link rel="modulepreload" href="assets/use-sync.
|
|
139
|
-
<link rel="stylesheet" href="assets/vendor.
|
|
140
|
-
<link rel="stylesheet" href="assets/index.
|
|
136
|
+
<script type="module" crossorigin src="index.514c2a9a.js"></script>
|
|
137
|
+
<link rel="modulepreload" href="assets/vendor.a626ab9c.js">
|
|
138
|
+
<link rel="modulepreload" href="assets/use-sync.fa2fe3b0.js">
|
|
139
|
+
<link rel="stylesheet" href="assets/vendor.fe7856f0.css">
|
|
140
|
+
<link rel="stylesheet" href="assets/index.d07f63e3.css">
|
|
141
141
|
</head>
|
|
142
142
|
<body class="light">
|
|
143
143
|
<noscript>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{d6 as e,d7 as r,d8 as t,d9 as d,c as o,u as m,da as n}from"./assets/vendor.a626ab9c.js";export{e as DatetimeFormat,r as NumberFormat,t as Translation,d as VERSION,o as createI18n,m as useI18n,n as vTDirective};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{db as s,dc as r,X as t,dd as o,de as i,ar as u,df as d,dg as y,as as c,dh as n,di as R,R as p,ai as L,dj as f,dk as h,dl as v,dm as K,dn as b,aG as g,Z as m,U as H,dp as T}from"./assets/vendor.a626ab9c.js";export{s as NavigationFailureType,r as RouterLink,t as RouterView,o as START_LOCATION,i as createMemoryHistory,u as createRouter,d as createRouterMatcher,y as createWebHashHistory,c as createWebHistory,n as isNavigationFailure,R as matchedRouteKey,p as onBeforeRouteLeave,L as onBeforeRouteUpdate,f as parseQuery,h as routeLocationKey,v as routerKey,K as routerViewLocationKey,b as stringifyQuery,g as useLink,m as useRoute,H as useRouter,T as viewDepthKey};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{bX as s,bY as t,cM as o,Y as c,bZ as r,cN as n,b_ as i,b$ as d,aD as l,c0 as p,aC as m,aE as f,bK as u,c1 as S,c2 as v,d3 as R,d4 as b,c3 as h,c4 as C,bJ as w,o as y,bz as E,q as g,I as T,V as k,B as x,c5 as D,c6 as M,c7 as P,bL as V,D as A,aJ as H,P as N,t as B,cO as z,bk as F,n as U,bM as K,c8 as I,c9 as W,ca as J,bN as L,cb as O,cP as j,cQ as q,cc as G,cR as Q,cd as Y,N as _,W as $,ce as X,bO as Z,cf as ee,bP as ae,T as se,cg as te,cS as oe,cT as ce,cU as re,ak as ne,ch as ie,ci as de,cV as le,cj as pe,O as me,al as fe,K as ue,M as Se,av as ve,bC as Re,ac as be,ad as he,ck as Ce,bD as we,cl as ye,Q as Ee,cm as ge,cn as Te,cW as ke,co as xe,aa as De,cp as Me,p as Pe,a2 as Ve,S as Ae,cX as He,a1 as Ne,cq as Be,z as ze,cY as Fe,v as Ue,cr as Ke,bQ as Ie,$ as We,E as Je,r as Le,F as Oe,L as je,cs as qe,ct as Ge,cu as Qe,cv as Ye,cw as _e,cZ as $e,c_ as Xe,s as Ze,cx as ea,cy as aa,c$ as sa,C as ta,d5 as oa,aF as ca,d0 as ra,d1 as na,A as ia,cz as da,d2 as la,ae as pa,cA as ma,bR as fa,bS as ua,cB as Sa,cC as va,cD as Ra,bT as ba,bU as ha,bV as Ca,bW as wa,aH as ya,J as Ea,cE as ga,cF as Ta,y as ka,a6 as xa,cG as Da,cH as Ma,cI as Pa,w as Va,cJ as Aa,G as Ha,_ as Na,cK as Ba,H as za,cL as Fa}from"./assets/vendor.a626ab9c.js";export{s as BaseTransition,t as Comment,o as EffectScope,c as Fragment,r as KeepAlive,n as ReactiveEffect,i as Static,d as Suspense,l as Teleport,p as Text,m as Transition,f as TransitionGroup,u as VueElement,S as callWithAsyncErrorHandling,v as callWithErrorHandling,R as camelize,b as capitalize,h as cloneVNode,C as compatUtils,w as compile,y as computed,E as createApp,g as createBlock,T as createCommentVNode,k as createElementBlock,x as createElementVNode,D as createHydrationRenderer,M as createPropsRestProxy,P as createRenderer,V as createSSRApp,A as createSlots,H as createStaticVNode,N as createTextVNode,B as createVNode,z as customRef,F as defineAsyncComponent,U as defineComponent,K as defineCustomElement,I as defineEmits,W as defineExpose,J as defineProps,L as defineSSRCustomElement,O as devtools,j as effect,q as effectScope,G as getCurrentInstance,Q as getCurrentScope,Y as getTransitionRawChildren,_ as guardReactiveProps,$ as h,X as handleError,Z as hydrate,ee as initCustomFormatter,ae as initDirectivesForSSR,se as inject,te as isMemoSame,oe as isProxy,ce as isReactive,re as isReadonly,ne as isRef,ie as isRuntimeOnly,de as isVNode,le as markRaw,pe as mergeDefaults,me as mergeProps,fe as nextTick,ue as normalizeClass,Se as normalizeProps,ve as normalizeStyle,Re as onActivated,be as onBeforeMount,he as onBeforeUnmount,Ce as onBeforeUpdate,we as onDeactivated,ye as onErrorCaptured,Ee as onMounted,ge as onRenderTracked,Te as onRenderTriggered,ke as onScopeDispose,xe as onServerPrefetch,De as onUnmounted,Me as onUpdated,Pe as openBlock,Ve as popScopeId,Ae as provide,He as proxyRefs,Ne as pushScopeId,Be as queuePostFlushCb,ze as reactive,Fe as readonly,Ue as ref,Ke as registerRuntimeCompiler,Ie as render,We as renderList,Je as renderSlot,Le as resolveComponent,Oe as resolveDirective,je as resolveDynamicComponent,qe as resolveFilter,Ge as resolveTransitionHooks,Qe as setBlockTracking,Ye as setDevtoolsHook,_e as setTransitionHooks,$e as shallowReactive,Xe as shallowReadonly,Ze as shallowRef,ea as ssrContextKey,aa as ssrUtils,sa as stop,ta as toDisplayString,oa as toHandlerKey,ca as toHandlers,ra as toRaw,na as toRef,ia as toRefs,da as transformVNodeArgs,la as triggerRef,pa as unref,ma as useAttrs,fa as useCssModule,ua as useCssVars,Sa as useSSRContext,va as useSlots,Ra as useTransitionState,ba as vModelCheckbox,ha as vModelDynamic,Ca as vModelRadio,wa as vModelSelect,ya as vModelText,Ea as vShow,ga as version,Ta as warn,ka as watch,xa as watchEffect,Da as watchPostEffect,Ma as watchSyncEffect,Pa as withAsyncContext,Va as withCtx,Aa as withDefaults,Ha as withDirectives,Na as withKeys,Ba as withMemo,za as withModifiers,Fa as withScopeId};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@directus/app",
|
|
3
|
-
"version": "9.0.0-rc.
|
|
3
|
+
"version": "9.0.0-rc.99",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Directus is an Open-Source Headless CMS & API for Managing Custom Databases",
|
|
6
6
|
"author": "Rijk van Zanten <rijkvanzanten@me.com>",
|
|
@@ -22,17 +22,19 @@
|
|
|
22
22
|
"build": "vite build",
|
|
23
23
|
"serve": "vite preview"
|
|
24
24
|
},
|
|
25
|
-
"gitHead": "
|
|
25
|
+
"gitHead": "7c88f038844d6a64e36c9848fe95074aae7fdd0c",
|
|
26
26
|
"devDependencies": {
|
|
27
|
-
"@directus/docs": "9.0.0-rc.
|
|
28
|
-
"@directus/extensions-sdk": "9.0.0-rc.
|
|
29
|
-
"@directus/format-title": "9.0.0-rc.
|
|
30
|
-
"@directus/shared": "9.0.0-rc.
|
|
31
|
-
"@
|
|
32
|
-
"@
|
|
33
|
-
"@fullcalendar/
|
|
34
|
-
"@fullcalendar/
|
|
35
|
-
"@fullcalendar/
|
|
27
|
+
"@directus/docs": "9.0.0-rc.99",
|
|
28
|
+
"@directus/extensions-sdk": "9.0.0-rc.99",
|
|
29
|
+
"@directus/format-title": "9.0.0-rc.99",
|
|
30
|
+
"@directus/shared": "9.0.0-rc.99",
|
|
31
|
+
"@fortawesome/fontawesome-svg-core": "1.2.36",
|
|
32
|
+
"@fortawesome/free-brands-svg-icons": "5.15.4",
|
|
33
|
+
"@fullcalendar/core": "5.10.0",
|
|
34
|
+
"@fullcalendar/daygrid": "5.10.0",
|
|
35
|
+
"@fullcalendar/interaction": "5.10.0",
|
|
36
|
+
"@fullcalendar/list": "5.10.0",
|
|
37
|
+
"@fullcalendar/timegrid": "5.10.0",
|
|
36
38
|
"@mapbox/mapbox-gl-draw": "1.3.0",
|
|
37
39
|
"@mapbox/mapbox-gl-draw-static-mode": "1.0.1",
|
|
38
40
|
"@mapbox/mapbox-gl-geocoder": "4.7.4",
|
|
@@ -49,7 +51,7 @@
|
|
|
49
51
|
"@types/diff": "5.0.1",
|
|
50
52
|
"@types/dompurify": "2.3.1",
|
|
51
53
|
"@types/geojson": "7946.0.8",
|
|
52
|
-
"@types/lodash": "4.14.
|
|
54
|
+
"@types/lodash": "4.14.176",
|
|
53
55
|
"@types/mapbox__mapbox-gl-draw": "1.2.3",
|
|
54
56
|
"@types/mapbox__mapbox-gl-geocoder": "4.7.1",
|
|
55
57
|
"@types/markdown-it": "12.2.3",
|
|
@@ -80,7 +82,7 @@
|
|
|
80
82
|
"mitt": "3.0.0",
|
|
81
83
|
"nanoid": "3.1.30",
|
|
82
84
|
"p-queue": "7.1.0",
|
|
83
|
-
"pinia": "2.0.0-rc.
|
|
85
|
+
"pinia": "2.0.0-rc.14",
|
|
84
86
|
"prettier": "2.4.1",
|
|
85
87
|
"pretty-ms": "7.0.1",
|
|
86
88
|
"qrcode": "1.4.4",
|
|
@@ -88,8 +90,8 @@
|
|
|
88
90
|
"sass": "1.43.2",
|
|
89
91
|
"tinymce": "5.10.0",
|
|
90
92
|
"typescript": "4.4.4",
|
|
91
|
-
"vite": "2.6.
|
|
92
|
-
"vite-plugin-md": "0.11.
|
|
93
|
+
"vite": "2.6.10",
|
|
94
|
+
"vite-plugin-md": "0.11.2",
|
|
93
95
|
"vue": "3.2.20",
|
|
94
96
|
"vue-i18n": "9.1.9",
|
|
95
97
|
"vue-router": "4.0.12",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as u}from"./assets/vendor.62143b15.js";import{f as p,l,k as m,h as y,i as F,d as j,b,c as g,n as h,a as k,j as v,m as x,u as G}from"./assets/use-sync.25413196.js";function d(t,s){return{fieldGroups:u(()=>{const n={};for(const e in s)n[e]=[];return t.value.reduce((e,o)=>{for(const a in s)s[a](o)!==!1&&e[a].push(o);return e},n)})}}export{p as defineDisplay,l as defineEndpoint,m as defineHook,y as defineInterface,F as defineLayout,j as defineModule,b as getFieldsFromTemplate,g as getRelationType,h as useApi,k as useCollection,d as useFilterFields,v as useItems,x as useStores,G as useSync};
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import{r as n,p as l,q as c,w as i,B as e,t as u,P as o}from"./vendor.62143b15.js";const h={class:"markdown-body"},d=e("p",null,[e("div",{class:"table-of-contents"},[e("ul",null,[e("li",null,[e("a",{href:"#cache"},"Cache")]),e("li",null,[e("a",{href:"#oauth-(single-sign-on-(sso)-%2F-openid)"},"oAuth (Single Sign-On (SSO) / OpenID)")]),e("li",null,[e("a",{href:"#file-storage"},"File Storage")]),e("li",null,[e("a",{href:"#rate-limiting"},"Rate Limiting")]),e("li",null,[e("a",{href:"#file-based-configuration"},"File-Based Configuration")])])])],-1),_=e("h2",{id:"cache"},[o("Cache "),e("a",{class:"header-anchor",href:"#cache"},"#")],-1),p=e("p",null,"Directus has a built-in way to do data-caching. Enabling this will cache the output of the request (based on the current user and exact query parameters used) into to configured cache storage location. This will drastically improve API performance, as subsequent requests are served straight from this cache. Enabling cache will also make Directus return accurate cache-control headers. Depending on your setup, this will further improve performance by caching the request in middleman servers (like CDNs) and even the browser.",-1),f=e("p",null,[o("You can enable the data-cache with the "),e("code",null,"CACHE_ENABLED"),o(" environment variable.")],-1),g=e("h3",{id:"cache-store"},[o("Cache Store "),e("a",{class:"header-anchor",href:"#cache-store"},"#")],-1),m=e("p",null,[o("In bigger projects, you most likely don\u2019t want to rely on local memory to keep the caches. Instead, you can use the "),e("code",null,"CACHE_STORE"),o(" environment variable to tell Directus to use either "),e("code",null,"memcache"),o(" or "),e("code",null,"redis"),o(" to store the caches.")],-1),T=e("pre",null,[e("code",null,`CACHE_ENABLED="true"
|
|
2
|
-
|
|
3
|
-
CACHE_STORE="redis"
|
|
4
|
-
CACHE_REDIS="redis://@127.0.0.1"
|
|
5
|
-
`)],-1),E=e("h3",{id:"auto-purging"},[o("Auto-Purging "),e("a",{class:"header-anchor",href:"#auto-purging"},"#")],-1),A=e("p",null,"Directus can automatically clear the caches whenever a create/update/delete action is performed. This allows you to keep the Directus API real-time, while still getting the performance benefits on quick subsequent reads.",-1),O=e("pre",null,[e("code",null,`CACHE_AUTO_PURGE="true"
|
|
6
|
-
`)],-1),S=e("h3",{id:"ttl"},[o("TTL "),e("a",{class:"header-anchor",href:"#ttl"},"#")],-1),R=e("p",null,[o("Based on your project\u2019s needs, you might be able to aggressively cache your data, only requiring new data to be fetched every hour or so. This allows you to squeeze the most performance out of your Directus instance. This can be incredibly useful for applications where you have a lot of (public) read-access and where updates aren\u2019t real-time (for example a website). "),e("code",null,"CACHE_TTL"),o(" uses "),e("a",{href:"https://www.npmjs.com/package/ms",target:"_blank",rel:"noopener noreferrer"},[e("code",null,"ms")]),o(" to parse the value, so you configure it using human readable values (like "),e("code",null,"2 days"),o(", "),e("code",null,"7 hrs"),o(", "),e("code",null,"5m"),o(").")],-1),y=e("pre",null,[e("code",null,`CACHE_TTL="1h"
|
|
7
|
-
`)],-1),b=e("h3",{id:"assets"},[o("Assets "),e("a",{class:"header-anchor",href:"#assets"},"#")],-1),v=e("p",null,"The cache-control header for the /assets endpoint is separate from the regular data-cache. This is useful as it\u2019s often possible to cache assets for way longer than you would with the actual content.",-1),C=e("pre",null,[e("code",null,`ASSETS_CACHE_TTL="7d"
|
|
8
|
-
`)],-1),I=e("h2",{id:"oauth-(single-sign-on-(sso)-%2F-openid)"},[o("oAuth (Single Sign-On (SSO) / OpenID) "),e("a",{class:"header-anchor",href:"#oauth-(single-sign-on-(sso)-%2F-openid)"},"#")],-1),w=e("p",null,"Directus\u2019 oAuth integration provides a powerful alternative way to authenticate into your project. Directus will ask you to login on the external service, and if your user exists in Directus, you\u2019ll be logged in automatically.",-1),L=e("p",null,[o("Directus relies on "),e("a",{href:"https://www.npmjs.com/package/grant",target:"_blank",rel:"noopener noreferrer"},[e("code",null,"grant")]),o(" for the handling of the oAuth flow. This means that there\u2019s hundreds of services that are supported out of the box. For example, enabling logging in through GitHub is as easy as creating an "),e("a",{href:"https://github.com/settings/developers",target:"_blank",rel:"noopener noreferrer"},"oAuth app in GitHub"),o(" and adding the following to Directus:")],-1),D=e("pre",null,[e("code",null,`OAUTH_PROVIDERS="github"
|
|
9
|
-
OAUTH_GITHUB_KEY="99d3...c3c4"
|
|
10
|
-
OAUTH_GITHUB_SECRET="34ae...f963"
|
|
11
|
-
`)],-1),k=e("div",{class:"warning hint"},[e("div",{class:"hint-title"},"PUBLIC_URL"),e("p",null,[o("The oAuth flow relies on the "),e("code",null,"PUBLIC_URL"),o(" variable for it\u2019s redirecting. Make sure that variable is configured correctly.")])],-1),U=e("h4",{id:"multiple-providers"},[o("Multiple Providers "),e("a",{class:"header-anchor",href:"#multiple-providers"},"#")],-1),G=e("p",null,[e("code",null,"OAUTH_PROVIDERS"),o(" accepts a CSV of providers, allowing you to specify multiple at the same time:")],-1),H=e("pre",null,[e("code",null,`OAUTH_PROVIDERS ="google,microsoft"
|
|
12
|
-
|
|
13
|
-
OAUTH_GOOGLE_KEY = "<google_application_id>"
|
|
14
|
-
OAUTH_GOOGLE_SECRET= "<google_application_secret_key>"
|
|
15
|
-
OAUTH_GOOGLE_SCOPE="openid email"
|
|
16
|
-
|
|
17
|
-
OAUTH_MICROSOFT_KEY = "<microsoft_application_id>"
|
|
18
|
-
OAUTH_MICROSOFT_SECRET = "<microsoft_application_secret_key>"
|
|
19
|
-
OAUTH_MICROSOFT_SCOPE = "openid email"
|
|
20
|
-
OAUTH_MICROSOFT_AUTHORIZE_URL = "https://login.microsoftonline.com/<microsoft_application_id>/oauth2/v2.0/authorize"
|
|
21
|
-
OAUTH_MICROSOFT_ACCESS_URL = "https://login.microsoftonline.com/<microsoft_application_id>/oauth2/v2.0/token"
|
|
22
|
-
|
|
23
|
-
PUBLIC_URL = "<public_url_of_directus_instance>"
|
|
24
|
-
`)],-1),P=e("h3",{id:"provider-specific-configuration"},[o("Provider Specific Configuration "),e("a",{class:"header-anchor",href:"#provider-specific-configuration"},"#")],-1),B=e("p",null,[o("If you use one of the many supported providers, you often don\u2019t have to configure any more than just the key and secret for the service. That being said, if you use a more tailored service (like the specific Microsoft application in the example above), you might have to provide more configuration values yourself. Please see "),e("a",{href:"https://github.com/simov/grant#configuration-description",target:"_blank",rel:"noopener noreferrer"},"https://github.com/simov/grant#configuration-description"),o(" for a list of all available configuration flags.")],-1),M=e("h2",{id:"file-storage"},[o("File Storage "),e("a",{class:"header-anchor",href:"#file-storage"},"#")],-1),N=e("p",null,"By default, Directus stores every file you upload locally on disk. Instead of local file storage, you can configure Directus to use S3 or Google Cloud Storage instead:",-1),F=e("pre",null,[e("code",null,`STORAGE_LOCATIONS="aws"
|
|
25
|
-
|
|
26
|
-
STORAGE_AWS_DRIVER="s3"
|
|
27
|
-
STORAGE_AWS_KEY="tp15c...510vk"
|
|
28
|
-
STORAGE_AWS_SECRET="yk29b...b932n"
|
|
29
|
-
STORAGE_AWS_REGION="us-east-2"
|
|
30
|
-
STORAGE_AWS_BUCKET="my-files"
|
|
31
|
-
`)],-1),x=e("h3",{id:"multiple-storage-adapters"},[o("Multiple Storage Adapters "),e("a",{class:"header-anchor",href:"#multiple-storage-adapters"},"#")],-1),q=e("p",null,"You can configure multiple storage adapters at the same time. This allows you to choose where files are being uploaded on a file-by-file basis. To do this, you can provide a CSV of storage location names, and provide a config block for each of them:",-1),W=e("pre",null,[e("code",null,`STORAGE_LOCATIONS="local,aws"
|
|
32
|
-
|
|
33
|
-
STORAGE_LOCAL_DRIVER="local"
|
|
34
|
-
STORAGE_LOCAL_ROOT="local"
|
|
35
|
-
|
|
36
|
-
STORAGE_AWS_KEY="tp15c...510vk"
|
|
37
|
-
STORAGE_AWS_SECRET="yk29b...b932n"
|
|
38
|
-
STORAGE_AWS_REGION="us-east-2"
|
|
39
|
-
STORAGE_AWS_BUCKET="my-files"
|
|
40
|
-
`)],-1),V=e("p",null,[o("In the Admin App, files will automatically be uploaded to the first configured storage location (in this case "),e("code",null,"local"),o("). The used storage location is saved under "),e("code",null,"storage"),o(" in "),e("code",null,"directus_files"),o(".")],-1),Y=e("h2",{id:"rate-limiting"},[o("Rate Limiting "),e("a",{class:"header-anchor",href:"#rate-limiting"},"#")],-1),j=e("p",null,"You can use the built-in rate-limiter to prevent users from hitting the API too much. To enable the rate-limiter, simply set",-1),K=e("pre",null,[e("code",null,`RATE_LIMITER_ENABLED="true"
|
|
41
|
-
`)],-1),z=e("p",null,"This will kick-in the rate-limiter on a maximum of 50 requests a second. You can configure this using:",-1),Z=e("pre",null,[e("code",null,`// 10 requests per 5 seconds
|
|
42
|
-
|
|
43
|
-
RATE_LIMITER_POINTS="10"
|
|
44
|
-
RATE_LIMITER_DURATION="5"
|
|
45
|
-
`)],-1),J=e("p",null,[o("Once you have multiple copies of Directus running under a load-balancer, or your user base grows so much that memory is no longer a viable place to store the rate limiter information, you can use an external "),e("code",null,"memcache"),o(" or "),e("code",null,"redis"),o(" instance to store the rate limiter data:")],-1),Q=e("pre",null,[e("code",null,`RATE_LIMITER_ENABLED="true"
|
|
46
|
-
|
|
47
|
-
RATE_LIMITER_POINTS="10"
|
|
48
|
-
RATE_LIMITER_DURATION="5"
|
|
49
|
-
|
|
50
|
-
RATE_LIMITER_STORE="redis"
|
|
51
|
-
|
|
52
|
-
RATE_LIMITER_REDIS="redis://@127.0.0.1"
|
|
53
|
-
`)],-1),X=e("h2",{id:"file-based-configuration"},[o("File-Based Configuration "),e("a",{class:"header-anchor",href:"#file-based-configuration"},"#")],-1),$=o("In case you prefer using a configuration file instead of environment variables, you can use the "),ee=e("code",null,"CONFIG_PATH",-1),oe=o(" environment variable to instruct Directus to use a local configuration file instead of environment variables. See "),te=o("Config Files"),ne=o(" for more information."),le={setup(ie,{expose:s}){const t={title:"Configuring the API",modularExtension:!1};return s({frontmatter:t}),(se,ae)=>{const a=n("router-link"),r=n("DocsWrapper");return l(),c(r,{frontmatter:t},{default:i(()=>[e("div",h,[d,_,p,f,g,m,T,E,A,O,S,R,y,b,v,C,I,w,L,D,k,U,G,H,P,B,M,N,F,x,q,W,V,Y,j,K,z,Z,J,Q,X,e("p",null,[$,ee,oe,u(a,{to:"/docs/reference/config-files.md"},{default:i(()=>[te]),_:1}),ne])])]),_:1})}}};export{le as default};
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import{r,p as h,q as d,w as t,B as e,t as n,P as s}from"./vendor.62143b15.js";const c={class:"markdown-body"},u={class:"two-up"},p={class:"left"},_=s("By default, all data in the system is off limits for unauthenticated users. To gain access to protected data, you must include an access token with every request, or "),g=s("configure permissions for the public role"),f=s("."),v=e("div",{class:"right"},[e("p",null,[e("div",{class:"table-of-contents"},[e("ul",null,[e("li",null,[e("a",{href:"#login"},"Login")]),e("li",null,[e("a",{href:"#refresh"},"Refresh")]),e("li",null,[e("a",{href:"#logout"},"Logout")]),e("li",null,[e("a",{href:"#request-password-reset"},"Request Password Reset")]),e("li",null,[e("a",{href:"#reset-a-password"},"Reset a Password")]),e("li",null,[e("a",{href:"#list-oauth-providers"},"List oAuth providers")]),e("li",null,[e("a",{href:"#login-using-oauth-provider"},"Login using oAuth provider")])])])])],-1),m=e("hr",null,null,-1),w=e("h2",{id:"login"},[s("Login "),e("a",{class:"header-anchor",href:"#login"},"#")],-1),b=e("p",null,"Retrieve a temporary access token and refresh token.",-1),k={class:"two-up"},q={class:"left"},y=e("h3",{id:"request-body"},[s("Request Body "),e("a",{class:"header-anchor",href:"#request-body"},"#")],-1),j=e("div",{class:"definitions"},[e("p",null,[e("code",null,"email"),s(),e("strong",null,"Required"),e("br"),s(" Email address of the user you\u2019re retrieving the access token for.")]),e("p",null,[e("code",null,"password"),s(),e("strong",null,"Required"),e("br"),s(" Password of the user.")]),e("p",null,[e("code",null,"otp"),e("br"),s(" The user\u2019s one-time-password (if MFA is enabled).")]),e("p",null,[e("code",null,"mode"),e("br"),s(" Whether to retrieve the refresh token in the JSON response, or in a "),e("code",null,"httpOnly"),s(),e("code",null,"secure"),s(" cookie. One of "),e("code",null,"json"),s(", "),e("code",null,"cookie"),s(". Defaults to "),e("code",null,"json"),s(".")])],-1),T=e("h3",{id:"response-attributes"},[s("Response Attributes "),e("a",{class:"header-anchor",href:"#response-attributes"},"#")],-1),R=e("div",{class:"definitions"},[e("p",null,[e("code",null,"access_token"),s(),e("strong",null,"string"),e("br"),s(" Temporary access token to be used in follow-up requests.")]),e("p",null,[e("code",null,"expires"),s(),e("strong",null,"integer"),e("br"),s(" How long before the access token will expire. Value is in milliseconds.")]),e("p",null,[e("code",null,"refresh_token"),s(),e("strong",null,"string"),e("br"),s(" The token that can be used to retrieve a new access token through "),e("a",{href:"#refresh"},[e("code",null,"/auth/refresh")]),s(". Note: if you used "),e("code",null,"cookie"),s(" as the mode in the request, the refresh token won\u2019t be returned in the JSON.")])],-1),P={class:"tip hint"},S=e("div",{class:"hint-title"},"Expiry time",-1),A=s("The token\u2019s expiration time can be configured through "),O=s("the "),L=e("code",null,"ACCESS_TOKEN_TTL",-1),x=s(" environment variable"),E=s("."),B=e("div",{class:"right"},[e("h3",{id:"rest-api"},[s("REST API "),e("a",{class:"header-anchor",href:"#rest-api"},"#")]),e("pre",null,[e("code",null,`POST /auth/login
|
|
2
|
-
`)]),e("pre",null,[e("code",{class:"language-json"},[s(`{
|
|
3
|
-
`),e("span",{class:"hljs-attr"},'"email"'),s(": "),e("span",{class:"hljs-string"},'"admin@example.com"'),s(`,
|
|
4
|
-
`),e("span",{class:"hljs-attr"},'"password"'),s(": "),e("span",{class:"hljs-string"},'"d1r3ct5us"'),s(`
|
|
5
|
-
}
|
|
6
|
-
`)])]),e("h3",{id:"graphql"},[s("GraphQL "),e("a",{class:"header-anchor",href:"#graphql"},"#")]),e("pre",null,[e("code",null,`POST /graphql/system
|
|
7
|
-
`)]),e("pre",null,[e("code",{class:"language-graphql"},[e("span",{class:"hljs-keyword"},"mutation"),s(` {
|
|
8
|
-
auth_login(email: `),e("span",{class:"hljs-string"},'"admin@example.com"'),s(", password: "),e("span",{class:"hljs-string"},'"d1r3ctu5"'),s(`) {
|
|
9
|
-
access_token
|
|
10
|
-
refresh_token
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
`)])])],-1),N=e("hr",null,null,-1),G=e("h2",{id:"refresh"},[s("Refresh "),e("a",{class:"header-anchor",href:"#refresh"},"#")],-1),I=e("p",null,"Retrieve a new access token using a refresh token.",-1),C=e("div",{class:"two-up"},[e("div",{class:"left"},[e("h3",{id:"request-body-2"},[s("Request Body "),e("a",{class:"header-anchor",href:"#request-body-2"},"#")]),e("div",{class:"definitions"},[e("p",null,[e("code",null,"refresh_token"),e("br"),s(" The refresh token to use. If you have the refresh token in a cookie through "),e("a",{href:"#login"},[e("code",null,"/auth/login")]),s(", you don\u2019t have to submit it here.")])]),e("h3",{id:"response-attributes-2"},[s("Response Attributes "),e("a",{class:"header-anchor",href:"#response-attributes-2"},"#")]),e("div",{class:"definitions"},[e("p",null,[e("code",null,"access_token"),s(),e("strong",null,"string"),e("br"),s(" Temporary access token to be used in follow-up requests.")]),e("p",null,[e("code",null,"expires"),s(),e("strong",null,"integer"),e("br"),s(" How long before the access token will expire. Value is in milliseconds.")]),e("p",null,[e("code",null,"refresh_token"),s(),e("strong",null,"string"),e("br"),s(" The token that can be used to retrieve a new access token through "),e("a",{href:"#refresh"},[e("code",null,"/auth/refresh")]),s(". Note: if you used "),e("code",null,"cookie"),s(" as the mode in the request, the refresh token won\u2019t be returned in the JSON.")])])]),e("div",{class:"right"},[e("h3",{id:"rest-api-2"},[s("REST API "),e("a",{class:"header-anchor",href:"#rest-api-2"},"#")]),e("pre",null,[e("code",null,`POST /auth/refresh
|
|
14
|
-
`)]),e("pre",null,[e("code",{class:"language-json"},[s(`{
|
|
15
|
-
`),e("span",{class:"hljs-attr"},'"refresh_token"'),s(": "),e("span",{class:"hljs-string"},'"gmPd...8wuB"'),s(`
|
|
16
|
-
}
|
|
17
|
-
`)])]),e("h3",{id:"graphql-2"},[s("GraphQL "),e("a",{class:"header-anchor",href:"#graphql-2"},"#")]),e("pre",null,[e("code",null,`POST /graphql/system
|
|
18
|
-
`)]),e("pre",null,[e("code",{class:"language-graphql"},[e("span",{class:"hljs-keyword"},"mutation"),s(` {
|
|
19
|
-
auth_refresh(refresh_token: `),e("span",{class:"hljs-string"},'"abc...def"'),s(`) {
|
|
20
|
-
access_token
|
|
21
|
-
refresh_token
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
`)])])])],-1),W=e("hr",null,null,-1),J=e("h2",{id:"logout"},[s("Logout "),e("a",{class:"header-anchor",href:"#logout"},"#")],-1),Q=e("p",null,"Invalidate the refresh token thus destroying the user\u2019s session.",-1),V=e("div",{class:"two-up"},[e("div",{class:"left"},[e("h3",{id:"request-body-3"},[s("Request Body "),e("a",{class:"header-anchor",href:"#request-body-3"},"#")]),e("div",{class:"definitions"},[e("p",null,[e("code",null,"refresh_token"),e("br"),s(" The refresh token to invalidate. If you have the refresh token in a cookie through "),e("a",{href:"#login"},[e("code",null,"/auth/login")]),s(", you don\u2019t have to submit it here.")])])]),e("div",{class:"right"},[e("h3",{id:"rest-api-3"},[s("REST API "),e("a",{class:"header-anchor",href:"#rest-api-3"},"#")]),e("pre",null,[e("code",null,`POST /auth/logout
|
|
25
|
-
`)]),e("pre",null,[e("code",{class:"language-json"},[s(`{
|
|
26
|
-
`),e("span",{class:"hljs-attr"},'"refresh_token"'),s(": "),e("span",{class:"hljs-string"},'"gmPd...8wuB"'),s(`
|
|
27
|
-
}
|
|
28
|
-
`)])]),e("h3",{id:"graphql-3"},[s("GraphQL "),e("a",{class:"header-anchor",href:"#graphql-3"},"#")]),e("pre",null,[e("code",null,`POST /graphql/system
|
|
29
|
-
`)]),e("pre",null,[e("code",{class:"language-graphql"},[e("span",{class:"hljs-keyword"},"mutation"),s(` {
|
|
30
|
-
auth_logout(refresh_token: `),e("span",{class:"hljs-string"},'"gmPd...8wuB"'),s(`)
|
|
31
|
-
}
|
|
32
|
-
`)])])])],-1),D=e("hr",null,null,-1),H=e("h2",{id:"request-password-reset"},[s("Request Password Reset "),e("a",{class:"header-anchor",href:"#request-password-reset"},"#")],-1),K=e("p",null,"Request a password reset email to be sent to the given user.",-1),U={class:"two-up"},F={class:"left"},M=e("h3",{id:"request-body-4"},[s("Request Body "),e("a",{class:"header-anchor",href:"#request-body-4"},"#")],-1),Y={class:"definitions"},z=e("p",null,[e("code",null,"email"),s(),e("strong",null,"Required"),e("br"),s(" Email address of the user you\u2019re requesting a password reset for.")],-1),X=e("code",null,"reset_url",-1),Z=e("br",null,null,-1),$=s(" Provide a custom reset url which the link in the email will lead to. The reset token will be passed as a parameter."),ee=e("br",null,null,-1),se=e("strong",null,"Note",-1),te=s(": You need to configure the "),oe=e("code",null,"PASSWORD_RESET_URL_ALLOW_LIST",-1),ne=s(" environment variable"),le=s(" to enable this feature."),re=e("div",{class:"right"},[e("h3",{id:"rest-api-4"},[s("REST API "),e("a",{class:"header-anchor",href:"#rest-api-4"},"#")]),e("pre",null,[e("code",null,`POST /auth/password/request
|
|
33
|
-
`)]),e("pre",null,[e("code",{class:"language-json"},[s(`{
|
|
34
|
-
`),e("span",{class:"hljs-attr"},'"email"'),s(": "),e("span",{class:"hljs-string"},'"admin@example.com"'),s(`
|
|
35
|
-
}
|
|
36
|
-
`)])]),e("h3",{id:"graphql-4"},[s("GraphQL "),e("a",{class:"header-anchor",href:"#graphql-4"},"#")]),e("pre",null,[e("code",null,`POST /graphql/system
|
|
37
|
-
`)]),e("pre",null,[e("code",{class:"language-graphql"},[e("span",{class:"hljs-keyword"},"mutation"),s(` {
|
|
38
|
-
auth_password_request(email: `),e("span",{class:"hljs-string"},'"admin@example.com"'),s(`)
|
|
39
|
-
}
|
|
40
|
-
`)])])],-1),ae=e("hr",null,null,-1),ie=e("h2",{id:"reset-a-password"},[s("Reset a Password "),e("a",{class:"header-anchor",href:"#reset-a-password"},"#")],-1),he=e("p",null,"The request a password reset endpoint sends an email with a link to the admin app (or a custom route) which in turn uses this endpoint to allow the user to reset their password.",-1),de=e("div",{class:"two-up"},[e("div",{class:"left"},[e("h3",{id:"request-body-5"},[s("Request Body "),e("a",{class:"header-anchor",href:"#request-body-5"},"#")]),e("div",{class:"definitions"},[e("p",null,[e("code",null,"token"),s(),e("strong",null,"Required"),e("br"),s(" Password reset token, as provided in the email sent by the request endpoint.")]),e("p",null,[e("code",null,"password"),s(),e("strong",null,"Required"),e("br"),s(" New password for the user.")])])]),e("div",{class:"right"},[e("h3",{id:"rest-api-5"},[s("REST API "),e("a",{class:"header-anchor",href:"#rest-api-5"},"#")]),e("pre",null,[e("code",null,`POST /auth/password/reset
|
|
41
|
-
`)]),e("pre",null,[e("code",{class:"language-json"},[s(`{
|
|
42
|
-
`),e("span",{class:"hljs-attr"},'"token"'),s(": "),e("span",{class:"hljs-string"},'"eyJh...KmUk"'),s(`,
|
|
43
|
-
`),e("span",{class:"hljs-attr"},'"password"'),s(": "),e("span",{class:"hljs-string"},'"d1r3ctu5"'),s(`
|
|
44
|
-
}
|
|
45
|
-
`)])]),e("h3",{id:"graphql-5"},[s("GraphQL "),e("a",{class:"header-anchor",href:"#graphql-5"},"#")]),e("pre",null,[e("code",null,`POST /graphql/system
|
|
46
|
-
`)]),e("pre",null,[e("code",{class:"language-graphql"},[e("span",{class:"hljs-keyword"},"mutation"),s(` {
|
|
47
|
-
auth_password_reset(token: `),e("span",{class:"hljs-string"},'"eyJh...KmUk"'),s(", password: "),e("span",{class:"hljs-string"},'"d1r3ctu5"'),s(`)
|
|
48
|
-
}
|
|
49
|
-
`)])])])],-1),ce=e("hr",null,null,-1),ue=e("h2",{id:"list-oauth-providers"},[s("List oAuth providers "),e("a",{class:"header-anchor",href:"#list-oauth-providers"},"#")],-1),pe=e("p",null,"List all the configured oAuth providers.",-1),_e={class:"two-up"},ge={class:"left"},fe={class:"tip hint"},ve=e("div",{class:"hint-title"},"Configuring oAuth",-1),me=s("To learn more about setting up oAuth providers, see "),we=s("Configuring SSO through oAuth"),be=s("."),ke=e("h3",{id:"response-attributes-3"},[s("Response Attributes "),e("a",{class:"header-anchor",href:"#response-attributes-3"},"#")],-1),qe=e("div",{class:"definitions"},[e("p",null,[e("code",null,"data"),s(),e("strong",null,"Array"),e("br"),s(" Array of configured oAuth providers.")])],-1),ye=e("div",{class:"right"},[e("pre",null,[e("code",null,`GET /auth/oauth
|
|
50
|
-
`)]),e("pre",null,[e("code",{class:"language-json"},[s(`{
|
|
51
|
-
`),e("span",{class:"hljs-attr"},'"data"'),s(": ["),e("span",{class:"hljs-string"},'"GitHub"'),s(", "),e("span",{class:"hljs-string"},'"Google"'),s(", "),e("span",{class:"hljs-string"},'"Okta"'),s(`]
|
|
52
|
-
}
|
|
53
|
-
`)])])],-1),je=e("hr",null,null,-1),Te=e("h2",{id:"login-using-oauth-provider"},[s("Login using oAuth provider "),e("a",{class:"header-anchor",href:"#login-using-oauth-provider"},"#")],-1),Re=e("p",null,"Will redirect to the configured oAuth provider for the user to login.",-1),Pe=e("div",{class:"two-up"},[e("div",{class:"right"},[e("pre",null,[e("code",null,`GET /auth/oauth/:provider
|
|
54
|
-
`)])])],-1),Se=e("hr",null,null,-1),Ee={setup(Ae,{expose:a}){const l={title:"Authentication",modularExtension:!1,pageClass:"page-reference"};return a({frontmatter:l}),(Oe,Le)=>{const o=r("router-link"),i=r("DocsWrapper");return h(),d(i,{frontmatter:l},{default:t(()=>[e("div",c,[e("div",u,[e("div",p,[e("blockquote",null,[e("p",null,[_,n(o,{to:"/docs/guides/roles-and-permissions"},{default:t(()=>[g]),_:1}),f])])]),v]),m,w,b,e("div",k,[e("div",q,[y,j,T,R,e("div",P,[S,e("p",null,[A,n(o,{to:"/docs/reference/environment-variables"},{default:t(()=>[O,L,x]),_:1}),E])])]),B]),N,G,I,C,W,J,Q,V,D,H,K,e("div",U,[e("div",F,[M,e("div",Y,[z,e("p",null,[X,Z,$,ee,se,te,n(o,{to:"/docs/reference/environment-variables/#security"},{default:t(()=>[oe,ne]),_:1}),le])])]),re]),ae,ie,he,de,ce,ue,pe,e("div",_e,[e("div",ge,[e("div",fe,[ve,e("p",null,[me,n(o,{to:"/docs/guides/api-config/#oauth-single-sign-on-sso-openid"},{default:t(()=>[we]),_:1}),be])]),ke,qe]),ye]),je,Te,Re,Pe,Se])]),_:1})}}};export{Ee as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
function a(t,n){return n.forEach(function(r){Object.keys(r).forEach(function(e){if(e!=="default"&&!(e in t)){var o=Object.getOwnPropertyDescriptor(r,e);Object.defineProperty(t,e,o.get?o:{enumerable:!0,get:function(){return r[e]}})}})}),Object.freeze(t)}var u={};Object.defineProperty(u,"__esModule",{value:!0});var c={code:"en-au",week:{dow:1,doy:4}},f=u.default=c,l=Object.freeze(a({__proto__:null,[Symbol.toStringTag]:"Module",default:f},[u]));export{l as e};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
function u(t,a){return a.forEach(function(r){Object.keys(r).forEach(function(e){if(e!=="default"&&!(e in t)){var n=Object.getOwnPropertyDescriptor(r,e);Object.defineProperty(t,e,n.get?n:{enumerable:!0,get:function(){return r[e]}})}})}),Object.freeze(t)}var o={};Object.defineProperty(o,"__esModule",{value:!0});var c={code:"en-gb",week:{dow:1,doy:4}},f=o.default=c,b=Object.freeze(u({__proto__:null,[Symbol.toStringTag]:"Module",default:f},[o]));export{b as e};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
function u(t,a){return a.forEach(function(r){Object.keys(r).forEach(function(e){if(e!=="default"&&!(e in t)){var o=Object.getOwnPropertyDescriptor(r,e);Object.defineProperty(t,e,o.get?o:{enumerable:!0,get:function(){return r[e]}})}})}),Object.freeze(t)}var n={};Object.defineProperty(n,"__esModule",{value:!0});var c={code:"en-nz",week:{dow:1,doy:4}},f=n.default=c,l=Object.freeze(u({__proto__:null,[Symbol.toStringTag]:"Module",default:f},[n]));export{l as e};
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import{r as d,p as r,q as i,w as n,B as l,t as o,P as e}from"./vendor.62143b15.js";const c={class:"markdown-body"},h=l("blockquote",null,[l("p",null,[e("Environment variables are used for all configuration within Directus projects. They can either be defined as plain environment variables or via the "),l("code",null,".env"),e(" file in the root directory, which is created during the installation process.")])],-1),_=l("p",null,[l("div",{class:"table-of-contents"},[l("ul",null,[l("li",null,[l("a",{href:"#general"},"General")]),l("li",null,[l("a",{href:"#database"},"Database")]),l("li",null,[l("a",{href:"#security"},"Security")]),l("li",null,[l("a",{href:"#cors"},"CORS")]),l("li",null,[l("a",{href:"#rate-limiting"},"Rate Limiting")]),l("li",null,[l("a",{href:"#cache"},"Cache")]),l("li",null,[l("a",{href:"#sessions"},"Sessions")]),l("li",null,[l("a",{href:"#file-storage"},"File Storage")]),l("li",null,[l("a",{href:"#assets"},"Assets")]),l("li",null,[l("a",{href:"#oauth"},"OAuth")]),l("li",null,[l("a",{href:"#extensions"},"Extensions")]),l("li",null,[l("a",{href:"#email"},"Email")]),l("li",null,[l("a",{href:"#admin-account"},"Admin Account")]),l("li",null,[l("a",{href:"#telemetry"},"Telemetry")]),l("li",null,[l("a",{href:"#type-casting-and-nesting"},"Type Casting and Nesting")]),l("li",null,[l("a",{href:"#environment-syntax-prefix"},"Environment Syntax Prefix")]),l("li",null,[l("a",{href:"#file-based-environment-variables-(docker-secrets)"},"File Based Environment Variables (Docker Secrets)")])])])],-1),f=l("h2",{id:"general"},[e("General "),l("a",{class:"header-anchor",href:"#general"},"#")],-1),m=l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])],-1),p=l("td",null,[l("code",null,"CONFIG_PATH")],-1),E=e("Where your config file is located. See "),g=e("Config Files"),A=l("td",null,[l("code",null,".env")],-1),b=l("tr",null,[l("td",null,[l("code",null,"PORT")]),l("td",null,"What port to run the API under."),l("td",null,[l("code",null,"8055")])],-1),S=l("tr",null,[l("td",null,[l("code",null,"PUBLIC_URL"),l("sup",null,"[1]")]),l("td",null,"URL where your API can be reached on the web."),l("td",null,[l("code",null,"/")])],-1),y=l("tr",null,[l("td",null,[l("code",null,"LOG_LEVEL")]),l("td",null,[e("What level of detail to log. One of "),l("code",null,"fatal"),e(", "),l("code",null,"error"),e(", "),l("code",null,"warn"),e(", "),l("code",null,"info"),e(", "),l("code",null,"debug"),e(", "),l("code",null,"trace"),e(" or "),l("code",null,"silent"),e(".")]),l("td",null,[l("code",null,"info")])],-1),T=l("tr",null,[l("td",null,[l("code",null,"LOG_STYLE")]),l("td",null,[e("Render the logs human readable (pretty) or as JSON. One of "),l("code",null,"pretty"),e(", "),l("code",null,"raw"),e(".")]),l("td",null,[l("code",null,"pretty")])],-1),O=l("tr",null,[l("td",null,[l("code",null,"MAX_PAYLOAD_SIZE")]),l("td",null,"Controls the maximum request body size. Accepts number of bytes, or human readable string."),l("td",null,[l("code",null,"100kb")])],-1),R=l("tr",null,[l("td",null,[l("code",null,"ROOT_REDIRECT")]),l("td",null,[e("Where to redirect to when navigating to "),l("code",null,"/"),e(". Accepts a relative path, absolute URL, or "),l("code",null,"false"),e(" to disable.")]),l("td",null,[l("code",null,"./admin")])],-1),D=l("tr",null,[l("td",null,[l("code",null,"SERVE_APP")]),l("td",null,[e("Whether or not to serve the Admin App under "),l("code",null,"/admin"),e(".")]),l("td",null,[l("code",null,"true")])],-1),I=l("p",null,[l("sup",null,"[1]"),e(" The PUBLIC_URL value is used for things like oAuth redirects, forgot-password emails, and logos that needs to be publicly available on the internet.")],-1),C=l("h2",{id:"database"},[e("Database "),l("a",{class:"header-anchor",href:"#database"},"#")],-1),v=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"DB_CLIENT")]),l("td",null,[l("strong",null,"Required"),e(". What database client to use. One of "),l("code",null,"pg"),e(" or "),l("code",null,"postgres"),e(", "),l("code",null,"mysql"),e(", "),l("code",null,"oracledb"),e(", "),l("code",null,"mssql"),e(", or "),l("code",null,"sqlite3"),e(".")]),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"DB_HOST")]),l("td",null,[e("Database host. "),l("strong",null,"Required"),e(" when using "),l("code",null,"pg"),e(", "),l("code",null,"mysql"),e(", "),l("code",null,"oracledb"),e(", or "),l("code",null,"mssql"),e(".")]),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"DB_PORT")]),l("td",null,[e("Database port. "),l("strong",null,"Required"),e(" when using "),l("code",null,"pg"),e(", "),l("code",null,"mysql"),e(", "),l("code",null,"oracledb"),e(", or "),l("code",null,"mssql"),e(".")]),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"DB_DATABASE")]),l("td",null,[e("Database name. "),l("strong",null,"Required"),e(" when using "),l("code",null,"pg"),e(", "),l("code",null,"mysql"),e(", "),l("code",null,"oracledb"),e(", or "),l("code",null,"mssql"),e(".")]),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"DB_USER")]),l("td",null,[e("Database user. "),l("strong",null,"Required"),e(" when using "),l("code",null,"pg"),e(", "),l("code",null,"mysql"),e(", "),l("code",null,"oracledb"),e(", or "),l("code",null,"mssql"),e(".")]),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"DB_PASSWORD")]),l("td",null,[e("Database user\u2019s password. "),l("strong",null,"Required"),e(" when using "),l("code",null,"pg"),e(", "),l("code",null,"mysql"),e(", "),l("code",null,"oracledb"),e(", or "),l("code",null,"mssql"),e(".")]),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"DB_FILENAME")]),l("td",null,[e("Where to read/write the SQLite database. "),l("strong",null,"Required"),e(" when using "),l("code",null,"sqlite3"),e(".")]),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"DB_CONNECTION_STRING")]),l("td",null,[e("When using "),l("code",null,"pg"),e(", you can submit a connection string instead of individual properties. Using this will ignore any of the other connection settings.")]),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"DB_POOL_*")]),l("td",null,[e("Pooling settings. Passed on to "),l("a",{href:"https://github.com/vincit/tarn.js#usage",target:"_blank",rel:"noopener noreferrer"},[e("the "),l("code",null,"tarn.js")]),e(" library.")]),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"DB_EXCLUDE_TABLES")]),l("td",null,"CSV of tables you want Directus to ignore completely"),l("td",null,[l("code",null,"spatial_ref_sys")])]),l("tr",null,[l("td",null,[l("code",null,"DB_CHARSET")]),l("td",null,"Charset/collation to use in the connection to MySQL/MariaDB"),l("td",null,[l("code",null,"UTF8_GENERAL_CI")])])])],-1),L=l("div",{class:"tip hint"},[l("div",{class:"hint-title"},"Additional Database Variables"),l("p",null,[e("All "),l("code",null,"DB_*"),e(" environment variables are passed to the "),l("code",null,"connection"),e(" configuration of a "),l("a",{href:"http://knexjs.org",target:"_blank",rel:"noopener noreferrer"},[l("code",null,"Knex"),e(" instance")]),e(". Based on your project\u2019s needs, you can extend the "),l("code",null,"DB_*"),e(" environment variables with any config you need to pass to the database instance.")])],-1),N=l("div",{class:"tip hint"},[l("div",{class:"hint-title"},"Pooling"),l("p",null,[e("All the "),l("code",null,"DB_POOL_"),e(" prefixed options are passed "),l("a",{href:"https://github.com/vincit/tarn.js#usage",target:"_blank",rel:"noopener noreferrer"},[e("to "),l("code",null,"tarn.js")]),e(" through "),l("a",{href:"http://knexjs.org/#Installation-pooling",target:"_blank",rel:"noopener noreferrer"},"Knex")])],-1),w=l("h2",{id:"security"},[e("Security "),l("a",{class:"header-anchor",href:"#security"},"#")],-1),M=l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])],-1),V=l("tr",null,[l("td",null,[l("code",null,"KEY")]),l("td",null,"Unique identifier for the project."),l("td",null,"\u2013")],-1),x=l("tr",null,[l("td",null,[l("code",null,"SECRET")]),l("td",null,"Secret string for the project."),l("td",null,"\u2013")],-1),H=l("tr",null,[l("td",null,[l("code",null,"ACCESS_TOKEN_TTL")]),l("td",null,"The duration that the access token is valid."),l("td",null,[l("code",null,"15m")])],-1),P=l("tr",null,[l("td",null,[l("code",null,"REFRESH_TOKEN_TTL")]),l("td",null,"The duration that the refresh token is valid, and also how long users stay logged-in to the App."),l("td",null,[l("code",null,"7d")])],-1),k=l("tr",null,[l("td",null,[l("code",null,"REFRESH_TOKEN_COOKIE_DOMAIN")]),l("td",null,"Which domain to use for the refresh cookie. Useful for development mode."),l("td",null,"\u2013")],-1),U=l("tr",null,[l("td",null,[l("code",null,"REFRESH_TOKEN_COOKIE_SECURE")]),l("td",null,"Whether or not to use a secure cookie for the refresh token in cookie mode."),l("td",null,[l("code",null,"false")])],-1),B=l("tr",null,[l("td",null,[l("code",null,"REFRESH_TOKEN_COOKIE_SAME_SITE")]),l("td",null,[e("Value for "),l("code",null,"sameSite"),e(" in the refresh token cookie when in cookie mode.")]),l("td",null,[l("code",null,"lax")])],-1),G=l("tr",null,[l("td",null,[l("code",null,"REFRESH_TOKEN_COOKIE_NAME")]),l("td",null,"Name of refresh token cookie ."),l("td",null,[l("code",null,"directus_refresh_token")])],-1),W=l("td",null,[l("code",null,"PASSWORD_RESET_URL_ALLOW_LIST")],-1),q=e("List of URLs that can be used "),F=e("as "),K=l("code",null,"reset_url",-1),z=e(" in /password/request"),Y=l("td",null,"\u2013",-1),j=l("td",null,[l("code",null,"USER_INVITE_URL_ALLOW_LIST")],-1),X=e("List of URLs that can be used "),$=e("as "),Z=l("code",null,"invite_url",-1),J=e(" in /users/invite"),Q=l("td",null,"\u2013",-1),ll=l("div",{class:"tip hint"},[l("div",{class:"hint-title"},"Cookie Strictness"),l("p",null,[e("Browser are pretty strict when it comes to third-party cookies. If you\u2019re running into unexpected problems when running your project and API on different domains, make sure to verify your configuration for "),l("code",null,"REFRESH_TOKEN_COOKIE_NAME"),e(", "),l("code",null,"REFRESH_TOKEN_COOKIE_SECURE"),e(" and "),l("code",null,"REFRESH_TOKEN_COOKIE_SAME_SITE"),e(".")])],-1),el=l("h3",{id:"hashing"},[e("Hashing "),l("a",{class:"header-anchor",href:"#hashing"},"#")],-1),nl=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"HASH_MEMORY_COST")]),l("td",null,"How much memory to use when generating hashes, in KiB."),l("td",null,[l("code",null,"4096"),e(" (4 MiB)")])]),l("tr",null,[l("td",null,[l("code",null,"HASH_LENGTH")]),l("td",null,"The length of the hash function output in bytes."),l("td",null,[l("code",null,"32")])]),l("tr",null,[l("td",null,[l("code",null,"HASH_TIME_COST")]),l("td",null,"The amount of passes (iterations) used by the hash function. It increases hash strength at the cost of time required to compute."),l("td",null,[l("code",null,"3")])]),l("tr",null,[l("td",null,[l("code",null,"HASH_PARALLELISM")]),l("td",null,[e("The amount of threads to compute the hash on. Each thread has a memory pool with "),l("code",null,"HASH_MEMORY_COST"),e(" size.")]),l("td",null,[l("code",null,"1"),e(" (single thread)")])]),l("tr",null,[l("td",null,[l("code",null,"HASH_TYPE")]),l("td",null,[e("The variant of the hash function ("),l("code",null,"0"),e(": argon2d, "),l("code",null,"1"),e(": argon2i, or "),l("code",null,"2"),e(": argon2id).")]),l("td",null,[l("code",null,"1"),e(" (argon2i)")])]),l("tr",null,[l("td",null,[l("code",null,"HASH_ASSOCIATED_DATA")]),l("td",null,"An extra and optional non-secret value. The value will be included B64 encoded in the parameters portion of the digest."),l("td",null,"\u2013")])])],-1),tl=l("p",null,[e("Argon2\u2019s hashing function is used by Directus for three purposes: 1) hashing user passwords, 2) generating hashes for the "),l("code",null,"Hash"),e(" field type in collections, and 3) the "),l("a",{href:"https://docs.directus.io/reference/api/system/utilities/#generate-a-hash",target:"_blank",rel:"noopener noreferrer"},"generate a hash API endpoint"),e(".")],-1),ol=l("p",null,[e("All "),l("code",null,"HASH_*"),e(" environment variable parameters are passed to the "),l("code",null,"argon2.hash"),e(" function. See the "),l("a",{href:"https://github.com/ranisalt/node-argon2/wiki/Options",target:"_blank",rel:"noopener noreferrer"},"node-argon2 library options page"),e(" for reference.")],-1),ul=l("div",{class:"tip hint"},[l("div",{class:"hint-title"},"Memory Usage"),l("p",null,[e("Modifying "),l("code",null,"HASH_MEMORY_COST"),e(" and/or "),l("code",null,"HASH_PARALLELISM"),e(" will affect the amount of memory directus uses when computing hashes; each thread gets "),l("code",null,"HASH_MEMORY_COST"),e(" amount of memory, so the total additional memory will be these two values multiplied. This may cause out of memory errors, especially when running in containerized environments.")])],-1),dl=l("h2",{id:"cors"},[e("CORS "),l("a",{class:"header-anchor",href:"#cors"},"#")],-1),al=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"CORS_ENABLED")]),l("td",null,"Whether or not to enable the CORS headers."),l("td",null,[l("code",null,"true")])]),l("tr",null,[l("td",null,[l("code",null,"CORS_ORIGIN")]),l("td",null,[e("Value for the "),l("code",null,"Access-Control-Allow-Origin"),e(" header. Use "),l("code",null,"true"),e(" to match the Origin header, or provide a domain or a CSV of domains for specific access")]),l("td",null,[l("code",null,"true")])]),l("tr",null,[l("td",null,[l("code",null,"CORS_METHODS")]),l("td",null,[e("Value for the "),l("code",null,"Access-Control-Allow-Methods"),e(" header.")]),l("td",null,[l("code",null,"GET,POST,PATCH,DELETE")])]),l("tr",null,[l("td",null,[l("code",null,"CORS_ALLOWED_HEADERS")]),l("td",null,[e("Value for the "),l("code",null,"Access-Control-Allow-Headers"),e(" header.")]),l("td",null,[l("code",null,"Content-Type,Authorization")])]),l("tr",null,[l("td",null,[l("code",null,"CORS_EXPOSED_HEADERS")]),l("td",null,[e("Value for the "),l("code",null,"Access-Control-Expose-Headers"),e(" header.")]),l("td",null,[l("code",null,"Content-Range")])]),l("tr",null,[l("td",null,[l("code",null,"CORS_CREDENTIALS")]),l("td",null,[e("Whether or not to send the "),l("code",null,"Access-Control-Allow-Credentials"),e(" header.")]),l("td",null,[l("code",null,"true")])]),l("tr",null,[l("td",null,[l("code",null,"CORS_MAX_AGE")]),l("td",null,[e("Value for the "),l("code",null,"Access-Control-Max-Age"),e(" header.")]),l("td",null,[l("code",null,"18000")])])])],-1),sl=l("h2",{id:"rate-limiting"},[e("Rate Limiting "),l("a",{class:"header-anchor",href:"#rate-limiting"},"#")],-1),rl=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"RATE_LIMITER_ENABLED")]),l("td",null,"Whether or not to enable rate limiting on the API."),l("td",null,[l("code",null,"false")])]),l("tr",null,[l("td",null,[l("code",null,"RATE_LIMITER_POINTS")]),l("td",null,"The amount of allowed hits per duration."),l("td",null,[l("code",null,"50")])]),l("tr",null,[l("td",null,[l("code",null,"RATE_LIMITER_DURATION")]),l("td",null,"The time window in seconds in which the points are counted."),l("td",null,[l("code",null,"1")])]),l("tr",null,[l("td",null,[l("code",null,"RATE_LIMITER_STORE")]),l("td",null,[e("Where to store the rate limiter counts. One of "),l("code",null,"memory"),e(", "),l("code",null,"redis"),e(", or "),l("code",null,"memcache"),e(".")]),l("td",null,[l("code",null,"memory")])])])],-1),il=l("p",null,[e("Based on the "),l("code",null,"RATE_LIMITER_STORE"),e(" used, you must also provide the following configurations:")],-1),cl=l("h3",{id:"memory"},[e("Memory "),l("a",{class:"header-anchor",href:"#memory"},"#")],-1),hl=l("p",null,"No additional configuration required.",-1),_l=l("h3",{id:"redis"},[e("Redis "),l("a",{class:"header-anchor",href:"#redis"},"#")],-1),fl=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"RATE_LIMITER_REDIS")]),l("td",null,[e("Redis connection string, eg: "),l("code",null,"redis://:authpassword@127.0.0.1:6380/4")]),l("td",null,"\u2014")])])],-1),ml=l("p",null,"Alternatively, you can provide the individual connection parameters:",-1),pl=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"RATE_LIMITER_REDIS_HOST")]),l("td",null,"Hostname of the Redis instance"),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"RATE_LIMITER_REDIS_PORT")]),l("td",null,"Port of the Redis instance"),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"RATE_LIMITER_REDIS_PASSWORD")]),l("td",null,"Password for your Redis instance"),l("td",null,"\u2013")])])],-1),El=l("h3",{id:"memcache"},[e("Memcache "),l("a",{class:"header-anchor",href:"#memcache"},"#")],-1),gl=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"RATE_LIMITER_MEMCACHE")]),l("td",null,[e("Location of your memcache instance. You can use "),l("a",{href:"#environment-syntax-prefix"},[l("code",null,"array:"),e(" syntax")]),e(", eg: "),l("code",null,"array:<instance-1>,<instance-2>"),e(" for multiple memcache instances.")]),l("td",null,"\u2014")])])],-1),Al=l("div",{class:"tip hint"},[l("div",{class:"hint-title"},"Additional Rate Limiter Variables"),l("p",null,[e("All "),l("code",null,"RATE_LIMITER_*"),e(" variables are passed directly to a "),l("code",null,"rate-limiter-flexible"),e(" instance. Depending on your project\u2019s needs, you can extend the above environment variables to configure any of "),l("a",{href:"https://github.com/animir/node-rate-limiter-flexible/wiki/Options",target:"_blank",rel:"noopener noreferrer"},[e("the "),l("code",null,"rate-limiter-flexible"),e(" options")]),e(".")])],-1),bl=l("h2",{id:"cache"},[e("Cache "),l("a",{class:"header-anchor",href:"#cache"},"#")],-1),Sl=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"CACHE_ENABLED")]),l("td",null,"Whether or not caching is enabled."),l("td",null,[l("code",null,"false")])]),l("tr",null,[l("td",null,[l("code",null,"CACHE_TTL")]),l("td",null,"How long the cache is persisted."),l("td",null,[l("code",null,"30m")])]),l("tr",null,[l("td",null,[l("code",null,"CACHE_CONTROL_S_MAXAGE")]),l("td",null,"Whether to not to add the s-maxage expiration flag. Set to a number for a custom value"),l("td",null,[l("code",null,"0")])]),l("tr",null,[l("td",null,[l("code",null,"CACHE_AUTO_PURGE")]),l("td",null,[e("Automatically purge the cache on "),l("code",null,"create"),e("/"),l("code",null,"update"),e("/"),l("code",null,"delete"),e(" actions.")]),l("td",null,[l("code",null,"false")])]),l("tr",null,[l("td",null,[l("code",null,"CACHE_SCHEMA"),e(),l("sup",null,"[1]")]),l("td",null,[e("Whether or not the database schema is cached. One of "),l("code",null,"false"),e(", "),l("code",null,"true"),e(", or a string time value")]),l("td",null,[l("code",null,"true")])]),l("tr",null,[l("td",null,[l("code",null,"CACHE_NAMESPACE")]),l("td",null,"How to scope the cache data."),l("td",null,[l("code",null,"directus-cache")])]),l("tr",null,[l("td",null,[l("code",null,"CACHE_STORE")]),l("td",null,[e("Where to store the cache data. Either "),l("code",null,"memory"),e(", "),l("code",null,"redis"),e(", or "),l("code",null,"memcache"),e(".")]),l("td",null,[l("code",null,"memory")])])])],-1),yl=l("p",null,[l("sup",null,"[1]"),e(),l("code",null,"CACHE_SCHEMA"),e(" ignores the "),l("code",null,"CACHE_ENABLED"),e(" value")],-1),Tl=l("p",null,[e("Based on the "),l("code",null,"CACHE_STORE"),e(" used, you must also provide the following configurations:")],-1),Ol=l("h3",{id:"memory-2"},[e("Memory "),l("a",{class:"header-anchor",href:"#memory-2"},"#")],-1),Rl=l("p",null,"No additional configuration required.",-1),Dl=l("h3",{id:"redis-2"},[e("Redis "),l("a",{class:"header-anchor",href:"#redis-2"},"#")],-1),Il=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"CACHE_REDIS")]),l("td",null,[e("Redis connection string, eg: "),l("code",null,"redis://:authpassword@127.0.0.1:6380/4")]),l("td",null,"\u2014")])])],-1),Cl=l("p",null,"Alternatively, you can provide the individual connection parameters:",-1),vl=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"CACHE_REDIS_HOST")]),l("td",null,"Hostname of the Redis instance"),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"CACHE_REDIS_PORT")]),l("td",null,"Port of the Redis instance"),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"CACHE_REDIS_PASSWORD")]),l("td",null,"Password for your Redis instance"),l("td",null,"\u2013")])])],-1),Ll=l("h3",{id:"memcache-2"},[e("Memcache "),l("a",{class:"header-anchor",href:"#memcache-2"},"#")],-1),Nl=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"CACHE_MEMCACHE")]),l("td",null,[e("Location of your memcache instance. You can use "),l("a",{href:"#environment-syntax-prefix"},[l("code",null,"array:"),e(" syntax")]),e(", eg: "),l("code",null,"array:<instance-1>,<instance-2>"),e(" for multiple memcache instances.")]),l("td",null,"\u2014")])])],-1),wl=l("h2",{id:"sessions"},[e("Sessions "),l("a",{class:"header-anchor",href:"#sessions"},"#")],-1),Ml=l("p",null,"Sessions are only used in the oAuth authentication flow.",-1),Vl=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"SESSION_STORE")]),l("td",null,[e("Where to store the session data. Either "),l("code",null,"memory"),e(", "),l("code",null,"redis"),e(", "),l("code",null,"memcache"),e(" or "),l("code",null,"database"),e(".")]),l("td",null,[l("code",null,"memory")])])])],-1),xl=l("p",null,[e("Based on the "),l("code",null,"SESSION_STORE"),e(" used, you must also provide the following configurations:")],-1),Hl=l("h3",{id:"memory-3"},[e("Memory "),l("a",{class:"header-anchor",href:"#memory-3"},"#")],-1),Pl=l("p",null,"No additional configuration required.",-1),kl=l("h3",{id:"redis-3"},[e("Redis "),l("a",{class:"header-anchor",href:"#redis-3"},"#")],-1),Ul=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"SESSION_REDIS")]),l("td",null,[e("Redis connection string, eg: "),l("code",null,"redis://:authpassword@127.0.0.1:6380/4")]),l("td",null,"\u2014")])])],-1),Bl=l("p",null,"Alternatively, you can provide the individual connection parameters:",-1),Gl=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"SESSION_REDIS_HOST")]),l("td",null,"Hostname of the Redis instance"),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"SESSION_REDIS_PORT")]),l("td",null,"Port of the Redis instance"),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"SESSION_REDIS_PASSWORD")]),l("td",null,"Password for your Redis instance"),l("td",null,"\u2013")])])],-1),Wl=l("h3",{id:"memcache-3"},[e("Memcache "),l("a",{class:"header-anchor",href:"#memcache-3"},"#")],-1),ql=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"SESSION_MEMCACHE_HOSTS")]),l("td",null,[e("Location of your memcache instance. You can use "),l("a",{href:"#environment-syntax-prefix"},[l("code",null,"array:"),e(" syntax")]),e(", eg: "),l("code",null,"array:<instance-1>,<instance-2>"),e(" for multiple memcache instances.")]),l("td",null,"\u2014")])])],-1),Fl=l("h3",{id:"database-2"},[e("Database "),l("a",{class:"header-anchor",href:"#database-2"},"#")],-1),Kl=l("p",null,"No additional configuration required.",-1),zl=l("h2",{id:"file-storage"},[e("File Storage "),l("a",{class:"header-anchor",href:"#file-storage"},"#")],-1),Yl=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"STORAGE_LOCATIONS")]),l("td",null,[e("A CSV of storage locations (eg: "),l("code",null,"local,digitalocean,amazon"),e(") to use. You can use any names you\u2019d like for these keys.")]),l("td",null,[l("code",null,"local")])])])],-1),jl=l("p",null,"For each of the storage locations listed, you must provide the following configuration:",-1),Xl=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"STORAGE_<LOCATION>_DRIVER")]),l("td",null,[e("Which driver to use, either "),l("code",null,"local"),e(", "),l("code",null,"s3"),e(", "),l("code",null,"gcs"),e(", "),l("code",null,"azure")]),l("td")]),l("tr",null,[l("td",null,[l("code",null,"STORAGE_<LOCATION>_ROOT")]),l("td",null,"Where to store the files on disk"),l("td",null,[l("code",null,"''")])])])],-1),$l=l("p",null,"Based on your configured driver, you must also provide the following configurations:",-1),Zl=l("h3",{id:"local-(local)"},[e("Local ("),l("code",null,"local"),e(") "),l("a",{class:"header-anchor",href:"#local-(local)"},"#")],-1),Jl=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"STORAGE_<LOCATION>_ROOT")]),l("td",null,"Where to store the files on disk"),l("td",null,"\u2013")])])],-1),Ql=l("h3",{id:"s3-(s3)"},[e("S3 ("),l("code",null,"s3"),e(") "),l("a",{class:"header-anchor",href:"#s3-(s3)"},"#")],-1),le=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"STORAGE_<LOCATION>_KEY")]),l("td",null,"User key"),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"STORAGE_<LOCATION>_SECRET")]),l("td",null,"User secret"),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"STORAGE_<LOCATION>_BUCKET")]),l("td",null,"S3 Bucket"),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"STORAGE_<LOCATION>_REGION")]),l("td",null,"S3 Region"),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"STORAGE_<LOCATION>_ENDPOINT")]),l("td",null,"S3 Endpoint"),l("td",null,[l("code",null,"s3.amazonaws.com")])]),l("tr",null,[l("td",null,[l("code",null,"STORAGE_<LOCATION>_ACL")]),l("td",null,"S3 ACL"),l("td",null,"\u2013")])])],-1),ee=l("h3",{id:"azure-(azure)"},[e("Azure ("),l("code",null,"azure"),e(") "),l("a",{class:"header-anchor",href:"#azure-(azure)"},"#")],-1),ne=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"STORAGE_<LOCATION>_CONTAINER_NAME")]),l("td",null,"Azure Storage container"),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"STORAGE_<LOCATION>_ACCOUNT_NAME")]),l("td",null,"Azure Storage account name"),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"STORAGE_<LOCATION>_ACCOUNT_KEY")]),l("td",null,"Azure Storage key"),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"STORAGE_<LOCATION>_ENDPOINT")]),l("td",null,"Azure URL"),l("td",null,[l("code",null,"https://{ACCOUNT_KEY}.blob.core.windows.net")])])])],-1),te=l("h3",{id:"google-cloud-storage-(gcs)"},[e("Google Cloud Storage ("),l("code",null,"gcs"),e(") "),l("a",{class:"header-anchor",href:"#google-cloud-storage-(gcs)"},"#")],-1),oe=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"STORAGE_<LOCATION>_KEY_FILENAME")]),l("td",null,"Path to key file on disk"),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"STORAGE_<LOCATION>_BUCKET")]),l("td",null,"Google Cloud Storage bucket"),l("td",null,"\u2013")])])],-1),ue=l("p",null,"If you don\u2019t provide any configuration for storage adapters, Directus will default to the following:",-1),de=l("pre",null,[l("code",null,`STORAGE_LOCATIONS="local"
|
|
2
|
-
STORAGE_LOCAL_ROOT="./uploads"
|
|
3
|
-
`)],-1),ae=l("h2",{id:"assets"},[e("Assets "),l("a",{class:"header-anchor",href:"#assets"},"#")],-1),se=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"ASSETS_CACHE_TTL")]),l("td",null,[e("How long assets will be cached for in the browser. Sets the "),l("code",null,"max-age"),e(" value of the "),l("code",null,"Cache-Control"),e(" header.")]),l("td",null,[l("code",null,"30m")])]),l("tr",null,[l("td",null,[l("code",null,"ASSETS_TRANSFORM_MAX_CONCURRENT")]),l("td",null,"How many file transformations can be done simultaneously"),l("td",null,[l("code",null,"4")])]),l("tr",null,[l("td",null,[l("code",null,"ASSETS_TRANSFORM_IMAGE_MAX_DIMENSION")]),l("td",null,"The max pixel dimensions size (width/height) that is allowed to be transformed"),l("td",null,[l("code",null,"6000")])]),l("tr",null,[l("td",null,[l("code",null,"ASSETS_TRANSFORM_MAX_OPERATIONS")]),l("td",null,"The max number of transform operations that is allowed to be processed (excludes saved presets)"),l("td",null,[l("code",null,"5")])])])],-1),re=l("p",null,"Image transformations can be fairly heavy on memory usage. If you\u2019re using a system with 1GB or less available memory, we recommend lowering the allowed concurrent transformations to prevent you from overflowing your server.",-1),ie=l("h2",{id:"oauth"},[e("OAuth "),l("a",{class:"header-anchor",href:"#oauth"},"#")],-1),ce=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"OAUTH_PROVIDERS")]),l("td",null,"CSV of oAuth providers you want to use."),l("td",null,"\u2013")])])],-1),he=l("p",null,"For each of the OAuth providers you list, you must also provide a number of extra variables. These differ per external service. The following is a list of common required configuration options:",-1),_e=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"OAUTH_<PROVIDER>_KEY")]),l("td",null,"oAuth key (a.k.a. application id) for the external service."),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"OAUTH_<PROVIDER>_SECRET")]),l("td",null,"oAuth secret for the external service."),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"OAUTH_<PROVIDER>_SCOPE")]),l("td",null,[e("A white-space separated list of privileges directus should ask for. A common value is: "),l("code",null,"openid email"),e(".")]),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"OAUTH_<PROVIDER>_AUTHORIZE_URL")]),l("td",null,"The authorize page URL of the external service"),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"OAUTH_<PROVIDER>_ACCESS_URL")]),l("td",null,"The access URL of the external service"),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"OAUTH_<PROVIDER>_PROFILE_URL")]),l("td",null,"Where Directus can fetch the profile information of the authenticated user."),l("td",null,"\u2013")])])],-1),fe=l("p",null,[e("Directus relies on "),l("a",{href:"https://www.npmjs.com/package/grant",target:"_blank",rel:"noopener noreferrer"},[l("code",null,"grant")]),e(" for the handling of the oAuth flow. Grant includes "),l("a",{href:"https://github.com/simov/grant/blob/master/config/oauth.json",target:"_blank",rel:"noopener noreferrer"},"a lot of default values"),e(" for popular services. For example, if you use "),l("code",null,"apple"),e(" as one of your providers, you only have to specify the key and secret, as Grant has the rest covered. Checkout "),l("a",{href:"https://github.com/simov/grant",target:"_blank",rel:"noopener noreferrer"},"the grant repo"),e(" for more information.")],-1),me=l("h2",{id:"extensions"},[e("Extensions "),l("a",{class:"header-anchor",href:"#extensions"},"#")],-1),pe=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"EXTENSIONS_PATH")]),l("td",null,"Path to your local extensions folder."),l("td",null,[l("code",null,"./extensions")])])])],-1),Ee=l("h2",{id:"email"},[e("Email "),l("a",{class:"header-anchor",href:"#email"},"#")],-1),ge=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"EMAIL_FROM")]),l("td",null,"Email address from which emails are sent."),l("td",null,[l("code",null,"no-reply@directus.io")])]),l("tr",null,[l("td",null,[l("code",null,"EMAIL_TRANSPORT")]),l("td",null,[e("What to use to send emails. One of "),l("code",null,"sendmail"),e(", "),l("code",null,"smtp"),e(", "),l("code",null,"mailgun"),e(".")]),l("td",null,[l("code",null,"sendmail")])])])],-1),Ae=l("p",null,[e("Based on the "),l("code",null,"EMAIL_TRANSPORT"),e(" used, you must also provide the following configurations:")],-1),be=l("h3",{id:"sendmail-(sendmail)"},[e("Sendmail ("),l("code",null,"sendmail"),e(") "),l("a",{class:"header-anchor",href:"#sendmail-(sendmail)"},"#")],-1),Se=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"EMAIL_SENDMAIL_NEW_LINE")]),l("td",null,"What new line style to use in sendmail."),l("td",null,[l("code",null,"unix")])]),l("tr",null,[l("td",null,[l("code",null,"EMAIL_SENDMAIL_PATH")]),l("td",null,"Path to your sendmail executable."),l("td",null,[l("code",null,"/usr/sbin/sendmail")])])])],-1),ye=l("h3",{id:"smtp-(smtp)"},[e("SMTP ("),l("code",null,"smtp"),e(") "),l("a",{class:"header-anchor",href:"#smtp-(smtp)"},"#")],-1),Te=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"EMAIL_SMTP_HOST")]),l("td",null,"SMTP Host"),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"EMAIL_SMTP_PORT")]),l("td",null,"SMTP Port"),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"EMAIL_SMTP_USER")]),l("td",null,"SMTP User"),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"EMAIL_SMTP_PASSWORD")]),l("td",null,"SMTP Password"),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"EMAIL_SMTP_POOL")]),l("td",null,"Use SMTP pooling"),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"EMAIL_SMTP_SECURE")]),l("td",null,"Enable TLS"),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"EMAIL_SMTP_IGNORE_TLS")]),l("td",null,"Ignore TLS"),l("td",null,"\u2013")])])],-1),Oe=l("h3",{id:"mailgun-(mailgun)"},[e("Mailgun ("),l("code",null,"mailgun"),e(") "),l("a",{class:"header-anchor",href:"#mailgun-(mailgun)"},"#")],-1),Re=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"EMAIL_MAILGUN_API_KEY")]),l("td",null,"Your Mailgun API key."),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"EMAIL_MAILGUN_DOMAIN")]),l("td",null,[e("A domain from "),l("a",{href:"https://app.mailgun.com/app/sending/domains",target:"_blank",rel:"noopener noreferrer"},"your Mailgun account")]),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"EMAIL_MAILGUN_HOST")]),l("td",null,"Allows you to specify a custom host."),l("td",null,[l("code",null,"api.mailgun.net")])])])],-1),De=l("h2",{id:"admin-account"},[e("Admin Account "),l("a",{class:"header-anchor",href:"#admin-account"},"#")],-1),Ie=l("p",null,[e("If you\u2019re relying on Docker and/or the "),l("code",null,"directus bootstrap"),e(" CLI command, you can pass the following two environment variables to automatically configure the first user:")],-1),Ce=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"ADMIN_EMAIL")]),l("td",null,[e("The email address of the first user that\u2019s automatically created when using "),l("code",null,"directus bootstrap"),e(".")]),l("td",null,"\u2013")]),l("tr",null,[l("td",null,[l("code",null,"ADMIN_PASSWORD")]),l("td",null,[e("The password of the first user that\u2019s automatically created when using "),l("code",null,"directus bootstrap"),e(".")]),l("td",null,"\u2013")])])],-1),ve=l("h2",{id:"telemetry"},[e("Telemetry "),l("a",{class:"header-anchor",href:"#telemetry"},"#")],-1),Le=l("p",null,"To more accurately gauge the frequency of installation, version fragmentation, and general size of the userbase, Directus collects little and anonymized data about your environment. You can easily opt-out with the following environment variable:",-1),Ne=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Variable"),l("th",null,"Description"),l("th",null,"Default Value")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"TELEMETRY")]),l("td",null,"Allow Directus to collect anonymized data about your environment."),l("td",null,[l("code",null,"true")])])])],-1),we=l("hr",null,null,-1),Me=l("h2",{id:"type-casting-and-nesting"},[e("Type Casting and Nesting "),l("a",{class:"header-anchor",href:"#type-casting-and-nesting"},"#")],-1),Ve=l("p",null,"Environment variables are automatically type cast based on the structure of the variable, for example:",-1),xe=l("pre",null,[l("code",null,`PUBLIC_URL="https://example.com"
|
|
4
|
-
// "https://example.com"
|
|
5
|
-
|
|
6
|
-
DB_HOST="3306"
|
|
7
|
-
// 3306
|
|
8
|
-
|
|
9
|
-
CORS_ENABLED="false"
|
|
10
|
-
// false
|
|
11
|
-
|
|
12
|
-
STORAGE_LOCATIONS="s3,local,example"
|
|
13
|
-
// ["s3", "local", "example"]
|
|
14
|
-
`)],-1),He=l("p",null,[e("In cases where the environment variables are converted to a configuration object for third party library use, like in "),l("code",null,"DB_*"),e(" or "),l("code",null,"RATE_LIMITER_REDIS_*"),e(", the environment variable will be converted to camelCase. You can use a double underscore ("),l("code",null,"__"),e(") for nested objects:")],-1),Pe=l("pre",null,[l("code",null,`DB_CLIENT="pg"
|
|
15
|
-
DB_CONNECTION_STRING="postgresql://postgres:example@127.0.0.1"
|
|
16
|
-
DB_SSL__REJECT_UNAUTHORIZED="false"
|
|
17
|
-
|
|
18
|
-
{
|
|
19
|
-
client: "pg",
|
|
20
|
-
connectionString: "postgresql://postgres:example@127.0.0.1",
|
|
21
|
-
ssl: {
|
|
22
|
-
rejectUnauthorized: false
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
`)],-1),ke=l("h2",{id:"environment-syntax-prefix"},[e("Environment Syntax Prefix "),l("a",{class:"header-anchor",href:"#environment-syntax-prefix"},"#")],-1),Ue=l("p",null,[e("Directus will attempt to automatically type cast environment variables based on context clues ("),l("a",{href:"#type-casting-and-nesting"},"see above"),e("). If you have a specific need for a given type, you can tell Directus what type to use for the given value by prefixing the value with "),l("code",null,"{type}:"),e(". The following types are available:")],-1),Be=l("table",null,[l("thead",null,[l("tr",null,[l("th",null,"Syntax Prefix"),l("th",null,"Example"),l("th",null,"Output")])]),l("tbody",null,[l("tr",null,[l("td",null,[l("code",null,"string")]),l("td",null,[l("code",null,"string:value")]),l("td",null,[l("code",null,'"value"')])]),l("tr",null,[l("td",null,[l("code",null,"number")]),l("td",null,[l("code",null,"number:3306")]),l("td",null,[l("code",null,"3306")])]),l("tr",null,[l("td",null,[l("code",null,"regex")]),l("td",null,[l("code",null,"regex:\\.example\\.com$")]),l("td",null,[l("code",null,"/\\.example\\.com$/")])]),l("tr",null,[l("td",null,[l("code",null,"array")]),l("td",null,[l("code",null,"array:https://example.com,https://example2.com"),e(),l("br"),e(),l("code",null,"array:string:https://example.com,regex:\\.example3\\.com$")]),l("td",null,[l("code",null,'["https://example.com", "https://example2.com"]'),e(),l("br"),e(),l("code",null,'["https://example.com", "https://example2.com", /\\.example3\\.com$/]')])])])],-1),Ge=l("h2",{id:"file-based-environment-variables-(docker-secrets)"},[e("File Based Environment Variables (Docker Secrets) "),l("a",{class:"header-anchor",href:"#file-based-environment-variables-(docker-secrets)"},"#")],-1),We=l("p",null,[e("Any of the environment variable values can be imported from a file, by appending "),l("code",null,"_FILE"),e(" to the environment variable name. For example: "),l("code",null,'DB_PASSWORD_FILE="/run/secrets/db_password"'),e(".")],-1),qe=l("p",null,"This is especially useful when used in conjunction with Docker Secrets, so you can keep sensitive data out of your compose files.",-1),je={setup(Fe,{expose:a}){const u={title:"Environment Variables",modularExtension:!1};return a({frontmatter:u}),(Ke,ze)=>{const t=d("router-link"),s=d("DocsWrapper");return r(),i(s,{frontmatter:u},{default:n(()=>[l("div",c,[h,_,f,l("table",null,[m,l("tbody",null,[l("tr",null,[p,l("td",null,[E,o(t,{to:"/docs/reference/config-files/"},{default:n(()=>[g]),_:1})]),A]),b,S,y,T,O,R,D])]),I,C,v,L,N,w,l("table",null,[M,l("tbody",null,[V,x,H,P,k,U,B,G,l("tr",null,[W,l("td",null,[q,o(t,{to:"/docs/reference/api/system/authentication/#request-password-reset"},{default:n(()=>[F,K,z]),_:1})]),Y]),l("tr",null,[j,l("td",null,[X,o(t,{to:"/docs/reference/api/system/users/#invite-a-new-user"},{default:n(()=>[$,Z,J]),_:1})]),Q])])]),ll,el,nl,tl,ol,ul,dl,al,sl,rl,il,cl,hl,_l,fl,ml,pl,El,gl,Al,bl,Sl,yl,Tl,Ol,Rl,Dl,Il,Cl,vl,Ll,Nl,wl,Ml,Vl,xl,Hl,Pl,kl,Ul,Bl,Gl,Wl,ql,Fl,Kl,zl,Yl,jl,Xl,$l,Zl,Jl,Ql,le,ee,ne,te,oe,ue,de,ae,se,re,ie,ce,he,_e,fe,me,pe,Ee,ge,Ae,be,Se,ye,Te,Oe,Re,De,Ie,Ce,ve,Le,Ne,we,Me,Ve,xe,He,Pe,ke,Ue,Be,Ge,We,qe])]),_:1})}}};export{je as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
function u(t,n){return n.forEach(function(r){Object.keys(r).forEach(function(e){if(e!=="default"&&!(e in t)){var a=Object.getOwnPropertyDescriptor(r,e);Object.defineProperty(t,e,a.get?a:{enumerable:!0,get:function(){return r[e]}})}})}),Object.freeze(t)}var o={};Object.defineProperty(o,"__esModule",{value:!0});var s={code:"es",week:{dow:1,doy:4},buttonText:{prev:"Ant",next:"Sig",today:"Hoy",month:"Mes",week:"Semana",day:"D\xEDa",list:"Agenda"},weekText:"Sm",allDayText:"Todo el d\xEDa",moreLinkText:"m\xE1s",noEventsText:"No hay eventos para mostrar"},c=o.default=s,d=Object.freeze(u({__proto__:null,[Symbol.toStringTag]:"Module",default:c},[o]));export{d as e};
|