Replace express-http-context with express-http-context2

This commit is contained in:
Hongbo Wu
2023-04-12 17:50:13 +08:00
parent e1cb32bebb
commit e6690709c3
4 changed files with 47 additions and 86 deletions

View File

@ -56,7 +56,7 @@
"dotenv": "^8.2.0", "dotenv": "^8.2.0",
"elastic-ts": "^0.9.0", "elastic-ts": "^0.9.0",
"express": "^4.17.1", "express": "^4.17.1",
"express-http-context": "^1.2.4", "express-http-context2": "^1.0.0",
"express-rate-limit": "^6.3.0", "express-rate-limit": "^6.3.0",
"firebase-admin": "^11.5.0", "firebase-admin": "^11.5.0",
"googleapis": "^105.0.0", "googleapis": "^105.0.0",

View File

@ -2,54 +2,54 @@
/* eslint-disable @typescript-eslint/restrict-template-expressions */ /* eslint-disable @typescript-eslint/restrict-template-expressions */
/* eslint-disable @typescript-eslint/require-await */ /* eslint-disable @typescript-eslint/require-await */
/* eslint-disable @typescript-eslint/no-misused-promises */ /* eslint-disable @typescript-eslint/no-misused-promises */
import { buildLogger, buildLoggerTransport } from './utils/logger' import * as lw from '@google-cloud/logging-winston'
import * as Sentry from '@sentry/node'
import { ApolloServer } from 'apollo-server-express'
import { json, urlencoded } from 'body-parser' import { json, urlencoded } from 'body-parser'
import cookieParser from 'cookie-parser' import cookieParser from 'cookie-parser'
import express, { Express } from 'express' import express, { Express } from 'express'
import * as httpContext from 'express-http-context2'
import rateLimit from 'express-rate-limit'
import { createServer, Server } from 'http' import { createServer, Server } from 'http'
import { Knex } from 'knex' import { Knex } from 'knex'
import { env } from './env'
import * as Sentry from '@sentry/node'
import * as lw from '@google-cloud/logging-winston'
import { config, loggers } from 'winston'
import { sentryConfig } from './sentry'
import { makeApolloServer } from './apollo'
import { authRouter } from './routers/auth/auth_router'
import { pageRouter } from './routers/page_router'
import { articleRouter } from './routers/article_router'
import { mobileAuthRouter } from './routers/auth/mobile/mobile_auth_router'
import { contentServiceRouter } from './routers/svc/content'
import { localDebugRouter } from './routers/local_debug_router'
import { DataSource } from 'typeorm' import { DataSource } from 'typeorm'
import { SnakeNamingStrategy } from 'typeorm-naming-strategies' import { SnakeNamingStrategy } from 'typeorm-naming-strategies'
import { linkServiceRouter } from './routers/svc/links' import { config, loggers } from 'winston'
import UserModel from './datalayer/user' import { makeApolloServer } from './apollo'
import ArticleModel from './datalayer/article' import ArticleModel from './datalayer/article'
import ArticleSavingRequestModel from './datalayer/article_saving_request'
import HighlightModel from './datalayer/highlight'
import UserArticleModel from './datalayer/links' import UserArticleModel from './datalayer/links'
import ReactionModel from './datalayer/reaction'
import ReminderModel from './datalayer/reminders'
import UploadFileDataModel from './datalayer/upload_files'
import UserModel from './datalayer/user'
import UserFriendModel from './datalayer/user_friends' import UserFriendModel from './datalayer/user_friends'
import UserPersonalizationModel from './datalayer/user_personalization' import UserPersonalizationModel from './datalayer/user_personalization'
import ArticleSavingRequestModel from './datalayer/article_saving_request'
import UploadFileDataModel from './datalayer/upload_files'
import HighlightModel from './datalayer/highlight'
import ReactionModel from './datalayer/reaction'
import { DataModels } from './resolvers/types'
import { newsletterServiceRouter } from './routers/svc/newsletters'
import { emailsServiceRouter } from './routers/svc/emails'
import ReminderModel from './datalayer/reminders'
import { remindersServiceRouter } from './routers/svc/reminders'
import { ApolloServer } from 'apollo-server-express'
import { pdfAttachmentsRouter } from './routers/svc/pdf_attachments'
import { corsConfig } from './utils/corsConfig'
import { initElasticsearch } from './elastic' import { initElasticsearch } from './elastic'
import { uploadServiceRouter } from './routers/svc/upload' import { env } from './env'
import rateLimit from 'express-rate-limit' import { DataModels } from './resolvers/types'
import { webhooksServiceRouter } from './routers/svc/webhooks' import { articleRouter } from './routers/article_router'
import { integrationsServiceRouter } from './routers/svc/integrations' import { authRouter } from './routers/auth/auth_router'
import { textToSpeechRouter } from './routers/text_to_speech' import { mobileAuthRouter } from './routers/auth/mobile/mobile_auth_router'
import * as httpContext from 'express-http-context'
import { notificationRouter } from './routers/notification_router'
import { userRouter } from './routers/user_router'
import { integrationRouter } from './routers/integration_router' import { integrationRouter } from './routers/integration_router'
import { localDebugRouter } from './routers/local_debug_router'
import { notificationRouter } from './routers/notification_router'
import { pageRouter } from './routers/page_router'
import { contentServiceRouter } from './routers/svc/content'
import { emailsServiceRouter } from './routers/svc/emails'
import { integrationsServiceRouter } from './routers/svc/integrations'
import { linkServiceRouter } from './routers/svc/links'
import { newsletterServiceRouter } from './routers/svc/newsletters'
import { pdfAttachmentsRouter } from './routers/svc/pdf_attachments'
import { remindersServiceRouter } from './routers/svc/reminders'
import { uploadServiceRouter } from './routers/svc/upload'
import { webhooksServiceRouter } from './routers/svc/webhooks'
import { textToSpeechRouter } from './routers/text_to_speech'
import { userRouter } from './routers/user_router'
import { sentryConfig } from './sentry'
import { corsConfig } from './utils/corsConfig'
import { buildLogger, buildLoggerTransport } from './utils/logger'
const PORT = process.env.PORT || 4000 const PORT = process.env.PORT || 4000

View File

@ -1,11 +1,11 @@
import { createPage } from '../elastic/pages' import * as httpContext from 'express-http-context2'
import { readFileSync } from 'fs'
import path from 'path'
import { createPubSubClient } from '../datalayer/pubsub' import { createPubSubClient } from '../datalayer/pubsub'
import { createPage } from '../elastic/pages'
import { ArticleSavingRequestStatus, Page, PageContext } from '../elastic/types' import { ArticleSavingRequestStatus, Page, PageContext } from '../elastic/types'
import { PageType } from '../generated/graphql' import { PageType } from '../generated/graphql'
import { generateSlug, stringToHash } from '../utils/helpers' import { generateSlug, stringToHash } from '../utils/helpers'
import { readFileSync } from 'fs'
import path from 'path'
import * as httpContext from 'express-http-context'
type PopularRead = { type PopularRead = {
url: string url: string
@ -124,7 +124,7 @@ export const addPopularReadsForNewUser = async (
const defaultReads = ['omnivore_organize', 'power_read_it_later'] const defaultReads = ['omnivore_organize', 'power_read_it_later']
// get client from request context // get client from request context
const client = httpContext.get('client') as string | undefined const client = httpContext.get<string>('client')
switch (client) { switch (client) {
case 'web': case 'web':

View File

@ -8085,13 +8085,6 @@
"@types/filesystem" "*" "@types/filesystem" "*"
"@types/har-format" "*" "@types/har-format" "*"
"@types/cls-hooked@^4.2.1":
version "4.3.3"
resolved "https://registry.yarnpkg.com/@types/cls-hooked/-/cls-hooked-4.3.3.tgz#c09e2f8dc62198522eaa18a5b6b873053154bd00"
integrity sha512-gNstDTb/ty5h6gJd6YpSPgsLX9LmRpaKJqGFp7MRlYxhwp4vXXKlJ9+bt1TZ9KbVNXE+Mbxy2AYXcpY21DDtJw==
dependencies:
"@types/node" "*"
"@types/color-convert@^2.0.0": "@types/color-convert@^2.0.0":
version "2.0.0" version "2.0.0"
resolved "https://registry.yarnpkg.com/@types/color-convert/-/color-convert-2.0.0.tgz#8f5ee6b9e863dcbee5703f5a517ffb13d3ea4e22" resolved "https://registry.yarnpkg.com/@types/color-convert/-/color-convert-2.0.0.tgz#8f5ee6b9e863dcbee5703f5a517ffb13d3ea4e22"
@ -8233,7 +8226,7 @@
dependencies: dependencies:
"@types/express" "*" "@types/express" "*"
"@types/express@*", "@types/express@^4.16.0", "@types/express@^4.17.13", "@types/express@^4.17.14", "@types/express@^4.17.2", "@types/express@^4.17.7": "@types/express@*", "@types/express@^4.17.13", "@types/express@^4.17.14", "@types/express@^4.17.2", "@types/express@^4.17.7":
version "4.17.17" version "4.17.17"
resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.17.tgz#01d5437f6ef9cfa8668e616e13c2f2ac9a491ae4" resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.17.tgz#01d5437f6ef9cfa8668e616e13c2f2ac9a491ae4"
integrity sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q== integrity sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==
@ -10314,13 +10307,6 @@ async-each@^1.0.1:
resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf"
integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==
async-hook-jl@^1.7.6:
version "1.7.6"
resolved "https://registry.yarnpkg.com/async-hook-jl/-/async-hook-jl-1.7.6.tgz#4fd25c2f864dbaf279c610d73bf97b1b28595e68"
integrity sha512-gFaHkFfSxTjvoxDMYqDuGHlcRyUuamF8s+ZTtJdDzqjws4mCt7v0vuV79/E2Wr2/riMQgtG4/yUtXWs1gZ7JMg==
dependencies:
stack-chain "^1.3.7"
async-retry@^1.2.1, async-retry@^1.3.3: async-retry@^1.2.1, async-retry@^1.3.3:
version "1.3.3" version "1.3.3"
resolved "https://registry.yarnpkg.com/async-retry/-/async-retry-1.3.3.tgz#0e7f36c04d8478e7a58bdbed80cedf977785f280" resolved "https://registry.yarnpkg.com/async-retry/-/async-retry-1.3.3.tgz#0e7f36c04d8478e7a58bdbed80cedf977785f280"
@ -11838,15 +11824,6 @@ cloudevents@^6.0.0:
util "^0.12.4" util "^0.12.4"
uuid "^8.3.2" uuid "^8.3.2"
cls-hooked@^4.2.2:
version "4.2.2"
resolved "https://registry.yarnpkg.com/cls-hooked/-/cls-hooked-4.2.2.tgz#ad2e9a4092680cdaffeb2d3551da0e225eae1908"
integrity sha512-J4Xj5f5wq/4jAvcdgoGsL3G103BtWpZrMo8NEinRltN+xpTZdI+M38pyQqhuFU/P792xkMFvnKSf+Lm81U1bxw==
dependencies:
async-hook-jl "^1.7.6"
emitter-listener "^1.0.1"
semver "^5.4.1"
clsx@^1.1.1: clsx@^1.1.1:
version "1.1.1" version "1.1.1"
resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188" resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188"
@ -13628,13 +13605,6 @@ elliptic@^6.5.3:
minimalistic-assert "^1.0.1" minimalistic-assert "^1.0.1"
minimalistic-crypto-utils "^1.0.1" minimalistic-crypto-utils "^1.0.1"
emitter-listener@^1.0.1:
version "1.1.2"
resolved "https://registry.yarnpkg.com/emitter-listener/-/emitter-listener-1.1.2.tgz#56b140e8f6992375b3d7cb2cab1cc7432d9632e8"
integrity sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ==
dependencies:
shimmer "^1.2.0"
emittery@^0.8.1: emittery@^0.8.1:
version "0.8.1" version "0.8.1"
resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860" resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860"
@ -14422,14 +14392,10 @@ expect@^27.5.1:
jest-matcher-utils "^27.5.1" jest-matcher-utils "^27.5.1"
jest-message-util "^27.5.1" jest-message-util "^27.5.1"
express-http-context@^1.2.4: express-http-context2@^1.0.0:
version "1.2.4" version "1.0.0"
resolved "https://registry.yarnpkg.com/express-http-context/-/express-http-context-1.2.4.tgz#49769d0e260836278996e728d9a3e7f3735f0531" resolved "https://registry.yarnpkg.com/express-http-context2/-/express-http-context2-1.0.0.tgz#58cd9fb0d233739e0dcd7aabb766d1dc74522d77"
integrity sha512-jPpBbF1MWWdRcUU1rxsX0CPnA8ueEj8xgWvpRGHoXWGI4l5KqhPY4Bq+Gt6s2IhqHQQ0g0wIvJ3jFfbUuJJycQ== integrity sha512-xdukoNNpWcuMn5ZJcjDe/tA+2A96rQ1MyAB/oWUU7qP15Tkz3txQyFsw/QG8YgRzTJ1sNAA8Bdq0o5b/1Y4zLA==
dependencies:
"@types/cls-hooked" "^4.2.1"
"@types/express" "^4.16.0"
cls-hooked "^4.2.2"
express-rate-limit@^6.3.0: express-rate-limit@^6.3.0:
version "6.3.0" version "6.3.0"
@ -25106,7 +25072,7 @@ shebang-regex@^3.0.0:
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
shimmer@^1.2.0, shimmer@^1.2.1: shimmer@^1.2.1:
version "1.2.1" version "1.2.1"
resolved "https://registry.yarnpkg.com/shimmer/-/shimmer-1.2.1.tgz#610859f7de327b587efebf501fb43117f9aff337" resolved "https://registry.yarnpkg.com/shimmer/-/shimmer-1.2.1.tgz#610859f7de327b587efebf501fb43117f9aff337"
integrity sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw== integrity sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==
@ -25558,11 +25524,6 @@ stable@^0.1.8:
resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf"
integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==
stack-chain@^1.3.7:
version "1.3.7"
resolved "https://registry.yarnpkg.com/stack-chain/-/stack-chain-1.3.7.tgz#d192c9ff4ea6a22c94c4dd459171e3f00cea1285"
integrity sha512-D8cWtWVdIe/jBA7v5p5Hwl5yOSOrmZPWDPe2KxQ5UAGD+nxbxU0lKXA4h85Ta6+qgdKVL3vUxsbIZjc1kBG7ug==
stack-trace@0.0.x: stack-trace@0.0.x:
version "0.0.10" version "0.0.10"
resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0"