balena-settings-client 5.0.3-build-bump-ts-9127d3d46c063abbd8a55af1a53492de54fb1154-1 → 5.0.4-build-drop-lodash-1eab7d7f4d034e4efb1b0ae553200b857ca25a43-1

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.
@@ -1,3 +1,49 @@
1
+ - commits:
2
+ - subject: test fix
3
+ hash: 1eab7d7f4d034e4efb1b0ae553200b857ca25a43
4
+ body: ""
5
+ footer:
6
+ Change-type: patch
7
+ change-type: patch
8
+ author: Matthew Yarmolinsky
9
+ - subject: Replace `lodash` with `es-toolkit`
10
+ hash: 01a7fd44f4577e7a53579d6cb20dfa8a4f97c08a
11
+ body: ""
12
+ footer:
13
+ Change-type: patch
14
+ change-type: patch
15
+ author: Matthew Yarmolinsky
16
+ - subject: Add dependency `es-toolkit`
17
+ hash: f22280a959117d429786b079e338f6be84d8bb25
18
+ body: ""
19
+ footer:
20
+ Change-type: patch
21
+ change-type: patch
22
+ author: Matthew Yarmolinsky
23
+ - subject: Drop `lodash` as a dependency
24
+ hash: 03410f92fe297c2c0cc9d8f256d056147b45b0ac
25
+ body: ""
26
+ footer:
27
+ Change-type: patch
28
+ change-type: patch
29
+ author: Matthew Yarmolinsky
30
+ - subject: "tsconfig: Add `es2019` to `lib` and skip lib check"
31
+ hash: 28bbf523bbc58b60a782619eb26413121a9e0409
32
+ body: ""
33
+ footer:
34
+ Change-type: patch
35
+ change-type: patch
36
+ author: Matthew Yarmolinsky
37
+ - subject: Update `jsdoc-to-markdown`
38
+ hash: 441e6ee5e676ee59a132f4949f9583791269db41
39
+ body: ""
40
+ footer:
41
+ Change-type: patch
42
+ change-type: patch
43
+ author: Matthew Yarmolinsky
44
+ version: 5.0.4
45
+ title: ""
46
+ date: 2025-12-22T23:22:26.981Z
1
47
  - commits:
2
48
  - subject: Update TypeScript to 5.1.3
3
49
  hash: 9127d3d46c063abbd8a55af1a53492de54fb1154
@@ -8,7 +54,7 @@
8
54
  author: Thodoris Greasidis
9
55
  version: 5.0.3
10
56
  title: ""
11
- date: 2023-06-02T15:27:44.054Z
57
+ date: 2023-06-02T16:18:50.436Z
12
58
  - commits:
13
59
  - subject: Update Typescript to v5.0.2 to fix master
14
60
  hash: f83a096015ccb7bdd6195c8cc0fbbe16ce62ae5f
package/CHANGELOG.md CHANGED
@@ -4,6 +4,16 @@ All notable changes to this project will be documented in this file
4
4
  automatically by Versionist. DO NOT EDIT THIS FILE MANUALLY!
5
5
  This project adheres to [Semantic Versioning](http://semver.org/).
6
6
 
7
+ # v5.0.4
8
+ ## (2025-12-22)
9
+
10
+ * test fix [Matthew Yarmolinsky]
11
+ * Replace `lodash` with `es-toolkit` [Matthew Yarmolinsky]
12
+ * Add dependency `es-toolkit` [Matthew Yarmolinsky]
13
+ * Drop `lodash` as a dependency [Matthew Yarmolinsky]
14
+ * tsconfig: Add `es2019` to `lib` and skip lib check [Matthew Yarmolinsky]
15
+ * Update `jsdoc-to-markdown` [Matthew Yarmolinsky]
16
+
7
17
  # v5.0.3
8
18
  ## (2023-06-02)
9
19
 
package/build/defaults.js CHANGED
@@ -116,12 +116,12 @@ module.exports = {
116
116
  * @property {Number} imageCacheTime - image cache time
117
117
  * @memberof defaults
118
118
  */
119
- imageCacheTime: 1 * 1000 * 60 * 60 * 24 * 7,
119
+ imageCacheTime: 1 * 1000 * 60 * 60 * 24 * 7, // 1 week in milliseconds
120
120
  /**
121
121
  * @property {Number} tokenRefreshInterval - token refresh interval
122
122
  * @memberof defaults
123
123
  */
124
- tokenRefreshInterval: 1 * 1000 * 60 * 60,
124
+ tokenRefreshInterval: 1 * 1000 * 60 * 60, // 1 hour in milliseconds
125
125
  /**
126
126
  * @property {String} apiKeyVariable - api key environment variable
127
127
  * @memberof defaults
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../lib/defaults.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;EAcE;AAEF,mCAAqC;AACrC,sCAAwC;AACxC,6BAAwC;AAOxC,iBAAS;IACR;;;OAGG;IACH,SAAS,EAAE,kBAAkB;IAE7B;;;OAGG;IACH,MAAM;QACL,OAAO,sBAAe,IAAI,CAAC,SAAS,CAAE,CAAC;IACxC,CAAC;IAED;;;OAGG;IACH,MAAM;QACL,OAAO,cAAO,IAAI,CAAC,SAAS,CAAE,CAAC;IAChC,CAAC;IAED;;;OAGG;IACH,WAAW;QACV,OAAO,mBAAY,IAAI,CAAC,SAAS,CAAE,CAAC;IACrC,CAAC;IAED;;;OAGG;IACH,YAAY;QACX,OAAO,oBAAa,IAAI,CAAC,SAAS,CAAE,CAAC;IACtC,CAAC;IAED;;;OAGG;IACH,QAAQ;QACP,OAAO,wBAAiB,IAAI,CAAC,SAAS,CAAE,CAAC;IAC1C,CAAC;IAED;;;OAGG;IACH,YAAY;QACX,OAAO,4BAAqB,IAAI,CAAC,SAAS,CAAE,CAAC;IAC9C,CAAC;IAED;;;OAGG;IACH,QAAQ;QACP,IAAI,IAAI,CAAC,SAAS,KAAK,kBAAkB,EAAE;YAC1C,OAAO,oBAAoB,CAAC;SAC5B;aAAM,IAAI,IAAI,CAAC,SAAS,KAAK,oBAAoB,EAAE;YACnD,OAAO,4BAA4B,CAAC;SACpC;aAAM,IAAI,IAAI,CAAC,SAAS,KAAK,UAAU,EAAE;YACzC,OAAO,gBAAgB,CAAC;SACxB;QACD,OAAO,kBAAW,IAAI,CAAC,SAAS,CAAE,CAAC;IACpC,CAAC;IAED;;;OAGG;IACH,SAAS;QACR,OAAO,iBAAU,IAAI,CAAC,SAAS,CAAE,CAAC;IACnC,CAAC;IAED;;;OAGG;IACH,aAAa,EAAE,IAAA,WAAQ,EAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAErD;;;OAGG;IACH,iBAAiB,EAAE,IAAA,WAAQ,EAAC,QAAQ,EAAE,gBAAgB,CAAC;IAEvD;;;OAGG;IACH,cAAc;QACb,OAAO,IAAA,WAAQ,EAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED;;;OAGG;IACH,YAAY;QACX,OAAO,IAAA,WAAQ,EAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC;IAED;;;OAGG;IACH,cAAc,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IAE3C;;;OAGG;IACH,oBAAoB,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE;IAExC;;;OAGG;IACH,cAAc,EAAE,gBAAgB;CAChC,CAAC"}
1
+ {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../lib/defaults.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;EAcE;AAEF,mCAAqC;AACrC,sCAAwC;AACxC,6BAAwC;AAOxC,iBAAS;IACR;;;OAGG;IACH,SAAS,EAAE,kBAAkB;IAE7B;;;OAGG;IACH,MAAM;QACL,OAAO,sBAAe,IAAI,CAAC,SAAS,CAAE,CAAC;IACxC,CAAC;IAED;;;OAGG;IACH,MAAM;QACL,OAAO,cAAO,IAAI,CAAC,SAAS,CAAE,CAAC;IAChC,CAAC;IAED;;;OAGG;IACH,WAAW;QACV,OAAO,mBAAY,IAAI,CAAC,SAAS,CAAE,CAAC;IACrC,CAAC;IAED;;;OAGG;IACH,YAAY;QACX,OAAO,oBAAa,IAAI,CAAC,SAAS,CAAE,CAAC;IACtC,CAAC;IAED;;;OAGG;IACH,QAAQ;QACP,OAAO,wBAAiB,IAAI,CAAC,SAAS,CAAE,CAAC;IAC1C,CAAC;IAED;;;OAGG;IACH,YAAY;QACX,OAAO,4BAAqB,IAAI,CAAC,SAAS,CAAE,CAAC;IAC9C,CAAC;IAED;;;OAGG;IACH,QAAQ;QACP,IAAI,IAAI,CAAC,SAAS,KAAK,kBAAkB,EAAE,CAAC;YAC3C,OAAO,oBAAoB,CAAC;QAC7B,CAAC;aAAM,IAAI,IAAI,CAAC,SAAS,KAAK,oBAAoB,EAAE,CAAC;YACpD,OAAO,4BAA4B,CAAC;QACrC,CAAC;aAAM,IAAI,IAAI,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;YAC1C,OAAO,gBAAgB,CAAC;QACzB,CAAC;QACD,OAAO,kBAAW,IAAI,CAAC,SAAS,CAAE,CAAC;IACpC,CAAC;IAED;;;OAGG;IACH,SAAS;QACR,OAAO,iBAAU,IAAI,CAAC,SAAS,CAAE,CAAC;IACnC,CAAC;IAED;;;OAGG;IACH,aAAa,EAAE,IAAA,WAAQ,EAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAErD;;;OAGG;IACH,iBAAiB,EAAE,IAAA,WAAQ,EAAC,QAAQ,EAAE,gBAAgB,CAAC;IAEvD;;;OAGG;IACH,cAAc;QACb,OAAO,IAAA,WAAQ,EAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED;;;OAGG;IACH,YAAY;QACX,OAAO,IAAA,WAAQ,EAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC;IAED;;;OAGG;IACH,cAAc,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,yBAAyB;IAEtE;;;OAGG;IACH,oBAAoB,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,yBAAyB;IAEnE;;;OAGG;IACH,cAAc,EAAE,gBAAgB;CAChC,CAAC"}
@@ -1,4 +1,3 @@
1
- import * as _ from 'lodash';
2
1
  /**
3
2
  * @summary Get setting name from environment variable
4
3
  * @function
@@ -50,4 +49,6 @@ export declare const isSettingVariable: (variable: string) => boolean;
50
49
  */
51
50
  export declare const parse: (environment: {
52
51
  [k: string]: string | undefined;
53
- }) => _.Dictionary<string | undefined>;
52
+ }) => {
53
+ [k: string]: string | undefined;
54
+ };
@@ -16,7 +16,7 @@ limitations under the License.
16
16
  */
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.parse = exports.isSettingVariable = exports.getSettingName = void 0;
19
- var _ = require("lodash");
19
+ var es_toolkit_1 = require("es-toolkit");
20
20
  /**
21
21
  * @summary Get setting name from environment variable
22
22
  * @function
@@ -36,7 +36,7 @@ var getSettingName = function (variable) {
36
36
  if (!variable) {
37
37
  throw new Error('Missing variable name');
38
38
  }
39
- return _.camelCase(variable
39
+ return (0, es_toolkit_1.camelCase)(variable
40
40
  .replace(/^(BALENARC|RESINRC)_/i, '')
41
41
  .replace(/(^|_)RESIN(_|$)/, '$1BALENA$2'));
42
42
  };
@@ -79,10 +79,15 @@ exports.isSettingVariable = isSettingVariable;
79
79
  * > }
80
80
  */
81
81
  var parse = function (environment) {
82
- return _.chain(environment)
83
- .pickBy(function (v, k) { return (0, exports.isSettingVariable)(k) && !!v; })
84
- .mapKeys(function (_v, k) { return (0, exports.getSettingName)(k); })
85
- .value();
82
+ return Object.fromEntries(Object.entries(environment)
83
+ .filter(function (_a) {
84
+ var k = _a[0], v = _a[1];
85
+ return (0, exports.isSettingVariable)(k) && !!v;
86
+ })
87
+ .map(function (_a) {
88
+ var k = _a[0], v = _a[1];
89
+ return [(0, exports.getSettingName)(k), v];
90
+ }));
86
91
  };
87
92
  exports.parse = parse;
88
93
  //# sourceMappingURL=environment.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"environment.js","sourceRoot":"","sources":["../lib/environment.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;EAcE;;;AAEF,0BAA4B;AAE5B;;;;;;;;;;;;;GAaG;AACI,IAAM,cAAc,GAAG,UAAC,QAAiB;IAC/C,QAAQ,GAAG,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1D,IAAI,CAAC,QAAQ,EAAE;QACd,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;KACzC;IACD,OAAO,CAAC,CAAC,SAAS,CACjB,QAAQ;SACN,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC;SACpC,OAAO,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAC1C,CAAC;AACH,CAAC,CAAC;AAVW,QAAA,cAAc,kBAUzB;AAEF;;;;;;;;;;;;;;;GAeG;AACI,IAAM,iBAAiB,GAAG,UAAC,QAAgB;IACjD,OAAA,4BAA4B,CAAC,IAAI,CAAC,QAAQ,CAAC;AAA3C,CAA2C,CAAC;AADhC,QAAA,iBAAiB,qBACe;AAE7C;;;;;;;;;;;;;;;;GAgBG;AACI,IAAM,KAAK,GAAG,UAAC,WAAgD;IACrE,OAAA,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC;SAClB,MAAM,CAAC,UAAC,CAAqB,EAAE,CAAS,IAAK,OAAA,IAAA,yBAAiB,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAA3B,CAA2B,CAAC;SACzE,OAAO,CAAC,UAAC,EAAE,EAAE,CAAC,IAAK,OAAA,IAAA,sBAAc,EAAC,CAAC,CAAC,EAAjB,CAAiB,CAAC;SACrC,KAAK,EAAE;AAHT,CAGS,CAAC;AAJE,QAAA,KAAK,SAIP"}
1
+ {"version":3,"file":"environment.js","sourceRoot":"","sources":["../lib/environment.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;EAcE;;;AAEF,yCAAuC;AAEvC;;;;;;;;;;;;;GAaG;AACI,IAAM,cAAc,GAAG,UAAC,QAAiB;IAC/C,QAAQ,GAAG,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1D,IAAI,CAAC,QAAQ,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,IAAA,sBAAS,EACf,QAAQ;SACN,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC;SACpC,OAAO,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAC1C,CAAC;AACH,CAAC,CAAC;AAVW,QAAA,cAAc,kBAUzB;AAEF;;;;;;;;;;;;;;;GAeG;AACI,IAAM,iBAAiB,GAAG,UAAC,QAAgB;IACjD,OAAA,4BAA4B,CAAC,IAAI,CAAC,QAAQ,CAAC;AAA3C,CAA2C,CAAC;AADhC,QAAA,iBAAiB,qBACe;AAE7C;;;;;;;;;;;;;;;;GAgBG;AACI,IAAM,KAAK,GAAG,UAAC,WAAgD;IACrE,OAAA,MAAM,CAAC,WAAW,CACjB,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;SACzB,MAAM,CAAC,UAAC,EAAM;YAAL,CAAC,QAAA,EAAE,CAAC,QAAA;QAAM,OAAA,IAAA,yBAAiB,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAA3B,CAA2B,CAAC;SAC/C,GAAG,CAAC,UAAC,EAAM;YAAL,CAAC,QAAA,EAAE,CAAC,QAAA;QAAM,OAAA,CAAC,IAAA,sBAAc,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAAtB,CAAsB,CAAC,CACzC;AAJD,CAIC,CAAC;AALU,QAAA,KAAK,SAKf"}
@@ -21,5 +21,5 @@ export declare const get: <T>(name: string) => T;
21
21
  * settings.getAll()
22
22
  */
23
23
  export declare const getAll: () => {
24
- [x: string]: unknown;
24
+ [k: string]: string | undefined;
25
25
  };
package/build/settings.js CHANGED
@@ -61,7 +61,7 @@ exports.getAll = exports.get = void 0;
61
61
  * @module settings
62
62
  */
63
63
  var fs = require("fs");
64
- var _ = require("lodash");
64
+ var es_toolkit_1 = require("es-toolkit");
65
65
  var config = require("./config");
66
66
  var defaults = require("./defaults");
67
67
  var environment = require("./environment");
@@ -89,10 +89,37 @@ var readConfigFile = function (file) {
89
89
  }
90
90
  };
91
91
  var replaceResinKeys = function (parsedConfig) {
92
- return _.mapKeys(parsedConfig, function (_value, key) { return key.replace('resin', 'balena'); });
92
+ return Object.fromEntries(Object.entries(parsedConfig).map(function (_a) {
93
+ var key = _a[0], value = _a[1];
94
+ return [
95
+ key.replace('resin', 'balena'),
96
+ value,
97
+ ];
98
+ }));
93
99
  };
94
- var getSettings = _.once(function () {
95
- return utils.mergeObjects({}, defaults, replaceResinKeys(readConfigFile(config.paths.userLegacy)), readConfigFile(config.paths.user), replaceResinKeys(readConfigFile(config.paths.projectLegacy)), readConfigFile(config.paths.project), environment.parse(process.env));
100
+ // Helper to safely transform if the file exists
101
+ var safeLoad = function (path, transform) {
102
+ var resolvedConfig = readConfigFile(path);
103
+ if (!resolvedConfig) {
104
+ return undefined;
105
+ }
106
+ return transform ? transform(resolvedConfig) : resolvedConfig;
107
+ };
108
+ var getSettings = (0, es_toolkit_1.once)(function () {
109
+ var settingsSources = [
110
+ {},
111
+ defaults,
112
+ safeLoad(config.paths.userLegacy, replaceResinKeys),
113
+ safeLoad(config.paths.user),
114
+ safeLoad(config.paths.projectLegacy, replaceResinKeys),
115
+ safeLoad(config.paths.project),
116
+ environment.parse(process.env),
117
+ ];
118
+ return settingsSources
119
+ .filter(function (source) { return source != null; })
120
+ .reduce(function (acc, source) {
121
+ return utils.mergeObjects(acc, source);
122
+ }, {});
96
123
  });
97
124
  /**
98
125
  * @summary Get a setting
@@ -122,7 +149,11 @@ exports.get = get;
122
149
  */
123
150
  var getAll = function () {
124
151
  var settings = getSettings();
125
- return _.mapValues(settings, function (_setting, name) { return (0, exports.get)(name); });
152
+ for (var _i = 0, _a = Object.keys(settings); _i < _a.length; _i++) {
153
+ var name = _a[_i];
154
+ settings[name] = (0, exports.get)(name);
155
+ }
156
+ return settings;
126
157
  };
127
158
  exports.getAll = getAll;
128
159
  //# sourceMappingURL=settings.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"settings.js","sourceRoot":"","sources":["../lib/settings.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;EAcE;;;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AAEH,uBAAyB;AACzB,0BAA4B;AAE5B,iCAAoC;AACpC,qCAAwC;AACxC,2CAA6C;AAC7C,+BAAiC;AACjC,6BAA+B;AAE/B,IAAM,cAAc,GAAG,UAAC,IAAY;IACnC,IAAI,YAAY,GAAG,IAAI,CAAC;IAExB,IAAI;QACH,+CAA+C;QAC/C,+CAA+C;QAC/C,6CAA6C;QAC7C,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;KAC3D;IAAC,OAAO,KAAK,EAAE;QACf,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;YAC5B,OAAO,EAAE,CAAC;SACV;QACD,MAAM,KAAK,CAAC;KACZ;IAED,IAAI;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;KAChC;IAAC,OAAO,KAAK,EAAE;QACf,MAAM,IAAI,KAAK,CAAC,oCAA6B,IAAI,eAAK,KAAK,CAAC,OAAO,CAAE,CAAC,CAAC;KACvE;AACF,CAAC,CAAC;AAEF,IAAM,gBAAgB,GAAG,UAAC,YAAoB;IAC7C,OAAA,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,UAAC,MAAM,EAAE,GAAG,IAAK,OAAA,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,EAA9B,CAA8B,CAAC;AAAxE,CAAwE,CAAC;AAE1E,IAAM,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC;IAC1B,OAAA,KAAK,CAAC,YAAY,CACjB,EAAE,EACF,QAAQ,EACR,gBAAgB,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,EACzD,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EACjC,gBAAgB,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,EAC5D,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EACpC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAC9B;AARD,CAQC,CACD,CAAC;AAEF;;;;;;;;;;GAUG;AACI,IAAM,GAAG,GAAG,UAAI,IAAY;IAClC,IAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,OAAO,KAAK,CAAC,eAAe,CAAI,QAAQ,EAAE,IAAI,CAAC,CAAC;AACjD,CAAC,CAAC;AAHW,QAAA,GAAG,OAGd;AAEF;;;;;;;;;GASG;AACI,IAAM,MAAM,GAAG;IACrB,IAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,OAAO,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,UAAC,QAAQ,EAAE,IAAI,IAAK,OAAA,IAAA,WAAG,EAAC,IAAI,CAAC,EAAT,CAAS,CAAC,CAAC;AAC7D,CAAC,CAAC;AAHW,QAAA,MAAM,UAGjB"}
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../lib/settings.ts"],"names":[],"mappings":"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"}
package/build/utils.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { merge } from 'es-toolkit';
1
2
  /**
2
3
  * @summary Merge objects into one
3
4
  * @function
@@ -12,18 +13,11 @@
12
13
  * @example
13
14
  * const first = { foo: 'bar' }
14
15
  * const second = { foo: 'baz' }
15
- * const third = { foo: 'qux' }
16
16
  *
17
- * console.log(utils.mergeObjects(first, second, third))
17
+ * console.log(utils.mergeObjects(first, second))
18
18
  * > { foo: 'qux' }
19
19
  */
20
- export declare const mergeObjects: {
21
- <TObject, TSource>(object: TObject, source: TSource): TObject & TSource;
22
- <TObject_1, TSource1, TSource2>(object: TObject_1, source1: TSource1, source2: TSource2): TObject_1 & TSource1 & TSource2;
23
- <TObject_2, TSource1_1, TSource2_1, TSource3>(object: TObject_2, source1: TSource1_1, source2: TSource2_1, source3: TSource3): TObject_2 & TSource1_1 & TSource2_1 & TSource3;
24
- <TObject_3, TSource1_2, TSource2_2, TSource3_1, TSource4>(object: TObject_3, source1: TSource1_2, source2: TSource2_2, source3: TSource3_1, source4: TSource4): TObject_3 & TSource1_2 & TSource2_2 & TSource3_1 & TSource4;
25
- (object: any, ...otherArgs: any[]): any;
26
- };
20
+ export declare const mergeObjects: typeof merge;
27
21
  /**
28
22
  * @summary Evaluate a setting property
29
23
  * @function
package/build/utils.js CHANGED
@@ -16,7 +16,7 @@ limitations under the License.
16
16
  */
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.evaluateSetting = exports.mergeObjects = void 0;
19
- var _ = require("lodash");
19
+ var es_toolkit_1 = require("es-toolkit");
20
20
  /**
21
21
  * @summary Merge objects into one
22
22
  * @function
@@ -31,17 +31,23 @@ var _ = require("lodash");
31
31
  * @example
32
32
  * const first = { foo: 'bar' }
33
33
  * const second = { foo: 'baz' }
34
- * const third = { foo: 'qux' }
35
34
  *
36
- * console.log(utils.mergeObjects(first, second, third))
35
+ * console.log(utils.mergeObjects(first, second))
37
36
  * > { foo: 'qux' }
38
37
  */
39
- // Notice that this function equals `_.merge` and thus the latter
38
+ // Notice that this function equals `merge` and thus the latter
40
39
  // could be used directly, making this function declaration unnecessary.
41
40
  // However, we decided to create a new function for this in order to
42
41
  // test specific behaviour that affects this module, like function
43
42
  // merging.
44
- exports.mergeObjects = _.merge;
43
+ exports.mergeObjects = es_toolkit_1.merge;
44
+ var get = function (obj, path, defaultValue) {
45
+ // Regex to convert "users[0].name" -> "users.0.name"
46
+ var normalizedPath = path.replace(/\[(\d+)\]/g, '.$1');
47
+ var keys = normalizedPath.split('.');
48
+ var result = keys.reduce(function (acc, key) { return acc === null || acc === void 0 ? void 0 : acc[key]; }, obj);
49
+ return result !== null && result !== void 0 ? result : defaultValue;
50
+ };
45
51
  /**
46
52
  * @summary Evaluate a setting property
47
53
  * @function
@@ -76,11 +82,11 @@ exports.mergeObjects = _.merge;
76
82
  */
77
83
  var evaluateSetting = function (settings, property) {
78
84
  if (settings === void 0) { settings = {}; }
79
- var value = _.get(settings, property);
85
+ var value = get(settings, property);
80
86
  if (value == null) {
81
87
  throw new Error("Setting not found: ".concat(property));
82
88
  }
83
- if (_.isFunction(value)) {
89
+ if (typeof value === 'function') {
84
90
  // This enables nifty things like dynamic
85
91
  // settings that rely on other settings
86
92
  value = value.call(settings);
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../lib/utils.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;EAcE;;;AAEF,0BAA4B;AAE5B;;;;;;;;;;;;;;;;;;GAkBG;AAEH,iEAAiE;AACjE,wEAAwE;AACxE,oEAAoE;AACpE,kEAAkE;AAClE,WAAW;AACE,QAAA,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC;AAEpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACI,IAAM,eAAe,GAAG,UAC9B,QAAwC,EACxC,QAAgB;IADhB,yBAAA,EAAA,aAAwC;IAGxC,IAAI,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAEtC,IAAI,KAAK,IAAI,IAAI,EAAE;QAClB,MAAM,IAAI,KAAK,CAAC,6BAAsB,QAAQ,CAAE,CAAC,CAAC;KAClD;IAED,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;QACxB,yCAAyC;QACzC,uCAAuC;QACvC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAC7B;IAED,OAAO,KAAU,CAAC;AACnB,CAAC,CAAC;AAjBW,QAAA,eAAe,mBAiB1B"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../lib/utils.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;EAcE;;;AAEF,yCAAmC;AAEnC;;;;;;;;;;;;;;;;;GAiBG;AAEH,+DAA+D;AAC/D,wEAAwE;AACxE,oEAAoE;AACpE,kEAAkE;AAClE,WAAW;AACE,QAAA,YAAY,GAAG,kBAAK,CAAC;AAElC,IAAM,GAAG,GAAG,UAAC,GAAQ,EAAE,IAAY,EAAE,YAAkB;IACtD,qDAAqD;IACrD,IAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IAEzD,IAAM,IAAI,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACvC,IAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,GAAG,IAAK,OAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAG,GAAG,CAAC,EAAV,CAAU,EAAE,GAAG,CAAC,CAAC;IAC1D,OAAO,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,YAAY,CAAC;AAC/B,CAAC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACI,IAAM,eAAe,GAAG,UAC9B,QAAwC,EACxC,QAAgB;IADhB,yBAAA,EAAA,aAAwC;IAGxC,IAAI,KAAK,GAAG,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAEpC,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,6BAAsB,QAAQ,CAAE,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;QACjC,yCAAyC;QACzC,uCAAuC;QACvC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,KAAU,CAAC;AACnB,CAAC,CAAC;AAjBW,QAAA,eAAe,mBAiB1B"}
package/build/yaml.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"yaml.js","sourceRoot":"","sources":["../lib/yaml.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;EAcE;;;AAEF;;;;;;;;;;;;;;GAcG;AACI,IAAM,KAAK,GAAG,UAAC,IAAY;IACjC,IAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAA6B,CAAC;IAC9D,IAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,MAAM,EAAE;QAC1C,MAAM,IAAI,KAAK,CAAC,wBAAiB,IAAI,CAAE,CAAC,CAAC;KACzC;IACD,OAAO,MAAM,CAAC;AACf,CAAC,CAAC;AAPW,QAAA,KAAK,SAOhB"}
1
+ {"version":3,"file":"yaml.js","sourceRoot":"","sources":["../lib/yaml.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;EAcE;;;AAEF;;;;;;;;;;;;;;GAcG;AACI,IAAM,KAAK,GAAG,UAAC,IAAY;IACjC,IAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAA6B,CAAC;IAC9D,IAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,wBAAiB,IAAI,CAAE,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC,CAAC;AAPW,QAAA,KAAK,SAOhB"}
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
14
14
  limitations under the License.
15
15
  */
16
16
 
17
- import * as _ from 'lodash';
17
+ import { camelCase } from 'es-toolkit';
18
18
 
19
19
  /**
20
20
  * @summary Get setting name from environment variable
@@ -35,7 +35,7 @@ export const getSettingName = (variable?: string) => {
35
35
  if (!variable) {
36
36
  throw new Error('Missing variable name');
37
37
  }
38
- return _.camelCase(
38
+ return camelCase(
39
39
  variable
40
40
  .replace(/^(BALENARC|RESINRC)_/i, '')
41
41
  .replace(/(^|_)RESIN(_|$)/, '$1BALENA$2'),
@@ -79,7 +79,8 @@ export const isSettingVariable = (variable: string) =>
79
79
  * > }
80
80
  */
81
81
  export const parse = (environment: { [k: string]: string | undefined }) =>
82
- _.chain(environment)
83
- .pickBy((v: string | undefined, k: string) => isSettingVariable(k) && !!v)
84
- .mapKeys((_v, k) => getSettingName(k))
85
- .value();
82
+ Object.fromEntries(
83
+ Object.entries(environment)
84
+ .filter(([k, v]) => isSettingVariable(k) && !!v)
85
+ .map(([k, v]) => [getSettingName(k), v]),
86
+ );
package/lib/settings.ts CHANGED
@@ -60,7 +60,7 @@ limitations under the License.
60
60
  */
61
61
 
62
62
  import * as fs from 'fs';
63
- import * as _ from 'lodash';
63
+ import { once } from 'es-toolkit';
64
64
 
65
65
  import config = require('./config');
66
66
  import defaults = require('./defaults');
@@ -91,19 +91,39 @@ const readConfigFile = (file: string): object => {
91
91
  };
92
92
 
93
93
  const replaceResinKeys = (parsedConfig: object) =>
94
- _.mapKeys(parsedConfig, (_value, key) => key.replace('resin', 'balena'));
94
+ Object.fromEntries(
95
+ Object.entries(parsedConfig).map(([key, value]) => [
96
+ key.replace('resin', 'balena'),
97
+ value,
98
+ ]),
99
+ );
95
100
 
96
- const getSettings = _.once((): { [k: string]: string | undefined } =>
97
- utils.mergeObjects(
101
+ // Helper to safely transform if the file exists
102
+ const safeLoad = (path: string, transform?: (obj: any) => any) => {
103
+ const resolvedConfig = readConfigFile(path);
104
+ if (!resolvedConfig) {
105
+ return undefined;
106
+ }
107
+ return transform ? transform(resolvedConfig) : resolvedConfig;
108
+ };
109
+
110
+ const getSettings = once((): { [k: string]: string | undefined } => {
111
+ const settingsSources = [
98
112
  {},
99
113
  defaults,
100
- replaceResinKeys(readConfigFile(config.paths.userLegacy)),
101
- readConfigFile(config.paths.user),
102
- replaceResinKeys(readConfigFile(config.paths.projectLegacy)),
103
- readConfigFile(config.paths.project),
114
+ safeLoad(config.paths.userLegacy, replaceResinKeys),
115
+ safeLoad(config.paths.user),
116
+ safeLoad(config.paths.projectLegacy, replaceResinKeys),
117
+ safeLoad(config.paths.project),
104
118
  environment.parse(process.env),
105
- ),
106
- );
119
+ ];
120
+
121
+ return settingsSources
122
+ .filter((source) => source != null)
123
+ .reduce((acc, source) => {
124
+ return utils.mergeObjects(acc, source);
125
+ }, {}) as Record<string, string | undefined>;
126
+ });
107
127
 
108
128
  /**
109
129
  * @summary Get a setting
@@ -133,5 +153,8 @@ export const get = <T>(name: string): T => {
133
153
  */
134
154
  export const getAll = () => {
135
155
  const settings = getSettings();
136
- return _.mapValues(settings, (_setting, name) => get(name));
156
+ for (const name of Object.keys(settings)) {
157
+ settings[name] = get(name);
158
+ }
159
+ return settings;
137
160
  };
package/lib/utils.ts CHANGED
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
14
14
  limitations under the License.
15
15
  */
16
16
 
17
- import * as _ from 'lodash';
17
+ import { merge } from 'es-toolkit';
18
18
 
19
19
  /**
20
20
  * @summary Merge objects into one
@@ -30,18 +30,26 @@ import * as _ from 'lodash';
30
30
  * @example
31
31
  * const first = { foo: 'bar' }
32
32
  * const second = { foo: 'baz' }
33
- * const third = { foo: 'qux' }
34
33
  *
35
- * console.log(utils.mergeObjects(first, second, third))
34
+ * console.log(utils.mergeObjects(first, second))
36
35
  * > { foo: 'qux' }
37
36
  */
38
37
 
39
- // Notice that this function equals `_.merge` and thus the latter
38
+ // Notice that this function equals `merge` and thus the latter
40
39
  // could be used directly, making this function declaration unnecessary.
41
40
  // However, we decided to create a new function for this in order to
42
41
  // test specific behaviour that affects this module, like function
43
42
  // merging.
44
- export const mergeObjects = _.merge;
43
+ export const mergeObjects = merge;
44
+
45
+ const get = (obj: any, path: string, defaultValue?: any) => {
46
+ // Regex to convert "users[0].name" -> "users.0.name"
47
+ const normalizedPath = path.replace(/\[(\d+)\]/g, '.$1');
48
+
49
+ const keys = normalizedPath.split('.');
50
+ const result = keys.reduce((acc, key) => acc?.[key], obj);
51
+ return result ?? defaultValue;
52
+ };
45
53
 
46
54
  /**
47
55
  * @summary Evaluate a setting property
@@ -79,13 +87,13 @@ export const evaluateSetting = <T>(
79
87
  settings: object | undefined | null = {},
80
88
  property: string,
81
89
  ): T => {
82
- let value = _.get(settings, property);
90
+ let value = get(settings, property);
83
91
 
84
92
  if (value == null) {
85
93
  throw new Error(`Setting not found: ${property}`);
86
94
  }
87
95
 
88
- if (_.isFunction(value)) {
96
+ if (typeof value === 'function') {
89
97
  // This enables nifty things like dynamic
90
98
  // settings that rely on other settings
91
99
  value = value.call(settings);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "balena-settings-client",
3
- "version": "5.0.3-build-bump-ts-9127d3d46c063abbd8a55af1a53492de54fb1154-1",
3
+ "version": "5.0.4-build-drop-lodash-1eab7d7f4d034e4efb1b0ae553200b857ca25a43-1",
4
4
  "description": "Balena client application shared settings",
5
5
  "main": "build/settings.js",
6
6
  "types": "build/settings.d.ts",
@@ -45,7 +45,7 @@
45
45
  "chai-as-promised": "^7.1.1",
46
46
  "common-tags": "^1.8.0",
47
47
  "husky": "^4.2.5",
48
- "jsdoc-to-markdown": "^5.0.1",
48
+ "jsdoc-to-markdown": "^9.1.3",
49
49
  "lint-staged": "^10.1.6",
50
50
  "mocha": "^6.2.3",
51
51
  "require-npm4-to-publish": "^1.0.0",
@@ -58,11 +58,10 @@
58
58
  "@resin.io/types-hidepath": "1.0.1",
59
59
  "@resin.io/types-home-or-tmp": "3.0.0",
60
60
  "@types/js-yaml": "3.11.1",
61
- "@types/lodash": "^4.14.195",
61
+ "es-toolkit": "^1.42.0",
62
62
  "hidepath": "^1.0.0",
63
63
  "home-or-tmp": "^2.0.0",
64
- "js-yaml": "^3.4.0",
65
- "lodash": "^4.17.15"
64
+ "js-yaml": "^3.4.0"
66
65
  },
67
66
  "husky": {
68
67
  "hooks": {
@@ -76,6 +75,6 @@
76
75
  ]
77
76
  },
78
77
  "versionist": {
79
- "publishedAt": "2023-06-02T15:27:44.253Z"
78
+ "publishedAt": "2025-12-22T23:22:27.066Z"
80
79
  }
81
80
  }
package/tests/e2e/test.ts CHANGED
@@ -2,7 +2,6 @@ import * as Promise from 'bluebird';
2
2
  import * as childProcess from 'child_process';
3
3
  import { stripIndent } from 'common-tags';
4
4
  import * as fs from 'fs';
5
- import * as _ from 'lodash';
6
5
  import { expect, use } from 'chai';
7
6
  import * as path from 'path';
8
7
  import * as wary from 'wary';
@@ -18,8 +17,28 @@ const execAsync = Promise.promisify<[string, string], string, any>(
18
17
  );
19
18
 
20
19
  const handleExecResult = (stdout: string, stderr: string) => {
21
- if (!_.isEmpty(stderr)) {
22
- throw new Error(stderr);
20
+ // Inside handleExecResult(error, stdout, stderr)
21
+
22
+ if (stderr) {
23
+ console.log('============= DEBUG CRASH REPORT =============');
24
+
25
+ // 1. Log stdout (sometimes errors end up here)
26
+ if (stdout) {
27
+ console.log('--- STDOUT ---');
28
+ console.log(stdout.toString()); // Ensure Buffer is converted
29
+ }
30
+
31
+ // 2. Log stderr
32
+ if (stderr) {
33
+ console.log('--- STDERR ---');
34
+ console.log(stderr.toString());
35
+ }
36
+
37
+ console.log('==============================================');
38
+
39
+ // Throw a descriptive error
40
+ const message = (stderr || stdout || 'Unknown CLI Error').toString();
41
+ throw new Error(`CLI Failed: ${message}`);
23
42
  }
24
43
  return stdout.replace(/\n$/, '');
25
44
  };
@@ -16,7 +16,12 @@ describe('Utils:', () => {
16
16
 
17
17
  const third = { hello: 'world' };
18
18
 
19
- const result = utils.mergeObjects(first, second, third);
19
+ const result = [first, second, third]
20
+ .filter((source) => source != null)
21
+ .reduce((acc, source) => {
22
+ return utils.mergeObjects(acc, source);
23
+ }, {});
24
+
20
25
  expect(result).to.deep.equal({
21
26
  hello: 'world',
22
27
  foo: 'baz',
@@ -42,7 +47,11 @@ describe('Utils:', () => {
42
47
  },
43
48
  };
44
49
 
45
- const result = utils.mergeObjects(first, second, third);
50
+ const result = [first, second, third]
51
+ .filter((source) => source != null)
52
+ .reduce((acc, source) => {
53
+ return utils.mergeObjects(acc, source);
54
+ }, {}) as Record<string, () => string>;
46
55
  expect(result.foo()).to.equal('third');
47
56
  });
48
57
  });
package/tsconfig.json CHANGED
@@ -12,7 +12,8 @@
12
12
  "preserveConstEnums": true,
13
13
  "pretty": true,
14
14
  "sourceMap": true,
15
- "lib": ["es5", "es6"],
15
+ "lib": ["es5", "es6", "es2019"],
16
+ "skipLibCheck": true,
16
17
  "typeRoots": [
17
18
  "node_modules/@types",
18
19
  "node_modules/@resin.io"