Skip to content

Commit 5adc8ee

Browse files
committed
refactor(ses): getenv detects more errors
1 parent bc34d40 commit 5adc8ee

8 files changed

+26
-55
lines changed

packages/ses/src/error/tame-console.js

-4
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,6 @@ export const tameConsole = (
4141
unhandledRejectionTrapping = 'report',
4242
optGetStackString = undefined,
4343
) => {
44-
consoleTaming === 'safe' ||
45-
consoleTaming === 'unsafe' ||
46-
failFast(`unrecognized consoleTaming ${consoleTaming}`);
47-
4844
let loggedErrorHandler;
4945
if (optGetStackString === undefined) {
5046
loggedErrorHandler = defaultHandler;

packages/ses/src/error/tame-error-constructor.js

-11
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import {
22
FERAL_ERROR,
3-
TypeError,
43
apply,
54
construct,
65
defineProperties,
@@ -36,16 +35,6 @@ export default function tameErrorConstructor(
3635
errorTaming = 'safe',
3736
stackFiltering = 'concise',
3837
) {
39-
if (
40-
errorTaming !== 'safe' &&
41-
errorTaming !== 'unsafe' &&
42-
errorTaming !== 'unsafe-debug'
43-
) {
44-
throw TypeError(`unrecognized errorTaming ${errorTaming}`);
45-
}
46-
if (stackFiltering !== 'concise' && stackFiltering !== 'verbose') {
47-
throw TypeError(`unrecognized stackFiltering ${stackFiltering}`);
48-
}
4938
const ErrorPrototype = FERAL_ERROR.prototype;
5039

5140
const { captureStackTrace: originalCaptureStackTrace } = FERAL_ERROR;

packages/ses/src/lockdown.js

+24-21
Original file line numberDiff line numberDiff line change
@@ -162,28 +162,39 @@ export const repairIntrinsics = (options = {}) => {
162162
// for an explanation.
163163

164164
const {
165-
errorTaming = getenv('LOCKDOWN_ERROR_TAMING', 'safe'),
165+
errorTaming = getenv('LOCKDOWN_ERROR_TAMING', 'safe', [
166+
'unsafe',
167+
'unsafe-debug',
168+
]),
166169
errorTrapping = /** @type {"platform" | "none" | "report" | "abort" | "exit"} */ (
167-
getenv('LOCKDOWN_ERROR_TRAPPING', 'platform')
170+
getenv('LOCKDOWN_ERROR_TRAPPING', 'platform', [
171+
'none',
172+
'report',
173+
'abort',
174+
'exit',
175+
])
168176
),
169177
reporting = /** @type {"platform" | "console" | "none"} */ (
170-
getenv('LOCKDOWN_REPORTING', 'platform')
178+
getenv('LOCKDOWN_REPORTING', 'platform', ['console', 'none'])
171179
),
172180
unhandledRejectionTrapping = /** @type {"none" | "report"} */ (
173-
getenv('LOCKDOWN_UNHANDLED_REJECTION_TRAPPING', 'report')
181+
getenv('LOCKDOWN_UNHANDLED_REJECTION_TRAPPING', 'report', ['none'])
174182
),
175-
regExpTaming = getenv('LOCKDOWN_REGEXP_TAMING', 'safe'),
176-
localeTaming = getenv('LOCKDOWN_LOCALE_TAMING', 'safe'),
183+
regExpTaming = getenv('LOCKDOWN_REGEXP_TAMING', 'safe', ['unsafe']),
184+
localeTaming = getenv('LOCKDOWN_LOCALE_TAMING', 'safe', ['unsafe']),
177185

178186
consoleTaming = /** @type {'unsafe' | 'safe'} */ (
179-
getenv('LOCKDOWN_CONSOLE_TAMING', 'safe')
187+
getenv('LOCKDOWN_CONSOLE_TAMING', 'safe', ['unsafe'])
180188
),
181189
overrideTaming = /** @type {'moderate' | 'min' | 'severe'} */ (
182-
getenv('LOCKDOWN_OVERRIDE_TAMING', 'moderate')
190+
getenv('LOCKDOWN_OVERRIDE_TAMING', 'moderate', ['min', 'severe'])
183191
),
184-
stackFiltering = getenv('LOCKDOWN_STACK_FILTERING', 'concise'),
185-
domainTaming = getenv('LOCKDOWN_DOMAIN_TAMING', 'safe'),
186-
evalTaming = getenv('LOCKDOWN_EVAL_TAMING', 'safeEval'),
192+
stackFiltering = getenv('LOCKDOWN_STACK_FILTERING', 'concise', ['verbose']),
193+
domainTaming = getenv('LOCKDOWN_DOMAIN_TAMING', 'safe', ['unsafe']),
194+
evalTaming = getenv('LOCKDOWN_EVAL_TAMING', 'safeEval', [
195+
'unsafeEval',
196+
'noEval',
197+
]),
187198
overrideDebug = arrayFilter(
188199
stringSplit(getenv('LOCKDOWN_OVERRIDE_DEBUG', ''), ','),
189200
/** @param {string} debugName */
@@ -192,22 +203,14 @@ export const repairIntrinsics = (options = {}) => {
192203
legacyRegeneratorRuntimeTaming = getenv(
193204
'LOCKDOWN_LEGACY_REGENERATOR_RUNTIME_TAMING',
194205
'safe',
206+
['unsafe-ignore'],
195207
),
196-
__hardenTaming__ = getenv('LOCKDOWN_HARDEN_TAMING', 'safe'),
208+
__hardenTaming__ = getenv('LOCKDOWN_HARDEN_TAMING', 'safe', ['unsafe']),
197209
dateTaming, // deprecated
198210
mathTaming, // deprecated
199211
...extraOptions
200212
} = options;
201213

202-
legacyRegeneratorRuntimeTaming === 'safe' ||
203-
legacyRegeneratorRuntimeTaming === 'unsafe-ignore' ||
204-
Fail`lockdown(): non supported option legacyRegeneratorRuntimeTaming: ${q(legacyRegeneratorRuntimeTaming)}`;
205-
206-
evalTaming === 'unsafeEval' ||
207-
evalTaming === 'safeEval' ||
208-
evalTaming === 'noEval' ||
209-
Fail`lockdown(): non supported option evalTaming: ${q(evalTaming)}`;
210-
211214
// Assert that only supported options were passed.
212215
// Use Reflect.ownKeys to reject symbol-named properties as well.
213216
const extraOptionsNames = ownKeys(extraOptions);

packages/ses/src/reporting.js

+1-4
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { TypeError, functionBind, globalThis } from './commons.js';
1+
import { functionBind, globalThis } from './commons.js';
22
import { assert } from './error/assert.js';
33

44
/**
@@ -51,9 +51,6 @@ export const chooseReporter = reporting => {
5151
if (reporting === 'none') {
5252
return makeReportPrinter(mute);
5353
}
54-
if (reporting !== 'platform' && reporting !== 'console') {
55-
throw new TypeError(`Invalid lockdown reporting option: ${reporting}`);
56-
}
5754
if (
5855
reporting === 'console' ||
5956
globalThis.window === globalThis ||

packages/ses/src/tame-domains.js

-4
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,6 @@ import {
88
} from './commons.js';
99

1010
export function tameDomains(domainTaming = 'safe') {
11-
if (domainTaming !== 'safe' && domainTaming !== 'unsafe') {
12-
throw TypeError(`unrecognized domainTaming ${domainTaming}`);
13-
}
14-
1511
if (domainTaming === 'unsafe') {
1612
return;
1713
}

packages/ses/src/tame-harden.js

+1-5
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,10 @@
11
/* eslint-disable no-restricted-globals */
2-
import { TypeError, freeze } from './commons.js';
2+
import { freeze } from './commons.js';
33

44
/** @import {Harden} from '../types.js'; */
55

66
/** @type {(safeHarden: Harden, hardenTaming: 'safe' | 'unsafe') => Harden} */
77
export const tameHarden = (safeHarden, hardenTaming) => {
8-
if (hardenTaming !== 'safe' && hardenTaming !== 'unsafe') {
9-
throw TypeError(`unrecognized fakeHardenOption ${hardenTaming}`);
10-
}
11-
128
if (hardenTaming === 'safe') {
139
return safeHarden;
1410
}

packages/ses/src/tame-locale-methods.js

-3
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,6 @@ const nonLocaleCompare = tamedMethods.localeCompare;
4444
const numberToString = tamedMethods.toString;
4545

4646
export default function tameLocaleMethods(intrinsics, localeTaming = 'safe') {
47-
if (localeTaming !== 'safe' && localeTaming !== 'unsafe') {
48-
throw TypeError(`unrecognized localeTaming ${localeTaming}`);
49-
}
5047
if (localeTaming === 'unsafe') {
5148
return;
5249
}

packages/ses/src/tame-regexp-constructor.js

-3
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,6 @@ import {
88
} from './commons.js';
99

1010
export default function tameRegExpConstructor(regExpTaming = 'safe') {
11-
if (regExpTaming !== 'safe' && regExpTaming !== 'unsafe') {
12-
throw TypeError(`unrecognized regExpTaming ${regExpTaming}`);
13-
}
1411
const RegExpPrototype = FERAL_REG_EXP.prototype;
1512

1613
const makeRegExpConstructor = (_ = {}) => {

0 commit comments

Comments
 (0)