Skip to content

Commit 8b2a245

Browse files
IvanGoncharovyaacovCR
authored andcommitted
invariant/devAssert: make typings of condition stricter (graphql#3569)
1 parent e1dd1d2 commit 8b2a245

File tree

10 files changed

+17
-19
lines changed

10 files changed

+17
-19
lines changed

src/error/__tests__/GraphQLError-test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ const ast = parse(source);
2020
const operationNode = ast.definitions[0];
2121
invariant(operationNode.kind === Kind.OPERATION_DEFINITION);
2222
const fieldNode = operationNode.selectionSet.selections[0];
23-
invariant(fieldNode);
23+
invariant(fieldNode != null);
2424

2525
describe('GraphQLError', () => {
2626
it('is a class and is a subclass of Error', () => {
@@ -254,7 +254,7 @@ describe('toString', () => {
254254
),
255255
);
256256
const opA = docA.definitions[0];
257-
invariant(opA.kind === Kind.OBJECT_TYPE_DEFINITION && opA.fields);
257+
invariant(opA.kind === Kind.OBJECT_TYPE_DEFINITION && opA.fields != null);
258258
const fieldA = opA.fields[0];
259259

260260
const docB = parse(
@@ -268,7 +268,7 @@ describe('toString', () => {
268268
),
269269
);
270270
const opB = docB.definitions[0];
271-
invariant(opB.kind === Kind.OBJECT_TYPE_DEFINITION && opB.fields);
271+
invariant(opB.kind === Kind.OBJECT_TYPE_DEFINITION && opB.fields != null);
272272
const fieldB = opB.fields[0];
273273

274274
const error = new GraphQLError('Example error with two nodes', [

src/execution/__tests__/simplePubSub.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ export class SimplePubSub<T> {
6464
const value: R = transform(event);
6565
if (pullQueue.length > 0) {
6666
const receiver = pullQueue.shift();
67-
invariant(receiver);
67+
invariant(receiver != null);
6868
receiver({ value, done: false });
6969
} else {
7070
pushQueue.push(value);

src/execution/execute.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,7 @@ export function assertValidExecutionArguments(
258258
document: DocumentNode,
259259
rawVariableValues: Maybe<{ readonly [variable: string]: unknown }>,
260260
): void {
261-
devAssert(document, 'Must provide document.');
261+
devAssert(document != null, 'Must provide document.');
262262

263263
// If the schema used for execution is invalid, throw an error.
264264
assertValidSchema(schema);

src/jsutils/devAssert.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
export function devAssert(condition: unknown, message: string): void {
2-
const booleanCondition = Boolean(condition);
3-
if (!booleanCondition) {
1+
export function devAssert(condition: boolean, message: string): void {
2+
if (!condition) {
43
throw new Error(message);
54
}
65
}

src/jsutils/invariant.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
export function invariant(
2-
condition: unknown,
2+
condition: boolean,
33
message?: string,
44
): asserts condition {
5-
const booleanCondition = Boolean(condition);
6-
if (!booleanCondition) {
5+
if (!condition) {
76
throw new Error(
87
message != null ? message : 'Unexpected invariant triggered.',
98
);

src/type/__tests__/extensions-test.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ describe('Type System: Extensions', () => {
7272
expect(config.extensions).to.deep.equal({});
7373
const someFieldConfig = config.fields.someField;
7474
expect(someFieldConfig.extensions).to.deep.equal({});
75-
invariant(someFieldConfig.args);
75+
invariant(someFieldConfig.args != null);
7676
const someArgConfig = someFieldConfig.args.someArg;
7777
expect(someArgConfig.extensions).to.deep.equal({});
7878
});
@@ -109,7 +109,7 @@ describe('Type System: Extensions', () => {
109109
expectObjMap(config.extensions).to.deep.equal(objectExtensions);
110110
const someFieldConfig = config.fields.someField;
111111
expectObjMap(someFieldConfig.extensions).to.deep.equal(fieldExtensions);
112-
invariant(someFieldConfig.args);
112+
invariant(someFieldConfig.args != null);
113113
const someArgConfig = someFieldConfig.args.someArg;
114114
expectObjMap(someArgConfig.extensions).to.deep.equal(argExtensions);
115115
});
@@ -141,7 +141,7 @@ describe('Type System: Extensions', () => {
141141
expect(config.extensions).to.deep.equal({});
142142
const someFieldConfig = config.fields.someField;
143143
expect(someFieldConfig.extensions).to.deep.equal({});
144-
invariant(someFieldConfig.args);
144+
invariant(someFieldConfig.args != null);
145145
const someArgConfig = someFieldConfig.args.someArg;
146146
expect(someArgConfig.extensions).to.deep.equal({});
147147
});
@@ -180,7 +180,7 @@ describe('Type System: Extensions', () => {
180180
expectObjMap(config.extensions).to.deep.equal(interfaceExtensions);
181181
const someFieldConfig = config.fields.someField;
182182
expectObjMap(someFieldConfig.extensions).to.deep.equal(fieldExtensions);
183-
invariant(someFieldConfig.args);
183+
invariant(someFieldConfig.args != null);
184184
const someArgConfig = someFieldConfig.args.someArg;
185185
expectObjMap(someArgConfig.extensions).to.deep.equal(argExtensions);
186186
});

src/type/schema.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,7 @@ export class GraphQLSchema {
220220

221221
const typeName = namedType.name;
222222
devAssert(
223-
typeName,
223+
typeName != null,
224224
'One of the provided types for building the Schema is missing a name.',
225225
);
226226
if (this._typeMap[typeName] !== undefined) {

src/utilities/introspectionFromSchema.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,6 @@ export function introspectionFromSchema(
3636

3737
const document = parse(getIntrospectionQuery(optionsWithDefaults));
3838
const result = executeSync({ schema, document });
39-
invariant(!result.errors && result.data);
39+
invariant(result.errors == null && result.data != null);
4040
return result.data as any;
4141
}

src/validation/rules/UniqueInputFieldNamesRule.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ export function UniqueInputFieldNamesRule(
3030
},
3131
leave() {
3232
const prevKnownNames = knownNameStack.pop();
33-
invariant(prevKnownNames);
33+
invariant(prevKnownNames != null);
3434
knownNames = prevKnownNames;
3535
},
3636
},

src/validation/validate.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ export function validate(
4646
): ReadonlyArray<GraphQLError> {
4747
const maxErrors = options?.maxErrors ?? 100;
4848

49-
devAssert(documentAST, 'Must provide document.');
49+
devAssert(documentAST != null, 'Must provide document.');
5050
// If the schema used for validation is invalid, throw an error.
5151
assertValidSchema(schema);
5252

0 commit comments

Comments
 (0)