Skip to content

Commit 4218afb

Browse files
committed
reuse shared env number parser
1 parent 4cff39f commit 4218afb

2 files changed

Lines changed: 7 additions & 17 deletions

File tree

graphql/env/__tests__/merge.test.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -236,9 +236,11 @@ describe('getEnvOptions', () => {
236236
});
237237
});
238238

239-
it('throws on invalid SMS_REQUEST_TIMEOUT_MS values', () => {
240-
expect(() => getGraphQLEnvVars({
239+
it('uses shared number parsing behavior for invalid SMS_REQUEST_TIMEOUT_MS values', () => {
240+
const result = getGraphQLEnvVars({
241241
SMS_REQUEST_TIMEOUT_MS: '5s'
242-
})).toThrow('SMS_REQUEST_TIMEOUT_MS must be an integer');
242+
});
243+
244+
expect(result.sms?.requestTimeoutMs).toBeUndefined();
243245
});
244246
});

graphql/env/src/env.ts

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import type { ConstructiveOptions } from '@constructive-io/graphql-types';
2+
import { parseEnvNumber } from '@pgpmjs/env';
23

34
/**
45
* Parse GraphQL-related environment variables.
@@ -9,19 +10,6 @@ const parseEnvBoolean = (val?: string): boolean | undefined => {
910
return ['true', '1', 'yes'].includes(val.toLowerCase());
1011
};
1112

12-
const parseEnvInteger = (name: string, val?: string): number | undefined => {
13-
if (val === undefined) return undefined;
14-
const trimmed = val.trim();
15-
if (!/^\d+$/.test(trimmed)) {
16-
throw new Error(`${name} must be an integer`);
17-
}
18-
const parsed = Number.parseInt(trimmed, 10);
19-
if (!Number.isSafeInteger(parsed) || parsed <= 0) {
20-
throw new Error(`${name} must be a positive safe integer`);
21-
}
22-
return parsed;
23-
};
24-
2513
/**
2614
* @param env - Environment object to read from (defaults to process.env for backwards compatibility)
2715
*/
@@ -100,7 +88,7 @@ export const getGraphQLEnvVars = (env: NodeJS.ProcessEnv = process.env): Partial
10088
...(SMS_PROVIDER && { provider: SMS_PROVIDER }),
10189
...(SMS_SENDER_ID && { senderId: SMS_SENDER_ID }),
10290
...(SMS_REQUEST_TIMEOUT_MS && {
103-
requestTimeoutMs: parseEnvInteger('SMS_REQUEST_TIMEOUT_MS', SMS_REQUEST_TIMEOUT_MS)
91+
requestTimeoutMs: parseEnvNumber(SMS_REQUEST_TIMEOUT_MS)
10492
}),
10593
...(SEND_SMS_DRY_RUN && { dryRun: parseEnvBoolean(SEND_SMS_DRY_RUN) }),
10694
...(DEVSMS_BASE_URL && {

0 commit comments

Comments
 (0)