@opentermsarchive/engine 0.17.0 → 0.17.2

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opentermsarchive/engine",
3
- "version": "0.17.0",
3
+ "version": "0.17.2",
4
4
  "description": "Tracks and makes visible changes to the terms of online services",
5
5
  "homepage": "https://github.com/ambanum/OpenTermsArchive#readme",
6
6
  "bugs": {
@@ -24,6 +24,13 @@
24
24
  "ota-track": "./bin/track.js",
25
25
  "ota-validate-declarations": "./bin/validate-declarations.js"
26
26
  },
27
+ "files": [
28
+ "bin",
29
+ "config",
30
+ "scripts",
31
+ "src",
32
+ ".eslintrc.yaml"
33
+ ],
27
34
  "scripts": {
28
35
  "dataset:generate": "node scripts/dataset/main.js",
29
36
  "dataset:release": "node scripts/dataset/main.js --publish --remove-local-copy",
@@ -40,12 +47,6 @@
40
47
  "posttest": "npm run lint",
41
48
  "test:debug": "npm run test -- --inspect-brk --exit"
42
49
  },
43
- "files": [
44
- "bin",
45
- "config",
46
- "scripts",
47
- "src"
48
- ],
49
50
  "dependencies": {
50
51
  "@accordproject/markdown-cicero": "^0.15.2",
51
52
  "@accordproject/markdown-pdf": "^0.15.2",
@@ -4,7 +4,7 @@ Export the versions dataset into a ZIP file and publish it to GitHub releases.
4
4
 
5
5
  ## Configuring
6
6
 
7
- You can change the configuration in the appropriate config file in the `config` folder. See the [main README](https://github.com/ambanum/OpenTermsArchive#configuring) for documentation on using the configuration file.
7
+ You can change the configuration in the appropriate config file in the `config` folder. See the [main README](../../README.md#configuring) for documentation on using the configuration file.
8
8
 
9
9
  ## Running
10
10
 
@@ -34,4 +34,4 @@ node scripts/dataset/main.js --schedule --publish --remove-local-copy
34
34
 
35
35
  ## Adding renaming rules
36
36
 
37
- See the [renamer module documentation](../renamer/README.md).
37
+ See the [renamer module documentation](../utils/renamer/README.md).
@@ -31,27 +31,27 @@ It has been generated with [Open Terms Archive](https://opentermsarchive.org).
31
31
 
32
32
  ### Dataset format
33
33
 
34
- This dataset represents each version of a document as a separate [Markdown](https://spec.commonmark.org/0.30/) file, nested in a directory with the name of the service provider and in a directory with the name of the document type. The filesystem layout will look like below.
34
+ This dataset represents each version of a document as a separate [Markdown](https://spec.commonmark.org/0.30/) file, nested in a directory with the name of the service provider and in a directory with the name of the terms type. The filesystem layout will look like below.
35
35
 
36
36
  \`\`\`
37
37
  ├ README.md
38
38
  ├┬ Service provider 1 (e.g. Facebook)
39
- │├┬ Document type 1 (e.g. Terms of Service)
39
+ │├┬ Terms type 1 (e.g. Terms of Service)
40
40
  ││├ YYYY-DD-MMTHH-MM-SSZ.md (e.g. 2021-08-01T01-03-12Z.md)
41
41
  ┆┆┆
42
42
  ││└ YYYY-DD-MMTHH-MM-SSZ.md (e.g. 2021-10-03T08-12-25Z.md)
43
43
  ┆┆
44
- │└┬ Document type X (e.g. Privacy Policy)
44
+ │└┬ Terms type X (e.g. Privacy Policy)
45
45
  │ ├ YYYY-DD-MMTHH-MM-SSZ.md (e.g. 2021-05-02T03-02-15Z.md)
46
46
  ┆ ┆
47
47
  │ └ YYYY-DD-MMTHH-MM-SSZ.md (e.g. 2021-11-14T12-36-45Z.md)
48
48
 
49
49
  └┬ Service provider Y (e.g. Google)
50
- ├┬ Document type 1 (e.g. Developer Terms)
50
+ ├┬ Terms type 1 (e.g. Developer Terms)
51
51
  │├ YYYY-DD-MMTHH-MM-SSZ.md (e.g. 2019-03-12T04-18-22Z.md)
52
52
  ┆┆
53
53
  │└ YYYY-DD-MMTHH-MM-SSZ.md (e.g. 2021-12-04T22-47-05Z.md)
54
- └┬ Document type Z (e.g. Privacy Policy)
54
+ └┬ Terms type Z (e.g. Privacy Policy)
55
55
 
56
56
  ├ YYYY-DD-MMTHH-MM-SSZ.md (e.g. 2021-05-02T03-02-15Z.md)
57
57
 
@@ -8,27 +8,27 @@ It has been generated with [Open Terms Archive](https://opentermsarchive.org).
8
8
 
9
9
  ### Dataset format
10
10
 
11
- This dataset represents each version of a document as a separate [Markdown](https://spec.commonmark.org/0.30/) file, nested in a directory with the name of the service provider and in a directory with the name of the document type. The filesystem layout will look like below.
11
+ This dataset represents each version of a document as a separate [Markdown](https://spec.commonmark.org/0.30/) file, nested in a directory with the name of the service provider and in a directory with the name of the terms type. The filesystem layout will look like below.
12
12
 
13
13
  ```
14
14
  ├ README.md
15
15
  ├┬ Service provider 1 (e.g. Facebook)
16
- │├┬ Document type 1 (e.g. Terms of Service)
16
+ │├┬ Terms type 1 (e.g. Terms of Service)
17
17
  ││├ YYYY-DD-MMTHH-MM-SSZ.md (e.g. 2021-08-01T01-03-12Z.md)
18
18
  ┆┆┆
19
19
  ││└ YYYY-DD-MMTHH-MM-SSZ.md (e.g. 2021-10-03T08-12-25Z.md)
20
20
  ┆┆
21
- │└┬ Document type X (e.g. Privacy Policy)
21
+ │└┬ Terms type X (e.g. Privacy Policy)
22
22
  │ ├ YYYY-DD-MMTHH-MM-SSZ.md (e.g. 2021-05-02T03-02-15Z.md)
23
23
  ┆ ┆
24
24
  │ └ YYYY-DD-MMTHH-MM-SSZ.md (e.g. 2021-11-14T12-36-45Z.md)
25
25
 
26
26
  └┬ Service provider Y (e.g. Google)
27
- ├┬ Document type 1 (e.g. Developer Terms)
27
+ ├┬ Terms type 1 (e.g. Developer Terms)
28
28
  │├ YYYY-DD-MMTHH-MM-SSZ.md (e.g. 2019-03-12T04-18-22Z.md)
29
29
  ┆┆
30
30
  │└ YYYY-DD-MMTHH-MM-SSZ.md (e.g. 2021-12-04T22-47-05Z.md)
31
- └┬ Document type Z (e.g. Privacy Policy)
31
+ └┬ Terms type Z (e.g. Privacy Policy)
32
32
 
33
33
  ├ YYYY-DD-MMTHH-MM-SSZ.md (e.g. 2021-05-02T03-02-15Z.md)
34
34
 
@@ -54,6 +54,6 @@ NODE_ENV=import node scripts/import/index.js
54
54
  The script will:
55
55
 
56
56
  - Ignore commits which are not a document snapshot (like renaming or documentation commits).
57
- - Rename document types according to declared rules. See the [renamer module documentation](../renamer/README.md).
57
+ - Rename terms types according to declared rules. See the [renamer module documentation](../renamer/README.md).
58
58
  - Rename services according to declared rules. See the [renamer module documentation](../renamer/README.md).
59
59
  - Handle duplicates, so you can run it twice without worrying about duplicate entries in the database.
@@ -2,7 +2,7 @@ __:warning: These scripts are no longer up-to-date with the codebase and are not
2
2
 
3
3
  # Rewrite history
4
4
 
5
- As some document types or service names can change over time or as we need to import history from other tools, provided they have an history with the same structure as Open Terms Archive, we need a way to rewrite, reorder and apply changes to the snapshots or versions history.
5
+ As some terms types or service names can change over time or as we need to import history from other tools, provided they have an history with the same structure as Open Terms Archive, we need a way to rewrite, reorder and apply changes to the snapshots or versions history.
6
6
 
7
7
  The script works by reading commits from a **source** repository, applying changes and then committing the result in another, empty or not, **target** repository. So a source repository with commits is required.
8
8
 
@@ -125,7 +125,7 @@ Currently, the script will:
125
125
 
126
126
  - Ignore commits which are not a document snapshot (like renaming or documentation commits)
127
127
  - Reorder commits according to their author date
128
- - Rename document types according to declared rules
128
+ - Rename terms types according to declared rules
129
129
  - Rename services according to declared rules
130
130
  - Skip commits with empty content
131
131
  - Skip commits which do not change the document
@@ -101,7 +101,7 @@ let recorder;
101
101
  );
102
102
 
103
103
  if (!documentDeclaration) {
104
- console.log(`⌙ Skip unknown document type "${documentType}" for service "${serviceId}"`);
104
+ console.log(`⌙ Skip unknown terms type "${documentType}" for service "${serviceId}"`);
105
105
  continue;
106
106
  }
107
107
 
@@ -1,6 +1,6 @@
1
1
  # Renamer
2
2
 
3
- This module is used to apply renaming rules to service IDs and document types.
3
+ This module is used to apply renaming rules to service IDs and terms types.
4
4
 
5
5
  ## Usage
6
6
 
@@ -24,9 +24,9 @@ To rename a service, add a rule in `./rules/services.json`, for example, to rena
24
24
  }
25
25
  ```
26
26
 
27
- ### Document type
27
+ ### Terms type
28
28
 
29
- To rename a document type, add a rule in `./rules/documentTypes.json`, for example, to rename "Program Policies" to "Acceptable Use Policy", add the following line in the file:
29
+ To rename a terms type, add a rule in `./rules/documentTypes.json`, for example, to rename "Program Policies" to "Acceptable Use Policy", add the following line in the file:
30
30
 
31
31
  ```json
32
32
  {
@@ -35,9 +35,9 @@ To rename a document type, add a rule in `./rules/documentTypes.json`, for examp
35
35
  }
36
36
  ```
37
37
 
38
- ### Document type for a specific service
38
+ ### Terms type for a specific service
39
39
 
40
- To rename a document type only for a specific service, add a rule in `./rules/servicesDocumentTypes.json`, for example, to rename "Program Policies" to "Acceptable Use Policy" only for Skype, add the following line in the file:
40
+ To rename a terms type only for a specific service, add a rule in `./rules/servicesDocumentTypes.json`, for example, to rename "Program Policies" to "Acceptable Use Policy" only for Skype, add the following line in the file:
41
41
 
42
42
  ```json
43
43
  {
@@ -26,7 +26,7 @@ export function applyRules(serviceId, documentType) {
26
26
  const renamedDocumentType = renamingRules.documentTypes[documentType];
27
27
 
28
28
  if (renamedDocumentType) {
29
- console.log(`⌙ Rename document type "${documentType}" to "${renamedDocumentType}" of "${serviceId}" service`);
29
+ console.log(`⌙ Rename terms type "${documentType}" to "${renamedDocumentType}" of "${serviceId}" service`);
30
30
  documentType = renamedDocumentType;
31
31
  }
32
32
 
@@ -34,7 +34,7 @@ export function applyRules(serviceId, documentType) {
34
34
  && renamingRules.documentTypesByService[serviceId][documentType];
35
35
 
36
36
  if (renamedServiceDocumentType) {
37
- console.log(`⌙ Specific rename document type "${documentType}" to "${renamedServiceDocumentType}" of "${serviceId}" service`);
37
+ console.log(`⌙ Specific rename terms type "${documentType}" to "${renamedServiceDocumentType}" of "${serviceId}" service`);
38
38
  documentType = renamedServiceDocumentType;
39
39
  }
40
40
 
@@ -27,7 +27,7 @@ export default class Recorder {
27
27
  }
28
28
 
29
29
  if (!documentType) {
30
- throw new Error('A document type is required');
30
+ throw new Error('A terms type is required');
31
31
  }
32
32
 
33
33
  if (!fetchDate) {
@@ -51,7 +51,7 @@ export default class Recorder {
51
51
  }
52
52
 
53
53
  if (!documentType) {
54
- throw new Error('A document type is required');
54
+ throw new Error('A terms type is required');
55
55
  }
56
56
 
57
57
  if (!snapshotIds?.length) {
@@ -49,7 +49,7 @@ describe('Recorder', () => {
49
49
 
50
50
  const paramsNameToExpectedTextInError = {
51
51
  serviceId: 'service ID',
52
- documentType: 'document type',
52
+ documentType: 'terms type',
53
53
  fetchDate: 'fetch date',
54
54
  content: 'content',
55
55
  mimeType: 'mime type',
@@ -190,7 +190,7 @@ describe('Recorder', () => {
190
190
 
191
191
  const paramsNameToExpectedTextInError = {
192
192
  serviceId: 'service ID',
193
- documentType: 'document type',
193
+ documentType: 'terms type',
194
194
  snapshotIds: 'snapshot ID',
195
195
  fetchDate: 'fetch date',
196
196
  content: 'content',
@@ -335,7 +335,7 @@ describe('Recorder', () => {
335
335
 
336
336
  const paramsNameToExpectedTextInError = {
337
337
  serviceId: 'service ID',
338
- documentType: 'document type',
338
+ documentType: 'terms type',
339
339
  snapshotIds: 'snapshot ID',
340
340
  fetchDate: 'fetch date',
341
341
  content: 'content',
@@ -77,7 +77,7 @@ function generateFileName(documentType, pageId, extension) {
77
77
  }
78
78
 
79
79
  export function generateFilePath(serviceId, documentType, pageId, mimeType) {
80
- const extension = mime.getExtension(mimeType) || '*'; // If mime type is undefined, an asterisk is set as an extension. Used to match all files for the given service ID, document type and page ID when mime type is unknown.
80
+ const extension = mime.getExtension(mimeType) || '*'; // If mime type is undefined, an asterisk is set as an extension. Used to match all files for the given service ID, terms type and page ID when mime type is unknown.
81
81
 
82
82
  return `${serviceId}/${generateFileName(documentType, pageId, extension)}`; // Do not use `path.join` as even for Windows, the path should be with `/` and not `\`. See https://github.com/ambanum/OpenTermsArchive/runs/8110230474?check_suite_focus=true#step:7:125
83
83
  }
@@ -101,7 +101,7 @@ describe('GitRepository', () => {
101
101
  expect(commit.message).to.include(SERVICE_PROVIDER_ID);
102
102
  });
103
103
 
104
- it('stores the document type', () => {
104
+ it('stores the terms type', () => {
105
105
  expect(commit.message).to.include(DOCUMENT_TYPE);
106
106
  });
107
107
 
@@ -314,7 +314,7 @@ describe('GitRepository', () => {
314
314
  expect(commit.message).to.include(SERVICE_PROVIDER_ID);
315
315
  });
316
316
 
317
- it('stores the document type', () => {
317
+ it('stores the terms type', () => {
318
318
  expect(commit.message).to.include(DOCUMENT_TYPE);
319
319
  });
320
320
 
@@ -351,7 +351,7 @@ describe('GitRepository', () => {
351
351
  expect(commit.message).to.include(SERVICE_PROVIDER_ID);
352
352
  });
353
353
 
354
- it('stores the document type', () => {
354
+ it('stores the terms type', () => {
355
355
  expect(commit.message).to.include(DOCUMENT_TYPE);
356
356
  });
357
357
 
@@ -394,7 +394,7 @@ describe('GitRepository', () => {
394
394
  expect(commit.message).to.include(SERVICE_PROVIDER_ID);
395
395
  });
396
396
 
397
- it('stores the document type', () => {
397
+ it('stores the terms type', () => {
398
398
  expect(commit.message).to.include(DOCUMENT_TYPE);
399
399
  });
400
400
 
@@ -436,7 +436,7 @@ describe('GitRepository', () => {
436
436
  expect(record.serviceId).to.equal(SERVICE_PROVIDER_ID);
437
437
  });
438
438
 
439
- it('returns the document type', () => {
439
+ it('returns the terms type', () => {
440
440
  expect(record.documentType).to.equal(DOCUMENT_TYPE);
441
441
  });
442
442
 
@@ -35,11 +35,11 @@ export default class RepositoryInterface {
35
35
  }
36
36
 
37
37
  /**
38
- * Find the most recent record that matches the given service ID and document type and optionally the page ID
38
+ * Find the most recent record that matches the given service ID and terms type and optionally the page ID
39
39
  * In case of snapshots, if the record is related to a multipage document, the page ID is required to find the corresponding snapshot
40
40
  *
41
41
  * @param {string} serviceId - Service ID of record to find
42
- * @param {string} documentType - Document type of record to find
42
+ * @param {string} documentType - Terms type of record to find
43
43
  * @param {string} [pageId] - Page ID of record to find. Used to differentiate pages of multipage document. Not necessary for single page document
44
44
  * @returns {Promise<Record>} Promise that will be resolved with the found record or an empty object if none match the given criteria
45
45
  */
@@ -95,7 +95,7 @@ describe('MongoRepository', () => {
95
95
  expect(mongoDocument.serviceId).to.include(SERVICE_PROVIDER_ID);
96
96
  });
97
97
 
98
- it('stores the document type', () => {
98
+ it('stores the terms type', () => {
99
99
  expect(mongoDocument.documentType).to.include(DOCUMENT_TYPE);
100
100
  });
101
101
 
@@ -349,7 +349,7 @@ describe('MongoRepository', () => {
349
349
  expect(mongoDocument.serviceId).to.include(SERVICE_PROVIDER_ID);
350
350
  });
351
351
 
352
- it('stores the document type', () => {
352
+ it('stores the terms type', () => {
353
353
  expect(mongoDocument.documentType).to.include(DOCUMENT_TYPE);
354
354
  });
355
355
 
@@ -392,7 +392,7 @@ describe('MongoRepository', () => {
392
392
  expect(mongoDocument.serviceId).to.include(SERVICE_PROVIDER_ID);
393
393
  });
394
394
 
395
- it('stores the document type', () => {
395
+ it('stores the terms type', () => {
396
396
  expect(mongoDocument.documentType).to.include(DOCUMENT_TYPE);
397
397
  });
398
398
 
@@ -434,7 +434,7 @@ describe('MongoRepository', () => {
434
434
  expect(record.serviceId).to.equal(SERVICE_PROVIDER_ID);
435
435
  });
436
436
 
437
- it('returns the document type', () => {
437
+ it('returns the terms type', () => {
438
438
  expect(record.documentType).to.equal(DOCUMENT_TYPE);
439
439
  });
440
440
 
@@ -51,7 +51,7 @@ describe('Services', () => {
51
51
  expect(actualDocumentDeclaration.service.name).to.eql(expectedDocumentDeclaration.service.name);
52
52
  });
53
53
 
54
- it('has the proper document type', () => {
54
+ it('has the proper terms type', () => {
55
55
  expect(actualDocumentDeclaration.type).to.eql(expectedDocumentDeclaration.type);
56
56
  });
57
57
 
@@ -170,7 +170,7 @@ describe('Services', () => {
170
170
  expect(actualDocumentDeclaration.service.name).to.eql(expectedDocumentDeclaration.service.name);
171
171
  });
172
172
 
173
- it('has the proper document type', () => {
173
+ it('has the proper terms type', () => {
174
174
  expect(actualDocumentDeclaration.type).to.eql(expectedDocumentDeclaration.type);
175
175
  });
176
176
 
@@ -154,7 +154,7 @@ describe('Service', () => {
154
154
  subject.addDocumentDeclaration(privacyPolicyDeclaration);
155
155
  });
156
156
 
157
- it('returns the service document types', async () => {
157
+ it('returns the service terms types', async () => {
158
158
  expect(subject.getDocumentTypes()).to.have.members([
159
159
  termsOfServiceDeclaration.type,
160
160
  privacyPolicyDeclaration.type,
package/src/main.js CHANGED
@@ -11,7 +11,7 @@ program
11
11
  .description(description)
12
12
  .version(version)
13
13
  .option('-s, --services [serviceId...]', 'service IDs of services to handle')
14
- .option('-d, --documentTypes [documentType...]', 'document types to handle')
14
+ .option('-d, --documentTypes [documentType...]', 'terms types to handle')
15
15
  .option('-r, --refilter-only', 'only refilter exisiting snapshots with last declarations and engine\'s updates')
16
16
  .option('--schedule', 'schedule automatic document tracking');
17
17
 
package/README.fr.md DELETED
@@ -1,110 +0,0 @@
1
- <img src="https://disinfo.quaidorsay.fr/assets/img/logo.png" width="140">
2
-
3
- # Open Terms Archive
4
-
5
- Les services en ligne ont des conditions générales qui évoluent dans le temps. _Open Terms Archive_ permet aux défenseurs des droits des utilisateurs, aux régulateurs et à toute personne intéressée de suivre les évolutions de ces conditions générales en étant notifiée à chaque publication d'une nouvelle version, et en explorant leur historique.
6
-
7
- ## Table des matières
8
-
9
- - [Fonctionnement](#fonctionnement)
10
- - [Naviguer dans l'historique des versions](#naviguer-dans-lhistorique-des-versions)
11
- - [Remarques](#remarques)
12
- - [Recevoir des notifications](#recevoir-des-notifications)
13
- - [Par courriel](#par-courriel)
14
- - [Recevoir les mises à jour de services ou documents spécifiques](#recevoir-les-mises-%C3%A0-jour-de-services-ou-documents-sp%C3%A9cifiques)
15
- - [Par RSS](#par-rss)
16
- - [Récapitulatif des flux RSS disponibles](#r%C3%A9capitulatif-des-flux-rss-disponibles)
17
- - [Désabonnement](#désabonnement)
18
- - [Contribuer](#contribuer)
19
- - [Ajouter un nouveau service](#ajouter-un-nouveau-service)
20
-
21
- ## Fonctionnement
22
-
23
- _Note: Les mots en gras sont les [termes du domaine](https://fr.wikipedia.org/wiki/Conception_pilot%C3%A9e_par_le_domaine)._
24
-
25
- Les **services** sont **déclarés** dans l'outil _Open Terms Archive_ grâce à un **fichier de déclaration** listant les **documents** qui forment l'ensemble des **conditions** régissant l'usage du **service**. Ces **documents** peuvent être de plusieurs **types** : « conditions d'utilisation », « politique de confidentialité », « contrat de développeur »…
26
-
27
- Afin de **suivre** leurs **évolutions**, les **documents** sont régulièrement mis à jour, en les **téléchargeant** depuis une **adresse** web et en **sélectionnant leur contenu** dans la **page web** pour supprimer le **bruit** (publicités, menus de navigation, champs de connexion…). En plus de simplement sélectionner une zone de la page, certains documents possèdent du **bruit** supplémentaire (hashs dans des liens, jetons CSRF...) créant de faux positifs en terme d'**évolutions**. En conséquence, _Open Terms Archive_ supporte des **filtres** spécifiques pour chaque **document**.
28
-
29
- Néanmoins, le **bruit** peut changer de forme avec le temps. Afin d'éviter des pertes d'information irrécupérables pendant l'étape de **filtrage du bruit**, un **instantané** de la page Web est **enregistré** à chaque **évolution**. Après avoir **filtré l'instantané** de son **bruit**, si le **document** résultant a changé par rapport à sa **version** précédente, une nouvelle **version** est **enregistrée**.
30
-
31
- Vous pouvez disposer de votre propre instance **privée** de l'outil _Open Terms Archive_ et suivre vous-même les **évolutions**. Néanmoins, nous **publions** chaque **version** sur une [instance **publique**](https://github.com/OpenTermsArchive/contrib-versions) facilitant l'exploration de l'**historique** et **notifiant** par courriels l'**enregistrement** de nouvelles **versions**. Les **utilisateurs** peuvent [**s'abonner** aux **notifications**](#recevoir-des-notifications).
32
-
33
- _Note: Actuellement, nous ne suivons que les **conditions** rédigées en anglais et concernant la juridiction européenne._
34
-
35
- ## Naviguer dans l'historique des versions
36
-
37
- À partir de la **page d'accueil du dépôt** [contrib-versions](https://github.com/OpenTermsArchive/contrib-versions), ouvrez le dossier du **service de votre choix** (prenons par exemple [WhatsApp](https://github.com/OpenTermsArchive/contrib-versions/tree/main/WhatsApp)).
38
-
39
- L'**ensemble des documents suivis** pour ce service s'affichent, cliquez ensuite sur **celui dont vous souhaitez suivre l'historique** (par exemple la [politique d'utilisation des données de WhatsApp](https://github.com/OpenTermsArchive/contrib-versions/blob/main/WhatsApp/Privacy%20Policy.md)). Le document s'affiche alors dans sa **dernière version** (il est actualisé toutes les heures).
40
-
41
- Pour afficher l'**historique des modifications** subies par ce document, cliquez sur **History** en haut à droite du document (pour l'exemple précédent nous arrivons [ici](https://github.com/OpenTermsArchive/contrib-versions/commits/main/WhatsApp/Privacy%20Policy.md)). Les **modifications** sont affichées **par dates**, de la plus récente à la plus ancienne.
42
-
43
- Cliquez sur une modification pour voir en quoi elle consiste (par exemple [celle-ci](https://github.com/OpenTermsArchive/contrib-versions/commit/58a1d2ae4187a3260ac58f3f3c7dcd3aeacaebcd)). Vous disposez de **deux types d'affichage**, sélectionnables à partir des icônes dans la barre grisée qui chapeaute le document.
44
-
45
- - Le premier, appelé _source diff_ (bouton avec des chevrons) permet d'**afficher côte-à-côte l'ancienne version et la nouvelle** (pour notre [exemple](https://github.com/OpenTermsArchive/contrib-versions/commit/58a1d2ae4187a3260ac58f3f3c7dcd3aeacaebcd#diff-e8bdae8692561f60aeac9d27a55e84fc)). Cet affichage a le mérite de **montrer explicitement** l'ensemble des ajouts/suppressions.
46
- - Le second, appelé _rich diff_ (bouton avec l'icône document) permet d'**unifier l'ensemble des modifications sur un seul document** (pour notre [exemple](https://github.com/OpenTermsArchive/contrib-versions/commit/58a1d2ae4187a3260ac58f3f3c7dcd3aeacaebcd?short_path=e8bdae8#diff-e8bdae8692561f60aeac9d27a55e84fc)). La couleur **rouge** montre les éléments **supprimés**, la couleur **jaune** montre les paragraphes **modifiés**, et la couleur **verte** montrent les éléments **ajoutés**. Attention, cet affichage **ne montre pas certaines modifications** comme le changement des hyperliens et le style du texte.
47
-
48
- ### Remarques
49
-
50
- - Pour les longs documents, les **paragraphes inchangés ne seront pas affichés par défaut**. Vous pouvez manuellement les faire apparaître en cliquant sur les petites flèches juste au-dessus ou juste en-dessous des paragraphes affichés.
51
- - Vous pouvez utiliser le bouton **History n'importe où** dans le dépôt contrib-versions, qui affichera alors l'**historique des modifications subies par tous les documents se trouvant dans le dossier** où vous vous trouvez (y compris dans les sous-dossiers).
52
-
53
- ## Recevoir des notifications
54
-
55
- ### Par courriel
56
-
57
- #### Pour tous les documents d'un coup
58
-
59
- Vous pouvez [vous abonner](https://59692a77.sibforms.com/serve/MUIEAKuTv3y67e27PkjAiw7UkHCn0qVrcD188cQb-ofHVBGpvdUWQ6EraZ5AIb6vJqz3L8LDvYhEzPb2SE6eGWP35zXrpwEFVJCpGuER9DKPBUrifKScpF_ENMqwE_OiOZ3FdCV2ra-TXQNxB2sTEL13Zj8HU7U0vbbeF7TnbFiW8gGbcOa5liqmMvw_rghnEB2htMQRCk6A3eyj) pour recevoir un courriel à chaque modification d'un document dans l'ensemble de la base.
60
-
61
- **Attention, vous risquez de recevoir de nombreuses notifications !** Vous pourrez vous désabonner en répondant à n'importe quel courriel reçu.
62
-
63
- #### Recevoir les mises à jour de services ou documents spécifiques
64
-
65
- Vous pouvez vous rendre sur le site officiel [opentermsarchive.org] (https://opentermsarchive.org). De là, vous pouvez sélectionner un service, puis le type de document correspondant.
66
- Après avoir entré votre adresse électronique et cliqué sur "S'inscrire", nous ajouterons votre adresse à la liste de diffusion correspondante dans [SendInBlue](https://www.sendinblue.com/) et nous ne la conserverons nulle part ailleurs.
67
- Ensuite, chaque fois qu'une modification sera trouvée sur le document correspondant, nous vous enverrons un e-mail.
68
-
69
- Vous pouvez vous désinscrire à tout moment en cliquant sur le lien "désinscription" en bas de l'email reçu.
70
-
71
- ### Par RSS
72
-
73
- Vous pouvez recevoir une notification pour un service ou un document spécifique en vous abonnant à des flux RSS.
74
-
75
- > Un flux RSS est un type de page accessible en ligne qui contient des informations sur les derniers contenus publiés par un site web comme leur date de publication et l'adresse pour les consulter. Lorsque cette ressource est mise à jour, une application de type lecteur de flux vous notifie automatiquement et vous pouvez ainsi consulter la mise à jour.
76
-
77
- Pour obtenir l'adresse du flux RSS auquel vous abonner :
78
-
79
- 1. [Naviguez](#naviguer-dans-lhistorique-des-versions) jusqu’à la page qui présente l’historique des modifications qui vous intéressent. _Dans l'exemple de WhatsApp donné plus haut, il s’agit de [cette page](https://github.com/OpenTermsArchive/contrib-versions/commits/main/WhatsApp/Privacy%20Policy.md)._
80
- 2. Copiez l’adresse de cette page depuis la barre d’adresse de votre navigateur. _Dans l’exemple de WhatsApp, il s’agit de `https://github.com/OpenTermsArchive/contrib-versions/commits/main/WhatsApp/Privacy%20Policy.md`._
81
- 3. Ajoutez `.atom` à la fin de cette adresse. _Dans l’exemple de WhatsApp, cela donnerait `https://github.com/OpenTermsArchive/contrib-versions/commits/main/WhatsApp/Privacy%20Policy.md.atom`._
82
- 4. Abonnez votre lecteur de flux RSS à l’adresse résultante.
83
-
84
- #### Récapitulatif des flux RSS disponibles
85
-
86
- | Mis à jour pour | URL |
87
- | ------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
88
- | l'ensemble des services et documents | `https://github.com/OpenTermsArchive/contrib-versions/commits.atom` |
89
- | l'ensemble des documents d'un service | Remplacer `$serviceId` par l'identifiant du service :<br>`https://github.com/OpenTermsArchive/contrib-versions/commits/main/$serviceId.atom` |
90
- | un document spécifique d'un service | Remplacer `$serviceId` par l'identifiant du service et `$documentType` par le type du document :<br>`https://github.com/OpenTermsArchive/contrib-versions/commits/main/$serviceId/$documentType.md.atom` |
91
-
92
- Par exemple :
93
-
94
- - Pour recevoir toutes les mises à jour des documents de `Facebook`, abonnez-vous à `https://github.com/OpenTermsArchive/contrib-versions/commits/main/Facebook.atom`.
95
- - Pour recevoir toutes les mises à jour des `Privacy Policy` de `Google`, abonnez-vous à `https://github.com/OpenTermsArchive/contrib-versions/commits/main/Google/Privacy%20Policy.md.atom`.
96
-
97
- ### Désabonnement
98
-
99
- Afin de ne plus recevoir d'e-mails de mise à jour des services, deux liens sont inclus dans chaque e-mail reçu :
100
-
101
- - un pour ne plus recevoir tous les e-mails de bot@opentermsarchive.org
102
- - un pour ne plus recevoir les e-mails d'un document particulier
103
-
104
- Ce dernier lien consiste à envoyer un courriel à contact@opentermsarchive.org pour être retiré manuellement de la liste correspondante.
105
-
106
- ## Contribuer
107
-
108
- ### Ajouter un nouveau service
109
-
110
- Voir le fichier [CONTRIBUTING](CONTRIBUTING.md) (en anglais).