Skip to content

Commit c8c5d93

Browse files
committed
reuse shared env number parser
1 parent ca0143f commit c8c5d93

2 files changed

Lines changed: 7 additions & 18 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 & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,5 @@
11
import type { ConstructiveOptions } from '@constructive-io/graphql-types';
2-
import { parseEnvBoolean } from '12factor-env';
3-
4-
const parseEnvInteger = (name: string, val?: string): number | undefined => {
5-
if (val === undefined) return undefined;
6-
const trimmed = val.trim();
7-
if (!/^\d+$/.test(trimmed)) {
8-
throw new Error(`${name} must be an integer`);
9-
}
10-
const parsed = Number.parseInt(trimmed, 10);
11-
if (!Number.isSafeInteger(parsed) || parsed <= 0) {
12-
throw new Error(`${name} must be a positive safe integer`);
13-
}
14-
return parsed;
15-
};
2+
import { parseEnvBoolean, parseEnvNumber } from '12factor-env';
163

174
/**
185
* @param env - Environment object to read from (defaults to process.env for backwards compatibility)
@@ -92,7 +79,7 @@ export const getGraphQLEnvVars = (env: NodeJS.ProcessEnv = process.env): Partial
9279
...(SMS_PROVIDER && { provider: SMS_PROVIDER }),
9380
...(SMS_SENDER_ID && { senderId: SMS_SENDER_ID }),
9481
...(SMS_REQUEST_TIMEOUT_MS && {
95-
requestTimeoutMs: parseEnvInteger('SMS_REQUEST_TIMEOUT_MS', SMS_REQUEST_TIMEOUT_MS)
82+
requestTimeoutMs: parseEnvNumber(SMS_REQUEST_TIMEOUT_MS)
9683
}),
9784
...(SEND_SMS_DRY_RUN && { dryRun: parseEnvBoolean(SEND_SMS_DRY_RUN) }),
9885
...(DEVSMS_BASE_URL && {

0 commit comments

Comments
 (0)