@opentermsarchive/engine 5.4.0 → 5.4.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": "5.4.0",
3
+ "version": "5.4.2",
4
4
  "description": "Tracks and makes visible changes to the terms of online services",
5
5
  "homepage": "https://opentermsarchive.org",
6
6
  "bugs": {
@@ -49,6 +49,10 @@ export default async function fetch(url, config) {
49
49
  content,
50
50
  };
51
51
  } catch (error) {
52
+ if (error.type == 'system') { // Node-fetch wraps system-level errors (ENOTFOUND, ECONNREFUSED, ECONNRESET, etc.) with type 'system' and includes the original error code
53
+ throw new Error(`Network system error ${error.code} occurred when trying to fetch '${url}'`);
54
+ }
55
+
52
56
  if (error instanceof AbortError) {
53
57
  throw new Error(`Timed out after ${config.navigationTimeout / 1000} seconds when trying to fetch '${url}'`);
54
58
  }
@@ -1,4 +1,5 @@
1
1
  import events from 'events';
2
+ import { createRequire } from 'module';
2
3
 
3
4
  import async from 'async';
4
5
 
@@ -11,6 +12,9 @@ import Version from './recorder/version.js';
11
12
  import * as services from './services/index.js';
12
13
  import Service from './services/service.js';
13
14
 
15
+ const require = createRequire(import.meta.url);
16
+ const { version: PACKAGE_VERSION } = require('../../package.json');
17
+
14
18
  // The parallel handling feature is currently set to a parallelism of 1 on terms tracking
15
19
  // because when it's higher there are two issues:
16
20
  // - too many requests on the same endpoint yield 403
@@ -249,7 +253,7 @@ export default class Archivist extends events.EventEmitter {
249
253
  termsType: terms.type,
250
254
  fetchDate: terms.fetchDate,
251
255
  isExtractOnly: extractOnly,
252
- metadata: { 'x-engine-version': process.env.npm_package_version },
256
+ metadata: { 'x-engine-version': PACKAGE_VERSION },
253
257
  });
254
258
 
255
259
  await this.recorder.record(record);
@@ -275,7 +279,7 @@ export default class Archivist extends events.EventEmitter {
275
279
  content: sourceDocument.content,
276
280
  mimeType: sourceDocument.mimeType,
277
281
  metadata: {
278
- 'x-engine-version': process.env.npm_package_version,
282
+ 'x-engine-version': PACKAGE_VERSION,
279
283
  'x-fetcher': sourceDocument.fetcher,
280
284
  'x-source-document-location': sourceDocument.location,
281
285
  },
@@ -1,7 +1,12 @@
1
+ import { createRequire } from 'module';
2
+
1
3
  import express from 'express';
2
4
 
3
5
  import Service from '../../archivist/services/service.js';
4
6
 
7
+ const require = createRequire(import.meta.url);
8
+ const { version: PACKAGE_VERSION } = require('../../../package.json');
9
+
5
10
  /**
6
11
  * @param {object} collection The collection
7
12
  * @param {object} services The services of the collection
@@ -170,7 +175,6 @@ import Service from '../../archivist/services/service.js';
170
175
  */
171
176
  export default function metadataRouter(collection, services) {
172
177
  const router = express.Router();
173
- const engineVersion = process.env.npm_package_version;
174
178
 
175
179
  /**
176
180
  * @swagger
@@ -188,7 +192,7 @@ export default function metadataRouter(collection, services) {
188
192
  const dynamicMetadata = {
189
193
  totalServices: Object.keys(services).length,
190
194
  totalTerms: Service.getNumberOfTerms(services),
191
- engineVersion,
195
+ engineVersion: PACKAGE_VERSION,
192
196
  };
193
197
 
194
198
  res.json({
@@ -1,11 +1,15 @@
1
+ import { createRequire } from 'module';
2
+
1
3
  import { expect } from 'chai';
2
4
  import config from 'config';
3
5
  import request from 'supertest';
4
6
 
5
7
  import app from '../server.js';
6
8
 
9
+ const require = createRequire(import.meta.url);
10
+ const { version: PACKAGE_VERSION } = require('../../../package.json');
11
+
7
12
  const basePath = config.get('@opentermsarchive/engine.collection-api.basePath');
8
- const engineVersion = process.env.npm_package_version;
9
13
 
10
14
  const EXPECTED_RESPONSE = {
11
15
  totalServices: 7,
@@ -80,7 +84,7 @@ describe('Metadata API', () => {
80
84
  it('returns expected metadata object', () => {
81
85
  expect(response.body).to.deep.equal({
82
86
  ...EXPECTED_RESPONSE,
83
- engineVersion,
87
+ engineVersion: PACKAGE_VERSION,
84
88
  });
85
89
  });
86
90
  });
package/src/index.js CHANGED
@@ -1,3 +1,5 @@
1
+ import { createRequire } from 'module';
2
+
1
3
  import config from 'config';
2
4
  import cron from 'croner';
3
5
  import cronstrue from 'cronstrue';
@@ -8,6 +10,9 @@ import logger from './logger/index.js';
8
10
  import Notifier from './notifier/index.js';
9
11
  import Reporter from './reporter/index.js';
10
12
 
13
+ const require = createRequire(import.meta.url);
14
+ const { version: PACKAGE_VERSION } = require('../package.json');
15
+
11
16
  export default async function track({ services, types, extractOnly, schedule }) {
12
17
  const archivist = new Archivist({
13
18
  recorderConfig: config.get('@opentermsarchive/engine.recorder'),
@@ -21,7 +26,7 @@ export default async function track({ services, types, extractOnly, schedule })
21
26
  const collection = await getCollection();
22
27
  const collectionName = collection?.name ? ` with ${collection.name} collection` : '';
23
28
 
24
- logger.info(`Start engine v${process.env.npm_package_version}${collectionName}\n`);
29
+ logger.info(`Start engine v${PACKAGE_VERSION}${collectionName}\n`);
25
30
 
26
31
  if (services?.length) {
27
32
  services = services.filter(serviceId => {