From 9af856c2c83621ac5862fde0132ed494a702679d Mon Sep 17 00:00:00 2001 From: Evans Hauser Date: Wed, 20 Jun 2018 16:21:50 -0700 Subject: [PATCH] Typescript Improvements and esModuleInterop fix (#1210) * add string input to gql tag * remove esModuleInterop, tested locally * change IMPORT_FUNCTION to something real * fix the rest of the tests --- docs/source/migration-two-dot.md | 5 +++-- packages/apollo-datasource-rest/src/HTTPCache.ts | 2 +- .../apollo-server-caching/src/InMemoryLRUCache.ts | 2 +- packages/apollo-server-core/src/index.ts | 2 +- packages/apollo-server-core/src/runHttpQuery.test.ts | 2 +- packages/apollo-server-core/src/runHttpQuery.ts | 2 +- packages/apollo-server-core/src/runQuery.test.ts | 2 +- packages/apollo-server-core/src/types.ts | 2 +- .../apollo-server-express/src/ApolloServer.test.ts | 12 ++++++------ packages/apollo-server-express/src/ApolloServer.ts | 8 ++++---- .../src/apolloServerHttp.test.ts | 6 +++--- .../apollo-server-express/src/connectApollo.test.ts | 4 ++-- .../apollo-server-express/src/datasource.test.ts | 4 ++-- .../apollo-server-express/src/expressApollo.test.ts | 2 +- packages/apollo-server-express/src/expressApollo.ts | 2 +- packages/apollo-server-hapi/src/ApolloServer.ts | 2 +- packages/apollo-server-hapi/src/hapiApollo.test.ts | 2 +- packages/apollo-server-hapi/src/hapiApollo.ts | 2 +- .../src/ApolloServer.ts | 6 +++--- .../apollo-server-integration-testsuite/src/index.ts | 3 +-- packages/apollo-server-memcached/src/index.ts | 2 +- packages/apollo-server-redis/src/index.ts | 2 +- packages/apollo-server/src/index.test.ts | 2 +- packages/apollo-server/src/index.ts | 6 +++--- tsconfig.json | 1 - 25 files changed, 42 insertions(+), 43 deletions(-) diff --git a/docs/source/migration-two-dot.md b/docs/source/migration-two-dot.md index 5d58040184a..fa4d22557d0 100644 --- a/docs/source/migration-two-dot.md +++ b/docs/source/migration-two-dot.md @@ -25,10 +25,11 @@ const typeDefs = gql` `; //Some projects use schemas imported from external files -const typeDefs = gql`${IMPORT_FUNCTION('./schema-file')}`; +const fs = require('fs'); +const typeDefs = gql`${fs.readFileSync(__dirname.concat('/schema.graphql'), 'utf8')}`; //gql can also be used as regular function to convert a string to an AST -const typeDefs = gql(IMPORT_FUNCTION('./schema-file')) +const typeDefs = gql(fs.readFileSync(__dirname.concat('/schema.graphql'), 'utf8')) ```

Changes to app dependencies

diff --git a/packages/apollo-datasource-rest/src/HTTPCache.ts b/packages/apollo-datasource-rest/src/HTTPCache.ts index a7bd4700af6..7a5e5be6deb 100644 --- a/packages/apollo-datasource-rest/src/HTTPCache.ts +++ b/packages/apollo-datasource-rest/src/HTTPCache.ts @@ -1,4 +1,4 @@ -import CachePolicy from 'http-cache-semantics'; +import CachePolicy = require('http-cache-semantics'); import { KeyValueCache, InMemoryLRUCache } from 'apollo-server-caching'; diff --git a/packages/apollo-server-caching/src/InMemoryLRUCache.ts b/packages/apollo-server-caching/src/InMemoryLRUCache.ts index 32517a7f84d..57fb5d1c615 100644 --- a/packages/apollo-server-caching/src/InMemoryLRUCache.ts +++ b/packages/apollo-server-caching/src/InMemoryLRUCache.ts @@ -1,4 +1,4 @@ -import LRU from 'lru-cache'; +import * as LRU from 'lru-cache'; import { KeyValueCache } from './KeyValueCache'; export class InMemoryLRUCache implements KeyValueCache { diff --git a/packages/apollo-server-core/src/index.ts b/packages/apollo-server-core/src/index.ts index 95a70933565..630c3899259 100644 --- a/packages/apollo-server-core/src/index.ts +++ b/packages/apollo-server-core/src/index.ts @@ -32,6 +32,6 @@ export * from 'graphql-subscriptions'; import { DocumentNode } from 'graphql'; import gqlTag from 'graphql-tag'; export const gql: ( - template: TemplateStringsArray, + template: TemplateStringsArray | string, ...substitutions: any[] ) => DocumentNode = gqlTag; diff --git a/packages/apollo-server-core/src/runHttpQuery.test.ts b/packages/apollo-server-core/src/runHttpQuery.test.ts index 826dd587adc..ca675e5a101 100644 --- a/packages/apollo-server-core/src/runHttpQuery.test.ts +++ b/packages/apollo-server-core/src/runHttpQuery.test.ts @@ -1,7 +1,7 @@ /* tslint:disable:no-unused-expression */ import { expect } from 'chai'; import 'mocha'; -import MockReq from 'mock-req'; +import * as MockReq from 'mock-req'; import { GraphQLSchema, GraphQLObjectType, GraphQLString } from 'graphql'; diff --git a/packages/apollo-server-core/src/runHttpQuery.ts b/packages/apollo-server-core/src/runHttpQuery.ts index 7724904a16b..c7ed2ffcf3c 100644 --- a/packages/apollo-server-core/src/runHttpQuery.ts +++ b/packages/apollo-server-core/src/runHttpQuery.ts @@ -1,5 +1,5 @@ import { ExecutionResult } from 'graphql'; -import sha256 from 'hash.js/lib/hash/sha/256'; +import * as sha256 from 'hash.js/lib/hash/sha/256'; import { runQuery, QueryOptions } from './runQuery'; import { diff --git a/packages/apollo-server-core/src/runQuery.test.ts b/packages/apollo-server-core/src/runQuery.test.ts index 30149812d1f..656e4856c74 100644 --- a/packages/apollo-server-core/src/runQuery.test.ts +++ b/packages/apollo-server-core/src/runQuery.test.ts @@ -1,7 +1,7 @@ /* tslint:disable:no-unused-expression */ import { expect } from 'chai'; import { stub } from 'sinon'; -import MockReq from 'mock-req'; +import * as MockReq from 'mock-req'; import 'mocha'; import { diff --git a/packages/apollo-server-core/src/types.ts b/packages/apollo-server-core/src/types.ts index 42b2c44acf9..055bbaa4969 100644 --- a/packages/apollo-server-core/src/types.ts +++ b/packages/apollo-server-core/src/types.ts @@ -1,7 +1,7 @@ import { GraphQLSchema, DocumentNode } from 'graphql'; import { SchemaDirectiveVisitor, IResolvers, IMocks } from 'graphql-tools'; import { ConnectionContext } from 'subscriptions-transport-ws'; -import WebSocket from 'ws'; +import * as WebSocket from 'ws'; import { GraphQLExtension } from 'graphql-extensions'; import { EngineReportingOptions } from 'apollo-engine-reporting'; export { GraphQLExtension } from 'graphql-extensions'; diff --git a/packages/apollo-server-express/src/ApolloServer.test.ts b/packages/apollo-server-express/src/ApolloServer.test.ts index 18f15ca884b..95401029331 100644 --- a/packages/apollo-server-express/src/ApolloServer.test.ts +++ b/packages/apollo-server-express/src/ApolloServer.test.ts @@ -1,13 +1,13 @@ import { expect } from 'chai'; import 'mocha'; -import express from 'express'; +import * as express from 'express'; -import net from 'net'; -import http from 'http'; +import * as net from 'net'; +import * as http from 'http'; -import request from 'request'; -import FormData from 'form-data'; -import fs from 'fs'; +import * as request from 'request'; +import * as FormData from 'form-data'; +import * as fs from 'fs'; import fetch from 'node-fetch'; import { createApolloFetch } from 'apollo-fetch'; diff --git a/packages/apollo-server-express/src/ApolloServer.ts b/packages/apollo-server-express/src/ApolloServer.ts index 335d111a534..e7caa415369 100644 --- a/packages/apollo-server-express/src/ApolloServer.ts +++ b/packages/apollo-server-express/src/ApolloServer.ts @@ -1,11 +1,11 @@ -import express from 'express'; -import corsMiddleware from 'cors'; +import * as express from 'express'; +import * as corsMiddleware from 'cors'; import { json, OptionsJson } from 'body-parser'; import playgroundMiddleware from 'graphql-playground-middleware-express'; import { MiddlewareOptions as PlaygroundMiddlewareOptions } from 'graphql-playground-html'; import { ApolloServerBase, formatApolloErrors } from 'apollo-server-core'; -import accepts from 'accepts'; -import typeis from 'type-is'; +import * as accepts from 'accepts'; +import * as typeis from 'type-is'; import { graphqlExpress } from './expressApollo'; diff --git a/packages/apollo-server-express/src/apolloServerHttp.test.ts b/packages/apollo-server-express/src/apolloServerHttp.test.ts index 420c18ca3e7..5da4869efcc 100644 --- a/packages/apollo-server-express/src/apolloServerHttp.test.ts +++ b/packages/apollo-server-express/src/apolloServerHttp.test.ts @@ -22,9 +22,9 @@ import { graphqlExpress } from './expressApollo'; */ import { expect } from 'chai'; -import zlib from 'zlib'; -import multer from 'multer'; -import bodyParser from 'body-parser'; +import * as zlib from 'zlib'; +import * as multer from 'multer'; +import * as bodyParser from 'body-parser'; const request = require('supertest'); const express4 = require('express'); // modern import { diff --git a/packages/apollo-server-express/src/connectApollo.test.ts b/packages/apollo-server-express/src/connectApollo.test.ts index 674a003bf35..c7ba42beae1 100644 --- a/packages/apollo-server-express/src/connectApollo.test.ts +++ b/packages/apollo-server-express/src/connectApollo.test.ts @@ -1,5 +1,5 @@ -import connect from 'connect'; -import query from 'qs-middleware'; +import * as connect from 'connect'; +import * as query from 'qs-middleware'; import { ApolloServer } from './ApolloServer'; import { Config } from 'apollo-server-core'; import 'mocha'; diff --git a/packages/apollo-server-express/src/datasource.test.ts b/packages/apollo-server-express/src/datasource.test.ts index 401bfb189c4..8348a7057c1 100644 --- a/packages/apollo-server-express/src/datasource.test.ts +++ b/packages/apollo-server-express/src/datasource.test.ts @@ -1,8 +1,8 @@ import { expect } from 'chai'; import 'mocha'; -import express from 'express'; +import * as express from 'express'; -import http from 'http'; +import * as http from 'http'; import { RESTDataSource } from 'apollo-datasource-rest'; diff --git a/packages/apollo-server-express/src/expressApollo.test.ts b/packages/apollo-server-express/src/expressApollo.test.ts index 158677fc78d..ed221b5d9b0 100644 --- a/packages/apollo-server-express/src/expressApollo.test.ts +++ b/packages/apollo-server-express/src/expressApollo.test.ts @@ -1,4 +1,4 @@ -import express from 'express'; +import * as express from 'express'; import { ApolloServer } from './ApolloServer'; import testSuite, { schema as Schema, diff --git a/packages/apollo-server-express/src/expressApollo.ts b/packages/apollo-server-express/src/expressApollo.ts index f23ff200c80..369c85d2599 100644 --- a/packages/apollo-server-express/src/expressApollo.ts +++ b/packages/apollo-server-express/src/expressApollo.ts @@ -1,4 +1,4 @@ -import express from 'express'; +import * as express from 'express'; import { GraphQLOptions, HttpQueryError, diff --git a/packages/apollo-server-hapi/src/ApolloServer.ts b/packages/apollo-server-hapi/src/ApolloServer.ts index 968ca95d262..d58af2f6483 100644 --- a/packages/apollo-server-hapi/src/ApolloServer.ts +++ b/packages/apollo-server-hapi/src/ApolloServer.ts @@ -1,4 +1,4 @@ -import hapi from 'hapi'; +import * as hapi from 'hapi'; import { ApolloServerBase } from 'apollo-server-core'; import { parseAll } from 'accept'; import { diff --git a/packages/apollo-server-hapi/src/hapiApollo.test.ts b/packages/apollo-server-hapi/src/hapiApollo.test.ts index 0be8f10ce03..f5aebe0e75e 100644 --- a/packages/apollo-server-hapi/src/hapiApollo.test.ts +++ b/packages/apollo-server-hapi/src/hapiApollo.test.ts @@ -1,4 +1,4 @@ -import hapi from 'hapi'; +import * as hapi from 'hapi'; import { ApolloServer } from './ApolloServer'; import { Config } from 'apollo-server-core'; import 'mocha'; diff --git a/packages/apollo-server-hapi/src/hapiApollo.ts b/packages/apollo-server-hapi/src/hapiApollo.ts index decfe2586bc..4d25b63de6d 100644 --- a/packages/apollo-server-hapi/src/hapiApollo.ts +++ b/packages/apollo-server-hapi/src/hapiApollo.ts @@ -1,4 +1,4 @@ -import Boom from 'boom'; +import * as Boom from 'boom'; import { Server, Request } from 'hapi'; import { GraphQLOptions, diff --git a/packages/apollo-server-integration-testsuite/src/ApolloServer.ts b/packages/apollo-server-integration-testsuite/src/ApolloServer.ts index a5f6ac39718..e529283667e 100644 --- a/packages/apollo-server-integration-testsuite/src/ApolloServer.ts +++ b/packages/apollo-server-integration-testsuite/src/ApolloServer.ts @@ -1,8 +1,8 @@ /* tslint:disable:no-unused-expression */ import { expect } from 'chai'; import { stub } from 'sinon'; -import http from 'http'; -import net from 'net'; +import * as http from 'http'; +import * as net from 'net'; import 'mocha'; import { sha256 } from 'js-sha256'; @@ -17,7 +17,7 @@ import { import { PubSub } from 'graphql-subscriptions'; import { SubscriptionClient } from 'subscriptions-transport-ws'; -import WebSocket from 'ws'; +import * as WebSocket from 'ws'; import { execute } from 'apollo-link'; import { createHttpLink } from 'apollo-link-http'; diff --git a/packages/apollo-server-integration-testsuite/src/index.ts b/packages/apollo-server-integration-testsuite/src/index.ts index 96047b40120..b6069e57d6a 100644 --- a/packages/apollo-server-integration-testsuite/src/index.ts +++ b/packages/apollo-server-integration-testsuite/src/index.ts @@ -17,8 +17,7 @@ import { BREAK, } from 'graphql'; -// tslint:disable-next-line -const request = require('supertest'); +import request = require('supertest'); import { GraphQLOptions, Config } from 'apollo-server-core'; import gql from 'graphql-tag'; diff --git a/packages/apollo-server-memcached/src/index.ts b/packages/apollo-server-memcached/src/index.ts index 9342187dd43..5bbd834a268 100644 --- a/packages/apollo-server-memcached/src/index.ts +++ b/packages/apollo-server-memcached/src/index.ts @@ -1,5 +1,5 @@ import { KeyValueCache } from 'apollo-server-caching'; -import Memcached from 'memcached'; +import * as Memcached from 'memcached'; import { promisify } from 'util'; export class MemcachedCache implements KeyValueCache { diff --git a/packages/apollo-server-redis/src/index.ts b/packages/apollo-server-redis/src/index.ts index 2f05c16b6c7..7ae20246185 100644 --- a/packages/apollo-server-redis/src/index.ts +++ b/packages/apollo-server-redis/src/index.ts @@ -1,5 +1,5 @@ import { KeyValueCache } from 'apollo-server-caching'; -import Redis from 'redis'; +import * as Redis from 'redis'; import { promisify } from 'util'; export class RedisCache implements KeyValueCache { diff --git a/packages/apollo-server/src/index.test.ts b/packages/apollo-server/src/index.test.ts index cce84fb1a6a..8afe2ce35d3 100644 --- a/packages/apollo-server/src/index.test.ts +++ b/packages/apollo-server/src/index.test.ts @@ -1,7 +1,7 @@ import { expect } from 'chai'; import 'mocha'; -import request from 'request'; +import * as request from 'request'; import { createApolloFetch } from 'apollo-fetch'; import { gql, ApolloServer } from './index'; diff --git a/packages/apollo-server/src/index.ts b/packages/apollo-server/src/index.ts index 6299b3228ac..272cb649803 100644 --- a/packages/apollo-server/src/index.ts +++ b/packages/apollo-server/src/index.ts @@ -2,9 +2,9 @@ // an express app for you instead of registerServer (which you might not even // use with express). The dependency is unused otherwise, so don't worry if // you're not using express or your version doesn't quite match up. -import express from 'express'; -import http from 'http'; -import net from 'net'; +import * as express from 'express'; +import * as http from 'http'; +import * as net from 'net'; import { ApolloServer as ApolloServerBase } from 'apollo-server-express'; export { GraphQLOptions, GraphQLExtension, gql } from 'apollo-server-core'; diff --git a/tsconfig.json b/tsconfig.json index 9b48689468b..3107ed42aff 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -3,7 +3,6 @@ "target": "es2016", "module": "commonjs", "moduleResolution": "node", - "esModuleInterop": true, "sourceMap": true, "declaration": true, "declarationMap": true,