@map-colonies/config 1.1.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -62,6 +62,10 @@ The `ConfigInstance` interface represents the your way to interact with the conf
62
62
  - **Description**: Retrieves the resolved options from the configuration object. Useful for debugging.
63
63
  - **Returns**: The resolved options, which are an instance of `BaseOptions`.
64
64
 
65
+ ##### `initializeMetrics(registry: promClient.Registry): void`
66
+ - **Description**: Initializes the metrics for the configuration.
67
+ - **Parameters**:
68
+ - `registry` (`promClient.Registry`): The prometheus registry to use for the metrics.
65
69
 
66
70
  # Configuration Options
67
71
 
@@ -76,19 +80,22 @@ This package allows you to configure various options for loading and managing co
76
80
 
77
81
  ### `configName`
78
82
  - **Type**: `string`
79
- - **Optional**: `false`
83
+ - **Optional**: `true`
84
+ -
80
85
  - **Description**: The name of the remote configuration.
81
86
  - **Environment Variable**: `CONFIG_NAME`
82
87
 
83
88
  ### `version`
84
89
  - **Type**: `'latest' | number`
85
- - **Optional**: `false`
90
+ - **Optional**: `true`
91
+ - **Default**: `latest`
86
92
  - **Description**: The version of the remote configuration. It can be either `'latest'` or a number.
87
93
  - **Environment Variable**: `CONFIG_VERSION`
88
94
 
89
95
  ### `configServerUrl`
90
96
  - **Type**: `string`
91
- - **Optional**: `false`
97
+ - **Optional**: `true`
98
+ - **Default**: `http://localhost:8080`
92
99
  - **Description**: The URL of the configuration server.
93
100
  - **Environment Variable**: `CONFIG_SERVER_URL`
94
101
 
@@ -111,31 +118,6 @@ This package allows you to configure various options for loading and managing co
111
118
  - **Default**: `./config`
112
119
  - **Description**: The path to the local configuration folder.
113
120
 
114
- ## JSON Schema
115
-
116
- The options are validated against the following JSON schema:
117
-
118
- ```json
119
- {
120
-   "required": ["configName", "configServerUrl", "version"],
121
-   "additionalProperties": false,
122
-   "type": "object",
123
-   "properties": {
124
-     "configName": { "type": "string" },
125
-     "version": {
126
-       "oneOf": [
127
-         { "type": "string", "const": "latest" },
128
-         { "type": "integer", "minimum": 1 }
129
-       ]
130
-     },
131
-     "configServerUrl": { "type": "string" },
132
-     "offlineMode": { "type": "boolean", "nullable": true },
133
-     "ignoreServerIsOlderVersionError": { "type": "boolean", "nullable": true },
134
-     "localConfigPath": { "type": "string", "default": "./config" }
135
-   }
136
- }
137
- ```
138
-
139
121
  ## Environment Variable Configuration
140
122
 
141
123
  The following environment variables can be used to configure the options:
@@ -265,6 +247,11 @@ try {
265
247
  ```
266
248
  - **Description**: This error occurs when there is a version mismatch between the remote and local schemas. The payload includes the versions of both the remote and local schemas.
267
249
 
250
+ ### `promClientNotInstalledError`
251
+ - **Code**: `8`
252
+ - **Payload**: `Error`
253
+ - **Description**: This error occurs when the `prom-client` package is not installed. The payload contains the error object.
254
+
268
255
  # Debugging
269
256
  If for some reason you want to debug the package you can either use the `getConfigParts` or the `getResolvedOptions` functions described in the API or use the more powerful debug logger.
270
257
 
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,4CAA4C,CAAC;AAKxE,OAAO,EAAe,aAAa,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAcrE;;;;;;GAMG;AACH,wBAAsB,MAAM,CAAC,CAAC,SAAS;IAAE,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EAC3E,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,GACxB,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC,CAmG/C"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,4CAA4C,CAAC;AAMxE,OAAO,EAAe,aAAa,EAAE,cAAc,EAAU,MAAM,SAAS,CAAC;AAe7E;;;;;;GAMG;AACH,wBAAsB,MAAM,CAAC,CAAC,SAAS;IAAE,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EAC3E,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,GACxB,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC,CAwG/C"}
package/dist/config.js CHANGED
@@ -17,6 +17,7 @@ const validator_1 = require("./validator");
17
17
  const debug_1 = require("./utils/debug");
18
18
  const constants_1 = require("./constants");
19
19
  const errors_1 = require("./errors");
20
+ const metrics_1 = require("./metrics");
20
21
  const debug = (0, debug_1.createDebug)('config');
21
22
  // eslint-disable-next-line @typescript-eslint/no-unsafe-return
22
23
  const arrayMerge = (destinationArray, sourceArray) => sourceArray;
@@ -30,9 +31,10 @@ const arrayMerge = (destinationArray, sourceArray) => sourceArray;
30
31
  async function config(options) {
31
32
  // handle package options
32
33
  debug('config called with options: %j', { ...options, schema: options.schema.$id });
33
- const { schema: baseSchema, ...unvalidatedOptions } = options;
34
+ const { schema: baseSchema, metricsRegistry, ...unvalidatedOptions } = options;
34
35
  const { configName, offlineMode, version, ignoreServerIsOlderVersionError } = (0, options_1.initializeOptions)(unvalidatedOptions);
35
36
  let remoteConfig = {};
37
+ let serverConfigResponse = undefined;
36
38
  // handle remote config
37
39
  if (offlineMode !== true) {
38
40
  debug('handling fetching remote data');
@@ -46,7 +48,7 @@ async function config(options) {
46
48
  });
47
49
  }
48
50
  // get the remote config
49
- const serverConfigResponse = await (0, httpClient_1.getRemoteConfig)(configName, version);
51
+ serverConfigResponse = await (0, httpClient_1.getRemoteConfig)(configName, version);
50
52
  if (serverConfigResponse.schemaId !== baseSchema.$id) {
51
53
  debug('schema version mismatch. local: %s, remote: %s', baseSchema.$id, serverConfigResponse.schemaId);
52
54
  throw (0, errors_1.createConfigError)('schemaVersionMismatchError', 'The schema version of the remote config does not match the schema version of the local config', {
@@ -96,7 +98,10 @@ async function config(options) {
96
98
  debug('getResolvedOptions called');
97
99
  return (0, options_1.getOptions)();
98
100
  }
99
- return { get, getAll, getConfigParts, getResolvedOptions };
101
+ function initializeMetrics(registry) {
102
+ (0, metrics_1.initializeMetrics)(registry, baseSchema.$id, serverConfigResponse?.version);
103
+ }
104
+ return { get, getAll, getConfigParts, getResolvedOptions, initializeMetrics };
100
105
  }
101
106
  exports.config = config;
102
107
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  export declare const LOCAL_SCHEMAS_PACKAGE_VERSION: string;
2
+ export declare const PACKAGE_NAME: string;
2
3
  export declare const SCHEMA_DOMAIN = "https://mapcolonies.com/";
3
4
  export declare const SCHEMAS_PACKAGE_RESOLVED_PATH: string;
4
5
  export declare const SCHEMA_BASE_PATH: string;
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,6BAA6B,QAAgG,CAAC;AAE3I,eAAO,MAAM,aAAa,6BAA6B,CAAC;AAExD,eAAO,MAAM,6BAA6B,QAA2C,CAAC;AACtF,eAAO,MAAM,gBAAgB,QAA6F,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,6BAA6B,QAAgG,CAAC;AAC3I,eAAO,MAAM,YAAY,QAAyE,CAAC;AAEnG,eAAO,MAAM,aAAa,6BAA6B,CAAC;AAExD,eAAO,MAAM,6BAA6B,QAA2C,CAAC;AACtF,eAAO,MAAM,gBAAgB,QAA6F,CAAC"}
package/dist/constants.js CHANGED
@@ -3,11 +3,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.SCHEMA_BASE_PATH = exports.SCHEMAS_PACKAGE_RESOLVED_PATH = exports.SCHEMA_DOMAIN = exports.LOCAL_SCHEMAS_PACKAGE_VERSION = void 0;
6
+ exports.SCHEMA_BASE_PATH = exports.SCHEMAS_PACKAGE_RESOLVED_PATH = exports.SCHEMA_DOMAIN = exports.PACKAGE_NAME = exports.LOCAL_SCHEMAS_PACKAGE_VERSION = void 0;
7
7
  const node_path_1 = __importDefault(require("node:path"));
8
8
  const read_pkg_1 = require("@map-colonies/read-pkg");
9
9
  const schemasPackagePathBuildPath = require.resolve('@map-colonies/schemas').substring(0, require.resolve('@map-colonies/schemas').indexOf('build'));
10
10
  exports.LOCAL_SCHEMAS_PACKAGE_VERSION = (0, read_pkg_1.readPackageJsonSync)(node_path_1.default.join(schemasPackagePathBuildPath, 'package.json')).version;
11
+ exports.PACKAGE_NAME = (0, read_pkg_1.readPackageJsonSync)('package.json').name ?? 'package-name-not-defined';
11
12
  exports.SCHEMA_DOMAIN = 'https://mapcolonies.com/';
12
13
  exports.SCHEMAS_PACKAGE_RESOLVED_PATH = require.resolve('@map-colonies/schemas');
13
14
  exports.SCHEMA_BASE_PATH = exports.SCHEMAS_PACKAGE_RESOLVED_PATH.substring(0, exports.SCHEMAS_PACKAGE_RESOLVED_PATH.lastIndexOf('/'));
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;;;;AAAA,0DAA6B;AAC7B,qDAA6D;AAE7D,MAAM,2BAA2B,GAAG,OAAO,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;AACxI,QAAA,6BAA6B,GAAG,IAAA,8BAAmB,EAAC,mBAAI,CAAC,IAAI,CAAC,2BAA2B,EAAE,cAAc,CAAC,CAAC,CAAC,OAAiB,CAAC;AAE9H,QAAA,aAAa,GAAG,0BAA0B,CAAC;AAE3C,QAAA,6BAA6B,GAAG,OAAO,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;AACzE,QAAA,gBAAgB,GAAG,qCAA6B,CAAC,SAAS,CAAC,CAAC,EAAE,qCAA6B,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;;;;AAAA,0DAA6B;AAC7B,qDAA6D;AAE7D,MAAM,2BAA2B,GAAG,OAAO,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;AACxI,QAAA,6BAA6B,GAAG,IAAA,8BAAmB,EAAC,mBAAI,CAAC,IAAI,CAAC,2BAA2B,EAAE,cAAc,CAAC,CAAC,CAAC,OAAiB,CAAC;AAC9H,QAAA,YAAY,GAAG,IAAA,8BAAmB,EAAC,cAAc,CAAC,CAAC,IAAI,IAAI,0BAA0B,CAAC;AAEtF,QAAA,aAAa,GAAG,0BAA0B,CAAC;AAE3C,QAAA,6BAA6B,GAAG,OAAO,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;AACzE,QAAA,gBAAgB,GAAG,qCAA6B,CAAC,SAAS,CAAC,CAAC,EAAE,qCAA6B,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC"}
package/dist/errors.d.ts CHANGED
@@ -39,6 +39,12 @@ declare const configErrors: {
39
39
  localSchemaVersion: string;
40
40
  };
41
41
  };
42
+ readonly promClientNotInstalledError: {
43
+ readonly code: 8;
44
+ readonly payload: {
45
+ message: string;
46
+ };
47
+ };
42
48
  };
43
49
  /**
44
50
  * Represents the configuration errors.
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEpC,QAAA,MAAM,YAAY;;;;;;;;;;;;kBAG+F,MAAM;;;;;;;;;;wBAExD,MAAM;;;;;;kCACmB,MAAM;iCAAuB,MAAM;;;;;;iCAC5C,MAAM;gCAAsB,MAAM;;;CAE9C,CAAC;AAEpE;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,OAAO,YAAY,CAAC;AAE/C;;;;;GAKG;AACH,qBAAa,WAAW,CAAC,SAAS,SAAS,MAAM,YAAY,EAAE,OAAO,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAE,SAAQ,KAAK;aAUnD,OAAO,EAAE,OAAO,GAAG,SAAS;IATjG,SAAgB,IAAI,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;IAEtD;;;;;;OAMG;gBACgB,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAkB,OAAO,EAAE,OAAO,GAAG,SAAS;CAKlG;AAED,wBAAgB,iBAAiB,CAAC,SAAS,SAAS,MAAM,YAAY,EAAE,OAAO,SAAS,YAAY,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,EACxH,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,GACf,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAEjC;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,SAAS,SAAS,MAAM,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,GAAG,KAAK,IAAI,WAAW,CAAC,SAAS,CAAC,CAMzI"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEpC,QAAA,MAAM,YAAY;;;;;;;;;;;;kBAG+F,MAAM;;;;;;;;;;wBAExD,MAAM;;;;;;kCACmB,MAAM;iCAAuB,MAAM;;;;;;iCAC5C,MAAM;gCAAsB,MAAM;;;;;;qBAC7C,MAAM;;;CAEP,CAAC;AAEpE;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,OAAO,YAAY,CAAC;AAE/C;;;;;GAKG;AACH,qBAAa,WAAW,CAAC,SAAS,SAAS,MAAM,YAAY,EAAE,OAAO,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAE,SAAQ,KAAK;aAUnD,OAAO,EAAE,OAAO,GAAG,SAAS;IATjG,SAAgB,IAAI,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;IAEtD;;;;;;OAMG;gBACgB,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAkB,OAAO,EAAE,OAAO,GAAG,SAAS;CAKlG;AAED,wBAAgB,iBAAiB,CAAC,SAAS,SAAS,MAAM,YAAY,EAAE,OAAO,SAAS,YAAY,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,EACxH,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,GACf,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAEjC;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,SAAS,SAAS,MAAM,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,GAAG,KAAK,IAAI,WAAW,CAAC,SAAS,CAAC,CAMzI"}
package/dist/errors.js CHANGED
@@ -9,6 +9,7 @@ const configErrors = {
9
9
  schemaNotFoundError: { code: 5, payload: {} },
10
10
  schemasPackageVersionMismatchError: { code: 6, payload: {} },
11
11
  schemaVersionMismatchError: { code: 7, payload: {} },
12
+ promClientNotInstalledError: { code: 8, payload: {} },
12
13
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
13
14
  };
14
15
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":";;;AAGA,MAAM,YAAY,GAAG;IACnB,qBAAqB,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,EAAuB,EAAE;IACpE,qBAAqB,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,EAAuB,EAAE;IACpE,iBAAiB,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,EAAgF,EAAE;IACzH,gBAAgB,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,EAAW,EAAE;IACnD,mBAAmB,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,EAA4B,EAAE;IACvE,kCAAkC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,EAAmE,EAAE;IAC7H,0BAA0B,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,EAAiE,EAAE;IACnH,8DAA8D;CACG,CAAC;AAOpE;;;;;GAKG;AACH,MAAa,WAAgG,SAAQ,KAAK;IAUnD;IATrD,IAAI,CAAkC;IAEtD;;;;;;OAMG;IACH,YAAmB,IAAe,EAAE,OAAe,EAAkB,OAA4B;QAC/F,KAAK,CAAC,OAAO,CAAC,CAAC;QADoD,YAAO,GAAP,OAAO,CAAqB;QAE/F,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;IACtC,CAAC;CACF;AAfD,kCAeC;AAED,SAAgB,iBAAiB,CAC/B,IAAe,EACf,OAAe,EACf,OAAgB;IAEhB,OAAO,IAAI,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACjD,CAAC;AAND,8CAMC;AAED;;;;;GAKG;AACH,SAAgB,aAAa,CAAuC,KAAc,EAAE,SAAoB;IACtG,IAAI,CAAC,CAAC,KAAK,YAAY,WAAW,CAAC,EAAE,CAAC;QACpC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC;AACjF,CAAC;AAND,sCAMC"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":";;;AAGA,MAAM,YAAY,GAAG;IACnB,qBAAqB,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,EAAuB,EAAE;IACpE,qBAAqB,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,EAAuB,EAAE;IACpE,iBAAiB,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,EAAgF,EAAE;IACzH,gBAAgB,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,EAAW,EAAE;IACnD,mBAAmB,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,EAA4B,EAAE;IACvE,kCAAkC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,EAAmE,EAAE;IAC7H,0BAA0B,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,EAAiE,EAAE;IACnH,2BAA2B,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,EAAyB,EAAE;IAC5E,8DAA8D;CACG,CAAC;AAOpE;;;;;GAKG;AACH,MAAa,WAAgG,SAAQ,KAAK;IAUnD;IATrD,IAAI,CAAkC;IAEtD;;;;;;OAMG;IACH,YAAmB,IAAe,EAAE,OAAe,EAAkB,OAA4B;QAC/F,KAAK,CAAC,OAAO,CAAC,CAAC;QADoD,YAAO,GAAP,OAAO,CAAqB;QAE/F,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;IACtC,CAAC;CACF;AAfD,kCAeC;AAED,SAAgB,iBAAiB,CAC/B,IAAe,EACf,OAAe,EACf,OAAgB;IAEhB,OAAO,IAAI,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACjD,CAAC;AAND,8CAMC;AAED;;;;;GAKG;AACH,SAAgB,aAAa,CAAuC,KAAc,EAAE,SAAoB;IACtG,IAAI,CAAC,CAAC,KAAK,YAAY,WAAW,CAAC,EAAE,CAAC;QACpC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC;AACjF,CAAC;AAND,sCAMC"}
@@ -0,0 +1,3 @@
1
+ import type { Registry } from 'prom-client';
2
+ export declare function initializeMetrics(registry: Registry, schemaId: string, actualVersion: number | undefined): void;
3
+ //# sourceMappingURL=metrics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AA0B5C,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAgC/G"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.initializeMetrics = void 0;
4
+ const options_1 = require("./options");
5
+ const version_1 = require("./version");
6
+ const constants_1 = require("./constants");
7
+ const debug_1 = require("./utils/debug");
8
+ const errors_1 = require("./errors");
9
+ const debug = (0, debug_1.createDebug)('metrics');
10
+ const MILLISECONDS_PER_SECOND = 1000;
11
+ let promClient;
12
+ function loadPromClient() {
13
+ if (promClient !== undefined) {
14
+ return;
15
+ }
16
+ debug('loading prom-client');
17
+ try {
18
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
19
+ promClient = require('prom-client');
20
+ }
21
+ catch (error) {
22
+ throw (0, errors_1.createConfigError)('promClientNotInstalledError', 'prom-client is not installed and metrics was initialized', error);
23
+ }
24
+ }
25
+ function initializeMetrics(registry, schemaId, actualVersion) {
26
+ debug('initializing metrics');
27
+ loadPromClient();
28
+ if (promClient === undefined) {
29
+ return;
30
+ }
31
+ const { offlineMode, configName, version } = (0, options_1.getOptions)();
32
+ const gauge = new promClient.Gauge({
33
+ name: 'config_time_of_last_fetch_unix_timestamp',
34
+ help: 'The time of the last fetch of the configuration in unix timestamp',
35
+ labelNames: ['name', 'request_version', 'actual_version', 'offline_mode', 'schemas_package_version', 'package_version', 'schema_id'],
36
+ });
37
+ /* eslint-disable @typescript-eslint/naming-convention */
38
+ gauge.set({
39
+ name: configName,
40
+ request_version: version,
41
+ actual_version: actualVersion,
42
+ offline_mode: String(offlineMode ?? false),
43
+ schemas_package_version: constants_1.LOCAL_SCHEMAS_PACKAGE_VERSION,
44
+ package_version: version_1.PACKAGE_VERSION,
45
+ schema_id: schemaId,
46
+ }, Math.round(Date.now() / MILLISECONDS_PER_SECOND));
47
+ /* eslint-enable @typescript-eslint/naming-convention */
48
+ registry.registerMetric(gauge);
49
+ }
50
+ exports.initializeMetrics = initializeMetrics;
51
+ //# sourceMappingURL=metrics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":";;;AACA,uCAAuC;AACvC,uCAA4C;AAC5C,2CAA4D;AAC5D,yCAA4C;AAC5C,qCAA6C;AAE7C,MAAM,KAAK,GAAG,IAAA,mBAAW,EAAC,SAAS,CAAC,CAAC;AACrC,MAAM,uBAAuB,GAAG,IAAI,CAAC;AAErC,IAAI,UAAoD,CAAC;AAEzD,SAAS,cAAc;IACrB,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO;IACT,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAC7B,IAAI,CAAC;QACH,mEAAmE;QACnE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAA,0BAAiB,EAAC,6BAA6B,EAAE,0DAA0D,EAAE,KAAc,CAAC,CAAC;IACrI,CAAC;AACH,CAAC;AAED,SAAgB,iBAAiB,CAAC,QAAkB,EAAE,QAAgB,EAAE,aAAiC;IACvG,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC9B,cAAc,EAAE,CAAC;IAEjB,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO;IACT,CAAC;IAED,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,IAAA,oBAAU,GAAE,CAAC;IAC1D,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC;QACjC,IAAI,EAAE,0CAA0C;QAChD,IAAI,EAAE,mEAAmE;QACzE,UAAU,EAAE,CAAC,MAAM,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,cAAc,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,WAAW,CAAC;KACrI,CAAC,CAAC;IAEH,yDAAyD;IACzD,KAAK,CAAC,GAAG,CACP;QACE,IAAI,EAAE,UAAU;QAChB,eAAe,EAAE,OAAO;QACxB,cAAc,EAAE,aAAa;QAC7B,YAAY,EAAE,MAAM,CAAC,WAAW,IAAI,KAAK,CAAC;QAC1C,uBAAuB,EAAE,yCAA6B;QACtD,eAAe,EAAE,yBAAe;QAChC,SAAS,EAAE,QAAQ;KACpB,EAED,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,uBAAuB,CAAC,CACjD,CAAC;IAEF,wDAAwD;IACxD,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AACjC,CAAC;AAhCD,8CAgCC"}
@@ -1 +1 @@
1
- {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAiB,MAAM,SAAS,CAAC;AAwBrD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,WAAW,CAoB5E;AAED,wBAAgB,UAAU,IAAI,WAAW,CAQxC"}
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAiB,MAAM,SAAS,CAAC;AA+BrD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,WAAW,CAmB5E;AAED,wBAAgB,UAAU,IAAI,WAAW,CAQxC"}
package/dist/options.js CHANGED
@@ -9,7 +9,13 @@ const types_1 = require("./types");
9
9
  const validator_1 = require("./validator");
10
10
  const debug_1 = require("./utils/debug");
11
11
  const errors_1 = require("./errors");
12
+ const constants_1 = require("./constants");
12
13
  const debug = (0, debug_1.createDebug)('options');
14
+ const defaultOptions = {
15
+ configName: constants_1.PACKAGE_NAME,
16
+ configServerUrl: 'http://localhost:8080',
17
+ version: 'latest',
18
+ };
13
19
  const envOptions = {
14
20
  configName: process.env.CONFIG_NAME,
15
21
  configServerUrl: process.env.CONFIG_SERVER_URL,
@@ -25,8 +31,8 @@ for (const key in envOptions) {
25
31
  }
26
32
  let baseOptions = undefined;
27
33
  function initializeOptions(options) {
28
- debug('initializing options with %j and env %j', options, envOptions);
29
- const mergedOptions = (0, deepmerge_1.default)(options, envOptions);
34
+ debug('initializing options with default options: %j function input: %j and environment variables: %j', defaultOptions, options, envOptions);
35
+ const mergedOptions = deepmerge_1.default.all([defaultOptions, options, envOptions]);
30
36
  debug('merged options: %j', mergedOptions);
31
37
  const [errors, validatedOptions] = (0, validator_1.validate)(validator_1.ajvOptionsValidator, types_1.optionsSchema, mergedOptions);
32
38
  if (errors) {
@@ -1 +1 @@
1
- {"version":3,"file":"options.js","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":";;;;;;AAAA,0DAAkC;AAClC,mCAAqD;AACrD,2CAA4D;AAC5D,yCAA4C;AAC5C,qCAA6C;AAE7C,MAAM,KAAK,GAAG,IAAA,mBAAW,EAAC,SAAS,CAAC,CAAC;AAErC,MAAM,UAAU,GAA+C;IAC7D,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW;IACnC,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB;IAC9C,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc;IACnC,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB;IAC5C,+BAA+B,EAAE,OAAO,CAAC,GAAG,CAAC,2CAA2C;CACzF,CAAC;AAEF,iFAAiF;AACjF,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;IAC7B,IAAI,UAAU,CAAC,GAAwB,CAAC,KAAK,SAAS,EAAE,CAAC;QACvD,OAAO,UAAU,CAAC,GAAwB,CAAC,CAAC;IAC9C,CAAC;AACH,CAAC;AAED,IAAI,WAAW,GAA4B,SAAS,CAAC;AAErD,SAAgB,iBAAiB,CAAC,OAA6B;IAC7D,KAAK,CAAC,yCAAyC,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IACtE,MAAM,aAAa,GAAG,IAAA,mBAAS,EAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAErD,KAAK,CAAC,oBAAoB,EAAE,aAAa,CAAC,CAAC;IAE3C,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,GAAG,IAAA,oBAAQ,EAAC,+BAAmB,EAAE,qBAAa,EAAE,aAAa,CAAC,CAAC;IAE/F,IAAI,MAAM,EAAE,CAAC;QACX,KAAK,CAAC,8BAA8B,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACzD,MAAM,IAAA,0BAAiB,EACrB,uBAAuB,EACvB,6GAA6G,EAC7G,MAAM,CACP,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACxC,WAAW,GAAG,gBAA+B,CAAC;IAC9C,OAAO,WAAW,CAAC;AACrB,CAAC;AApBD,8CAoBC;AAED,SAAgB,UAAU;IACxB,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACzD,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAC3B,OAAO,WAAW,CAAC;AACrB,CAAC;AARD,gCAQC"}
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":";;;;;;AAAA,0DAAkC;AAClC,mCAAqD;AACrD,2CAA4D;AAC5D,yCAA4C;AAC5C,qCAA6C;AAC7C,2CAA2C;AAE3C,MAAM,KAAK,GAAG,IAAA,mBAAW,EAAC,SAAS,CAAC,CAAC;AAErC,MAAM,cAAc,GAAgB;IAClC,UAAU,EAAE,wBAAY;IACxB,eAAe,EAAE,uBAAuB;IACxC,OAAO,EAAE,QAAQ;CAClB,CAAC;AAEF,MAAM,UAAU,GAA+C;IAC7D,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW;IACnC,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB;IAC9C,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc;IACnC,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB;IAC5C,+BAA+B,EAAE,OAAO,CAAC,GAAG,CAAC,2CAA2C;CACzF,CAAC;AAEF,iFAAiF;AACjF,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;IAC7B,IAAI,UAAU,CAAC,GAAwB,CAAC,KAAK,SAAS,EAAE,CAAC;QACvD,OAAO,UAAU,CAAC,GAAwB,CAAC,CAAC;IAC9C,CAAC;AACH,CAAC;AAED,IAAI,WAAW,GAA4B,SAAS,CAAC;AAErD,SAAgB,iBAAiB,CAAC,OAA6B;IAC7D,KAAK,CAAC,gGAAgG,EAAE,cAAc,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IAC7I,MAAM,aAAa,GAAG,mBAAS,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;IAC3E,KAAK,CAAC,oBAAoB,EAAE,aAAa,CAAC,CAAC;IAE3C,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,GAAG,IAAA,oBAAQ,EAAC,+BAAmB,EAAE,qBAAa,EAAE,aAAa,CAAC,CAAC;IAE/F,IAAI,MAAM,EAAE,CAAC;QACX,KAAK,CAAC,8BAA8B,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACzD,MAAM,IAAA,0BAAiB,EACrB,uBAAuB,EACvB,6GAA6G,EAC7G,MAAM,CACP,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACxC,WAAW,GAAG,gBAA+B,CAAC;IAC9C,OAAO,WAAW,CAAC;AACrB,CAAC;AAnBD,8CAmBC;AAED,SAAgB,UAAU;IACxB,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACzD,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAC3B,OAAO,WAAW,CAAC;AACrB,CAAC;AARD,gCAQC"}
package/dist/types.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  /// <reference types="lodash" />
2
2
  import { typeSymbol } from '@map-colonies/schemas/build/schemas/symbol';
3
3
  import { JSONSchemaType } from 'ajv';
4
+ import type { Registry } from 'prom-client';
4
5
  type Prettify<T> = {
5
6
  [K in keyof T]: T[K];
6
7
  } & {};
@@ -62,11 +63,16 @@ export interface BaseOptions {
62
63
  /**
63
64
  * Represents the options for configuration.
64
65
  */
65
- export type ConfigOptions<T extends SchemaWithType> = Prettify<BaseOptions & {
66
+ export type ConfigOptions<T extends SchemaWithType> = Prettify<Partial<BaseOptions> & {
66
67
  /**
67
68
  * The schema of the configuration object.
68
69
  */
69
70
  schema: T;
71
+ /**
72
+ * The registry for the metrics. If not provided, the metrics will not be registered.
73
+ * Depends on the prom-client package being installed.
74
+ */
75
+ metricsRegistry?: Registry;
70
76
  }>;
71
77
  export declare const optionsSchema: JSONSchemaType<BaseOptions>;
72
78
  /**
@@ -100,6 +106,11 @@ export interface ConfigInstance<T> {
100
106
  * @returns The resolved options.
101
107
  */
102
108
  getResolvedOptions: () => BaseOptions;
109
+ /**
110
+ * Initializes the metrics for the configuration object.
111
+ * @param registry - The registry for the metrics.
112
+ */
113
+ initializeMetrics: (registry: Registry) => void;
103
114
  }
104
115
  export {};
105
116
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4CAA4C,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAErC,KAAK,QAAQ,CAAC,CAAC,IAAI;KAChB,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAErB,GAAG,EAAE,CAAC;AAEP,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;AAE3E,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAEhD,MAAM,WAAW,MAAM;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE;QACN,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;IACF,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,MAAM,CAAC;IACtB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,OAAO,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC3B;;OAEG;IACH,eAAe,EAAE,MAAM,CAAC;IACxB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;OAEG;IACH,+BAA+B,CAAC,EAAE,OAAO,CAAC;IAC1C;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,cAAc,IAAI,QAAQ,CAC5D,WAAW,GAAG;IACZ;;OAEG;IACH,MAAM,EAAE,CAAC,CAAC;CACX,CACF,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,cAAc,CAAC,WAAW,CAiBrD,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B;;;;;OAKG;IACH,GAAG,EAAE,CAAC,KAAK,SAAS,MAAM,EAAE,IAAI,EAAE,KAAK,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAErE;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC,CAAC;IAEhB;;;OAGG;IACH,cAAc,EAAE,MAAM;QACpB,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IAEF;;;OAGG;IACH,kBAAkB,EAAE,MAAM,WAAW,CAAC;CACvC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4CAA4C,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AACrC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,KAAK,QAAQ,CAAC,CAAC,IAAI;KAChB,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAErB,GAAG,EAAE,CAAC;AAEP,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;AAE3E,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAEhD,MAAM,WAAW,MAAM;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE;QACN,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;IACF,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,MAAM,CAAC;IACtB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,OAAO,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC3B;;OAEG;IACH,eAAe,EAAE,MAAM,CAAC;IACxB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;OAEG;IACH,+BAA+B,CAAC,EAAE,OAAO,CAAC;IAC1C;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,cAAc,IAAI,QAAQ,CAC5D,OAAO,CAAC,WAAW,CAAC,GAAG;IACrB;;OAEG;IACH,MAAM,EAAE,CAAC,CAAC;IACV;;;OAGG;IACH,eAAe,CAAC,EAAE,QAAQ,CAAC;CAC5B,CACF,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,cAAc,CAAC,WAAW,CAiBrD,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B;;;;;OAKG;IACH,GAAG,EAAE,CAAC,KAAK,SAAS,MAAM,EAAE,IAAI,EAAE,KAAK,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAErE;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC,CAAC;IAEhB;;;OAGG;IACH,cAAc,EAAE,MAAM;QACpB,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IAEF;;;OAGG;IACH,kBAAkB,EAAE,MAAM,WAAW,CAAC;IAEtC;;;OAGG;IACH,iBAAiB,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAC;CACjD"}
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAAA,uEAAwE;AAkF3D,QAAA,aAAa,GAAgC;IACxD,QAAQ,EAAE,CAAC,YAAY,EAAE,iBAAiB,EAAE,SAAS,CAAC;IACtD,oBAAoB,EAAE,KAAK;IAC3B,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC9B,OAAO,EAAE;YACP,KAAK,EAAE;gBACL,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;gBACnC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE;aAChC;SACF;QACD,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACnC,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE;QAChD,+BAA+B,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE;QACpE,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE;KACzE;CACF,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAAA,uEAAwE;AAwF3D,QAAA,aAAa,GAAgC;IACxD,QAAQ,EAAE,CAAC,YAAY,EAAE,iBAAiB,EAAE,SAAS,CAAC;IACtD,oBAAoB,EAAE,KAAK;IAC3B,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC9B,OAAO,EAAE;YACP,KAAK,EAAE;gBACL,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;gBACnC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE;aAChC;SACF;QACD,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACnC,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE;QAChD,+BAA+B,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE;QACpE,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE;KACzE;CACF,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const PACKAGE_VERSION = "1.3.0";
2
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe,UAAU,CAAC"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PACKAGE_VERSION = void 0;
4
+ /* prettier-ignore */
5
+ /* eslint-disable*/
6
+ exports.PACKAGE_VERSION = '1.3.0';
7
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":";;;AAAA,qBAAqB;AACrB,mBAAmB;AACN,QAAA,eAAe,GAAG,OAAO,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@map-colonies/config",
3
- "version": "1.1.0",
3
+ "version": "1.3.0",
4
4
  "description": "Config package for MapColonies with support for central config management",
5
5
  "main": "dist/index.js",
6
6
  "exports": {
@@ -16,12 +16,14 @@
16
16
  "prelint": "npm run format",
17
17
  "lint": "eslint .",
18
18
  "lint:fix": "eslint --fix .",
19
+ "pretest": "npm run generate:version",
19
20
  "test": "cross-env SUPPRESS_NO_CONFIG_WARNING=true NODE_CONFIG_STRICT_MODE=false jest --config=./tests/configurations/jest.config.js",
20
- "prebuild": "npm run clean",
21
+ "prebuild": "npm run clean && npm run generate:version",
21
22
  "build": "tsc --project tsconfig.build.json",
22
23
  "start": "npm run build && cd dist && node ./index.js",
23
24
  "clean": "rimraf dist",
24
- "prepublish": "npm run build"
25
+ "prepublish": "npm run build",
26
+ "generate:version": "node scripts/generateVersionFile.mjs"
25
27
  },
26
28
  "repository": {
27
29
  "type": "git",
@@ -61,7 +63,13 @@
61
63
  "undici": "^6.18.2"
62
64
  },
63
65
  "peerDependencies": {
64
- "@map-colonies/schemas": "^1.0.0"
66
+ "@map-colonies/schemas": "^1.0.0",
67
+ "prom-client": "^15.0.0"
68
+ },
69
+ "peerDependenciesMeta": {
70
+ "prom-client": {
71
+ "optional": true
72
+ }
65
73
  },
66
74
  "devDependencies": {
67
75
  "@commitlint/cli": "^11.0.0",
@@ -80,6 +88,7 @@
80
88
  "prettier": "^2.2.1",
81
89
  "pretty-quick": "^3.1.0",
82
90
  "ts-jest": "^29.1.5",
83
- "typescript": "^5.4.5"
91
+ "typescript": "^5.4.5",
92
+ "prom-client": "^15.0.0"
84
93
  }
85
94
  }