From f76cce1abfa82ba0337a46524833f9db666359e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Romain?= Date: Fri, 19 Jun 2020 16:43:06 +0200 Subject: [PATCH] =?UTF-8?q?ci:=20g=C3=A9n=C3=A8re=20la=20documentation=20a?= =?UTF-8?q?utomatiquement=20(#431)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .eslintignore | 2 +- .github/workflows/docs.yml | 33 + Dockerfile.docs | 3 + README.md | 169 +--- default.conf.template | 14 + .../api/_introspection-query.graphql | 0 dev/api/graphql-dsl-to-query-convert.js | 2 +- {manual/api => dev}/test.http | 0 docker-compose.docs.yml | 19 + .../01-utilisation/01-introduction.md | 8 + .../01-utilisation/02-graphql.md | 26 +- docs-sources/01-utilisation/03-rest.md | 1 + docs-sources/01-utilisation/04-flux.md | 0 .../01-utilisation}/schema.json | 0 .../02-developpement/01-introduction.md | 144 +++ .../02-developpement/02-base-de-donnees.md | 4 +- .../03-architecture/01-introduction.md | 1 + .../03-architecture/02-docker.md | 0 .../03-scripts-sauvegarde-restaurations.md | 0 .../04-deploiement/01-introduction.md | 1 + .../02-sauvegarde-restauration.md | 2 +- .../04-deploiement/03-base-de-donnees.md | 0 .../04-deploiement/04-fichiers.md | 0 .../04-deploiement/05-utils.md | 0 .../04-deploiement/api.md | 2 +- .../assets}/database/camino-db.sqs | 851 +++++++++++++----- .../assets}/database/camino-db.svg | 0 manual/readme.md | 11 - package-lock.json | 142 +++ package.json | 9 +- src/api/_format/administrations.ts | 9 + src/api/_format/entreprises.ts | 9 + .../titre-activite-input-validate.ts | 4 +- src/api/_validate/utils/props-dates-check.ts | 23 +- src/api/graphql/schemas/index.graphql | 92 +- tsconfig.json | 86 +- 36 files changed, 1196 insertions(+), 471 deletions(-) create mode 100644 .github/workflows/docs.yml create mode 100644 Dockerfile.docs create mode 100644 default.conf.template rename {manual => dev}/api/_introspection-query.graphql (100%) rename {manual/api => dev}/test.http (100%) create mode 100644 docker-compose.docs.yml create mode 100644 docs-sources/01-utilisation/01-introduction.md rename manual/api/readme.md => docs-sources/01-utilisation/02-graphql.md (51%) create mode 100644 docs-sources/01-utilisation/03-rest.md create mode 100644 docs-sources/01-utilisation/04-flux.md rename {manual/api => docs-sources/01-utilisation}/schema.json (100%) create mode 100644 docs-sources/02-developpement/01-introduction.md rename manual/database/camino-db.md => docs-sources/02-developpement/02-base-de-donnees.md (66%) create mode 100644 docs-sources/03-architecture/01-introduction.md rename manual/config/docker.md => docs-sources/03-architecture/02-docker.md (100%) rename manual/config/backup-restore.md => docs-sources/03-architecture/03-scripts-sauvegarde-restaurations.md (100%) create mode 100644 docs-sources/04-deploiement/01-introduction.md rename manual/backup-restore.md => docs-sources/04-deploiement/02-sauvegarde-restauration.md (92%) rename manual/database.md => docs-sources/04-deploiement/03-base-de-donnees.md (100%) rename manual/files.md => docs-sources/04-deploiement/04-fichiers.md (100%) rename manual/scripts.md => docs-sources/04-deploiement/05-utils.md (100%) rename manual/docker.md => docs-sources/04-deploiement/api.md (66%) rename {manual => docs-sources/assets}/database/camino-db.sqs (90%) rename {manual => docs-sources/assets}/database/camino-db.svg (100%) delete mode 100644 manual/readme.md diff --git a/.eslintignore b/.eslintignore index 9e6ff1698..36282a869 100644 --- a/.eslintignore +++ b/.eslintignore @@ -4,6 +4,6 @@ /dist /docs /files -/manual +/docs-sources /node_modules /sources diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml new file mode 100644 index 000000000..7faa3e1f2 --- /dev/null +++ b/.github/workflows/docs.yml @@ -0,0 +1,33 @@ +name: Docs + +on: + release: + branches: + - master + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v1 + - name: Use Node.js + uses: actions/setup-node@v1 + with: + node-version: 12 + - name: Generate docs + run: | + npm ci + npm run docs + env: + CI: true + - name: Build Docker image + run: docker build -f Dockerfile.docs . --tag caminofr/camino-api-docs + - name: Push Docker image to the Docker Hub + run: | + docker login --username "$DOCKER_USERNAME" --password "$DOCKER_PASSWORD" + docker push caminofr/camino-api-docs + env: + DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} + DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} diff --git a/Dockerfile.docs b/Dockerfile.docs new file mode 100644 index 000000000..1b8a253de --- /dev/null +++ b/Dockerfile.docs @@ -0,0 +1,3 @@ +FROM nginx +COPY default.conf.template /etc/nginx/templates/default.conf.template +COPY docs /usr/share/nginx/html diff --git a/README.md b/README.md index a64c1deb2..db5731d52 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Camino API +# API de Camino [![Tests Status][ci-img]][ci] [![codecov][codecov-img]][codecov] [![Dependency Status][dep-img]][dep] @@ -9,180 +9,21 @@ [dep-img]: https://david-dm.org/MTES-MCT/camino-api.svg [dep]: https://david-dm.org/MTES-MCT/camino-api -> API GraphQL de [Camino](http://camino.beta.gouv.fr/): [api.camino.beta.gouv.fr](https://api.camino.beta.gouv.fr) +> API de Camino, le cadastre minier numérique ouvert: [api.camino.beta.gouv.fr](https://api.camino.beta.gouv.fr) ---- - -## Technologies - -- [TypeScript](https://typescriptlang.org/) -- [Node.js](https://nodejs.org/) -- [Express.js](http://expressjs.com) -- [PostgreSQL](https://www.postgresql.org/) -- [Express-GraphQL](https://github.com/graphql/express-graphql) -- [Knex.js](https://knexjs.org/) -- [Objection.js](http://vincit.github.io/objection.js/) -- [Eslint](https://eslint.org/) -- [Prettier](https://prettier.io/) -- [Standardjs](https://standardjs.com/) -- [Docker](https://www.docker.com/) - ---- - -## Environnement - -- Node.js (v.10 ou plus) et npm -- PostgreSQL (v.10 ou plus) - ---- - -## Utilisation - -### Configuration et imports des données - -- Cloner ce repo : `git clone https://github.com/MTES-MCT/camino-api.git`. -- Renommer le fichier `.env-example` en `.env` et le compléter. -- Créer une base de données PostgreSQL correspondant au fichier `.env`. -- À l'intérieur du dossier `/backups`, coller le fichier `camino-public.sql` disponible ici : [Camino database](https://github.com/MTES-MCT/camino-database). - -### Installation - -```bash -# installe les dépendances -npm install - -# importe les données depuis /database/camino-public.sql -npm run db:public-import - -# crée un utilisateur admin -npm run db:user -``` - -### Développement - -```bash -# démarre le serveur avec nodemon -npm run dev -``` - -### Production - -```bash -# compile l'application avec typescript -npm run build - -# démarre le serveur -npm run start -``` - ---- - -## Tests - -### Tests unitaires - -```sh -# lance les tests en local -npm run test:jest -``` - -### Tests de bout-en-bout - -Ces tests sont lancés depuis `camino-ui` avec la commande `npm run test:cypress`. - -Pour que cela fonctionne l'API doit être lancée avec `npm run dev`. - -Pour que les tests soient plus rapides, on peut utiliser une version publique de la base de données contenant seulement certains titres miniers. - -```bash -# crée une copie de la base de données (publique) -npm run db:dump-public - -# importe la base de données publique -# met à jour les données (daily) -# crée un utilisateur super-admin -# lance le serveur de dev -npm run test:cypress -``` +L'API de Camino expose les caractéristiques des titres et autorisations du domaine minier français. Elle permet aux utilisateurs autorisés de gérer ces titres et autorisations. Pour plus de détail sur le périmètre de l'application, voir [cette page](https://camino.beta.gouv.fr/a-propos). --- ## Documentation -La documentation [est disponible ici](https://github.com/MTES-MCT/camino-api/tree/master/manual). - ---- - -## Structure des fichiers - -```bash -. -│ -├── dev # `scripts de développement` -├── knex # `scripts de création et d'import de la base de données (npm run migrate) -│ ├── migrations # `création de la base de données` -│ └── seeds # `import depuis les fichier /sources vers la base de données` -│ -├── manual # `source de la documentation générée avec esdoc` -│ -└── src # `fichiers sources. Transformés avec npm run build.` - ├── index # `point d'entrée` - │ - ├── api # `APIs` - │ ├── graphql # `API Graphql` - │ └── rest # `API Rest` - │ - ├── config # - │ ├── index # `variables globales` - │ └── knex # `connexion à la base de données` - │ - ├── database # `base de données PostgreSQL` - │ ├── models # `modèles de la base de données (knex.js / objection.js)` - │ └── queries # `requêtes à la base de données (knex.js / objection.js)` - │ - ├── business # `logique métier` - │ ├── processes # `scripts de traitement` - │ ├── rules # `lois et procédures administratives` - │ ├── utils # `utilitaires de filtrage et de classement` - │ ├── daily # `scripts de mise à jour quotidiens (npm run daily)` - │ ├── etape-update # `script effectués lors de la mise à jour d'une étape` - │ └── monthly # `scripts de mise à jour mensuels (npm run monthly)` - │ - └── tools # `outils` - ├── export # `exportation de la base de données vers des spreadsheets (npm run export)` - ├── import # `import de spreadsheets vers des fichiers json dans /sources (npm run import)` - ├── api-... # `connexion aux api externes` - └── emails-send # `envoi d'email` - -``` - ---- - -## Base de données - -![camino database schema](manual/database/camino-db.svg) - ---- - -## Contribution - -Voir [contributing.md](contributing.md) (en anglais) pour plus d'infos. +La documentation de l'API est disponible ici: [docs.camino.beta.gouv.fr](https://docs.camino.beta.gouv.fr). --- ## Crédits -### Production - -- [La Fabrique Numérique, Ministère de la transition écologique et solidaire](https://www.ecologique-solidaire.gouv.fr/inauguration-fabrique-numerique-lincubateur-des-ministeres-charges-lecologie-et-des-territoires) - -### Équipe - -- Guillaume Levieux, intrapreneur -- Joeffrey Arruyer, coach -- [François Romain](https://francoisromain.com), développeur -- [Adrien Risser](https://github.com/risseraka), développeur -- [Nicolas Petitot](https://github.com/NeoBahamut), développeur +[La Fabrique Numérique, Ministère de la transition écologique et solidaire](https://www.ecologique-solidaire.gouv.fr/inauguration-fabrique-numerique-lincubateur-des-ministeres-charges-lecologie-et-des-territoires) --- diff --git a/default.conf.template b/default.conf.template new file mode 100644 index 000000000..0832d48e7 --- /dev/null +++ b/default.conf.template @@ -0,0 +1,14 @@ +server { + listen ${NGINX_PORT}; + server_name localhost; + + location / { + root /usr/share/nginx/html; + index index.html index.htm; + } + + error_page 500 502 503 504 /50x.html; + location = /50x.html { + root /usr/share/nginx/html; + } +} \ No newline at end of file diff --git a/manual/api/_introspection-query.graphql b/dev/api/_introspection-query.graphql similarity index 100% rename from manual/api/_introspection-query.graphql rename to dev/api/_introspection-query.graphql diff --git a/dev/api/graphql-dsl-to-query-convert.js b/dev/api/graphql-dsl-to-query-convert.js index a1831e3fe..423c5ed39 100644 --- a/dev/api/graphql-dsl-to-query-convert.js +++ b/dev/api/graphql-dsl-to-query-convert.js @@ -11,7 +11,7 @@ fetch(url, { .then(res => res.json()) .then(res => fs.writeFileSync( - 'manual/api/schema.json', + 'docs-sources/api/schema.json', JSON.stringify(res.data, null, 2) ) ) diff --git a/manual/api/test.http b/dev/test.http similarity index 100% rename from manual/api/test.http rename to dev/test.http diff --git a/docker-compose.docs.yml b/docker-compose.docs.yml new file mode 100644 index 000000000..2a83bc408 --- /dev/null +++ b/docker-compose.docs.yml @@ -0,0 +1,19 @@ +version: '3' + +services: + app: + image: caminofr/camino-api-docs + environment: + VIRTUAL_HOST: ${URL} + VIRTUAL_PORT: ${PORT} + LETSENCRYPT_HOST: ${URL} + LETSENCRYPT_EMAIL: ${LETSENCRYPT_EMAIL} + NGINX_PORT: ${PORT} + expose: + - ${PORT} + restart: always + +networks: + default: + external: + name: nginx-proxy diff --git a/docs-sources/01-utilisation/01-introduction.md b/docs-sources/01-utilisation/01-introduction.md new file mode 100644 index 000000000..663955991 --- /dev/null +++ b/docs-sources/01-utilisation/01-introduction.md @@ -0,0 +1,8 @@ +# Utilisation de l'API de Camino + +> [api.camino.beta.gouv.fr](https://api.camino.beta.gouv.fr) + +L'API de Camino propose deux manières d'interagir: + +- {@page API GraphQL} (complète) +- {@page API Rest} (interaction limitée) diff --git a/manual/api/readme.md b/docs-sources/01-utilisation/02-graphql.md similarity index 51% rename from manual/api/readme.md rename to docs-sources/01-utilisation/02-graphql.md index b49c86fc5..e1f7b1e37 100644 --- a/manual/api/readme.md +++ b/docs-sources/01-utilisation/02-graphql.md @@ -1,12 +1,12 @@ -# Api GraphQL +# Api GraphQL de Camino -- [Documentation offcielle de GraphQL](https://graphql.org/) +L'API GraphQl de Camino est accessible à cette url: [api.camino.beta.gouv.fr/](https://api.camino.beta.gouv.fr/). -## Requêtes avec _GraphiQL_ +La documentation de cette API est consultable dans l'onglets `Docs` (en haut à droite) de l'application _GraphiQL_. -_GraphiQL_ est une application qui permet de tester une API GraphQL dans un navigateur. Pour Camino, elle est accessible à l'url racine de l'API: https://api.camino.beta.gouv.fr/. +## _GraphiQL_ -_GraphiQL_ expose une documentation de l'API qui est accessible en cliquant sur le bouton `Docs` (en haut à droite). +_GraphiQL_ est une application qui permet de consulter la documentation et de tester une API GraphQL dans un navigateur. Concernant l'API Camino, cette application est accessible à l'url racine de l'API: [api.camino.beta.gouv.fr/](https://api.camino.beta.gouv.fr/). Des exemples de requêtes se trouvent dans [ce dossier](https://github.com/MTES-MCT/camino-api/blob/master/tests/queries/). @@ -14,17 +14,21 @@ Des exemples de requêtes se trouvent dans [ce dossier](https://github.com/MTES- Par exemple, pour obtenir la liste des substances: -- copier une requête dans le champs principal de l'interface de _GraphiQL_: [substances.graphql](https://github.com/MTES-MCT/camino-api/blob/master/manual/api/queries/substances.graphql) -- valider en cliquant sur le bouton "play" +- copier une requête dans le champs principal de l'interface de _GraphiQL_: [substances.graphql](https://github.com/MTES-MCT/camino-api/blob/master/tests/queries/substances.graphql) +- valider en cliquant sur le bouton `▶`. ### Requêtes avec des variables Certaines requêtes nécessitent le passage de variables. Par exemple, pour obtenir la liste des titres: -- copier la requête dans le champs principal de l'interface de _GraphiQL_: [titres.graphql](https://github.com/MTES-MCT/camino-api/blob/master/manual/api/queries/titres.graphql) -- copier les variables dans le champs `query variables` (en bas à gauche de l'écran): [titres-variables.json](https://github.com/MTES-MCT/camino-api/blob/master/manual/api/queries/titres-variables.json) -- valider en cliquant sur le bouton "play" +- copier la requête dans le champs principal de l'interface de _GraphiQL_: [titres.graphql](https://github.com/MTES-MCT/camino-api/blob/master/tests/queries/titres.graphql) +- copier les variables dans le champs `query variables` (en bas à gauche de l'écran): [titres-variables.json](https://github.com/MTES-MCT/camino-api/blob/master/tests/queries/titres-variables.json) +- valider en cliquant sur le bouton `▶`. ### Requêtes nécessitant une authentification -Certaines requêtes sont protégées et nécessitent une authentification par token (jwt). Pour les tester, il faut passer le token dans le header http de la requête. Cela n'est pas possible avec l'interface _GraphiQL_. C'est possible avec [GraphQL Playground](https://github.com/prisma/graphql-playground), [GraphiQL App](https://github.com/skevy/graphiql-app) ou une application pour faire des requêtes http ([exemple](https://github.com/MTES-MCT/camino-api/blob/master/manual/api/test.http)). +Certaines requêtes sont protégées et nécessitent une authentification par token (jwt). Pour les tester, il faut passer le token dans le header http de la requête. Cela n'est pas possible avec _GraphiQL_. C'est possible avec [GraphQL Playground](https://github.com/prisma/graphql-playground), [GraphiQL App](https://github.com/skevy/graphiql-app). + +### Liens + +- [Documentation offcielle de GraphQL](https://graphql.org/) diff --git a/docs-sources/01-utilisation/03-rest.md b/docs-sources/01-utilisation/03-rest.md new file mode 100644 index 000000000..bb78d78e6 --- /dev/null +++ b/docs-sources/01-utilisation/03-rest.md @@ -0,0 +1 @@ +# Api Rest de Camino diff --git a/docs-sources/01-utilisation/04-flux.md b/docs-sources/01-utilisation/04-flux.md new file mode 100644 index 000000000..e69de29bb diff --git a/manual/api/schema.json b/docs-sources/01-utilisation/schema.json similarity index 100% rename from manual/api/schema.json rename to docs-sources/01-utilisation/schema.json diff --git a/docs-sources/02-developpement/01-introduction.md b/docs-sources/02-developpement/01-introduction.md new file mode 100644 index 000000000..62b73f841 --- /dev/null +++ b/docs-sources/02-developpement/01-introduction.md @@ -0,0 +1,144 @@ +# Développement de l'API de Camino + +> [github.com/MTES-MCT/camino-api](https://github.com/MTES-MCT/camino-api) + +## Technologies + +- [TypeScript](https://typescriptlang.org/) +- [Node.js](https://nodejs.org/) +- [Express.js](http://expressjs.com) +- [PostgreSQL](https://www.postgresql.org/) +- [Express-GraphQL](https://github.com/graphql/express-graphql) +- [Knex.js](https://knexjs.org/) +- [Objection.js](http://vincit.github.io/objection.js/) +- [Eslint](https://eslint.org/) +- [Prettier](https://prettier.io/) +- [Standardjs](https://standardjs.com/) +- [Docker](https://www.docker.com/) + +--- + +## Guide de démarrage + +### Environnement + +- Node.js (v.10 ou plus) et npm +- PostgreSQL (v.10 ou plus) + +### Configuration et imports des données + +- Cloner ce repo : `git clone https://github.com/MTES-MCT/camino-api.git`. +- Renommer le fichier `.env-example` en `.env` et le compléter. +- Créer une base de données PostgreSQL correspondant au fichier `.env`. +- À l'intérieur du dossier `/backups`, coller le fichier `camino-public.sql` disponible ici : [Camino database](https://github.com/MTES-MCT/camino-database). + +### Installation + +```bash +# installe les dépendances +npm install + +# importe les données depuis /database/camino-public.sql +npm run db:public-import + +# crée un utilisateur admin +npm run db:user +``` + +### Développement + +```bash +# démarre le serveur avec nodemon +npm run dev +``` + +### Production + +```bash +# compile l'application avec typescript +npm run build + +# démarre le serveur +npm run start +``` + +--- + +## Tests + +### Tests unitaires + +```sh +# lance les tests en local +npm run test:jest +``` + +### Tests de bout-en-bout + +Ces tests sont lancés depuis `camino-ui` avec la commande `npm run test:cypress`. + +Pour que cela fonctionne l'API doit être lancée avec `npm run dev`. + +Pour que les tests soient plus rapides, on peut utiliser une version publique de la base de données contenant seulement certains titres miniers. + +```bash +# crée une copie de la base de données (publique) +npm run db:dump-public + +# importe la base de données publique +# met à jour les données (daily) +# crée un utilisateur super-admin +# lance le serveur de dev +npm run test:cypress +``` + +--- + +## Structure des fichiers + +```bash +. +│ +├── dev # `scripts de développement` +├── knex # `scripts de création et d'import de la base de données (npm run migrate) +│ ├── migrations # `création de la base de données` +│ └── seeds # `import depuis les fichier /sources vers la base de données` +│ +├── docs-sources # `source de la documentation générée avec typeDoc` +│ +└── src # `fichiers sources. Transformés avec npm run build.` + ├── index # `point d'entrée` + │ + ├── api # `APIs` + │ ├── graphql # `API Graphql` + │ └── rest # `API Rest` + │ + ├── config # + │ ├── index # `variables globales` + │ └── knex # `connexion à la base de données` + │ + ├── database # `base de données PostgreSQL` + │ ├── models # `modèles de la base de données (knex.js / objection.js)` + │ └── queries # `requêtes à la base de données (knex.js / objection.js)` + │ + ├── business # `logique métier` + │ ├── processes # `scripts de traitement` + │ ├── rules # `lois et procédures administratives` + │ ├── utils # `utilitaires de filtrage et de classement` + │ ├── daily # `scripts de mise à jour quotidiens (npm run daily)` + │ ├── etape-update # `script effectués lors de la mise à jour d'une étape` + │ └── monthly # `scripts de mise à jour mensuels (npm run monthly)` + │ + └── tools # `outils` + ├── export # `exportation de la base de données vers des spreadsheets (npm run export)` + ├── import # `import de spreadsheets vers des fichiers json dans /sources (npm run import)` + ├── api-... # `connexion aux api externes` + └── emails-send # `envoi d'email` + +``` + +--- + +## Contribution + +Voir [contributing.md](https://github.com/MTES-MCT/camino-api/blob/master/contributing.md) (en anglais) pour plus d'infos. diff --git a/manual/database/camino-db.md b/docs-sources/02-developpement/02-base-de-donnees.md similarity index 66% rename from manual/database/camino-db.md rename to docs-sources/02-developpement/02-base-de-donnees.md index c6a5ead67..86e57e94d 100644 --- a/manual/database/camino-db.md +++ b/docs-sources/02-developpement/02-base-de-donnees.md @@ -1,8 +1,8 @@ -# Base de données Camino +# Base de données L'Api Camino fonctionne avec une base de données PostgreSQL. -![camino database schema](camino-db.png) +![camino database schema](https://github.com/MTES-MCT/camino-api/tree/master/docs-sources/assets/database/camino-db.svg) ```sh # faire un dump depuis la base de données locale diff --git a/docs-sources/03-architecture/01-introduction.md b/docs-sources/03-architecture/01-introduction.md new file mode 100644 index 000000000..d85908a3d --- /dev/null +++ b/docs-sources/03-architecture/01-introduction.md @@ -0,0 +1 @@ +# Architecture de l'application Camino diff --git a/manual/config/docker.md b/docs-sources/03-architecture/02-docker.md similarity index 100% rename from manual/config/docker.md rename to docs-sources/03-architecture/02-docker.md diff --git a/manual/config/backup-restore.md b/docs-sources/03-architecture/03-scripts-sauvegarde-restaurations.md similarity index 100% rename from manual/config/backup-restore.md rename to docs-sources/03-architecture/03-scripts-sauvegarde-restaurations.md diff --git a/docs-sources/04-deploiement/01-introduction.md b/docs-sources/04-deploiement/01-introduction.md new file mode 100644 index 000000000..c44974b4c --- /dev/null +++ b/docs-sources/04-deploiement/01-introduction.md @@ -0,0 +1 @@ +# Déploiement de l'API de Camino diff --git a/manual/backup-restore.md b/docs-sources/04-deploiement/02-sauvegarde-restauration.md similarity index 92% rename from manual/backup-restore.md rename to docs-sources/04-deploiement/02-sauvegarde-restauration.md index fabd8dbb5..f4f74b9bb 100644 --- a/manual/backup-restore.md +++ b/docs-sources/04-deploiement/02-sauvegarde-restauration.md @@ -1,4 +1,4 @@ -# Sauvegardes et restaurations de la base de données et des fichiers +# Sauvegardes et restaurations ## Sauvegarde diff --git a/manual/database.md b/docs-sources/04-deploiement/03-base-de-donnees.md similarity index 100% rename from manual/database.md rename to docs-sources/04-deploiement/03-base-de-donnees.md diff --git a/manual/files.md b/docs-sources/04-deploiement/04-fichiers.md similarity index 100% rename from manual/files.md rename to docs-sources/04-deploiement/04-fichiers.md diff --git a/manual/scripts.md b/docs-sources/04-deploiement/05-utils.md similarity index 100% rename from manual/scripts.md rename to docs-sources/04-deploiement/05-utils.md diff --git a/manual/docker.md b/docs-sources/04-deploiement/api.md similarity index 66% rename from manual/docker.md rename to docs-sources/04-deploiement/api.md index 603fad988..7ebff1d2d 100644 --- a/manual/docker.md +++ b/docs-sources/04-deploiement/api.md @@ -3,6 +3,6 @@ ## Démarrer un shell dans le conteneur Docker de l'API ```sh -# démarre un terminal dans le conteneur de l'API camino +# démarre un terminal dans le conteneur de l'API docker exec -it camino-api_app_1 sh ``` diff --git a/manual/database/camino-db.sqs b/docs-sources/assets/database/camino-db.sqs similarity index 90% rename from manual/database/camino-db.sqs rename to docs-sources/assets/database/camino-db.sqs index 6bb615ceb..e335c4d22 100644 --- a/manual/database/camino-db.sqs +++ b/docs-sources/assets/database/camino-db.sqs @@ -5,7 +5,7 @@ 2525.00 - 1275.00 + 2425.00 300.00 @@ -64,7 +64,7 @@ - + @@ -74,7 +74,7 @@ 75.00 - 75.00 + 825.00 300.00 @@ -97,7 +97,7 @@ - + @@ -107,7 +107,7 @@ 2525.00 - 775.00 + 1925.00 300.00 @@ -148,7 +148,7 @@ - + @@ -158,7 +158,7 @@ 2075.00 - 450.00 + 1600.00 800.00 @@ -167,7 +167,7 @@ 53 - + @@ -175,7 +175,7 @@ 75.00 - 550.00 + 1300.00 300.00 @@ -226,7 +226,7 @@ - + @@ -236,7 +236,7 @@ 2525.00 - 1675.00 + 975.00 300.00 @@ -272,7 +272,7 @@ - + @@ -281,7 +281,7 @@ 2125.00 - 1150.00 + 2300.00 300.00 @@ -306,7 +306,7 @@ - + @@ -315,7 +315,7 @@ 2075.00 - 725.00 + 1875.00 800.00 @@ -324,7 +324,7 @@ 54 - + @@ -332,7 +332,7 @@ 475.00 - 1075.00 + 1825.00 300.00 @@ -362,7 +362,7 @@ - + @@ -372,7 +372,7 @@ 75.00 - 825.00 + 1575.00 300.00 @@ -421,7 +421,7 @@ - + @@ -431,16 +431,16 @@ 1650.00 - 1600.00 + 2350.00 400.00 - 400.00 + 425.00 77 - + @@ -448,7 +448,7 @@ 75.00 - 1075.00 + 1825.00 300.00 @@ -488,7 +488,7 @@ - + @@ -498,7 +498,7 @@ 900.00 - 1650.00 + 2725.00 300.00 @@ -588,7 +588,7 @@ - + @@ -597,7 +597,7 @@ 475.00 - 2325.00 + 2675.00 300.00 @@ -630,7 +630,7 @@ - + @@ -640,7 +640,7 @@ 850.00 - 25.00 + 775.00 1200.00 @@ -649,7 +649,7 @@ 52 - + @@ -657,7 +657,7 @@ 475.00 - 400.00 + 1150.00 300.00 @@ -720,34 +720,115 @@ - + - + 25.00 - 1975.00 + 2325.00 800.00 500.00 70 - + - + + + + + + 900.00 + 2400.00 + + + 300.00 + 150.00 + + 83 + + + + id + titres + + + 0 + 0 + + + + + + + + + + + 1 + + + + + + + + + + + id + demarches_statuts + + + 0 + 0 + + + + + + + + + + id + travaux_demarches_types + + + 0 + 0 + + + + + + + + + + + + + + + + + + 475.00 - 625.00 + 1375.00 300.00 @@ -778,7 +859,7 @@ - + @@ -787,7 +868,7 @@ 850.00 - 525.00 + 1275.00 1200.00 @@ -796,7 +877,7 @@ 74 - + @@ -804,11 +885,11 @@ 900.00 - 75.00 + 825.00 300.00 - 375.00 + 360.00 8 @@ -986,7 +1067,7 @@ - + @@ -996,7 +1077,7 @@ 2525.00 - 75.00 + 1225.00 300.00 @@ -1031,7 +1112,7 @@ - + @@ -1041,7 +1122,7 @@ 1700.00 - 1150.00 + 1425.00 300.00 @@ -1085,7 +1166,7 @@ - + @@ -1095,7 +1176,7 @@ 2125.00 - 2250.00 + 75.00 325.00 @@ -1196,7 +1277,7 @@ - + @@ -1206,7 +1287,7 @@ 900.00 - 825.00 + 1575.00 300.00 @@ -1297,7 +1378,7 @@ - + @@ -1306,7 +1387,7 @@ 2125.00 - 1500.00 + 800.00 308.00 @@ -1410,7 +1491,7 @@ - + @@ -1420,7 +1501,7 @@ 1700.00 - 1250.00 + 1525.00 300.00 @@ -1464,7 +1545,7 @@ - + @@ -1474,11 +1555,11 @@ 1700.00 - 1650.00 + 2400.00 300.00 - 300.00 + 325.00 73 @@ -1584,17 +1665,92 @@ + + + + id + titres_travaux_etapes + + + 0 + 0 + + + + + - + + + + + + 75.00 + 2025.00 + + + 325.00 + 80.00 + + 87 + + + + 1 + id + travaux_demarches_types + + + 0 + 0 + + + + + + + + + + + + 1 + id + demarches_statuts + + + 0 + 0 + + + + + + + + + + + + + + + + + + + + + 1700.00 - 925.00 + 1975.00 300.00 @@ -1641,7 +1797,7 @@ - + @@ -1650,26 +1806,13 @@ 75.00 - 1625.00 + 75.00 300.00 100.00 64 - - - - id - titres_types - - - 0 - 0 - - - - @@ -1684,6 +1827,19 @@ + + + + id + titres_types + + + 0 + 0 + + + + @@ -1695,7 +1851,7 @@ - + @@ -1704,7 +1860,7 @@ 2525.00 - 1500.00 + 800.00 300.00 @@ -1746,7 +1902,7 @@ - + @@ -1755,10 +1911,10 @@ 1300.00 - 825.00 + 1575.00 - 321.00 + 300.00 260.00 11 @@ -1854,7 +2010,7 @@ - + @@ -1863,7 +2019,7 @@ 75.00 - 2025.00 + 2375.00 300.00 @@ -1925,7 +2081,7 @@ - + @@ -1935,7 +2091,7 @@ 2125.00 - 925.00 + 2075.00 300.00 @@ -1961,7 +2117,7 @@ - + @@ -1971,7 +2127,7 @@ 75.00 - 2175.00 + 2500.00 300.00 @@ -2015,7 +2171,7 @@ - + @@ -2025,7 +2181,7 @@ 75.00 - 950.00 + 1700.00 300.00 @@ -2066,16 +2222,33 @@ - + + + + + + 25.00 + 1975.00 + + + 800.00 + 325.00 + + 85 + + + + + 1300.00 - 725.00 + 1475.00 300.00 @@ -2114,7 +2287,7 @@ - + @@ -2123,7 +2296,7 @@ 2525.00 - 2250.00 + 75.00 300.00 @@ -2162,7 +2335,7 @@ - + @@ -2171,7 +2344,7 @@ 2075.00 - 1100.00 + 2250.00 800.00 @@ -2180,7 +2353,7 @@ 56 - + @@ -2188,7 +2361,7 @@ 2525.00 - 200.00 + 1350.00 300.00 @@ -2218,7 +2391,7 @@ - + @@ -2227,7 +2400,7 @@ 25.00 - 1225.00 + 425.00 800.00 @@ -2236,7 +2409,7 @@ 71 - + @@ -2244,7 +2417,7 @@ 2125.00 - 225.00 + 1375.00 300.00 @@ -2291,7 +2464,7 @@ - + @@ -2301,7 +2474,7 @@ 1700.00 - 1050.00 + 2100.00 300.00 @@ -2344,7 +2517,7 @@ - + @@ -2354,13 +2527,29 @@ 475.00 - 1625.00 + 75.00 300.00 150.00 66 + + + + id + administrations + + + 0 + 0 + + + + + + + @@ -2391,22 +2580,6 @@ - - - - id - administrations - - - 0 - 0 - - - - - - - @@ -2429,7 +2602,7 @@ - + @@ -2438,7 +2611,7 @@ 1700.00 - 1350.00 + 1325.00 300.00 @@ -2482,7 +2655,7 @@ - + @@ -2492,7 +2665,7 @@ 2525.00 - 2350.00 + 175.00 300.00 @@ -2534,7 +2707,7 @@ - + @@ -2543,7 +2716,7 @@ 475.00 - 875.00 + 1625.00 300.00 @@ -2589,7 +2762,7 @@ - + @@ -2598,7 +2771,7 @@ 1700.00 - 1450.00 + 2200.00 300.00 @@ -2639,7 +2812,7 @@ - + @@ -2648,13 +2821,29 @@ 75.00 - 1750.00 + 200.00 300.00 150.00 65 + + + + id + administrations + + + 0 + 0 + + + + + + + @@ -2683,22 +2872,6 @@ - - - - id - administrations - - - 0 - 0 - - - - - - - @@ -2721,7 +2894,7 @@ - + @@ -2730,7 +2903,7 @@ 1300.00 - 575.00 + 1325.00 300.00 @@ -2775,7 +2948,7 @@ - + @@ -2784,7 +2957,7 @@ 475.00 - 2025.00 + 2375.00 300.00 @@ -2825,7 +2998,7 @@ - + @@ -2834,7 +3007,7 @@ 2075.00 - 25.00 + 1175.00 800.00 @@ -2843,7 +3016,7 @@ 51 - + @@ -2851,7 +3024,7 @@ 475.00 - 125.00 + 875.00 300.00 @@ -2912,7 +3085,7 @@ - + @@ -2922,7 +3095,7 @@ 1700.00 - 575.00 + 1625.00 300.00 @@ -2978,7 +3151,7 @@ - + @@ -2988,7 +3161,7 @@ 75.00 - 1275.00 + 475.00 300.00 @@ -3019,7 +3192,7 @@ - + @@ -3028,7 +3201,7 @@ 2525.00 - 1925.00 + 475.00 300.00 @@ -3056,7 +3229,7 @@ - + @@ -3065,7 +3238,7 @@ 900.00 - 575.00 + 1325.00 300.00 @@ -3144,7 +3317,7 @@ - + @@ -3154,7 +3327,7 @@ 2075.00 - 1875.00 + 425.00 800.00 @@ -3163,7 +3336,7 @@ 75 - + @@ -3171,7 +3344,7 @@ 2075.00 - 1450.00 + 750.00 800.00 @@ -3180,7 +3353,7 @@ 50 - + @@ -3188,7 +3361,7 @@ 475.00 - 1275.00 + 475.00 300.00 @@ -3228,7 +3401,7 @@ - + @@ -3237,7 +3410,7 @@ 2125.00 - 775.00 + 1925.00 300.00 @@ -3278,17 +3451,77 @@ - + + + + + + 75.00 + 2150.00 + + + 325.00 + 100.00 + + 88 + + + + 1 + id + travaux_demarches_types + + + 0 + 0 + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + 475.00 - 2150.00 + 2500.00 300.00 @@ -3335,7 +3568,7 @@ - + @@ -3343,8 +3576,8 @@ - 900.00 - 1950.00 + 1325.00 + 575.00 300.00 @@ -3392,7 +3625,7 @@ - + @@ -3401,7 +3634,7 @@ 75.00 - 175.00 + 925.00 300.00 @@ -3430,17 +3663,17 @@ - + - + 850.00 - 1600.00 + 2675.00 775.00 @@ -3449,15 +3682,67 @@ 55 - + + + + + + 475.00 + 2025.00 + + + 300.00 + 125.00 + + 86 + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 75.00 - 300.00 + 1050.00 300.00 @@ -3540,7 +3825,7 @@ - + @@ -3550,7 +3835,7 @@ 2125.00 - 75.00 + 1225.00 300.00 @@ -3616,7 +3901,7 @@ - + @@ -3626,7 +3911,7 @@ 2525.00 - 925.00 + 2075.00 300.00 @@ -3665,7 +3950,7 @@ - + @@ -3675,7 +3960,7 @@ 2125.00 - 1925.00 + 475.00 327.00 @@ -3754,16 +4039,123 @@ - + + + + + + 1300.00 + 2400.00 + + + 275.00 + 200.00 + + 84 + + + + 1 + + + + + + + + + + id + titres_travaux_demarches + + + 0 + 0 + + + + + + + + + + + id + etapes_types + + + 0 + 0 + + + + + + + + + + id + etapes_statuts + + + 0 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 475.00 - 275.00 + 1025.00 300.00 @@ -3794,7 +4186,7 @@ - + @@ -3803,7 +4195,7 @@ 1700.00 - 700.00 + 1750.00 300.00 @@ -3878,7 +4270,7 @@ - + @@ -3888,7 +4280,7 @@ 2525.00 - 2450.00 + 275.00 300.00 @@ -3914,7 +4306,7 @@ - + @@ -3923,7 +4315,7 @@ 25.00 - 25.00 + 775.00 800.00 @@ -3932,7 +4324,7 @@ 57 - + @@ -3940,7 +4332,7 @@ 475.00 - 750.00 + 1500.00 300.00 @@ -3971,16 +4363,33 @@ - + + + + + + 850.00 + 2350.00 + + + 775.00 + 300.00 + + 82 + + + + + 2125.00 - 500.00 + 1650.00 300.00 @@ -4003,7 +4412,7 @@ - + @@ -4012,7 +4421,7 @@ 75.00 - 675.00 + 1425.00 300.00 @@ -4080,7 +4489,7 @@ - + @@ -4090,7 +4499,7 @@ 2525.00 - 600.00 + 1750.00 300.00 @@ -4109,7 +4518,7 @@ - + @@ -4118,7 +4527,7 @@ 25.00 - 1575.00 + 25.00 800.00 @@ -4127,7 +4536,7 @@ 72 - + @@ -4135,7 +4544,7 @@ 75.00 - 1400.00 + 600.00 300.00 @@ -4179,7 +4588,7 @@ - + @@ -4187,8 +4596,8 @@ - 850.00 - 1900.00 + 1275.00 + 525.00 775.00 @@ -4197,7 +4606,7 @@ 58 - + @@ -4205,7 +4614,7 @@ 2525.00 - 1150.00 + 2300.00 300.00 @@ -4249,7 +4658,7 @@ - + @@ -4259,7 +4668,7 @@ 2525.00 - 500.00 + 1650.00 300.00 @@ -4282,7 +4691,7 @@ - + @@ -4291,7 +4700,7 @@ 2075.00 - 2200.00 + 25.00 800.00 @@ -4307,7 +4716,7 @@ - + @@ -4319,7 +4728,7 @@ - + @@ -4328,8 +4737,8 @@ - - + + diff --git a/manual/database/camino-db.svg b/docs-sources/assets/database/camino-db.svg similarity index 100% rename from manual/database/camino-db.svg rename to docs-sources/assets/database/camino-db.svg diff --git a/manual/readme.md b/manual/readme.md deleted file mode 100644 index a660d8293..000000000 --- a/manual/readme.md +++ /dev/null @@ -1,11 +0,0 @@ -# Camino - -> le cadastre minier numérique ouvert - -[Camino](http://camino.beta.gouv.fr/) est le nouvel outil de gestion du domaine minier de l'administration. Il présente les caractéristiques des titres miniers sur une carte et permet de les suivre à chaque étape de leur vie. - -## Usages - -- Les **entreprises** gagnent en visibilité sur leur business et cela simplifie leurs démarches. -- Les **citoyens** accèdent simplement aux informations publiques. -- Les **agents publics** centralisent leurs contributions et bénéficient d’une vision partagée. diff --git a/package-lock.json b/package-lock.json index 320b37b99..67568349c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1014,6 +1014,53 @@ } } }, + "@microsoft/tsdoc": { + "version": "0.12.20", + "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.12.20.tgz", + "integrity": "sha512-/b13m37QZYPV6nCOiqkFyvlQjlTNvAcQpgFZ6ZKIqtStJxNdqVo/frULubxMUMWi6p9Uo5f4BRlguv5ViFcL0A==", + "dev": true + }, + "@microsoft/tsdoc-config": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/@microsoft/tsdoc-config/-/tsdoc-config-0.13.4.tgz", + "integrity": "sha512-B3F3mndJTGUmcHTt8chqjN4EPvxJlkzZIkrZUHwJvKvbr74HEe6mB8Aa6Rlh8jj6mHq7mmtyiUn17+5zr4vbXw==", + "dev": true, + "requires": { + "@microsoft/tsdoc": "0.12.20", + "ajv": "~6.10.2", + "jju": "~1.4.0", + "resolve": "~1.12.0" + }, + "dependencies": { + "ajv": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "resolve": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.3.tgz", + "integrity": "sha512-hF6+hAPlxjqHWrw4p1rF3Wztbgxd4AjA5VlUzY5zcTb4J8D3JK4/1RjU48pHz2PJWzGVsLB1VWZkvJzhK2CCOA==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + } + } + }, "@npmcli/ci-detect": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@npmcli/ci-detect/-/ci-detect-1.2.0.tgz", @@ -3218,6 +3265,12 @@ } } }, + "compare-versions": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz", + "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==", + "dev": true + }, "component-emitter": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", @@ -5154,6 +5207,16 @@ "integrity": "sha512-v/KBnfyaOMPmZc/dmc6ozOdWqekGp7bBGq4jLAecEfPGmfKiWS4sA8sC0LqiV9w5qmXAtXVn4M3p1jSyhY85SQ==", "dev": true }, + "eslint-plugin-tsdoc": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-tsdoc/-/eslint-plugin-tsdoc-0.2.5.tgz", + "integrity": "sha512-KXquQlf/3u2U7A3LebYdcmAMtMxmUW3HN4JtOluq+iRuRPbBNVeUlg4SOXrnqSuQCOpSITHlPhP418IwjExA+w==", + "dev": true, + "requires": { + "@microsoft/tsdoc": "0.12.20", + "@microsoft/tsdoc-config": "0.13.4" + } + }, "eslint-scope": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", @@ -7051,6 +7114,12 @@ "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" }, + "highlight.js": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.1.1.tgz", + "integrity": "sha512-b4L09127uVa+9vkMgPpdUQP78ickGbHEQTWeBrQFTJZ4/n2aihWOGS0ZoUqAwjVmfjhq/C76HRzkqwZhK4sBbg==", + "dev": true + }, "homedir-polyfill": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", @@ -9741,6 +9810,12 @@ "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", "integrity": "sha1-tcg1G5Rky9dQM1p5ZQoOwOVhGN0=" }, + "lunr": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.8.tgz", + "integrity": "sha512-oxMeX/Y35PNFuZoHp+jUj5OSEmLCaIH4KTFJh7a93cHBoFmpw2IoPs22VIz7vyO2YUnx2Tn9dzIwO2P/4quIRg==", + "dev": true + }, "make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -9839,6 +9914,12 @@ "object-visit": "^1.0.0" } }, + "marked": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-1.0.0.tgz", + "integrity": "sha512-Wo+L1pWTVibfrSr+TTtMuiMfNzmZWiOPeO7rZsQUY5bgsxpHesBEcIWJloWVTFnrMXnf/TL30eTFSGJddmQAng==", + "dev": true + }, "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -14270,6 +14351,67 @@ "is-typedarray": "^1.0.0" } }, + "typedoc": { + "version": "0.17.7", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.17.7.tgz", + "integrity": "sha512-PEnzjwQAGjb0O8a6VDE0lxyLAadqNujN5LltsTUhZETolRMiIJv6Ox+Toa8h0XhKHqAOh8MOmB0eBVcWz6nuAw==", + "dev": true, + "requires": { + "fs-extra": "^8.1.0", + "handlebars": "^4.7.6", + "highlight.js": "^10.0.0", + "lodash": "^4.17.15", + "lunr": "^2.3.8", + "marked": "1.0.0", + "minimatch": "^3.0.0", + "progress": "^2.0.3", + "shelljs": "^0.8.4", + "typedoc-default-themes": "^0.10.1" + } + }, + "typedoc-default-themes": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/typedoc-default-themes/-/typedoc-default-themes-0.10.1.tgz", + "integrity": "sha512-SuqAQI0CkwhqSJ2kaVTgl37cWs733uy9UGUqwtcds8pkFK8oRF4rZmCq+FXTGIb9hIUOu40rf5Kojg0Ha6akeg==", + "dev": true, + "requires": { + "lunr": "^2.3.8" + } + }, + "typedoc-plugin-external-module-name": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/typedoc-plugin-external-module-name/-/typedoc-plugin-external-module-name-4.0.3.tgz", + "integrity": "sha512-2PjEN9kdmkB7NxN3DEax6yDIPjq7HV8qELQhkSRJGxJs/8G/ZwPPvXT0z6hUqtWVr6MeCjpAoYJFzHo04C14Aw==", + "dev": true, + "requires": { + "lodash": "^4.1.2", + "semver": "^7.1.1" + }, + "dependencies": { + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "dev": true + } + } + }, + "typedoc-plugin-pages": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typedoc-plugin-pages/-/typedoc-plugin-pages-1.0.1.tgz", + "integrity": "sha512-eOcjcvXZPxyvcpl6U5uP08SqjYz20F7DGZC4kOD1ES2p+2hde6rbF4MPuOjtzcGUOrQeev2HhiaIi+07SiGNsQ==", + "dev": true, + "requires": { + "compare-versions": "^3.6.0", + "typedoc-default-themes": "^0.10.1" + } + }, + "typedoc-plugin-sourcefile-url": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typedoc-plugin-sourcefile-url/-/typedoc-plugin-sourcefile-url-1.0.6.tgz", + "integrity": "sha512-xHq9DzkoQywS7FyPneMm2/Hr9GRoCpjSQXkVN0W6SCJKP7fguqg2tasgh+8l5/mW6YSYvqCqEbkSYLbuD4Y6gA==", + "dev": true + }, "typescript": { "version": "3.9.5", "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.5.tgz", diff --git a/package.json b/package.json index 820cddf60..9c7814009 100644 --- a/package.json +++ b/package.json @@ -42,6 +42,7 @@ "dev:monthly": "ts-node --transpile-only ./src/business/monthly.ts", "dev:schema": "node dev/api/graphql-dsl-to-query-convert.js", "dev:update": "npm-check-updates -u && npm install && npm audit fix", + "docs": "rm -rf docs && typedoc src --sourcefile-url-prefix \"https://github.com/MTES-MCT/camino-api/blob/master/\"", "lint": "eslint --fix .", "monthly": "node ./dist/business/monthly.js", "release": "standard-version && git push --follow-tags upstream master && conventional-github-releaser", @@ -140,6 +141,7 @@ "eslint-plugin-prettier": "^3.1.4", "eslint-plugin-promise": "^4.2.1", "eslint-plugin-standard": "^4.0.1", + "eslint-plugin-tsdoc": "^0.2.5", "jest": "^26.0.1", "nodemon": "^2.0.4", "pg-escape": "^0.2.0", @@ -148,7 +150,11 @@ "standard-version": "^8.0.0", "supertest": "^4.0.2", "ts-jest": "^26.1.0", - "ts-node": "^8.10.2" + "ts-node": "^8.10.2", + "typedoc": "^0.17.7", + "typedoc-plugin-external-module-name": "^4.0.3", + "typedoc-plugin-pages": "^1.0.1", + "typedoc-plugin-sourcefile-url": "^1.0.6" }, "prettier": { "semi": false, @@ -162,6 +168,7 @@ "eslint:recommended", "plugin:@typescript-eslint/eslint-recommended", "plugin:@typescript-eslint/recommended", + "plugin:@typescript-eslint/recommended", "standard", "prettier", "prettier/@typescript-eslint", diff --git a/src/api/_format/administrations.ts b/src/api/_format/administrations.ts index 31642bd02..4ba9f7d9c 100644 --- a/src/api/_format/administrations.ts +++ b/src/api/_format/administrations.ts @@ -3,6 +3,15 @@ import { IAdministration, IUtilisateur } from '../../types' import { titresFormat } from './titres' import { utilisateurFormat } from './utilisateurs' +/** + * Formate une administration en fonction du profil de l'utilisateur + * + * @param user - Utilisateur + * @param administration - Administration à formater + * @returns Une administration formatée + * + */ + const administrationFormat = ( user: IUtilisateur | undefined, administration: IAdministration diff --git a/src/api/_format/entreprises.ts b/src/api/_format/entreprises.ts index 06f24319c..f81fbfa06 100644 --- a/src/api/_format/entreprises.ts +++ b/src/api/_format/entreprises.ts @@ -3,6 +3,15 @@ import { IEntreprise, IUtilisateur } from '../../types' import { titresFormat } from './titres' import { utilisateurFormat } from './utilisateurs' +/** + * Formate une entreprise en fonction du profil de l'utilisateur + * + * @param user - Utilisateur + * @param administration - Entreprise à formater + * @returns Une entreprise formatée + * + */ + const entrepriseFormat = ( user: IUtilisateur | undefined, entreprise: IEntreprise diff --git a/src/api/_validate/titre-activite-input-validate.ts b/src/api/_validate/titre-activite-input-validate.ts index 1008bc71d..54a917104 100644 --- a/src/api/_validate/titre-activite-input-validate.ts +++ b/src/api/_validate/titre-activite-input-validate.ts @@ -4,7 +4,7 @@ import contenuNumbersCheck from './utils/contenu-numbers-check' import propsDatesCheck from './utils/props-dates-check' import contenuDatesCheck from './utils/contenu-dates-check' -const dateProps = (['date'] as unknown) as [keyof ITitreActivite] +const datePropsNames = (['date'] as unknown) as [keyof ITitreActivite] const titreActiviteInputValidate = ( titreActivite: ITitreActivite, @@ -18,7 +18,7 @@ const titreActiviteInputValidate = ( } // 1. le format des dates est correct - const errorsDates = propsDatesCheck(dateProps, titreActivite) + const errorsDates = propsDatesCheck(datePropsNames, titreActivite) if (errorsDates) { errors.push(errorsDates) } diff --git a/src/api/_validate/utils/props-dates-check.ts b/src/api/_validate/utils/props-dates-check.ts index ee5ce09cb..ff9042c56 100644 --- a/src/api/_validate/utils/props-dates-check.ts +++ b/src/api/_validate/utils/props-dates-check.ts @@ -1,11 +1,24 @@ import { dateValidate } from '../../../tools/date-validate' +import { ITitreActivite, ITitreEtape } from '../../../types' -const propsDatesCheck = (props: [keyof T], element: T) => { - const errors = props.reduce((errors: string[], prop) => { - if (element[prop]) { - const error = dateValidate((element[prop] as unknown) as string) +/** + * Vérifie que les champs `date` d'une étape ou activité sont valides + * + * @param propsNames - Noms des propriétés date de l'étape ou activité + * @param element - Étape ou activité dont on vérifie les propriétés date + * @returns un tableau d'erreurs si au moins une date est invalide + * + */ + +const propsDatesCheck = ( + propsNames: [keyof T], + element: T +) => { + const errors = propsNames.reduce((errors: string[], propName) => { + if (element[propName]) { + const error = dateValidate((element[propName] as unknown) as string) if (error) { - errors.push(`le champ "${prop}" n'est pas une date valide`) + errors.push(`le champ "${propName}" n'est pas une date valide`) } } diff --git a/src/api/graphql/schemas/index.graphql b/src/api/graphql/schemas/index.graphql index 39dadfa4c..fb94b96aa 100644 --- a/src/api/graphql/schemas/index.graphql +++ b/src/api/graphql/schemas/index.graphql @@ -15,37 +15,36 @@ # import * from 'titres.graphql' # import * from 'utilisateurs.graphql' -"__*__ Type du contenu json" +"Type du contenu json" scalar Json -"__*__ Type du fichier" +"Type du fichier" scalar FileUpload """ -# Query -## _Requêtes en lecture_ +# API de Camino -- [Comment tester l'API Camino ?](https://github.com/MTES-MCT/camino-api/tree/master/manual/api) +> [Documentation](https://docs.camino.beta.gouv.fr) -_Query_ un type _racine_ de GraphQL. +## Lecture -Certaines requêtes sont __publiques__. +Certaines requêtes sont publiques. -Certaines requêtes sont __protégées__ et nécessitent une authentification par token (jwt). Elles sont signalées par une étoile __*__. +Certaines requêtes sont protégées et nécessitent une authentification par token (jwt). -Enfin, certaines requêtes sont __semi-publiques__ et retournent un résultat plus ou moins riche selon le niveau de permission de l'utilisateur authentifié. Elles sont signalées par un plus __+__. +Enfin, certaines requêtes retournent un résultat plus ou moins riche selon le niveau de permission de l'utilisateur authentifié. """ type Query { "Version de l'API" version: String - "__*__ Utilisateur en fonction du token" + "Utilisateur en fonction du token" moi: Utilisateur - "__+__ Titre minier en fonction de son id" + "Titre minier en fonction de son id" titre(id: ID!): Titre - "__+__ Liste de titres miniers, en fonction d'arguments (optionnels)" + "Liste de titres miniers, en fonction d'arguments (optionnels)" titres( intervalle: Int page: Int @@ -61,7 +60,7 @@ type Query { territoires: String ): Titres - "__+__ Liste de titres miniers, en fonction d'arguments (optionnels)" + "Liste de titres miniers, en fonction d'arguments (optionnels)" demarches( intervalle: Int page: Int @@ -81,7 +80,7 @@ type Query { titresTerritoires: String ): Demarches - "__*__ Activité en fonction de son id" + "Activité en fonction de son id" activite(id: ID!): Activite "Liste des activités" @@ -118,10 +117,10 @@ type Query { "Types d'étapes" etapesTypes(titreDemarcheId: ID, titreEtapeId: ID): [EtapeType] - "__*__ Utilisateur en fonction de son id" + "Utilisateur en fonction de son id" utilisateur(id: ID!): Utilisateur - "__*__ Liste d'utilisateurs en fonction d'arguments (optionnels)" + "Liste d'utilisateurs en fonction d'arguments (optionnels)" utilisateurs( intervalle: Int page: Int @@ -151,7 +150,7 @@ type Query { types: [TitreTypeType] unites: [Unite] - "__+__ Liste des permissions utilisateurs" + "Liste des permissions utilisateurs" permissions: [Permission] "Entreprise en fonction de son id" @@ -183,35 +182,30 @@ type Query { } """ -# Mutation -## _Requêtes en écriture_ +## Écriture -- [Comment tester l'API Camino ?](https://github.com/MTES-MCT/camino-api/tree/master/manual/api) - -_Mutation_ un type _racine_ de GraphQL. - -Ces requêtes sont __protégées__. Elles nécessitent une authentification par token (jwt) et un niveau de permission suffisant. Elle sont signalées par une étoile __*__. +Ces requêtes sont __protégées__. Elles nécessitent une authentification par token (jwt) et un niveau de permission suffisant. """ type Mutation { - "__*__ Connecte l'utilisateur en fonction de ses identifiants" + "Connecte l'utilisateur en fonction de ses identifiants" utilisateurTokenCreer(email: String!, motDePasse: String!): UtilisateurToken - "__*__ Connecte l'utilisateur en fonction du ticket Cerbère" + "Connecte l'utilisateur en fonction du ticket Cerbère" utilisateurCerbereTokenCreer(ticket: String!): UtilisateurToken - "__*__ Connecte l'utilisateur en fonction du ticket Cerbère" + "Connecte l'utilisateur en fonction du ticket Cerbère" utilisateurCerbereUrlObtenir(url: String!): String - "__*__ Crée un utilisateur" + "Crée un utilisateur" utilisateurCreer(utilisateur: InputUtilisateurCreation!): Utilisateur - "__*__ Modifie un utilisateur" + "Modifie un utilisateur" utilisateurModifier(utilisateur: InputUtilisateurModification!): Utilisateur - "__*__ Supprime un utilisateur" + "Supprime un utilisateur" utilisateurSupprimer(id: ID!): Utilisateur - "__*__ Modifie le mot de passe d'un utilisateur" + "Modifie le mot de passe d'un utilisateur" utilisateurMotDePasseModifier( id: ID! motDePasse: String! @@ -219,64 +213,64 @@ type Mutation { motDePasseNouveau2: String! ): Utilisateur - "__*__ Envoie un email à un utilisateur contenant une url pour modifier son mot de passe" + "Envoie un email à un utilisateur contenant une url pour modifier son mot de passe" utilisateurMotDePasseEmailEnvoyer(email: String!): String - "__*__ Envoie un email à un utilisateur contenant une url pour créer son compte" + "Envoie un email à un utilisateur contenant une url pour créer son compte" utilisateurCreationEmailEnvoyer(email: String!): String - "__*__ Initialise un mot de passe utilisateur" + "Initialise un mot de passe utilisateur" utilisateurMotDePasseInitialiser( motDePasse1: String! motDePasse2: String! ): UtilisateurToken - "__*__ Crée un titre minier" + "Crée un titre minier" titreCreer(titre: InputTitreCreation!): Titre - "__*__ Modifie un titre minier" + "Modifie un titre minier" titreModifier(titre: InputTitreModification!): Titre - "__*__ Supprime un titre minier" + "Supprime un titre minier" titreSupprimer(id: ID!): Titre - "__*__ Crée une démarche et met à jour le titre minier" + "Crée une démarche et met à jour le titre minier" demarcheCreer(demarche: InputDemarcheCreation!): Titre - "__*__ Modifie une démarche et met à jour le titre minier" + "Modifie une démarche et met à jour le titre minier" demarcheModifier(demarche: InputDemarcheModification!): Titre - "__*__ Supprime une démarche et met à jour le titre minier" + "Supprime une démarche et met à jour le titre minier" demarcheSupprimer(id: ID!): Titre - "__*__ Crée une étape et met à jour le titre minier" + "Crée une étape et met à jour le titre minier" etapeCreer(etape: InputEtapeCreation!): Titre - "__*__ Modifie une étape et met à jour le titre minier" + "Modifie une étape et met à jour le titre minier" etapeModifier(etape: InputEtapeModification!): Titre - "__*__ Supprime une étape et met à jour le titre minier" + "Supprime une étape et met à jour le titre minier" etapeSupprimer(id: ID!): Titre etapeJustificatifsAssocier(id: ID!, documentsIds: [ID]!): Titre etapeJustificatifDissocier(id: ID!, documentId: ID): Titre - "__*__ Crée un document et met à jour le titre minier" + "Crée un document et met à jour le titre minier" documentCreer(document: InputDocumentCreation!): Document - "__*__ Modifie un document et met à jour le titre minier" + "Modifie un document et met à jour le titre minier" documentModifier(document: InputDocumentModification!): Document - "__*__ Supprime un document et met à jour le titre minier" + "Supprime un document et met à jour le titre minier" documentSupprimer(id: ID!): Boolean - "__*__ Crée ou modifie une activité" + "Crée ou modifie une activité" activiteModifier(activite: InputActiviteModification!): Activite - "__*__ Crée une entreprise" + "Crée une entreprise" entrepriseCreer(entreprise: InputEntrepriseCreation!): Entreprise - "__*__ Modifie une entreprise" + "Modifie une entreprise" entrepriseModifier(entreprise: InputEntrepriseModification!): Entreprise } diff --git a/tsconfig.json b/tsconfig.json index b0af94de2..2093dc8db 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -19,5 +19,89 @@ "types": ["node", "jest"] }, "exclude": ["node_modules", "**/*.spec.ts", "**/*.test.ts", "**/__mocks__/*"], - "include": ["src/**/*"] + "include": ["src/**/*"], + "typedocOptions": { + "mode": "modules", + "out": "docs", + "exclude": ["**/*+(.test|.spec|.e2e).ts", "**/__mocks__/**/*"], + "includeVersion": true, + "pages": { + "groups": [ + { + "title": "Utilisation", + "pages": [ + { + "title": "Introduction", + "source": "./docs-sources/01-utilisation/01-introduction.md" + }, + { + "title": "API GraphQL", + "source": "./docs-sources/01-utilisation/02-graphql.md" + }, + { + "title": "API Rest", + "source": "./docs-sources/01-utilisation/03-rest.md" + }, + { + "title": "Flux GeoJson", + "source": "./docs-sources/01-utilisation/04-flux.md" + } + ] + }, + + { + "title": "Developpement", + "pages": [ + { + "title": "Introduction", + "source": "./docs-sources/02-developpement/01-introduction.md" + }, + { + "title": "Base de données", + "source": "./docs-sources/02-developpement/02-base-de-donnees.md" + } + ] + }, + { + "title": "Architecture", + "pages": [ + { + "title": "Introduction", + "source": "./docs-sources/03-architecture/01-introduction.md" + }, + { + "title": "Docker", + "source": "./docs-sources/03-architecture/02-docker.md" + }, + { + "title": "Scripts de sauvegarde et restauration", + "source": "./docs-sources/03-architecture/03-scripts-sauvegarde-restaurations.md" + } + ] + }, + { + "title": "Deploiement", + "pages": [ + { + "title": "Introduction", + "source": "./docs-sources/04-deploiement/01-introduction.md" + }, + { + "title": "Sauvegarde et restauration", + "source": "./docs-sources/04-deploiement/02-sauvegarde-restauration.md" + }, + { + "title": "Base de données", + "source": "./docs-sources/04-deploiement/03-base-de-donnees.md" + }, + { + "title": "Fichiers", + "source": "./docs-sources/04-deploiement/04-fichiers.md" + } + ] + } + ] + }, + "theme": "pages-plugin" + } }