This commit is contained in:
Hongbo Wu
2023-08-23 12:41:02 +08:00
parent 9370951893
commit fc52b522f2
51 changed files with 80 additions and 103 deletions

View File

@ -12,14 +12,14 @@ import { ExpressContext } from 'apollo-server-express/dist/ApolloServer'
import * as jwt from 'jsonwebtoken'
import { EntityManager } from 'typeorm'
import { promisify } from 'util'
import { createPubSubClient } from './datalayer/pubsub'
import { AppDataSource } from './data-source'
import { sanitizeDirectiveTransformer } from './directives'
import { env } from './env'
import { createPubSubClient } from './pubsub'
import { functionResolvers } from './resolvers/function_resolvers'
import { ClaimsToSet, ResolverContext } from './resolvers/types'
import ScalarResolvers from './scalars'
import typeDefs from './schema'
import { AppDataSource } from './data-source'
import { tracer } from './tracing'
import { getClaimsByToken, setAuthInCookie } from './utils/auth'
import { SetClaimsRole } from './utils/dictionary'

View File

@ -16,7 +16,7 @@ export const AppDataSource = new DataSource({
subscribers: [__dirname + '/events/**/*{.js,.ts}'],
namingStrategy: new SnakeNamingStrategy(),
logger: new CustomTypeOrmLogger(),
// cache: true,
connectTimeoutMS: 60000, // 60 seconds
maxQueryExecutionTime: 60000, // 60 seconds
cache: true,
connectTimeoutMS: 40000, // 40 seconds
maxQueryExecutionTime: 10000, // 10 seconds
})

View File

@ -1,5 +1,5 @@
import { errors } from '@elastic/elasticsearch'
import { EntityType } from '../datalayer/pubsub'
import { EntityType } from '../pubsub'
import { SortBy, SortOrder, SortParams } from '../utils/search'
import { client, INDEX_ALIAS, logger } from './index'
import {

View File

@ -1,5 +1,5 @@
import { errors } from '@elastic/elasticsearch'
import { EntityType } from '../datalayer/pubsub'
import { EntityType } from '../pubsub'
import { client, INDEX_ALIAS, logger } from './index'
import { Label, PageContext } from './types'

View File

@ -1,7 +1,7 @@
import { errors } from '@elastic/elasticsearch'
import { BuiltQuery, ESBuilder, esBuilder } from 'elastic-ts'
import { EntityType } from '../datalayer/pubsub'
import { BulkActionType } from '../generated/graphql'
import { EntityType } from '../pubsub'
import { wordsCount } from '../utils/helpers'
import {
DateFilter,

View File

@ -1,5 +1,5 @@
// Define the type of the body for the Search request
import { PubsubClient } from '../datalayer/pubsub'
import { PubsubClient } from '../pubsub'
import { PickTuple } from '../util'
import {
DateFilter,

View File

@ -3,8 +3,9 @@ import {
EventSubscriber,
InsertEvent,
} from 'typeorm'
import { createPubSubClient } from '../../datalayer/pubsub'
import { Profile } from '../../entity/profile'
import { env } from '../../env'
import { createPubSubClient } from '../../pubsub'
import { addPopularReadsForNewUser } from '../../services/popular_reads'
import { IntercomClient } from '../../utils/intercom'

View File

@ -1,8 +1,8 @@
import { PubSub } from '@google-cloud/pubsub'
import { env } from '../env'
import { ReportType } from '../generated/graphql'
import express from 'express'
import { buildLogger } from '../utils/logger'
import { env } from './env'
import { ReportType } from './generated/graphql'
import { buildLogger } from './utils/logger'
const logger = buildLogger('pubsub')

View File

@ -1,6 +1,5 @@
import { Between } from 'typeorm'
import { AppDataSource } from '../../data-source'
import { createPubSubClient } from '../../datalayer/pubsub'
import { getHighlightById } from '../../elastic/highlights'
import {
deleteLabel,
@ -38,6 +37,7 @@ import {
UpdateLabelErrorCode,
UpdateLabelSuccess,
} from '../../generated/graphql'
import { createPubSubClient } from '../../pubsub'
import { getRepository, setClaims } from '../../repository'
import {
createLabel,

View File

@ -4,7 +4,7 @@ import { Context as ApolloContext } from 'apollo-server-core'
import * as jwt from 'jsonwebtoken'
import { EntityManager } from 'typeorm'
import winston from 'winston'
import { PubsubClient } from '../datalayer/pubsub'
import { PubsubClient } from '../pubsub'
export interface Claims {
uid: string

View File

@ -4,12 +4,12 @@ import { htmlToSpeechFile } from '@omnivore/text-to-speech-handler'
import cors from 'cors'
import express from 'express'
import * as jwt from 'jsonwebtoken'
import { createPubSubClient } from '../datalayer/pubsub'
import { getPageById, updatePage } from '../elastic/pages'
import { getRepository } from '../repository'
import { Speech, SpeechState } from '../entity/speech'
import { env } from '../env'
import { CreateArticleErrorCode } from '../generated/graphql'
import { createPubSubClient } from '../pubsub'
import { getRepository } from '../repository'
import { Claims } from '../resolvers/types'
import { createPageSaveRequest } from '../services/create_page_save_request'
import { getClaimsByToken } from '../utils/auth'

View File

@ -3,9 +3,9 @@
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
import * as jwt from 'jsonwebtoken'
import jwksClient from 'jwks-rsa'
import UserModel from '../../datalayer/user'
import { env, homePageURL } from '../../env'
import { LoginErrorCode } from '../../generated/graphql'
import { userRepository } from '../../repository'
import { logger } from '../../utils/logger'
import { createSsoToken, ssoRedirectURL } from '../../utils/sso'
import { DecodeTokenResult } from './auth_types'
@ -119,8 +119,7 @@ export async function handleAppleWebAuth(
}
try {
const model = new UserModel()
const user = await model.getWhere({
const user = await userRepository.findOneBy({
sourceUserId: decodedTokenResult.sourceUserId,
source: 'APPLE',
})

View File

@ -15,17 +15,10 @@ import * as jwt from 'jsonwebtoken'
import url from 'url'
import { promisify } from 'util'
import { AppDataSource } from '../../data-source'
import { kx } from '../../datalayer/knex_config'
import UserModel from '../../datalayer/user'
import {
RegistrationType,
StatusType,
UserData,
} from '../../datalayer/user/model'
import { User } from '../../entity/user'
import { RegistrationType, StatusType, User } from '../../entity/user'
import { env } from '../../env'
import { LoginErrorCode, SignupErrorCode } from '../../generated/graphql'
import { getRepository, setClaims } from '../../repository'
import { getRepository, setClaims, userRepository } from '../../repository'
import { isErrorWithCode } from '../../resolvers'
import { createUser, getUserByEmail } from '../../services/create_user'
import {
@ -247,8 +240,7 @@ export function authRouter() {
return { errorCodes: [SignupErrorCode.GoogleAuthError] }
}
const model = new UserModel(kx)
const user = await model.getWhere({ email: userData.email })
const user = await userRepository.findOneBy({ email: userData.email })
// eslint-disable-next @typescript-eslint/ban-ts-comment
const secret = (await signToken(
@ -343,7 +335,7 @@ export function authRouter() {
async function handleSuccessfulLogin(
req: express.Request,
res: express.Response,
user: UserData | User,
user: User,
newUser: boolean
): Promise<void> {
try {

View File

@ -1,9 +1,9 @@
import { google, oauth2_v2 as oauthV2 } from 'googleapis'
import { OAuth2Client } from 'googleapis-common'
import url from 'url'
import UserModel from '../../datalayer/user'
import { env, homePageURL } from '../../env'
import { LoginErrorCode } from '../../generated/graphql'
import { userRepository } from '../../repository'
import { logger } from '../../utils/logger'
import { createSsoToken, ssoRedirectURL } from '../../utils/sso'
import { DecodeTokenResult } from './auth_types'
@ -127,8 +127,7 @@ export async function handleGoogleWebAuth(
redirectURL: authFailedRedirect,
})
}
const model = new UserModel()
const user = await model.getWhere({
const user = await userRepository.findOneBy({
email,
source: 'GOOGLE',
})

View File

@ -1,6 +1,6 @@
/* eslint-disable @typescript-eslint/restrict-template-expressions */
import UserModel from '../../../datalayer/user'
import { StatusType } from '../../../datalayer/user/model'
import { StatusType } from '../../../entity/user'
import { userRepository } from '../../../repository'
import { getUserByEmail } from '../../../services/create_user'
import { sendConfirmationEmail } from '../../../services/send_emails'
import { comparePassword } from '../../../utils/auth'
@ -97,8 +97,7 @@ async function createAuthResponsePayload(
}
try {
const model = new UserModel()
const user = await model.getWhere({
const user = await userRepository.findOneBy({
email: decodedTokenResult.email,
source: authProvider,
})

View File

@ -1,5 +1,5 @@
/* eslint-disable @typescript-eslint/restrict-template-expressions */
import UserModel from '../../../datalayer/user'
import { userRepository } from '../../../repository'
import { createUser } from '../../../services/create_user'
import { hashPassword } from '../../../utils/auth'
import { logger } from '../../../utils/logger'
@ -97,8 +97,7 @@ async function createSignUpResponsePayload(
}
// check if user exists
const userModel = new UserModel()
const existingUser = await userModel.getWhere({ email })
const existingUser = await userRepository.findOneBy({ email })
if (existingUser) {
return {

View File

@ -1,11 +1,11 @@
import cors from 'cors'
import express, { Router } from 'express'
import { env } from '../env'
import { createWebAuthToken } from './auth/jwt_helpers'
import UserModel from '../datalayer/user'
import { LoginErrorCode } from '../generated/graphql'
import cors from 'cors'
import { userRepository } from '../repository'
import { createUser } from '../services/create_user'
import { corsConfig } from '../utils/corsConfig'
import { createWebAuthToken } from './auth/jwt_helpers'
// For local development only
export function localDebugRouter(): Router {
@ -20,8 +20,9 @@ export function localDebugRouter(): Router {
try {
let userId: string | undefined = undefined
const userModel = new UserModel()
const existingUser = await userModel.getWhere({ email: fakeEmail })
const existingUser = await userRepository.findOneBy({
email: fakeEmail,
})
userId = existingUser?.id
if (!userId) {

View File

@ -5,17 +5,17 @@
import cors from 'cors'
import express from 'express'
import * as jwt from 'jsonwebtoken'
import { createPubSubClient } from '../datalayer/pubsub'
import { createPage, getPageByParam, updatePage } from '../elastic/pages'
import { addRecommendation } from '../elastic/recommendation'
import { Recommendation } from '../elastic/types'
import { uploadFileRepository } from '../repository'
import { env } from '../env'
import {
ArticleSavingRequestStatus,
PageType,
UploadFileStatus,
} from '../generated/graphql'
import { createPubSubClient } from '../pubsub'
import { uploadFileRepository } from '../repository'
import { Claims } from '../resolvers/types'
import { getTokenByRequest } from '../utils/auth'
import { corsConfig } from '../utils/corsConfig'

View File

@ -3,13 +3,10 @@
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
import express from 'express'
import { AppDataSource } from '../../data-source'
import {
createPubSubClient,
readPushSubscription,
} from '../../datalayer/pubsub'
import { getPageByParam, updatePage } from '../../elastic/pages'
import { Page } from '../../elastic/types'
import { ArticleSavingRequestStatus } from '../../generated/graphql'
import { createPubSubClient, readPushSubscription } from '../../pubsub'
import { setClaims } from '../../repository'
import { setFileUploadComplete } from '../../services/save_file'
import { logger } from '../../utils/logger'

View File

@ -1,10 +1,10 @@
import express from 'express'
import { AppDataSource } from '../../data-source'
import { createPubSubClient } from '../../datalayer/pubsub'
import { createPage } from '../../elastic/pages'
import { ArticleSavingRequestStatus, Page } from '../../elastic/types'
import { env } from '../../env'
import { PageType, UploadFileStatus } from '../../generated/graphql'
import { createPubSubClient } from '../../pubsub'
import { setClaims, uploadFileRepository } from '../../repository'
import { getNewsletterEmail } from '../../services/newsletters'
import { updateReceivedEmail } from '../../services/received_emails'

View File

@ -1,10 +1,7 @@
import cors from 'cors'
import express from 'express'
import {
createPubSubClient,
readPushSubscription,
} from '../../datalayer/pubsub'
import { env } from '../../env'
import { createPubSubClient, readPushSubscription } from '../../pubsub'
import { getNewsletterEmail } from '../../services/newsletters'
import {
saveReceivedEmail,

View File

@ -5,10 +5,10 @@ import { stringify } from 'csv-stringify'
import express from 'express'
import { DateTime } from 'luxon'
import { v4 as uuidv4 } from 'uuid'
import { EntityType, readPushSubscription } from '../../datalayer/pubsub'
import { getPageById, searchPages } from '../../elastic/pages'
import { Page } from '../../elastic/types'
import { Integration, IntegrationType } from '../../entity/integration'
import { EntityType, readPushSubscription } from '../../pubsub'
import { getRepository } from '../../repository'
import { Claims } from '../../resolvers/types'
import { getIntegrationService } from '../../services/integrations'

View File

@ -2,7 +2,7 @@
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
import express from 'express'
import { readPushSubscription } from '../../datalayer/pubsub'
import { readPushSubscription } from '../../pubsub'
import { createPageSaveRequest } from '../../services/create_page_save_request'
import { logger } from '../../utils/logger'

View File

@ -1,9 +1,6 @@
import express from 'express'
import {
createPubSubClient,
readPushSubscription,
} from '../../datalayer/pubsub'
import { SubscriptionStatus } from '../../generated/graphql'
import { createPubSubClient, readPushSubscription } from '../../pubsub'
import {
getNewsletterEmail,
updateConfirmationCode,

View File

@ -1,10 +1,10 @@
import { MulticastMessage } from 'firebase-admin/messaging'
import { AppDataSource } from '../../data-source'
import { createPubSubClient } from '../../datalayer/pubsub'
import { updatePage } from '../../elastic/pages'
import { UserDeviceToken } from '../../entity/user_device_tokens'
import { homePageURL } from '../../env'
import { ContentReader } from '../../generated/graphql'
import { createPubSubClient } from '../../pubsub'
import { setClaims } from '../../repository'
import { PageReminder, setRemindersComplete } from '../../services/reminders'

View File

@ -1,8 +1,8 @@
/* eslint-disable @typescript-eslint/no-misused-promises */
import express from 'express'
import { readPushSubscription } from '../../datalayer/pubsub'
import { Subscription } from '../../entity/subscription'
import { SubscriptionStatus, SubscriptionType } from '../../generated/graphql'
import { readPushSubscription } from '../../pubsub'
import { getRepository } from '../../repository'
import { enqueueRssFeedFetch } from '../../utils/createTask'
import { logger } from '../../utils/logger'

View File

@ -4,8 +4,8 @@
import express from 'express'
import { DateTime } from 'luxon'
import { v4 as uuidv4 } from 'uuid'
import { readPushSubscription } from '../../datalayer/pubsub'
import { env } from '../../env'
import { readPushSubscription } from '../../pubsub'
import { logger } from '../../utils/logger'
import { uploadToBucket } from '../../utils/uploads'

View File

@ -3,8 +3,8 @@
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
import axios, { Method } from 'axios'
import express from 'express'
import { readPushSubscription } from '../../datalayer/pubsub'
import { Webhook } from '../../entity/webhook'
import { readPushSubscription } from '../../pubsub'
import { getRepository } from '../../repository'
import { logger } from '../../utils/logger'

View File

@ -4,13 +4,13 @@
import { htmlToSpeechFile } from '@omnivore/text-to-speech-handler'
import cors from 'cors'
import express from 'express'
import { readPushSubscription } from '../datalayer/pubsub'
import { AppDataSource } from '../data-source'
import { getPageById } from '../elastic/pages'
import { ArticleSavingRequestStatus } from '../elastic/types'
import { getRepository, setClaims } from '../repository'
import { Speech, SpeechState } from '../entity/speech'
import { UserPersonalization } from '../entity/user_personalization'
import { AppDataSource } from '../data-source'
import { readPushSubscription } from '../pubsub'
import { getRepository, setClaims } from '../repository'
import { FeatureName, getFeature } from '../services/features'
import { shouldSynthesize } from '../services/speech'
import { getClaimsByToken } from '../utils/auth'

View File

@ -1,6 +1,5 @@
import * as privateIpLib from 'private-ip'
import { v4 as uuidv4 } from 'uuid'
import { createPubSubClient, PubsubClient } from '../datalayer/pubsub'
import {
countByCreatedAt,
createPage,
@ -13,6 +12,7 @@ import {
ArticleSavingRequest,
CreateArticleSavingRequestErrorCode,
} from '../generated/graphql'
import { createPubSubClient, PubsubClient } from '../pubsub'
import { getRepository } from '../repository'
import { enqueueParseRequest } from '../utils/createTask'
import {

View File

@ -1,10 +1,9 @@
import { EntityManager, In } from 'typeorm'
import { AppDataSource } from '../data-source'
import { StatusType } from '../datalayer/user/model'
import { GroupMembership } from '../entity/groups/group_membership'
import { Invite } from '../entity/groups/invite'
import { Profile } from '../entity/profile'
import { User } from '../entity/user'
import { StatusType, User } from '../entity/user'
import { SignupErrorCode } from '../generated/graphql'
import { getRepository, userRepository } from '../repository'
import { AuthProvider } from '../routers/auth/auth_types'

View File

@ -1,10 +1,10 @@
import * as httpContext from 'express-http-context2'
import { readFileSync } from 'fs'
import path from 'path'
import { createPubSubClient } from '../datalayer/pubsub'
import { createPage } from '../elastic/pages'
import { ArticleSavingRequestStatus, Page, PageContext } from '../elastic/types'
import { PageType } from '../generated/graphql'
import { createPubSubClient } from '../pubsub'
import { generateSlug, stringToHash } from '../utils/helpers'
import { logger } from '../utils/logger'

View File

@ -1,6 +1,6 @@
import { PubsubClient } from '../datalayer/pubsub'
import { createPage, getPageByParam, updatePage } from '../elastic/pages'
import { ArticleSavingRequestStatus, Page } from '../elastic/types'
import { PubsubClient } from '../pubsub'
import { enqueueThumbnailTask } from '../utils/createTask'
import {
cleanUrl,

View File

@ -1,7 +1,7 @@
import { AppDataSource } from '../data-source'
import { UserData } from '../datalayer/user/model'
import { updatePage } from '../elastic/pages'
import { UploadFile } from '../entity/upload_file'
import { User } from '../entity/user'
import { homePageURL } from '../env'
import {
ArticleSavingRequestStatus,
@ -24,7 +24,7 @@ export const setFileUploadComplete = async (
export const saveFile = async (
ctx: WithDataSourcesContext,
user: UserData,
user: User,
input: SaveFileInput
): Promise<SaveResult> => {
logger.info('saving file with input', input)

View File

@ -1,11 +1,11 @@
import { MulticastMessage } from 'firebase-admin/messaging'
import { createPubSubClient } from '../datalayer/pubsub'
import { updatePage } from '../elastic/pages'
import { Page } from '../elastic/types'
import { NewsletterEmail } from '../entity/newsletter_email'
import { UserDeviceToken } from '../entity/user_device_tokens'
import { env } from '../env'
import { ContentReader } from '../generated/graphql'
import { createPubSubClient } from '../pubsub'
import { analytics } from '../utils/analytics'
import { isBase64Image } from '../utils/helpers'
import { logger } from '../utils/logger'

View File

@ -1,8 +1,8 @@
import { PubsubClient } from '../datalayer/pubsub'
import { ArticleSavingRequestStatus } from '../elastic/types'
import { User } from '../entity/user'
import { homePageURL } from '../env'
import { SaveErrorCode, SaveResult, SaveUrlInput } from '../generated/graphql'
import { PubsubClient } from '../pubsub'
import { getRepository } from '../repository'
import { logger } from '../utils/logger'
import { createPageSaveRequest } from './create_page_save_request'

View File

@ -6,7 +6,7 @@ import {
Page,
PageContext,
} from '../../src/elastic/types'
import { createPubSubClient } from '../../src/datalayer/pubsub'
import { createPubSubClient } from '../../src/pubsub'
import { deletePage } from '../../src/elastic/pages'
import {
addHighlightToPage,

View File

@ -9,7 +9,7 @@ import {
PageContext,
PageType,
} from '../../src/elastic/types'
import { createPubSubClient } from '../../src/datalayer/pubsub'
import { createPubSubClient } from '../../src/pubsub'
import { createPage, deletePage, getPageById } from '../../src/elastic/pages'
import { addLabelInPage, setLabelsForHighlight } from '../../src/elastic/labels'
import { addHighlightToPage } from '../../src/elastic/highlights'

View File

@ -7,7 +7,7 @@ import {
PageContext,
PageType,
} from '../../src/elastic/types'
import { createPubSubClient } from '../../src/datalayer/pubsub'
import { createPubSubClient } from '../../src/pubsub'
import {
countByCreatedAt,
createPage,

View File

@ -1,12 +1,10 @@
import { AppDataSource } from '../src/data-source'
import { stopApolloServer } from './util'
import { kx } from '../src/datalayer/knex_config'
export const mochaGlobalTeardown = async () => {
await AppDataSource.destroy()
await kx.destroy()
console.log('db connection closed')
await stopApolloServer()
console.log('apollo server stopped')
await AppDataSource.destroy()
console.log('db connection closed')
}

View File

@ -3,7 +3,6 @@ import { expect } from 'chai'
import chaiString from 'chai-string'
import 'mocha'
import sinon from 'sinon'
import { createPubSubClient } from '../../src/datalayer/pubsub'
import { refreshIndex } from '../../src/elastic'
import { addHighlightToPage } from '../../src/elastic/highlights'
import {
@ -30,6 +29,7 @@ import {
UpdateReason,
UploadFileStatus,
} from '../../src/generated/graphql'
import { createPubSubClient } from '../../src/pubsub'
import { getRepository } from '../../src/repository'
import * as createTask from '../../src/utils/createTask'
import * as uploads from '../../src/utils/uploads'

View File

@ -1,7 +1,7 @@
import { expect } from 'chai'
import 'mocha'
import sinon from 'sinon'
import { createPubSubClient } from '../../src/datalayer/pubsub'
import { createPubSubClient } from '../../src/pubsub'
import { deletePagesByParam, getPageByParam } from '../../src/elastic/pages'
import {
ArticleSavingRequestStatus,

View File

@ -10,7 +10,7 @@ import { expect } from 'chai'
import 'mocha'
import { User } from '../../src/entity/user'
import chaiString from 'chai-string'
import { createPubSubClient } from '../../src/datalayer/pubsub'
import { createPubSubClient } from '../../src/pubsub'
import { HighlightType, PageContext } from '../../src/elastic/types'
import { deletePage, updatePage } from '../../src/elastic/pages'

View File

@ -1,6 +1,6 @@
import { expect } from 'chai'
import 'mocha'
import { createPubSubClient } from '../../src/datalayer/pubsub'
import { createPubSubClient } from '../../src/pubsub'
import { refreshIndex } from '../../src/elastic'
import {
addHighlightToPage,

View File

@ -1,6 +1,6 @@
import { expect } from 'chai'
import 'mocha'
import { createPubSubClient } from '../../src/datalayer/pubsub'
import { createPubSubClient } from '../../src/pubsub'
import { PageContext } from '../../src/elastic/types'
import { SearchHistory } from '../../src/entity/search_history'
import { User } from '../../src/entity/user'

View File

@ -6,7 +6,7 @@ import 'mocha'
import { User } from '../../src/entity/user'
import chaiString from 'chai-string'
import { PageContext } from '../../src/elastic/types'
import { createPubSubClient } from '../../src/datalayer/pubsub'
import { createPubSubClient } from '../../src/pubsub'
import { deletePage, getPageById } from '../../src/elastic/pages'
chai.use(chaiString)

View File

@ -3,9 +3,8 @@ import chai, { expect } from 'chai'
import sinon from 'sinon'
import sinonChai from 'sinon-chai'
import supertest from 'supertest'
import { StatusType } from '../../src/datalayer/user/model'
import { searchPages } from '../../src/elastic/pages'
import { User } from '../../src/entity/user'
import { StatusType, User } from '../../src/entity/user'
import { getRepository } from '../../src/repository'
import { AuthProvider } from '../../src/routers/auth/auth_types'
import { createPendingUserToken } from '../../src/routers/auth/jwt_helpers'

View File

@ -7,7 +7,7 @@ import sinon from 'sinon'
import {
createPubSubClient,
PubSubRequestBody,
} from '../../src/datalayer/pubsub'
} from '../../src/pubsub'
import { addHighlightToPage } from '../../src/elastic/highlights'
import { deletePage } from '../../src/elastic/pages'
import {

View File

@ -2,7 +2,7 @@ import 'mocha'
import { expect } from 'chai'
import { createTestUser, deleteTestUser } from '../db'
import { SaveContext, saveEmail } from '../../src/services/save_email'
import { createPubSubClient } from '../../src/datalayer/pubsub'
import { createPubSubClient } from '../../src/pubsub'
import { getPageByParam } from '../../src/elastic/pages'
import nock from 'nock'
import { User } from '../../src/entity/user'

View File

@ -1,7 +1,7 @@
import { expect } from 'chai'
import 'mocha'
import nock from 'nock'
import { createPubSubClient } from '../../src/datalayer/pubsub'
import { createPubSubClient } from '../../src/pubsub'
import { getPageByParam } from '../../src/elastic/pages'
import { NewsletterEmail } from '../../src/entity/newsletter_email'
import { ReceivedEmail } from '../../src/entity/received_email'

View File

@ -1,11 +1,11 @@
import { createApp } from '../src/server'
import supertest from 'supertest'
import { v4 } from 'uuid'
import { corsConfig } from '../src/utils/corsConfig'
import { createPage } from '../src/elastic/pages'
import { ArticleSavingRequestStatus, Label, Page } from '../src/elastic/types'
import { PageType } from '../src/generated/graphql'
import { createPubSubClient } from '../src/datalayer/pubsub'
import { createPage } from '../src/elastic/pages'
import { createPubSubClient } from '../src/pubsub'
import { createApp } from '../src/server'
import { corsConfig } from '../src/utils/corsConfig'
const { app, apollo } = createApp()
export const request = supertest(app)