mirror of
https://github.com/omnivore-app/omnivore.git
synced 2026-03-11 08:54:26 +00:00
Some checks failed
Build Docker Images / Build docker images (push) Has been cancelled
Build Self-Hosting Docker Images / Build self-host docker images (push) Has been cancelled
Run tests / Run Codebase tests (push) Has been cancelled
Run tests / Build docker images (push) Has been cancelled
* fix: Library Header layout shift * Bump Github Actions versions. * Self-Hosting Changes * Fix Minio Environment Variable * Just make pdfs successful, due to lack of PDFHandler * Fix issue where flag was set wrong * Added an NGINX Example file * Add some documentation for self-hosting via Docker Compose * Make some adjustments to Puppeteer due to failing sites. * adjust timings * Add start of Mail Service * Fix Docker Files * More email service stuff * Add Guide to use Zapier for Email-Importing. * Ensure that if no env is provided it uses the old email settings * Add some instructions for self-hosted email * Add SNS Endpoints for Mail Watcher * Add steps and functionality for using SES and SNS for email * Uncomment a few jobs. * Added option for Firefox for parser. Was having issues with Chromium on Docker. * Add missing space. Co-authored-by: Russ Taylor <729694+russtaylor@users.noreply.github.com> * Fix some wording on the Guide * update browser extension to handle self-hosted instances * add slight documentation to options page * Fix MV * Do raw handlers for Medium * Fix images in Medium * Update self-hosting/GUIDE.md Co-authored-by: Mike Baker <1426795+mbaker3@users.noreply.github.com> * Update Guide with other variables * Add The Verge to JS-less handlers * Update regex and image-proxy * Update self-hosting/nginx/nginx.conf Co-authored-by: Mike Baker <1426795+mbaker3@users.noreply.github.com> * Update regex and image-proxy * Update self-hosting/docker-compose/docker-compose.yml Co-authored-by: Mike Baker <1426795+mbaker3@users.noreply.github.com> * Fix Minio for Export * Merge to main * Update GUIDE with newer NGINX * Update nginx config to include api/save route * Enable Native PDF View for PDFS * Enable Native PDF View for PDFS * feat:lover packages test * feat:working build * feat:alpine build * docs:api dockerfile docs * Write a PDF.js wrapper to replace pspdfkit * Revert changes for replication, set settings to have default mode * build folder got removed due to gitignore on pdf * Add Box shadow to pdf pages * Add Toggle for Progress in PDFS, enabled native viewer toggle * Update node version to LTS * Update node version to LTS * Fix Linting issues * Fix Linting issues * Make env variable nullable * Add touchend listener for mobile * Make changes to PDF for mobile * fix(android): change serverUrl to selfhosted first * feat:2 stage alpine content fetch * feat:separated start script * fix:changed to node 22 * Add back youtube functionality and add guide * trigger build * Fix cache issue on YouTube * Allow empty AWS_S3_ENDPOINT * Allow empty AWS_S3_ENDPOINT * Add GCHR for all images * Add GCHR For self hosting. * Add GCHR For self hosting. * Test prebuilt. * Test prebuilt * Test prebuilt... * Fix web image * Remove Web Image (For now) * Move docker-compose to images * Move docker-compose files to correct locations * Remove the need for ARGS * Update packages, and Typescript versions * Fix * Fix issues with build on Web * Correct push * Fix Linting issues * Fix Trace import * Add missing types * Fix Tasks * Add information into guide about self-build * Fix issues with PDF Viewer --------- Co-authored-by: keumky2 <keumky2@woowahan.com> Co-authored-by: William Theaker <wtheaker@nvidia.com> Co-authored-by: Russ Taylor <729694+russtaylor@users.noreply.github.com> Co-authored-by: David Adams <david@dadams2.com> Co-authored-by: Mike Baker <1426795+mbaker3@users.noreply.github.com> Co-authored-by: m1xxos <66390094+m1xxos@users.noreply.github.com> Co-authored-by: Adil <mr.adil777@gmail.com>
91 lines
2.7 KiB
TypeScript
91 lines
2.7 KiB
TypeScript
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
/* eslint-disable @typescript-eslint/await-thenable */
|
|
import { env } from './env'
|
|
|
|
import { TraceExporter } from '@google-cloud/opentelemetry-cloud-trace-exporter'
|
|
import * as api from '@opentelemetry/api'
|
|
import { JaegerExporter } from '@opentelemetry/exporter-jaeger'
|
|
import { NodeTracerProvider } from '@opentelemetry/node'
|
|
import { BatchSpanProcessor } from '@opentelemetry/tracing'
|
|
import { EventEmitter } from 'events'
|
|
import { GraphQLInstrumentation } from '@opentelemetry/instrumentation-graphql'
|
|
|
|
const provider: NodeTracerProvider = new NodeTracerProvider()
|
|
|
|
// TODO(typotter): Remove this max even listener when fix for
|
|
// https://github.com/open-telemetry/opentelemetry-js-contrib/issues/258
|
|
// is available in the released package.
|
|
// This suppresses a warning raised by node.
|
|
EventEmitter.defaultMaxListeners = 25
|
|
|
|
let exporter
|
|
if (
|
|
env.server.apiEnv === 'demo' ||
|
|
env.server.apiEnv === 'qa' ||
|
|
env.server.apiEnv === 'prod'
|
|
) {
|
|
exporter = new TraceExporter() // No config required when running on GAE.
|
|
console.info('Using gCloud for trace exports')
|
|
} else if (env.dev.isLocal && env.jaeger.host) {
|
|
const jaeger_host = env.jaeger.host
|
|
const options = {
|
|
serviceName: 'omnivore-backend',
|
|
tags: [],
|
|
// Use http as UDP has max 65kb limit and our spans at times can exceed this limit
|
|
endpoint: `http://${env.jaeger.host}:14268/api/traces`,
|
|
}
|
|
console.info('Using Jaeger on host ' + jaeger_host + ' for trace exports')
|
|
exporter = new JaegerExporter(options)
|
|
} else {
|
|
console.log(
|
|
'Unknown environment / no JAEGER_HOST defined in apiEnv: ' +
|
|
env.server.apiEnv +
|
|
'; not exporting traces'
|
|
)
|
|
}
|
|
|
|
if (exporter !== undefined) {
|
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
// @ts-ignore
|
|
provider.addSpanProcessor(new BatchSpanProcessor(exporter))
|
|
console.info('tracing initialized')
|
|
}
|
|
|
|
const graphQLInstrumentation = new GraphQLInstrumentation({})
|
|
|
|
graphQLInstrumentation.setTracerProvider(provider)
|
|
graphQLInstrumentation.enable()
|
|
|
|
api.trace.setGlobalTracerProvider(provider)
|
|
|
|
provider.register()
|
|
|
|
export const tracer = api.trace.getTracer('basic')
|
|
|
|
/**
|
|
* Wraps fn with a span for cloud tracing
|
|
* @param spanName
|
|
* @param attributes
|
|
* @param fn
|
|
* @param parent If provided, will record traces as child of the parent.
|
|
*/
|
|
export async function traceAs<A>(
|
|
{
|
|
spanName,
|
|
attributes = {},
|
|
}: { spanName: string; attributes?: Record<string, any> },
|
|
fn: () => A
|
|
): Promise<A> {
|
|
const childSpan = async (): Promise<A> => {
|
|
const span = tracer.startSpan(spanName, { attributes })
|
|
const result = await api.context.with(
|
|
api.trace.setSpan(api.context.active(), span),
|
|
fn
|
|
)
|
|
span.end()
|
|
|
|
return result
|
|
}
|
|
|
|
return childSpan()
|
|
}
|