@balena/env-parsing 1.1.12 → 1.2.0-build-arrayVar-0de419ef04855ae2aeb5ed4fa66f81f4dafcc6e0-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.
- package/.versionbot/CHANGELOG.yml +13 -1
- package/CHANGELOG.md +4 -0
- package/build/index.d.ts +8 -0
- package/build/index.js +21 -4
- package/build/index.js.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +30 -0
- package/test/index.ts +35 -0
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
- commits:
|
|
2
|
+
- subject: Add the arrayVar helper
|
|
3
|
+
hash: 0de419ef04855ae2aeb5ed4fa66f81f4dafcc6e0
|
|
4
|
+
body: ""
|
|
5
|
+
footer:
|
|
6
|
+
Change-type: minor
|
|
7
|
+
change-type: minor
|
|
8
|
+
author: Thodoris Greasidis
|
|
9
|
+
nested: []
|
|
10
|
+
version: 1.2.0
|
|
11
|
+
title: ""
|
|
12
|
+
date: 2024-09-11T11:45:39.393Z
|
|
1
13
|
- commits:
|
|
2
14
|
- subject: Add lint-staged and pre-commit script
|
|
3
15
|
hash: 3937c571923d66e605c2938f42871d32c03b26f7
|
|
@@ -26,7 +38,7 @@
|
|
|
26
38
|
nested: []
|
|
27
39
|
version: 1.1.12
|
|
28
40
|
title: ""
|
|
29
|
-
date: 2024-04-09T02:
|
|
41
|
+
date: 2024-04-09T02:21:56.121Z
|
|
30
42
|
- commits:
|
|
31
43
|
- subject: Update type import
|
|
32
44
|
hash: 048e9954236aed01865141c3860e79a0400798d7
|
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,10 @@ 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
|
+
## 1.2.0 - 2024-09-11
|
|
8
|
+
|
|
9
|
+
* Add the arrayVar helper [Thodoris Greasidis]
|
|
10
|
+
|
|
7
11
|
## 1.1.12 - 2024-04-09
|
|
8
12
|
|
|
9
13
|
* Add lint-staged and pre-commit script [Josh Bowling]
|
package/build/index.d.ts
CHANGED
|
@@ -41,6 +41,14 @@ export declare function intVar<R>(varName: string | string[], defaultValue: R):
|
|
|
41
41
|
*/
|
|
42
42
|
export declare function boolVar(varName: string | string[]): boolean;
|
|
43
43
|
export declare function boolVar<R>(varName: string | string[], defaultValue: R): boolean | R;
|
|
44
|
+
/**
|
|
45
|
+
* Splits an env var using the provided delimiter (defaults to ',') into an array of individual string values.
|
|
46
|
+
* Optionally accepts an array of allowed values for the array.
|
|
47
|
+
*/
|
|
48
|
+
export declare const arrayVar: <S extends string>(name: string, { delimiter, allowedValues, }?: {
|
|
49
|
+
delimiter?: string | RegExp;
|
|
50
|
+
allowedValues?: S[];
|
|
51
|
+
}) => S[] | undefined;
|
|
44
52
|
export type HostPort = {
|
|
45
53
|
host: string;
|
|
46
54
|
port: number;
|
package/build/index.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.trustProxyVar = exports.hostPortsVar = exports.
|
|
3
|
+
exports.trustProxyVar = exports.hostPortsVar = exports.arrayVar = exports.checkInt = exports.requiredVar = exports.DAYS = exports.HOURS = exports.MINUTES = exports.SECONDS = exports.SECONDS_PER_HOUR = void 0;
|
|
4
|
+
exports.optionalVar = optionalVar;
|
|
5
|
+
exports.intVar = intVar;
|
|
6
|
+
exports.boolVar = boolVar;
|
|
4
7
|
exports.SECONDS_PER_HOUR = 60 * 60;
|
|
5
8
|
/**
|
|
6
9
|
* In milliseconds
|
|
@@ -47,7 +50,6 @@ function optionalVar(varName, defaultValue) {
|
|
|
47
50
|
}
|
|
48
51
|
return defaultValue;
|
|
49
52
|
}
|
|
50
|
-
exports.optionalVar = optionalVar;
|
|
51
53
|
/**
|
|
52
54
|
* Checks that a string is a valid int and returns the number if so
|
|
53
55
|
*/
|
|
@@ -80,7 +82,6 @@ function intVar(varName, defaultValue) {
|
|
|
80
82
|
}
|
|
81
83
|
return i;
|
|
82
84
|
}
|
|
83
|
-
exports.intVar = intVar;
|
|
84
85
|
function boolVar(varName, defaultValue) {
|
|
85
86
|
if (arguments.length === 1) {
|
|
86
87
|
(0, exports.requiredVar)(varName);
|
|
@@ -97,7 +98,23 @@ function boolVar(varName, defaultValue) {
|
|
|
97
98
|
}
|
|
98
99
|
throw new Error(`Invalid value for boolean var '${varName}', got '${s}', expected 'true' or 'false'`);
|
|
99
100
|
}
|
|
100
|
-
|
|
101
|
+
/**
|
|
102
|
+
* Splits an env var using the provided delimiter (defaults to ',') into an array of individual string values.
|
|
103
|
+
* Optionally accepts an array of allowed values for the array.
|
|
104
|
+
*/
|
|
105
|
+
const arrayVar = (name, { delimiter = ',', allowedValues, } = {}) => {
|
|
106
|
+
const rawValue = optionalVar(name);
|
|
107
|
+
if (rawValue == null) {
|
|
108
|
+
return rawValue;
|
|
109
|
+
}
|
|
110
|
+
const items = rawValue.split(delimiter);
|
|
111
|
+
const allowedValueSet = allowedValues != null ? new Set(allowedValues) : null;
|
|
112
|
+
if (allowedValueSet != null && items.some((v) => !allowedValueSet.has(v))) {
|
|
113
|
+
throw new Error(`'${name}' must be a '${delimiter.toString()}' delimited string with one or more of the allowed values: ${[...allowedValueSet].toString()}`);
|
|
114
|
+
}
|
|
115
|
+
return items;
|
|
116
|
+
};
|
|
117
|
+
exports.arrayVar = arrayVar;
|
|
101
118
|
/**
|
|
102
119
|
* Splits an env var in the format of `${host1}:${port1}, ${host2}:${port2}, ...`
|
|
103
120
|
* into an array of individual host/port pairings
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@balena/env-parsing",
|
|
3
|
-
"version": "1.1
|
|
3
|
+
"version": "1.2.0-build-arrayVar-0de419ef04855ae2aeb5ed4fa66f81f4dafcc6e0-1",
|
|
4
4
|
"description": "A collection of utilities to simplify/standardize env var parsing",
|
|
5
5
|
"main": "build/index.js",
|
|
6
6
|
"types": "build/index.d.ts",
|
|
@@ -47,6 +47,6 @@
|
|
|
47
47
|
]
|
|
48
48
|
},
|
|
49
49
|
"versionist": {
|
|
50
|
-
"publishedAt": "2024-
|
|
50
|
+
"publishedAt": "2024-09-11T11:45:39.454Z"
|
|
51
51
|
}
|
|
52
52
|
}
|
package/src/index.ts
CHANGED
|
@@ -141,6 +141,36 @@ export function boolVar<R>(
|
|
|
141
141
|
);
|
|
142
142
|
}
|
|
143
143
|
|
|
144
|
+
/**
|
|
145
|
+
* Splits an env var using the provided delimiter (defaults to ',') into an array of individual string values.
|
|
146
|
+
* Optionally accepts an array of allowed values for the array.
|
|
147
|
+
*/
|
|
148
|
+
export const arrayVar = <S extends string>(
|
|
149
|
+
name: string,
|
|
150
|
+
{
|
|
151
|
+
delimiter = ',',
|
|
152
|
+
allowedValues,
|
|
153
|
+
}: {
|
|
154
|
+
delimiter?: string | RegExp;
|
|
155
|
+
allowedValues?: S[];
|
|
156
|
+
} = {},
|
|
157
|
+
): S[] | undefined => {
|
|
158
|
+
const rawValue = optionalVar(name);
|
|
159
|
+
if (rawValue == null) {
|
|
160
|
+
return rawValue;
|
|
161
|
+
}
|
|
162
|
+
const items = rawValue.split(delimiter);
|
|
163
|
+
|
|
164
|
+
const allowedValueSet =
|
|
165
|
+
allowedValues != null ? new Set<string>(allowedValues) : null;
|
|
166
|
+
if (allowedValueSet != null && items.some((v) => !allowedValueSet.has(v))) {
|
|
167
|
+
throw new Error(
|
|
168
|
+
`'${name}' must be a '${delimiter.toString()}' delimited string with one or more of the allowed values: ${[...allowedValueSet].toString()}`,
|
|
169
|
+
);
|
|
170
|
+
}
|
|
171
|
+
return items as S[];
|
|
172
|
+
};
|
|
173
|
+
|
|
144
174
|
export type HostPort = { host: string; port: number };
|
|
145
175
|
/**
|
|
146
176
|
* Splits an env var in the format of `${host1}:${port1}, ${host2}:${port2}, ...`
|
package/test/index.ts
CHANGED
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
requiredVar,
|
|
8
8
|
hostPortsVar,
|
|
9
9
|
trustProxyVar,
|
|
10
|
+
arrayVar,
|
|
10
11
|
} from '../src';
|
|
11
12
|
import type { HostPort } from '../src';
|
|
12
13
|
|
|
@@ -118,6 +119,40 @@ for (const [testType, varTest] of varTests) {
|
|
|
118
119
|
});
|
|
119
120
|
});
|
|
120
121
|
|
|
122
|
+
describe('arrayVar', () => {
|
|
123
|
+
if (typeof varTest !== 'string') {
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
it('should return undefined array when the env var is missing', () => {
|
|
127
|
+
expect(arrayVar(varTest)).to.be.undefined;
|
|
128
|
+
});
|
|
129
|
+
it('should return an array of one item when there is no delimiter in the string', () => {
|
|
130
|
+
setVar('value1');
|
|
131
|
+
expect(arrayVar(varTest)).to.deep.equal(['value1']);
|
|
132
|
+
});
|
|
133
|
+
it('should return an array of two items when the default delimiter is part of the string', () => {
|
|
134
|
+
setVar('value1,value2,value3');
|
|
135
|
+
expect(arrayVar(varTest)).to.deep.equal(['value1', 'value2', 'value3']);
|
|
136
|
+
});
|
|
137
|
+
it('should include leading & trailing whitespaces in the array values', () => {
|
|
138
|
+
setVar(', value1 , value2 ');
|
|
139
|
+
expect(arrayVar(varTest)).to.deep.equal(['', ' value1 ', ' value2 ']);
|
|
140
|
+
});
|
|
141
|
+
it('should return an array of two items when the provided delimiter is part of the string', () => {
|
|
142
|
+
setVar('val,ue1;val,ue2;val,ue3');
|
|
143
|
+
expect(arrayVar(varTest, { delimiter: ';' })).to.deep.equal([
|
|
144
|
+
'val,ue1',
|
|
145
|
+
'val,ue2',
|
|
146
|
+
'val,ue3',
|
|
147
|
+
]);
|
|
148
|
+
});
|
|
149
|
+
it('should throw when the array includes items that are not part of the allowed values', () => {
|
|
150
|
+
setVar('value1,value2,value3');
|
|
151
|
+
expect(() => arrayVar(varTest, { allowedValues: ['value1', 'value2'] }))
|
|
152
|
+
.to.throw;
|
|
153
|
+
});
|
|
154
|
+
});
|
|
155
|
+
|
|
121
156
|
describe('splitHostPort', () => {
|
|
122
157
|
const defaultValue: HostPort[] = [];
|
|
123
158
|
it('should throw when the env var is missing', () => {
|